diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 72af488..1723f59 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -179,6 +179,12 @@ module.exports = { frontmatter: { layout: 'CreateMagicItemLayout' } + }, + { + path: '/calculateur-de-caracteristiques/', + frontmatter: { + layout: 'AbilityCalculatorLayout' + } } ], themeConfig: { @@ -571,6 +577,10 @@ module.exports = { title: "Création d'objet magique", path: '/creation-d-objet-magique/' }, + { + title: "Calculateur de caractéristiques", + path: '/calculateur-de-caracteristiques/' + }, ] }, {type: 'divider'}, diff --git a/docs/.vuepress/data/abilityScores.js b/docs/.vuepress/data/abilityScores.js new file mode 100644 index 0000000..12835ca --- /dev/null +++ b/docs/.vuepress/data/abilityScores.js @@ -0,0 +1,28 @@ +export const ABILITYSCORECOSTS = { + 6: { cost: -2 }, + 7: { cost: -1 }, + 8: { cost: 0 }, + 9: { cost: 1 }, + 10: { cost: 2 }, + 11: { cost: 3 }, + 12: { cost: 4 }, + 13: { cost: 5 }, + 14: { cost: 7 }, + 15: { cost: 9 }, + 16: { cost: 12 }, +} + +export const ABILITYSCORES = [ + { text: 'Force', value: 'for' }, + { text: 'Dextérité', value: 'dex' }, + { text: 'Constitution', value: 'con' }, + { text: 'Intelligence', value: 'int' }, + { text: 'Sagesse', value: 'sag' }, + { text: 'Charisme', value: 'cha' }, +] + +export const POWERTIERS = [ + { text: 'Courageux', pointBuy: 19, standardArray: [14,12,12,10,10,8] }, + { text: 'Héroïque', pointBuy: 27, standardArray: [15,14,13,12,10,8] }, + { text: 'Légendaire', pointBuy: 36, standardArray: [16,15,13,12,12,10] } +] diff --git a/docs/.vuepress/data/races.js b/docs/.vuepress/data/races.js new file mode 100644 index 0000000..c70f9a9 --- /dev/null +++ b/docs/.vuepress/data/races.js @@ -0,0 +1,176 @@ +export const races = [ + { + key: 'demi-elfe', + label: 'Demi-elfe', + abilityBonuses: [ + { ability: 'cha', value: 2 } + ], + freeAbilityBonuses: { qty: 2, value: 1 } + }, + { + key: 'demi-orc', + label: 'Demi-orc', + abilityBonuses: [ + { ability: 'for', value: 2 }, + { ability: 'con', value: 1 } + ], + }, + { + key: 'elfe-d-aether', + label: "Elfe d'aether", + abilityBonuses: [ + { ability: 'dex', value: 2 }, + { ability: 'int', value: 1 } + ] + }, + { + key: 'elfe-de-fer', + label: "Elfe de fer", + abilityBonuses: [ + { ability: 'dex', value: 2 }, + { ability: 'cha', value: 1 } + ] + }, + { + key: 'elfe-des-sylves', + label: "Elfe des sylves", + abilityBonuses: [ + { ability: 'dex', value: 2 }, + { ability: 'sag', value: 1 } + ] + }, + { + key: 'gnome-des-roches', + label: "Gnome des roches", + abilityBonuses: [ + { ability: 'int', value: 2 }, + { ability: 'con', value: 1 } + ] + }, + { + key: 'gnome-des-fees', + label: "Gnome des fées", + abilityBonuses: [ + { ability: 'int', value: 2 }, + { ability: 'dex', value: 1 } + ] + }, + { + key: 'gnome-des-lacs', + label: "Gnome des lacs", + abilityBonuses: [ + { ability: 'int', value: 2 }, + { ability: 'sag', value: 1 } + ] + }, + { + key: 'halfelin-pied-leger', + label: "Halfelin pied-léger", + abilityBonuses: [ + { ability: 'dex', value: 2 }, + { ability: 'cha', value: 1 } + ] + }, + { + key: 'halfelin-grand-sabot', + label: "Halfelin grand-sabot", + abilityBonuses: [ + { ability: 'dex', value: 2 }, + { ability: 'con', value: 1 } + ] + }, + { + key: 'humain', + label: "Humain", + abilityBonuses: [ + { ability: 'for', value: 1 }, + { ability: 'dex', value: 1 }, + { ability: 'con', value: 1 }, + { ability: 'int', value: 1 }, + { ability: 'sag', value: 1 }, + { ability: 'cha', value: 1 } + ] + }, + { + key: 'humain-variante-don', + label: "Humain (variante don)", + freeAbilityBonuses: { qty: 3, value: 1 } + }, + { + key: 'humain-variante-maitrises', + label: "Humain (variante maîtrises)", + freeAbilityBonuses: { qty: 4, value: 1 } + }, + { + key: 'nain-des-tertres', + label: "Nain des tertres", + abilityBonuses: [ + { ability: 'con', value: 2 }, + { ability: 'sag', value: 1 } + ] + }, + { + key: 'nain-des-pierres', + label: "Nain des pierres", + abilityBonuses: [ + { ability: 'con', value: 2 }, + { ability: 'int', value: 1 } + ] + }, + { + key: 'nain-des-laves', + label: "Nain des laves", + abilityBonuses: [ + { ability: 'con', value: 2 }, + { ability: 'for', value: 1 } + ] + }, + { + key: 'aasimar', + label: "Aasimar", + abilityBonuses: [ + { ability: 'cha', value: 2 }, + { ability: 'sag', value: 1 } + ] + }, + { + key: 'demi-ogre', + label: "Demi-ogre", + abilityBonuses: [ + { ability: 'for', value: 1 }, + { ability: 'con', value: 2 } + ] + }, + { + key: 'felys', + label: "Félys", + abilityBonuses: [ + { ability: 'dex', value: 2 }, + { ability: 'sag', value: 1 } + ] + }, + { + key: 'homme-serpent', + label: "Homme-serpent", + abilityBonuses: [ + { ability: 'sag', value: 2 }, + { ability: 'cha', value: 1 } + ] + }, + { + key: 'sangdragon', + label: "Sangdragon", + abilityBonuses: [ + { ability: 'for', value: 2 }, + { ability: 'cha', value: 1 } + ] + }, + { + key: 'tieffelin', + label: "Tieffelin", + abilityBonuses: [ + { ability: 'cha', value: 2 }, + { ability: 'int', value: 1 } + ] + } +] diff --git a/docs/.vuepress/theme/components/AbilityCalculator.vue b/docs/.vuepress/theme/components/AbilityCalculator.vue new file mode 100644 index 0000000..967b786 --- /dev/null +++ b/docs/.vuepress/theme/components/AbilityCalculator.vue @@ -0,0 +1,256 @@ + + + + + + + mdi-eraser Réinitialiser + + + + + + + + + + + + + + + + + + + + + + + + + + + + Caractéristique + Base + + Bonus racial + + Total + Mod. + Coût + + + + + {{ ability.label }} + + + + + + + + + + {{ ability.racialBonus }} + = + {{ getTotal(ability) }} + {{ displayBonus(getModifier(getTotal(ability))) }} + {{ getAbilityScoreCost(ability) }} + + Points restants : {{ pointsRemaining }}/{{ powerTier.pointBuy }} + + + + + + + + + + + + + diff --git a/docs/.vuepress/theme/components/Breadcrumb.vue b/docs/.vuepress/theme/components/Breadcrumb.vue index 74f0680..16e950a 100644 --- a/docs/.vuepress/theme/components/Breadcrumb.vue +++ b/docs/.vuepress/theme/components/Breadcrumb.vue @@ -53,6 +53,8 @@ crumbs.push({to: page.path, disabled: disabled, text: 'Création de sort'}) } else if (page.path == '/creation-de-monstre-pnj/') { crumbs.push({to: page.path, disabled: disabled, text: 'Création de monstre ou PNJ'}) + } else if (page.path == '/calculateur-de-caracteristiques/') { + crumbs.push({to: page.path, disabled: disabled, text: 'Calculateur de caractéristiques'}) } else { crumbs.push({to: page.path, disabled: disabled, text: page.frontmatter.breadcrumb || page.title}) } diff --git a/docs/.vuepress/theme/layouts/AbilityCalculatorLayout.vue b/docs/.vuepress/theme/layouts/AbilityCalculatorLayout.vue new file mode 100644 index 0000000..8058951 --- /dev/null +++ b/docs/.vuepress/theme/layouts/AbilityCalculatorLayout.vue @@ -0,0 +1,19 @@ + + + + + + + + + + +