diff --git a/assets/docs/.~lock.Colours used in R20 Sheets (version 3).xlsx# b/assets/docs/.~lock.Colours used in R20 Sheets (version 3).xlsx# new file mode 100644 index 0000000..a62ea75 --- /dev/null +++ b/assets/docs/.~lock.Colours used in R20 Sheets (version 3).xlsx# @@ -0,0 +1 @@ +,morr,arioch,04.12.2024 14:13,file:///home/morr/.config/libreoffice/4; \ No newline at end of file diff --git a/assets/docs/Colours used in R20 Sheets (version 3).xlsx b/assets/docs/Colours used in R20 Sheets (version 3).xlsx new file mode 100644 index 0000000..d506b7f Binary files /dev/null and b/assets/docs/Colours used in R20 Sheets (version 3).xlsx differ diff --git a/assets/docs/Cthulhu Eternal Skills Per Era.xlsx b/assets/docs/Cthulhu Eternal Skills Per Era.xlsx new file mode 100644 index 0000000..e942ee3 Binary files /dev/null and b/assets/docs/Cthulhu Eternal Skills Per Era.xlsx differ diff --git a/assets/docs/Cthulhu_Eternal/en/Cthulhu_Eternal_SRD_-_Modern_Age_v1.1_REL.docx b/assets/docs/Cthulhu_Eternal/en/Cthulhu_Eternal_SRD_-_Modern_Age_v1.1_REL.docx new file mode 100644 index 0000000..cbf3b7b Binary files /dev/null and b/assets/docs/Cthulhu_Eternal/en/Cthulhu_Eternal_SRD_-_Modern_Age_v1.1_REL.docx differ diff --git a/assets/docs/Cthulhu_Eternal/fr/Cthulhu_Eternal_SRD_-_Modern_Age_v1.1_REL.docx b/assets/docs/Cthulhu_Eternal/fr/Cthulhu_Eternal_SRD_-_Modern_Age_v1.1_REL.docx new file mode 100644 index 0000000..a35d717 Binary files /dev/null and b/assets/docs/Cthulhu_Eternal/fr/Cthulhu_Eternal_SRD_-_Modern_Age_v1.1_REL.docx differ diff --git a/assets/fonts/georama.woff2 b/assets/fonts/georama.woff2 new file mode 100644 index 0000000..5e91440 Binary files /dev/null and b/assets/fonts/georama.woff2 differ diff --git a/css/fvtt-cthulhu-eternal.css b/css/fvtt-cthulhu-eternal.css index 797cd44..8f4cb63 100644 --- a/css/fvtt-cthulhu-eternal.css +++ b/css/fvtt-cthulhu-eternal.css @@ -1,7 +1,8 @@ :root { --font-size-standard: 1rem; --background-image-base: url("../assets/parchment.jpg"); - --font-secondary: "Amiri", serif; + --font-primary: "Georama"; + --font-secondary: "Georama"; --logo-standard: url("../assets/logos/reanimated-ce-logo.webp"); } #logo { @@ -51,7 +52,7 @@ i.lethalfantasy { background-repeat: no-repeat; background-size: 100% 100%; } -.fvtt-cthulhu-eternal .character-sheet-common label { +.fvtt-cthulhu-eternal .protagonist-sheet-common label { font-family: var(--font-secondary); font-size: calc(var(--font-size-standard) * 1.2); } @@ -75,7 +76,7 @@ i.lethalfantasy { .fvtt-cthulhu-eternal .item-sheet-common .shift-right { margin-left: 2rem; } -.fvtt-cthulhu-eternal .character-content { +.fvtt-cthulhu-eternal .protagonist-content { font-family: var(--font-primary); font-size: calc(var(--font-size-standard) * 1); color: var(--color-dark-1); @@ -84,19 +85,19 @@ i.lethalfantasy { background-size: 100% 100%; overflow: scroll; } -.fvtt-cthulhu-eternal .character-content input:disabled, -.fvtt-cthulhu-eternal .character-content select:disabled { +.fvtt-cthulhu-eternal .protagonist-content input:disabled, +.fvtt-cthulhu-eternal .protagonist-content select:disabled { background-color: rgba(0, 0, 0, 0.2); border-color: transparent; color: var(--color-dark-3); } -.fvtt-cthulhu-eternal .character-content input, -.fvtt-cthulhu-eternal .character-content select { +.fvtt-cthulhu-eternal .protagonist-content input, +.fvtt-cthulhu-eternal .protagonist-content select { background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } -.fvtt-cthulhu-eternal .character-content input[name="name"] { +.fvtt-cthulhu-eternal .protagonist-content input[name="name"] { height: 50px; margin-right: 10px; font-family: var(--font-secondary); @@ -104,58 +105,58 @@ i.lethalfantasy { font-weight: bold; border: none; } -.fvtt-cthulhu-eternal .character-content fieldset { +.fvtt-cthulhu-eternal .protagonist-content fieldset { margin-bottom: 5px; border-radius: 5px; } -.fvtt-cthulhu-eternal .character-content .form-fields input, -.fvtt-cthulhu-eternal .character-content .form-fields select { +.fvtt-cthulhu-eternal .protagonist-content .form-fields input, +.fvtt-cthulhu-eternal .protagonist-content .form-fields select { text-align: center; font-size: calc(var(--font-size-standard) * 1); } -.fvtt-cthulhu-eternal .character-content .form-fields select { +.fvtt-cthulhu-eternal .protagonist-content .form-fields select { font-family: var(--font-secondary); font-size: calc(var(--font-size-standard) * 1); } -.fvtt-cthulhu-eternal .character-content legend { +.fvtt-cthulhu-eternal .protagonist-content legend { font-family: var(--font-secondary); font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; letter-spacing: 1px; } -.fvtt-cthulhu-eternal .character-content label { +.fvtt-cthulhu-eternal .protagonist-content label { font-family: var(--font-secondary); font-size: calc(var(--font-size-standard) * 1.2); } -.fvtt-cthulhu-eternal .character-main { +.fvtt-cthulhu-eternal .protagonist-main { display: flex; } -.fvtt-cthulhu-eternal .character-main .character-personnage { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc { display: flex; gap: 10px; flex: 1; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left { min-width: 180px; display: flex; flex-direction: column; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-gauche-image { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-left-image { display: flex; justify-content: center; align-items: center; padding-bottom: 20px; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-gauche-image .character-img { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-left-image .protagonist-img { height: 140px; width: auto; border: none; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-dv .form-fields, -.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-dmax .form-fields { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dv .form-fields, +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dmax .form-fields { flex: none; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-gauche .character-dmax-edit input { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-left .protagonist-dmax-edit input { display: flex; width: 60px; font-size: calc(var(--font-size-standard) * 1.4); @@ -164,55 +165,37 @@ i.lethalfantasy { padding: 0 5px 0 5px; text-align: center; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right { display: flex; flex-direction: column; gap: 5px; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-name { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-name { display: flex; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-name input { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-name input { width: 400px; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos { display: flex; flex-direction: column; gap: 10px; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos label { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos label { min-width: 120px; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-majeure, -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-mineure { - display: flex; -} -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-majeure input, -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-mineure input { - width: 280px; -} -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-majeure .controls, -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-voie-mineure .controls { - padding-left: 5px; -} -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-commanditaire { - display: flex; -} -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-commanditaire input { - width: 280px; -} -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp { display: flex; gap: 2px; align-items: center; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv .character-pv-value .form-fields input { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-value .form-fields input { flex: none; width: 50px; margin-left: 10px; font-size: calc(var(--font-size-standard) * 1.4); } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv .character-pv-max { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-max { clear: both; display: flex; flex-direction: row; @@ -220,53 +203,53 @@ i.lethalfantasy { margin: 3px 0; align-items: center; } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv .character-pv-max input { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .protagonist-hp-max input { width: 50px; text-align: center; font-size: calc(var(--font-size-standard) * 1.4); } -.fvtt-cthulhu-eternal .character-main .character-personnage .character-droite .character-infos .character-pv .pv-separator { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos .protagonist-hp .hp-separator { font-size: calc(var(--font-size-standard) * 1.2); display: flex; align-items: center; justify-content: center; } -.fvtt-cthulhu-eternal .character-main .character-personnage-play { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc-play { min-width: 500px; } -.fvtt-cthulhu-eternal .character-main .character-personnage-edit { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc-edit { min-width: 650px; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics { display: flex; flex-direction: column; gap: 5px; flex: 1; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic { display: flex; align-items: center; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .rollable:hover, -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .rollable:focus { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .rollable:hover, +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .rollable:focus { text-shadow: 0 0 8px var(--color-shadow-primary); cursor: pointer; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .form-group { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .form-group { flex: 1; padding-left: 5px; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .form-group .form-fields { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .form-group .form-fields { flex: none; width: 70px; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience { display: flex; align-items: center; gap: 10px; margin-left: 10px; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input { display: flex; width: 70px; font-size: calc(var(--font-size-standard) * 1.4); @@ -274,54 +257,54 @@ i.lethalfantasy { justify-content: center; padding: 0 5px 0 5px; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input[type="number"] { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="number"] { text-align: center; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input[type="checkbox"] { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="checkbox"] { width: 20px; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input[type="checkbox"]:checked { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="checkbox"]:checked { background-color: rgba(0, 0, 0, 0.1); } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques .character-caracteristique .experience input[type="checkbox"]:checked::after { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristics .protagonist-characteristic .experience input[type="checkbox"]:checked::after { color: rgba(0, 0, 0, 0.1); } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques-play { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-play { min-width: 225px; } -.fvtt-cthulhu-eternal .character-main .character-caracteristiques-edit { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-characteristic-edit { min-width: 400px; } -.fvtt-cthulhu-eternal .character-main .character-ressources { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources { display: flex; flex-direction: column; gap: 5px; flex: 1; } -.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource { display: flex; align-items: center; } -.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .rollable:hover, -.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .rollable:focus { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .rollable:hover, +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .rollable:focus { text-shadow: 0 0 8px var(--color-shadow-primary); cursor: pointer; } -.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .form-group { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .form-group { flex: 1; padding-left: 5px; } -.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .form-group .form-fields { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .form-group .form-fields { flex: none; width: 70px; } -.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .character-ressource-edit { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit { display: flex; align-items: center; gap: 10px; margin-left: 10px; } -.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .character-ressource-edit input { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit input { display: flex; width: 70px; font-size: calc(var(--font-size-standard) * 1.4); @@ -329,95 +312,107 @@ i.lethalfantasy { justify-content: center; padding: 0 5px 0 5px; } -.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .character-ressource-edit input[type="number"] { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit input[type="number"] { text-align: center; } -.fvtt-cthulhu-eternal .character-main .character-ressources .character-ressource .character-ressource-edit select { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources .protagonist-resource .protagonist-resource-edit select { font-family: var(--font-secondary); font-size: calc(var(--font-size-standard) * 1.5); text-align: center; width: 75px; } -.fvtt-cthulhu-eternal .character-main .character-ressources-play { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources-play { min-width: 235px; } -.fvtt-cthulhu-eternal .character-main .character-ressources-edit { +.fvtt-cthulhu-eternal .protagonist-main .protagonist-resources-edit { min-width: 400px; } -.fvtt-cthulhu-eternal .character-biography prose-mirror.inactive { +.fvtt-cthulhu-eternal .protagonist-biography prose-mirror.inactive { min-height: 40px; } -.fvtt-cthulhu-eternal .character-biography prose-mirror.active { +.fvtt-cthulhu-eternal .protagonist-biography prose-mirror.active { min-height: 150px; } -.fvtt-cthulhu-eternal .tab.character-items { +.fvtt-cthulhu-eternal .tab.protagonist-skills { display: grid; grid-template-columns: 1fr; } -.fvtt-cthulhu-eternal .tab.character-items legend a { +.fvtt-cthulhu-eternal .tab.protagonist-skills legend a { font-size: calc(var(--font-size-standard) * 1.4); padding-left: 5px; } -.fvtt-cthulhu-eternal .tab.character-items .talents { +.fvtt-cthulhu-eternal .tab.protagonist-skills .skills { display: grid; - grid-template-columns: repeat(5, 1fr); + grid-template-columns: repeat(3, 1fr); gap: 10px; } -.fvtt-cthulhu-eternal .tab.character-items .talents .talent { +.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill { display: flex; align-items: center; gap: 10px; } -.fvtt-cthulhu-eternal .tab.character-items .talents .talent .item-img { +.fvtt-cthulhu-eternal .tab.protagonist-skills .skills .skill .item-img { width: 50px; height: 50px; + margin: 5px 0 0 0; } -.fvtt-cthulhu-eternal .tab.character-items .weapons { +.fvtt-cthulhu-eternal .tab.protagonist-equipment { + display: grid; + grid-template-columns: 1fr; +} +.fvtt-cthulhu-eternal .tab.protagonist-equipment legend a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; +} +.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; } -.fvtt-cthulhu-eternal .tab.character-items .weapons .weapon { +.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon { display: flex; align-items: center; gap: 10px; } -.fvtt-cthulhu-eternal .tab.character-items .weapons .weapon .item-img { +.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .item-img { width: 50px; height: 50px; margin: 5px 0 0 0; } -.fvtt-cthulhu-eternal .tab.character-items .armors { +.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } -.fvtt-cthulhu-eternal .tab.character-items .armors .armor { +.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor { display: flex; align-items: center; gap: 10px; } -.fvtt-cthulhu-eternal .tab.character-items .armors .armor .item-img { +.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .item-img { width: 50px; height: 50px; margin: 5px 0 0 0; } -.fvtt-cthulhu-eternal .tab.character-items .spells { +.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } -.fvtt-cthulhu-eternal .tab.character-items .spells .spell { +.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear { display: flex; + align-items: center; gap: 10px; } -.fvtt-cthulhu-eternal .tab.character-items .appris { - font-weight: bold; +.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; } -.fvtt-cthulhu-eternal .tab.character-items prose-mirror.inactive { +.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.inactive { min-height: 40px; } -.fvtt-cthulhu-eternal .tab.character-items prose-mirror.active { +.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.active { min-height: 150px; } .fvtt-cthulhu-eternal .skill-content { @@ -1274,22 +1269,3 @@ input[name="selectAvantages"] { font-size: calc(var(--font-size-standard) * 1.2); text-shadow: 0 0 10px var(--color-shadow-primary); } -#lethalfantasy-application-manager { - display: flex; - 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-application-manager .lethalfantasy-table { - margin: 1rem; - background: none; - padding: 0; - margin: 0; - text-align: center; -} -#lethalfantasy-application-manager .lethalfantasy-table .player { - font-size: calc(var(--font-size-standard) * 1); -} diff --git a/cthulhu-eternal.mjs b/cthulhu-eternal.mjs index c96e996..011fdb3 100644 --- a/cthulhu-eternal.mjs +++ b/cthulhu-eternal.mjs @@ -33,7 +33,7 @@ Hooks.once("init", function () { CONFIG.Actor.documentClass = documents.CthulhuEternalActor CONFIG.Actor.dataModels = { - character: models.CthulhuEternalProtagonist + protagonist: models.CthulhuEternalProtagonist } CONFIG.Item.documentClass = documents.CthulhuEternalItem 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 0ab8168..2e95382 100644 --- a/lang/en.json +++ b/lang/en.json @@ -7,12 +7,12 @@ "skill": "Skill", "weapon": "Weapon", "armor": "Armor", - "injuty": "Spell", - "gift": "Gift", - "vulnerability": "Vulnerability", - "save": "Save", - "equipment": "Equipment" , - "shield": "Shield" + "injury": "Injury", + "gear": "Gear", + "motivation": "Motivation", + "mentaldisorder": "MentalDisorder", + "bond": "Bond" , + "arcane": "Arcane" } }, "CTHULHUETERNAL": { @@ -90,7 +90,17 @@ "Weapon": { "WeaponType": { "melee": "Melee", - "ranged": "Ranged" + "rangedprimitive": "Ranged Primitive", + "rangedthrown": "Ranged Thrown", + "rangedfirearm": "Ranged Firearm", + "unarmed": "Unarmed" + }, + "WeaponSubtype": { + "basicfirearm": "Basic Firearm", + "pistol": "Pistol", + "shotgun": "Shotgun", + "submachinegun": "Submachinegun", + "riflecarabine": "Rifle/Carabine" }, "FIELDS": { "settings": { @@ -99,6 +109,9 @@ "weaponType": { "label": "Type" }, + "weaponSubtype": { + "label": "Firearm Subtype" + }, "damage": { "label": "Damage" }, @@ -119,6 +132,9 @@ }, "resourceLevel": { "label": "Resource level" + }, + "armorPiercing": { + "label": "Armor piercing" } } }, @@ -177,113 +193,40 @@ "community": "Community" }, "Label": { + "protagonist": "Protagonist", + "characteristics": "Characteristics", "description": "Description", "total": "Total", - "langues": "Langues", - "profil": "Profil", - "details": "Détails", - "talents": "Talents", - "progressionPossible": "Progression possible", - "equipement": "Equipement", - "spells" : "Sortilèges", - "level": "Niveau", - "degats": "Dégâts", - "ressource": "Ressource", - "sauvegarde": "Sauvegarde", - "newArmor": "Nouvelle armure", - "newWeapon": "Nouvelle arme", - "armor": "Armure", + "skills": "Skills", + "gear": "Gear", + "damage": "Damage", + "resource": "Resource", + "newArmor": "New Armor", + "newWeapon": "New Weapon", + "armor": "Armor", "malus": "Malus", - "jet": "Jet de ", - "progress": "Progression", - "hasProgressed": "A progressé dans la caractéristique", - "noProgress": "N'a pas progressé dans la caractéristique", - "experience": "Expérience", - "experienceDetail": "Expérience {detail}", - "maximum": "Maximum" - }, - "Edit": "Editer", - "Delete": "Supprimer", - "ToggleSheet": "Changer de mode", - "Warning": { - "dejaDeuxVoies": "Vous avez déjà choisi deux voies", - "dejaVoieMajeure": "Vous avez déjà choisi cette voie comme voie majeure", - "voieMajeureAjoutee": "Voie majeure ajoutée", - "voieMineureAjoutee": "Voie mineure ajoutée", - "voieMajeureSupprimee": "Voie majeure supprimée", - "voieMineureSupprimee": "Voie mineure supprimée", - "plusDeRessource": "Vous n'avez plus de ressource {ressource}" + "experience": "Experience", + "maximum": "Maximum", + "equipment": "Equipment", + "biography": "Biography" }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle Sheet", + "Warning": { }, "Dialog": { - "ajoutVoieMajeure": "Ajouter une voie majeure va automatiquement remplacer les caractéristiques, les ressources, les langues et les biens. Continuer ?", - "ajoutVoieMajeureTitre": "Ajout d'une voie majeure", - "ajoutVoieMineureTitre": "Ajout d'une voie mineure", - "suppressionTalents": "Supprimer cette voie va supprimer les talents associés. Continuer ?", - "talentDansVoie": "Ce talent est présent dans la voie {path}. Voulez-vous vraiment le supprimer ?", - "titleSave": "Jet de sauvegarde", - "titleResource": "Jet de ressource", - "titleDamage": "Jet de dégâts", - "titleAttack": "Jet d'attaque", - "titleStandard": "Jet standard" }, "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}" + "roll": "Lancer" }, "Tooltip": { - "learnedTalents": "Les talents appris sont en gras", - "saveIntroTextTooltip": "Caractéristique : {value}
Aide : {aide}
Gêne : {gene}
Modificateur : {modificateur}", - "addAttack": "Ajouter une attaque", - "addEquipment": "Ajouter une arme, Shift + Click pour ajouter une armure", - "addSpell": "Ajouter un sortilège" }, "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/module/applications/sheets/base-actor-sheet.mjs b/module/applications/sheets/base-actor-sheet.mjs index f29cde4..15b272a 100644 --- a/module/applications/sheets/base-actor-sheet.mjs +++ b/module/applications/sheets/base-actor-sheet.mjs @@ -32,8 +32,7 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin editImage: CthulhuEternalActorSheet.#onEditImage, toggleSheet: CthulhuEternalActorSheet.#onToggleSheet, edit: CthulhuEternalActorSheet.#onItemEdit, - delete: CthulhuEternalActorSheet.#onItemDelete, - createSpell: CthulhuEternalActorSheet.#onCreateSpell, + delete: CthulhuEternalActorSheet.#onItemDelete }, } @@ -109,7 +108,9 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin * @param {DragEvent} event The originating DragEvent * @protected */ - async _onDrop(event) {} + async _onDrop(event) { + } + /** * Define whether a user is able to begin a dragstart workflow for a given drag selector @@ -128,7 +129,7 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin * @protected */ _canDragDrop(selector) { - return this.isEditable && this.document.isOwner + return true //this.isEditable && this.document.isOwner } /** @@ -203,6 +204,7 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin _onDragOver(event) {} async _onDropItem(item) { + console.log("Dropped item", item) let itemData = item.toObject() await this.document.createEmbeddedDocuments("Item", [itemData], { renderSheet: false }) } @@ -272,20 +274,8 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin */ static async #onItemDelete(event, target) { const itemUuid = target.getAttribute("data-item-uuid") - const talent = await fromUuid(itemUuid) - await talent.deleteDialog() - } - - /** - * Handles the creation of a new attack item. - * - * @param {Event} event The event that triggered the creation of the attack. - * @param {Object} target The target object where the attack will be created. - * @private - * @static - */ - static #onCreateSpell(event, target) { - const item = this.document.createEmbeddedDocuments("Item", [{ name: "Nouveau sortilège", type: "spell" }]) + const item = await fromUuid(itemUuid) + await item.deleteDialog() } // #endregion diff --git a/module/applications/sheets/protagonist-sheet.mjs b/module/applications/sheets/protagonist-sheet.mjs index adf62c2..7d79dcd 100644 --- a/module/applications/sheets/protagonist-sheet.mjs +++ b/module/applications/sheets/protagonist-sheet.mjs @@ -19,22 +19,25 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS /** @override */ static PARTS = { main: { - template: "systems/fvtt-cthulhu-eternal/templates/character-main.hbs", + template: "systems/fvtt-cthulhu-eternal/templates/protagonist-main.hbs", }, tabs: { - template: "systems/fvtt-cthulhu-eternal/templates/generic/tab-navigation.hbs", + template: "templates/generic/tab-navigation.hbs", }, - items: { - template: "systems/fvtt-cthulhu-eternal/templates/character-items.hbs", + skills: { + template: "systems/fvtt-cthulhu-eternal/templates/protagonist-skills.hbs", + }, + equipment: { + template: "systems/fvtt-cthulhu-eternal/templates/protagonist-equipment.hbs", }, biography: { - template: "systems/fvtt-cthulhu-eternal/templates/character-biography.hbs", + template: "systems/fvtt-cthulhu-eternal/templates/protagonist-biography.hbs", }, } /** @override */ tabGroups = { - sheet: "items", + sheet: "skills", } /** @@ -43,8 +46,9 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS */ #getTabs() { const tabs = { - items: { id: "items", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Character.Label.details" }, - biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "CTHULHUETERNAL.Character.Label.biography" }, + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Label.skills" }, + equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Label.equipment" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "CTHULHUETERNAL.Label.biography" }, } for (const v of Object.values(tabs)) { v.active = this.tabGroups[v.group] === v.id @@ -58,13 +62,25 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS const context = await super._prepareContext() context.tabs = this.#getTabs() - context.tooltipsCaracteristiques = { + context.tooltipsCharacteristic = { + str: game.i18n.localize("CTHULHUETERNAL.Characteristic.Str"), + dex: game.i18n.localize("CTHULHUETERNAL.Characteristic.Dex"), + con: game.i18n.localize("CTHULHUETERNAL.Characteristic.Con"), + int: game.i18n.localize("CTHULHUETERNAL.Characteristic.Int"), + pow: game.i18n.localize("CTHULHUETERNAL.Characteristic.Pow"), + cha: game.i18n.localize("CTHULHUETERNAL.Characteristic.Cha") } context.tooltipsRessources = { } context.rollType = { + str: "characteristic", + dex: "characteristic", + con: "characteristic", + int: "characteristic", + pow: "characteristic", + cha: "characteristic" } return context } @@ -77,14 +93,16 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS const doc = this.document switch (partId) { case "main": - context.enrichedBiens = await TextEditor.enrichHTML(doc.system.biens, { async: true }) break - case "items": - context.tab = context.tabs.items + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + break + case "equipment": + context.tab = context.tabs.equipment context.weapons = doc.itemTypes.weapon context.armors = doc.itemTypes.armor - context.spells = doc.itemTypes.spell - context.hasSpells = context.spells.length > 0 + context.gears = doc.itemTypes.gear break case "biography": context.tab = context.tabs.biography @@ -95,34 +113,6 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS 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) - if (!["path", "weapon", "armor", "spell"].includes(item.type)) return - if (item.type === "path") return this.#onDropPathItem(item) - if (item.type === "weapon") return super._onDropItem(item) - if (item.type === "armor") return this._onDropItem(item) - if (item.type === "spell") 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. @@ -169,5 +159,18 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS } await this.document.system.roll(rollType, rollTarget) } + + 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 super._onDropItem(item) + } + } + // #endregion } diff --git a/module/config/system.mjs b/module/config/system.mjs index ec09f43..3d55653 100644 --- a/module/config/system.mjs +++ b/module/config/system.mjs @@ -39,6 +39,7 @@ export const SYSTEM = { id: SYSTEM_ID, CHARACTERISTICS: PROTAGONIST.CHARACTERISTICS, WEAPON_TYPE: WEAPON.WEAPON_TYPE, + WEAPON_SUBTYPE: WEAPON.WEAPON_SUBTYPE, BOND_TYPE: BOND.BOND_TYPE, AVAILABLE_SETTINGS, ASCII diff --git a/module/config/weapon.mjs b/module/config/weapon.mjs index d910a07..4f6cd87 100644 --- a/module/config/weapon.mjs +++ b/module/config/weapon.mjs @@ -1,6 +1,17 @@ export const WEAPON_TYPE = { "melee": "CTHULHUETERNAL.Weapon.WeaponType.melee", - "ranged": "CTHULHUETERNAL.Weapon.WeaponType.ranged" + "rangedprimitive": "CTHULHUETERNAL.Weapon.WeaponType.rangedprimitive", + "rangedthrown": "CTHULHUETERNAL.Weapon.WeaponType.rangedthrown", + "rangedfirearm": "CTHULHUETERNAL.Weapon.WeaponType.rangedfirearm", + "unarmed": "CTHULHUETERNAL.Weapon.WeaponType.unarmed" +} + +export const WEAPON_SUBTYPE = { + "basicfirearm": "CTHULHUETERNAL.Weapon.WeaponSubtype.basicfirearm", + "pistol": "CTHULHUETERNAL.Weapon.WeaponSubtype.pistol", + "shotgun": "CTHULHUETERNAL.Weapon.WeaponSubtype.shotgun", + "submachinegun": "CTHULHUETERNAL.Weapon.WeaponSubtype.submachinegun", + "riflecarabine": "CTHULHUETERNAL.Weapon.WeaponSubtype.riflecarabine", } export const WEAPON_RANGE_UNIT = { diff --git a/module/models/gear.mjs b/module/models/gear.mjs index 536f441..fe2541c 100644 --- a/module/models/gear.mjs +++ b/module/models/gear.mjs @@ -1,6 +1,6 @@ import { SYSTEM } from "../config/system.mjs" -export default class CthulhuEternalEquipment extends foundry.abstract.TypeDataModel { +export default class CthulhuEternalGHear extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields const schema = {} @@ -14,6 +14,6 @@ export default class CthulhuEternalEquipment extends foundry.abstract.TypeDataMo } /** @override */ - static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Equipment"] + static LOCALIZATION_PREFIXES = ["CTHULHUETERNAL.Gear"] } diff --git a/module/models/protagonist.mjs b/module/models/protagonist.mjs index fcf4a73..50de78f 100644 --- a/module/models/protagonist.mjs +++ b/module/models/protagonist.mjs @@ -35,6 +35,7 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData schema.hp = new fields.SchemaField({ value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + stunned: new fields.BooleanField({ required: true, initial: false }) }) schema.san = new fields.SchemaField({ diff --git a/module/models/skill.mjs b/module/models/skill.mjs index 3bcf004..124cb1c 100644 --- a/module/models/skill.mjs +++ b/module/models/skill.mjs @@ -27,39 +27,21 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { computeBase() { let actor = this.parent?.actor; + if (Number(this.base)) { + return Number(this.base) + this.bonus; + } if (!actor) { - return `${this.base } + ${ String(this.bonus)}`; + 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; - } 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 - } + let base = this.base.toLowerCase(); + let char = actor.system.characteristics[base]; + if (!char) { + ui.notifications.error(`The characteristic ${base} is wrong for actor ${actor.name}`); + return `${this.base } + ${ String(this.bonus)}`; } - return `${this.base } + ${ String(this.bonus)}`; + let charValue = char.value; + return charValue + this.bonus } } diff --git a/module/models/weapon.mjs b/module/models/weapon.mjs index d935d94..925bca4 100644 --- a/module/models/weapon.mjs +++ b/module/models/weapon.mjs @@ -15,6 +15,8 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { schema.rangeUnit = new fields.StringField({ required: true, initial: "yard", choices: SYSTEM.WEAPON_RANGE_UNIT }) schema.lethality = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.killRadius = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.armorPiercing = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.weaponSubtype = new fields.StringField({ required: true, initial: "basicfirearm", choices: SYSTEM.WEAPON_SUBTYPE }) schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 }) diff --git a/styles/application-manager.less b/styles/application-manager.less deleted file mode 100644 index 2a23875..0000000 --- a/styles/application-manager.less +++ /dev/null @@ -1,21 +0,0 @@ -#lethalfantasy-application-manager { - display: flex; - - 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-table { - margin: 1rem; - background: none; - padding: 0; - margin: 0; - text-align: center; - .player { - font-size: calc(var(--font-size-standard) * 1); - } - } -} diff --git a/styles/fonts.less b/styles/fonts.less index f107ab0..cd35c40 100644 --- a/styles/fonts.less +++ b/styles/fonts.less @@ -1,6 +1,6 @@ @font-face { - font-family: "Cat Franken"; - src: url("../fonts/catfranken-deutsch.ttf") format("truetype"); + font-family: "Georama"; + src: url("../assets/fonts/georama.woff2") format("woff2"); } @font-face { diff --git a/styles/fvtt-cthulhu-eternal.less b/styles/fvtt-cthulhu-eternal.less index 3ff7ad1..9ec96a3 100644 --- a/styles/fvtt-cthulhu-eternal.less +++ b/styles/fvtt-cthulhu-eternal.less @@ -2,7 +2,7 @@ .fvtt-cthulhu-eternal { @import "mixins.less"; - @import "character.less"; + @import "protagonist.less"; @import "skill.less"; @import "injury.less"; @import "weapon.less"; @@ -16,4 +16,3 @@ } @import "roll.less"; -@import "application-manager.less"; diff --git a/styles/global.less b/styles/global.less index ac46270..8140c62 100644 --- a/styles/global.less +++ b/styles/global.less @@ -1,7 +1,8 @@ :root { --font-size-standard: 1.0rem; --background-image-base: url("../assets/parchment.jpg"); - --font-secondary: "Amiri", serif; + --font-primary: "Georama"; + --font-secondary: "Georama"; --logo-standard: url("../assets/logos/reanimated-ce-logo.webp"); } diff --git a/styles/mixins.less b/styles/mixins.less index c9d4ed1..00758e9 100644 --- a/styles/mixins.less +++ b/styles/mixins.less @@ -54,7 +54,7 @@ } } -.character-sheet-common { +.protagonist-sheet-common { label { font-family: var(--font-secondary); font-size: calc(var(--font-size-standard) * 1.2); diff --git a/styles/character.less b/styles/protagonist.less similarity index 80% rename from styles/character.less rename to styles/protagonist.less index 99e4864..bae1a1d 100644 --- a/styles/character.less +++ b/styles/protagonist.less @@ -1,41 +1,41 @@ -.character-content { +.protagonist-content { .sheet-common(); - .character-sheet-common(); + .protagonist-sheet-common(); overflow: scroll; } -.character-main { +.protagonist-main { display: flex; - .character-personnage { + .protagonist-pc { display: flex; gap: 10px; flex: 1; - .character-gauche { + .protagonist-left { min-width: 180px; display: flex; flex-direction: column; - .character-gauche-image { + .protagonist-left-image { display: flex; justify-content: center; align-items: center; padding-bottom: 20px; - .character-img { + .protagonist-img { height: 140px; width: auto; border: none; } } - .character-dv, - .character-dmax { + .protagonist-dv, + .protagonist-dmax { .form-fields { flex: none; } } - .character-dmax-edit { + .protagonist-dmax-edit { input { display: flex; width: 60px; @@ -48,19 +48,19 @@ } } - .character-droite { + .protagonist-right { display: flex; flex-direction: column; gap: 5px; - .character-name { + .protagonist-name { display: flex; input { width: 400px; } } - .character-infos { + .protagonist-infos { display: flex; flex-direction: column; gap: 10px; @@ -69,29 +69,11 @@ min-width: 120px; } - .character-voie-majeure, - .character-voie-mineure { - display: flex; - input { - width: 280px; - } - .controls { - padding-left: 5px; - } - } - - .character-commanditaire { - display: flex; - input { - width: 280px; - } - } - - .character-pv { + .protagonist-hp { display: flex; gap: 2px; align-items: center; - .character-pv-value { + .protagonist-hp-value { .form-fields input { flex: none; width: 50px; @@ -99,7 +81,7 @@ font-size: calc(var(--font-size-standard) * 1.4); } } - .character-pv-max { + .protagonist-hp-max { clear: both; display: flex; flex-direction: row; @@ -112,7 +94,7 @@ font-size: calc(var(--font-size-standard) * 1.4); } } - .pv-separator { + .hp-separator { font-size: calc(var(--font-size-standard) * 1.2); display: flex; align-items: center; @@ -123,21 +105,21 @@ } } - .character-personnage-play { + .protagonist-pc-play { min-width: 500px; } - .character-personnage-edit { + .protagonist-pc-edit { min-width: 650px; } - .character-caracteristiques { + .protagonist-characteristics { display: flex; flex-direction: column; gap: 5px; flex: 1; - .character-caracteristique { + .protagonist-characteristic { display: flex; align-items: center; .rollable:hover, @@ -182,21 +164,21 @@ } } - .character-caracteristiques-play { + .protagonist-characteristic-play { min-width: 225px; } - .character-caracteristiques-edit { + .protagonist-characteristic-edit { min-width: 400px; } - .character-ressources { + .protagonist-resources { display: flex; flex-direction: column; gap: 5px; flex: 1; - .character-ressource { + .protagonist-resource { display: flex; align-items: center; .rollable:hover, @@ -213,7 +195,7 @@ width: 70px; } } - .character-ressource-edit { + .protagonist-resource-edit { display: flex; align-items: center; gap: 10px; @@ -239,16 +221,16 @@ } } - .character-ressources-play { + .protagonist-resources-play { min-width: 235px; } - .character-ressources-edit { + .protagonist-resources-edit { min-width: 400px; } } -.character-biography { +.protagonist-biography { prose-mirror.inactive { min-height: 40px; } @@ -257,7 +239,7 @@ } } -.tab.character-items { +.tab.protagonist-skills { display: grid; grid-template-columns: 1fr; legend { @@ -266,20 +248,32 @@ padding-left: 5px; } } - .talents { + .skills { display: grid; - grid-template-columns: repeat(5, 1fr); + grid-template-columns: repeat(3, 1fr); gap: 10px; - .talent { + .skill { display: flex; align-items: center; gap: 10px; .item-img { width: 50px; height: 50px; + margin: 5px 0 0 0; } } } +} + +.tab.protagonist-equipment { + 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); @@ -310,19 +304,22 @@ } } } - .spells { + .gears { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; - .spell { + .gear { display: flex; + align-items: center; gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } } } - .appris { - font-weight: bold; - } prose-mirror.inactive { min-height: 40px; } diff --git a/templates/character-biography.hbs b/templates/character-biography.hbs deleted file mode 100644 index 42fc382..0000000 --- a/templates/character-biography.hbs +++ /dev/null @@ -1,14 +0,0 @@ -
-
- {{localize "TENEBRIS.Character.Label.description"}} - {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} -
-
- {{localize "TENEBRIS.Character.Label.langues"}} - {{formInput systemFields.langues enriched=enrichedLangues value=system.langues name="system.langues" toggled=true}} -
-
- {{localize "TENEBRIS.Character.Label.notes"}} - {{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}} -
-
\ No newline at end of file diff --git a/templates/character-items.hbs b/templates/character-items.hbs deleted file mode 100644 index e9c0ecc..0000000 --- a/templates/character-items.hbs +++ /dev/null @@ -1,103 +0,0 @@ -
- -
- {{localize "TENEBRIS.Label.talents"}} -
- {{#if @root.isEditMode}} - {{#each talents as |item|}} - {{!log "path-talent" this}} -
- -
{{item.name}} - {{#if item.progression}} (P){{/if}} - {{#if (and item.progression (gt item.niveau 1))}}{{localize 'TENEBRIS.Label.level'}} {{item.niveau}}{{/if}} -
-
- - -
-
- {{/each}} - {{else}} - {{#each talentsAppris as |item|}} - {{!log "path-talent appris" this}} -
- {{#if (ne item.img "icons/svg/item-bag.svg")}} - - {{/if}} - {{item.name}} {{item.details}} -
- {{/each}} - {{/if}} -
-
- -
- {{localize "TENEBRIS.Label.equipement"}}{{#if isEditMode}}{{/if}} -
- {{#each weapons as |item|}} - {{!log 'weapon' this}} -
- {{#if (ne item.img "icons/svg/item-bag.svg")}} - - {{/if}} -
- {{item.name}} -
- {{localize "TENEBRIS.Label.degats"}} : {{item.system.degats}} - {{#if @root.isEditMode}} -
- - -
- {{/if}} -
- {{/each}} -
-
- {{#each armors as |item|}} - {{!log 'armor' this}} -
- -
- {{item.name}} -
- {{localize "TENEBRIS.Label.armor"}} : {{item.system.valeur}} {{localize "TENEBRIS.Label.malus"}} : {{item.system.malus}} - {{#if @root.isEditMode}} -
- - -
- {{/if}} -
- {{/each}} -
-
- -
- {{localize "TENEBRIS.Label.biens"}} - {{formInput systemFields.biens enriched=enrichedBiens value=system.biens name="system.biens" toggled=true }} -
- - {{#if (or isEditMode (and isPlayMode hasSpells))}} -
- {{localize "TENEBRIS.Label.spells"}}{{#if isEditMode}}{{/if}} -
- {{#each spells as |item|}} - {{!log 'weapon' this}} -
-
- {{item.name}} -
- {{#if @root.isEditMode}} -
- - -
- {{/if}} -
- {{/each}} -
-
- {{/if}} -
\ No newline at end of file diff --git a/templates/character-main.hbs b/templates/character-main.hbs deleted file mode 100644 index 7d4f6a3..0000000 --- a/templates/character-main.hbs +++ /dev/null @@ -1,187 +0,0 @@ -
- {{!log "character-main" this}} - -
- {{localize "TENEBRIS.Character.Label.personnage"}} -
-
-
- -
-
- {{formField systemFields.dv value=system.dv rootId=partId disabled=isPlayMode classes="character-dv"}} -
-
- {{formField systemFields.dmax.fields.valeur value=system.dmax.valeur rootId=partId disabled=isPlayMode classes="character-dmax"}} - {{#if isEditMode}} -
-
{{formInput systemFields.dmax.fields.experience value=system.dmax.experience}}
-
- {{/if}} -
-
-
-
- {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} - - - -
-
- {{#if isEditMode}} -
- {{formField systemFields.voies.fields.majeure.fields.nom value=system.voies.majeure.nom rootId=partId disabled=true}} - {{#if system.hasVoieMajeure}} -
- - {{#if (not system.hasVoieMineure)}} - - {{/if}} -
- {{/if}} -
-
- {{formField systemFields.voies.fields.mineure.fields.nom value=system.voies.mineure.nom rootId=partId disabled=true}} - {{#if system.hasVoieMineure}} -
- - -
- {{/if}} -
- {{else}} -
- {{formField systemFields.voies.fields.majeure.fields.nom value=system.voies.majeure.nom rootId=partId disabled=true}} -
- {{#if system.hasVoieMineure}} -
- {{formField systemFields.voies.fields.mineure.fields.nom value=system.voies.mineure.nom rootId=partId disabled=true}} -
- {{/if}} - {{/if}} -
- {{formField systemFields.commanditaire value=system.commanditaire rootId=partId disabled=isPlayMode classes="character-commanditaire"}} -
-
-
- {{formField systemFields.pv.fields.value value=system.pv.value}} -
-
/
-
- {{formInput systemFields.pv.fields.max value=system.pv.max rootId=partId disabled=isPlayMode}} -
-
-
-
-
-
- -
- {{localize "TENEBRIS.Character.Label.caracteristiques"}} -
- - {{formField systemFields.caracteristiques.fields.rob.fields.valeur value=system.caracteristiques.rob.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveRob}} - {{#if isEditMode}} -
-
{{formInput systemFields.caracteristiques.fields.rob.fields.progression.fields.experience value=system.caracteristiques.rob.progression.experience}}
-
{{formInput systemFields.caracteristiques.fields.rob.fields.progression.fields.progres value=system.caracteristiques.rob.progression.progres}}
-
- {{/if}} -
-
- - {{formField systemFields.caracteristiques.fields.dex.fields.valeur value=system.caracteristiques.dex.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveDex}} - {{#if isEditMode}} -
-
{{formInput systemFields.caracteristiques.fields.dex.fields.progression.fields.experience value=system.caracteristiques.dex.progression.experience}}
-
{{formInput systemFields.caracteristiques.fields.dex.fields.progression.fields.progres value=system.caracteristiques.dex.progression.progres}}
-
- {{/if}} -
-
- - {{formField systemFields.caracteristiques.fields.int.fields.valeur value=system.caracteristiques.int.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveInt}} - {{#if isEditMode}} -
-
{{formInput systemFields.caracteristiques.fields.int.fields.progression.fields.experience value=system.caracteristiques.int.progression.experience}}
-
{{formInput systemFields.caracteristiques.fields.int.fields.progression.fields.progres value=system.caracteristiques.int.progression.progres}}
-
- {{/if}} -
-
- - {{formField systemFields.caracteristiques.fields.per.fields.valeur value=system.caracteristiques.per.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.savePer}} - {{#if isEditMode}} -
-
{{formInput systemFields.caracteristiques.fields.per.fields.progression.fields.experience value=system.caracteristiques.per.progression.experience}}
-
{{formInput systemFields.caracteristiques.fields.per.fields.progression.fields.progres value=system.caracteristiques.per.progression.progres}}
-
- {{/if}} -
-
- - {{formField systemFields.caracteristiques.fields.vol.fields.valeur value=system.caracteristiques.vol.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveVol}} - {{#if isEditMode}} -
-
{{formInput systemFields.caracteristiques.fields.vol.fields.progression.fields.experience value=system.caracteristiques.vol.progression.experience}}
-
{{formInput systemFields.caracteristiques.fields.vol.fields.progression.fields.progres value=system.caracteristiques.vol.progression.progres}}
-
- {{/if}} -
-
- -
- {{localize "TENEBRIS.Character.Label.ressources"}} -
- - {{formField systemFields.ressources.fields.san.fields.valeur value=system.ressources.san.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceSan}} - {{#if isEditMode}} -
- {{formInput systemFields.ressources.fields.san.fields.max value=system.ressources.san.max}} -
{{formInput systemFields.ressources.fields.san.fields.experience value=system.ressources.san.experience}}
-
- {{/if}} -
-
- - {{formField systemFields.ressources.fields.oeil.fields.valeur value=system.ressources.oeil.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceOeil}} - {{#if isEditMode}} -
- {{formInput systemFields.ressources.fields.oeil.fields.max value=system.ressources.oeil.max}} -
{{formInput systemFields.ressources.fields.oeil.fields.experience value=system.ressources.oeil.experience}}
-
- {{/if}} -
-
- - {{formField systemFields.ressources.fields.verbe.fields.valeur value=system.ressources.verbe.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceVerbe}} - {{#if isEditMode}} -
- {{formInput systemFields.ressources.fields.verbe.fields.max value=system.ressources.verbe.max}} -
{{formInput systemFields.ressources.fields.verbe.fields.experience value=system.ressources.verbe.experience}}
-
- {{/if}} -
-
- - {{formField systemFields.ressources.fields.bourse.fields.valeur value=system.ressources.bourse.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceBourse}} - {{#if isEditMode}} -
- {{formInput systemFields.ressources.fields.bourse.fields.max value=system.ressources.bourse.max}} -
{{formInput systemFields.ressources.fields.bourse.fields.experience value=system.ressources.bourse.experience}}
-
- {{/if}} -
-
- - {{formField systemFields.ressources.fields.magie.fields.valeur value=system.ressources.magie.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceMagie}} - {{#if isEditMode}} -
- {{formInput systemFields.ressources.fields.magie.fields.max value=system.ressources.magie.max}} -
{{formInput systemFields.ressources.fields.magie.fields.experience value=system.ressources.magie.experience}}
-
- {{/if}} -
-
- -
\ No newline at end of file diff --git a/templates/motivation.hbs b/templates/motivation.hbs index 4258228..9fc4d16 100644 --- a/templates/motivation.hbs +++ b/templates/motivation.hbs @@ -3,7 +3,6 @@ {{formInput fields.name value=source.name}} - {{formField systemFields.cost value=system.cost}}
{{localize "CTHULHUETERNAL.Label.description"}} diff --git a/templates/protagonist-biography.hbs b/templates/protagonist-biography.hbs new file mode 100644 index 0000000..a94e22b --- /dev/null +++ b/templates/protagonist-biography.hbs @@ -0,0 +1,10 @@ +
+
+ {{localize "CTHULHUETERNAL.Character.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+
+ {{localize "CTHULHUETERNAL.Character.Label.notes"}} + {{formInput systemFields.notes enriched=notes value=system.notes name="system.notes" toggled=true}} +
+
\ No newline at end of file diff --git a/templates/protagonist-equipment.hbs b/templates/protagonist-equipment.hbs new file mode 100644 index 0000000..4106090 --- /dev/null +++ b/templates/protagonist-equipment.hbs @@ -0,0 +1,60 @@ +
+ +
+ {{localize "CTHULHUETERNAL.Label.weapon"}}{{#if isEditMode}}{{/if}} +
+ {{#each weapons as |item|}} + {{!log 'weapon' this}} +
+ {{#if (ne item.img "icons/svg/item-bag.svg")}} + + {{/if}} +
+ {{item.name}} +
+ {{localize "CTHULHUETERNAL.Label.damage"}} : {{item.system.damage}} + {{#if @root.isEditMode}} +
+ + +
+ {{/if}} +
+ {{/each}} +
+
+ {{#each armors as |item|}} + {{!log 'armor' this}} +
+ +
+ {{item.name}} +
+ {{localize "CTHULHUETERNAL.Label.armor"}} : {{item.system.protection}} +
+ + +
+
+ {{/each}} +
+ +
+ {{#each gears as |item|}} + {{!log 'armor' this}} +
+ +
+ {{item.name}} +
+ {{localize "CTHULHUETERNAL.Label.gear"}} : {{item.system.protection}} +
+ + +
+
+ {{/each}} +
+
+ +
\ No newline at end of file diff --git a/templates/protagonist-main.hbs b/templates/protagonist-main.hbs new file mode 100644 index 0000000..8489390 --- /dev/null +++ b/templates/protagonist-main.hbs @@ -0,0 +1,79 @@ +
+ {{!log "protagonist-main" this}} + +
+ {{localize "CTHULHUETERNAL.Label.protagonist"}} +
+
+
+ +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+
+ {{formField systemFields.hp.fields.value value=system.hp.value}} +
+
/
+
+ {{formInput systemFields.hp.fields.max value=system.hp.max rootId=partId disabled=isPlayMode}} +
+
+
+
+
+
+ +
+ {{localize "CTHULHUETERNAL.Label.characteristics"}} +
+ + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.str}} +
+
+ + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.dex}} +
+
+ + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.con}} +
+
+ + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.int}} +
+
+ + {{formField systemFields.characteristics.fields.pow.fields.value value=system.characteristics.pow.value + rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.pow}} +
+
+ + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.cha}} +
+
+ +
+
+ +
\ No newline at end of file diff --git a/templates/protagonist-skills.hbs b/templates/protagonist-skills.hbs new file mode 100644 index 0000000..a40ddb1 --- /dev/null +++ b/templates/protagonist-skills.hbs @@ -0,0 +1,22 @@ +
+ {{log this}} +
+ {{localize "CTHULHUETERNAL.Label.skills"}} +
+ {{#each skills as |item|}} +
+ +
{{item.name}} + {{item.system.skillTotal}} +
+
+ + +
+
+ {{/each}} +
+
+ + +
\ No newline at end of file diff --git a/templates/weapon.hbs b/templates/weapon.hbs index d883ab4..225f41d 100644 --- a/templates/weapon.hbs +++ b/templates/weapon.hbs @@ -6,12 +6,17 @@ {{formField systemFields.settings value=system.settings localize=true}} {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{#if (eq system.weaponType "rangedfirearm")}} + {{formField systemFields.weaponSubtype value=system.weaponSubtype localize=true}} + {{/if}} {{formField systemFields.damage value=system.damage}} {{formField systemFields.baseRange value=system.baseRange}} {{formField systemFields.rangeUnit value=system.rangeUnit localize=true}} {{formField systemFields.lethality value=system.lethality}} {{formField systemFields.killRadius value=system.killRadius}} + + {{formField systemFields.armorPiercing value=system.armorPiercing}} {{formField systemFields.resourceLevel value=system.resourceLevel}}