Manage ers

This commit is contained in:
LeRatierBretonnien 2024-12-22 23:04:15 +01:00
parent 93901d5f1e
commit 15f512ea3a
57 changed files with 1132 additions and 146 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/fonts/IMFell.ttf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/fonts/Seabreed.ttf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/fonts/Top-Secret.ttf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/fonts/armalite.ttf Normal file

Binary file not shown.

BIN
assets/fonts/dominican.ttf Normal file

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
assets/ui/cover_future.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
assets/ui/cover_modern.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
assets/ui/cover_ww1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
assets/ui/cover_ww2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -1,6 +1,86 @@
@font-face {
font-family: "Georama";
src: url("../assets/fonts/georama.woff2") format("woff2");
src: url("../assets/fonts/Georama-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Tangerine";
src: url("../assets/fonts/Tangerine-Regular.ttf") format("truetype");
}
@font-face {
font-family: "TrajanPro";
src: url("../assets/fonts/Trajan-Pro-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Teko";
src: url("../assets/fonts/Teko-Regular.ttf") format("truetype");
}
@font-face {
font-family: "P22Operina";
src: url("../assets/fonts/P22-Operina.ttf") format("truetype");
}
@font-face {
font-family: "SpectralSC";
src: url("../assets/fonts/SpectralSC-Regular.ttf") format("truetype");
}
@font-face {
font-family: "RozhaOne";
src: url("../assets/fonts/RozhaOne-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Megrim";
src: url("../assets/fonts/Megrim-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Volkhov";
src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype");
}
@font-face {
font-family: "IMFell";
src: url("../assets/fonts/IMFell.ttf") format("truetype");
}
@font-face {
font-family: "Dominican";
src: url("../assets/fonts/dominican.ttf") format("truetype");
}
@font-face {
font-family: "UncialAntiqua";
src: url("../assets/fonts/UncialAntiqua-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Luminari";
src: url("../assets/fonts/Luminari-Regular.ttf") format("truetype");
}
@font-face {
font-family: "SairaStencilOne";
src: url("../assets/fonts/SairaStencilOne-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Armalite";
src: url("../assets/fonts/armalite.ttf") format("truetype");
}
@font-face {
font-family: "CarterOne";
src: url("../assets/fonts/CarterOne-Regular.ttf") format("truetype");
}
@font-face {
font-family: "SigmarOne";
src: url("../assets/fonts/SigmarOne-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Excelsior";
src: url("../assets/fonts/Excelsior-Normal.ttf") format("truetype");
}
@font-face {
font-family: "TopSecret";
src: url("../assets/fonts/Top-Secret.ttf") format("truetype");
}
@font-face {
font-family: "BebasNeue";
src: url("../assets/fonts/BebasNeue-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Seabreed";
src: url("../assets/fonts/Seabreed.ttf") format("truetype");
}
@font-face {
font-family: "Broadway";
@ -26,18 +106,21 @@
--font-size-standard: 0.9rem;
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/jazzage_background_main.webp");
/*--background-image-base: url("../assets/ui/jazzage_background_main.webp");*/
--font-primary: "Georama";
--font-secondary: "Georama";
--font-primary: "RozhaOne";
--font-secondary: "RozhaOne";
--font-title: "Broadway";
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
--color-success: darkgreen;
--color-failure: darkred;
--color-critical-success: lightgreen;
--color-critical-failure: lightcoral;
--img-icon-color-filter: brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%);
}
.era-icon-color {
.item .thumbnail,
.item-img {
/*filter: invert(90%) sepia(10%) saturate(1215%) hue-rotate(55deg) brightness(93%) contrast(89%);*/
/*filter: invert(48%) sepia(79%) saturate(2476%) hue-rotate(86deg) brightness(118%) contrast(119%);*/
filter: var(--img-icon-color-filter);
}
#logo {
content: var(--logo-standard);
@ -213,6 +296,31 @@ i.fvtt-cthulhu-eternal {
font-size: calc(var(--font-size-standard) * 1.4);
width: 400px;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san input {
min-width: 2.2rem;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .san-checkbox {
min-width: 1rem;
max-width: 1rem;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .label-field {
flex-grow: 0;
margin-left: 4px;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .san .spacing {
margin-left: 4px;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower input {
min-width: 2.2rem;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower .label-field {
flex-grow: 0;
margin-left: 4px;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower .checkbox {
min-width: 1rem;
max-width: 1rem;
}
.fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .protagonist-infos {
display: flex;
flex-direction: column;
@ -296,6 +404,39 @@ i.fvtt-cthulhu-eternal {
.fvtt-cthulhu-eternal .protagonist-biography prose-mirror.active {
min-height: 150px;
}
.fvtt-cthulhu-eternal .protagonist-biography .field-label {
margin-left: 8px;
}
.fvtt-cthulhu-eternal .protagonist-biography .biodata {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
}
.fvtt-cthulhu-eternal .protagonist-biography .motivations {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
}
.fvtt-cthulhu-eternal .protagonist-biography .motivations .motivation {
display: flex;
align-items: center;
gap: 4px;
min-width: 14rem;
max-width: 14rem;
}
.fvtt-cthulhu-eternal .protagonist-biography .motivations .motivation .controls {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-cthulhu-eternal .protagonist-biography .motivations .motivation .name {
min-width: 8rem;
max-width: 8rem;
}
.fvtt-cthulhu-eternal .protagonist-biography .motivations .motivation .item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-skills {
background-color: var(--color-light-1);
display: grid;
@ -335,6 +476,98 @@ i.fvtt-cthulhu-eternal {
height: 32px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-status {
background-color: var(--color-light-1);
display: grid;
grid-template-columns: 1fr;
}
.fvtt-cthulhu-eternal .tab.protagonist-status legend a {
font-size: calc(var(--font-size-standard) * 1.4);
padding-left: 5px;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond {
display: flex;
align-items: center;
gap: 4px;
min-width: 16rem;
max-width: 16rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .controls {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .name {
min-width: 12rem;
max-width: 12rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .type {
min-width: 4rem;
max-width: 4rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .level {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .bonds .bond .item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder {
display: flex;
align-items: center;
gap: 4px;
min-width: 16rem;
max-width: 16rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .controls {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .name {
min-width: 14rem;
max-width: 14rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .mentaldisorders .mentaldisorder .item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury {
display: flex;
align-items: center;
gap: 4px;
min-width: 16rem;
max-width: 16rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .controls {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .name {
min-width: 14rem;
max-width: 14rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-status .injuries .injury .item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment {
background-color: var(--color-light-1);
display: grid;
@ -346,18 +579,37 @@ i.fvtt-cthulhu-eternal {
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-columns: repeat(2, 1fr);
gap: 4px;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon {
display: flex;
align-items: center;
gap: 4px;
min-width: 13rem;
max-width: 13srem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .rollable:hover,
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .controls {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .damage {
min-width: 5rem;
max-width: 5rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .name {
min-width: 8rem;
max-width: 8rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .weapons .weapon .item-img {
width: 50px;
height: 50px;
margin: 5px 0 0 0;
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors {
display: grid;
@ -368,11 +620,30 @@ i.fvtt-cthulhu-eternal {
display: flex;
align-items: center;
gap: 4px;
min-width: 13rem;
max-width: 13srem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .rollable:hover,
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .controls {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .protection {
min-width: 5rem;
max-width: 5rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .name {
min-width: 8rem;
max-width: 8rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .armors .armor .item-img {
width: 50px;
height: 50px;
margin: 5px 0 0 0;
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears {
display: grid;
@ -383,11 +654,30 @@ i.fvtt-cthulhu-eternal {
display: flex;
align-items: center;
gap: 4px;
min-width: 13rem;
max-width: 13srem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .rollable:hover,
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .controls {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .damage {
min-width: 5rem;
max-width: 5rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .name {
min-width: 8rem;
max-width: 8rem;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment .gears .gear .item-img {
width: 50px;
height: 50px;
margin: 5px 0 0 0;
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
.fvtt-cthulhu-eternal .tab.protagonist-equipment prose-mirror.inactive {
min-height: 40px;

View File

@ -85,7 +85,9 @@ Hooks.once("init", function () {
game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent)
setupTextEnrichers()
CthulhuEternalUtils.registerSettings()
CthulhuEternalUtils.registerHandlebarsHelpers()
CthulhuEternalUtils.setupCSSRootVariables()
// Gestion des jets de dés depuis les journaux
document.addEventListener("click", (event) => {

View File

@ -29,10 +29,38 @@
"WW2": "World War 2",
"ColdWar": "Cold War",
"Victorian": "Victorian",
"AgeOfSail": "Age of Sail"
"AgeOfSail": "Age of Sail",
"PostApo": "Post-Apocalyptic"
},
"Protagonist": {
"FIELDS": {
"biodata": {
"harshness": {
"label": "Harshness"
},
"age": {
"label": "Age"
},
"gender": {
"label": "Gender"
},
"hair": {
"label": "Hair"
},
"eyes": {
"label": "Eyes"
},
"height": {
"label": "Height"
},
"home": {
"label": "Home"
},
"birthplace": {
"label": "Birthplace"
},
"label": "Biodata"
},
"characteristics:": {
"str": {
"label": "Strength"
@ -57,6 +85,12 @@
},
"Skill": {
"Unnatural": "Unnatural",
"Melee": "Melee Weapons",
"Firearms": "Firearms",
"Athletics": "Athletics",
"UnarmedCombat": "Unarmed Combat",
"RangedWeapons": "Ranged Weapons",
"FirearmsBeams": "Firearms / Beam Weapons",
"FIELDS": {
"settings": {
"label": "Settings era"
@ -243,8 +277,6 @@
"gear": "Gear",
"damage": "Damage",
"resource": "Resource",
"newArmor": "New Armor",
"newWeapon": "New Weapon",
"armor": "Armor",
"malus": "Malus",
"experience": "Experience",
@ -272,7 +304,29 @@
"criticalSuccess": "Critical Success",
"criticalFailure": "Critical Failure",
"Characteristic": "Characteristic",
"targetScore": "Target Score"
"targetScore": "Target Score",
"gears": "Gears",
"armors": "Armors",
"motivations": "Motivations",
"mentalDisorders": "Mental Disorders",
"bonds": "Bonds",
"arcane": "Arcane",
"archetypes": "Archetypes",
"bondType": "Bond Type",
"injuries": "Injuries",
"damageShort": "Dmg",
"status": "Status",
"mentaldisorders": "Mental Disorders",
"newBond": "New Bond",
"newMotivation": "New Motivation",
"newMentalDisorder": "New Mental Disorder",
"newWeapon": "New Weapon",
"newArmor": "New Armor",
"newInjury": "New Injury",
"newGear": "New Gear",
"newArcane": "New Arcane",
"newArchetype": "New Archetype",
"newSkill": "New Skill"
},
"Edit": "Edit",
"Delete": "Delete",

View File

@ -5,14 +5,21 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
static DEFAULT_OPTIONS = {
classes: ["protagonist"],
position: {
width: 840,
width: 848,
height: 620,
},
window: {
contentClasses: ["protagonist-content"],
},
actions: {
createEquipment: CthulhuEternalProtagonistSheet.#onCreateEquipment,
createGear: CthulhuEternalProtagonistSheet.#onCreateGear,
createArmor: CthulhuEternalProtagonistSheet.#onCreateArmor,
createWeapon: CthulhuEternalProtagonistSheet.#onCreateWeapon,
createBond: CthulhuEternalProtagonistSheet.#onCreateBond,
createInjury: CthulhuEternalProtagonistSheet.#onCreateInjury,
createMentalDisorder: CthulhuEternalProtagonistSheet.#onCreateMentalDisorder,
createMotivation: CthulhuEternalProtagonistSheet.#onCreateMotivation,
createSkill: CthulhuEternalProtagonistSheet.#onCreateSkill
},
}
@ -27,6 +34,9 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
skills: {
template: "systems/fvtt-cthulhu-eternal/templates/protagonist-skills.hbs",
},
status: {
template: "systems/fvtt-cthulhu-eternal/templates/protagonist-status.hbs",
},
equipment: {
template: "systems/fvtt-cthulhu-eternal/templates/protagonist-equipment.hbs",
},
@ -47,6 +57,7 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
#getTabs() {
const tabs = {
skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Label.skills" },
status: { id: "status", group: "sheet", icon: "fa-solid fa-file-waveform", label: "CTHULHUETERNAL.Label.status" },
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" },
}
@ -104,8 +115,15 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
context.armors = doc.itemTypes.armor
context.gears = doc.itemTypes.gear
break
case "status":
context.tab = context.tabs.status
context.injuries = doc.itemTypes.injury
context.mentaldisorders = doc.itemTypes.mentaldisorder
context.bonds = doc.itemTypes.bond
break
case "biography":
context.tab = context.tabs.biography
context.motivations = doc.itemTypes.motivation
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
break
@ -118,15 +136,36 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
* @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("CTHULHUETERNAL.Label.newArmor"), type: "armor" }])
}
// Création d'une arme
else {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newWeapon"), type: "weapon" }])
}
static #onCreateGear(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newGear"), type: "gear" }])
}
static #onCreateWeapon(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newWeapon"), type: "weapon" }])
}
static #onCreateArmor(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newArmor"), type: "armor" }])
}
static #onCreateBond(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newBond"), type: "bond" }])
}
static #onCreateInjury(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newInjury"), type: "injury" }])
}
static #onCreateMentalDisorder(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newMentalDisorder"), type: "mentaldisorder" }])
}
static #onCreateMotivation(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newMotivation"), type: "motivation" }])
}
static #onCreateSkill(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newSkill"), type: "skill" }])
}
/**

View File

@ -5,21 +5,6 @@ import * as BOND from "./bond.mjs"
export const SYSTEM_ID = "fvtt-cthulhu-eternal"
export const AVAILABLE_SETTINGS = {
common: "CTHULHUETERNAL.Settings.Common",
modern: "CTHULHUETERNAL.Settings.Modern",
jazz: "CTHULHUETERNAL.Settings.Jazz",
future: "CTHULHUETERNAL.Settings.Future",
coldwar: "CTHULHUETERNAL.Settings.ColdWar",
ww2: "CTHULHUETERNAL.Settings.WW2",
ww1: "CTHULHUETERNAL.Settings.WW1",
victorian: "CTHULHUETERNAL.Settings.Victorian",
revolution: "CTHULHUETERNAL.Settings.Revolution",
medieval: "CTHULHUETERNAL.Settings.Medieval",
ageofsail: "CTHULHUETERNAL.Settings.AgeOfSail",
classical: "CTHULHUETERNAL.Settings.Classical"
}
export const ASCII = `
@ -31,10 +16,155 @@ export const ASCII = `
`
export const AVAILABLE_SETTINGS = {
modern: "CTHULHUETERNAL.Settings.Modern",
jazz: "CTHULHUETERNAL.Settings.Jazz",
future: "CTHULHUETERNAL.Settings.Future",
coldwar: "CTHULHUETERNAL.Settings.ColdWar",
ww2: "CTHULHUETERNAL.Settings.WW2",
ww1: "CTHULHUETERNAL.Settings.WW1",
victorian: "CTHULHUETERNAL.Settings.Victorian",
revolution: "CTHULHUETERNAL.Settings.Revolution",
medieval: "CTHULHUETERNAL.Settings.Medieval",
ageofsail: "CTHULHUETERNAL.Settings.AgeOfSail",
classical: "CTHULHUETERNAL.Settings.Classical",
postapo: "CTHULHUETERNAL.Settings.PostApo"
}
export const ERA_CSS = {
jazz: { primaryFont: "RozhaOne", secondaryFont: "RozhaOne", titleFont: "Broadway", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%)" },
modern: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "Georama", imgFilter: "brightness(0) saturate(100%) invert(92%) sepia(11%) saturate(1214%) hue-rotate(51deg) brightness(93%) contrast(86%)" },
future: { primaryFont: "Megrim", secondaryFont: "Megrim", titleFont: "Seabreed", imgFilter: "brightness(0) saturate(100%) invert(83%) sepia(30%) saturate(588%) hue-rotate(168deg) brightness(105%) contrast(103%)" },
victorian: { primaryFont: "Volkhov", secondaryFont: "Volkhov", titleFont: "Excelsior", imgFilter: "brightness(0) saturate(100%) invert(100%) sepia(59%) saturate(1894%) hue-rotate(337deg) brightness(88%) contrast(98%)" },
coldwar: { primaryFont: "BebasNeue", secondaryFont: "BebasNeue", titleFont: "TopSecret", imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(14%) saturate(2508%) hue-rotate(202deg) brightness(99%) contrast(105%)"},
revolution: { primaryFont: "IMFell", secondaryFont: "IMFell", titleFont: "Dominican", imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(25%) saturate(386%) hue-rotate(7deg) brightness(101%) contrast(84%)" },
medieval: { primaryFont: "UncialAntiqua", secondaryFont: "UncialAntiqua", titleFont: "Luminari", imgFilter: "brightness(0) saturate(100%) invert(93%) sepia(46%) saturate(354%) hue-rotate(321deg) brightness(93%) contrast(87%)"},
ww2: { primaryFont: "SairaStencilOne", secondaryFont: "SairaStencilOne", titleFont: "Armalite", imgFilter: "brightness(0) saturate(100%) invert(95%) sepia(9%) saturate(1471%) hue-rotate(342deg) brightness(103%) contrast(107%)"},
ww1: { primaryFont: "CarterOne", secondaryFont: "CarterOne", titleFont: "SigmarOne", imgFilter: "brightness(0) saturate(100%) invert(90%) sepia(38%) saturate(341%) hue-rotate(21deg) brightness(105%) contrast(105%)"},
ageofsail: { primaryFont: "Tangerine", secondaryFont: "Tangerine", titleFont: "P22Operina", imgFilter: "brightness(0) saturate(100%) invert(43%) sepia(74%) saturate(3154%) hue-rotate(336deg) brightness(95%) contrast(83%)" },
classical: { primaryFont: "SpectralSC", secondaryFont: "SpectralSC", titleFont: "TrajanPro", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(32%) saturate(7492%) hue-rotate(265deg) brightness(89%) contrast(95%)" },
postapo: { primaryFont: "Teko", secondaryFont: "Teko", titleFont: "Teko", imgFilter: "brightness(0) saturate(100%) invert(44%) sepia(55%) saturate(2341%) hue-rotate(329deg) brightness(122%) contrast(103%))" }
}
export const RESOURCE_RATING = {
jazz: {
0: {name: "Penury", description: "CTHULHUETERNAL.Resource.Penury", income: 0, assets: "CTHULHUETERNAL.Resource.NoAssets"},
4: {name: "Poor", description: "CTHULHUETERNAL.Resource.Poor", income: 700, assets: "CTHULHUETERNAL.Resource.PoorJazz"},
8: {name: "Average", description: "CTHULHUETERNAL.Resource.Average", income: 3000, assets: "CTHULHUETERNAL.Resource.AverageJazz"},
12: {name: "Above Average", description: "CTHULHUETERNAL.Resource.AboveAverage", income: 5000, assets: "CTHULHUETERNAL.Resource.AboveAverageJazz"},
16: {name: "Well Off", description: "CTHULHUETERNAL.Resource.WellOff", income: 10000, assets: "CTHULHUETERNAL.Resource.WellOffJazz"},
18: {name: "Rich", description: "CTHULHUETERNAL.Resource.Rich", income: 15000, assets: "CTHULHUETERNAL.Resource.RichJazz"},
19: {name: "Very Rich", description: "CTHULHUETERNAL.Resource.VeryRich", income: 50000, assets: "CTHULHUETERNAL.Resource.VeryRichJazz"},
20: {name: "Super Rich", description: "CTHULHUETERNAL.Resource.SuperRich", income: 100000, assets: "CTHULHUETERNAL.Resource.SuperRichJazz"}
},
modern: {
0: {name: "Penury", description: "CTHULHUETERNAL.Resource.Penury", income: 0, assets: "CTHULHUETERNAL.Resource.NoAssets"},
4: {name: "Poor", description: "CTHULHUETERNAL.Resource.Poor", income: 20000, assets: "CTHULHUETERNAL.Resource.PoorModern"},
8: {name: "Average", description: "CTHULHUETERNAL.Resource.Average", income: 50000, assets: "CTHULHUETERNAL.Resource.AverageModern"},
12: {name: "Above Average", description: "CTHULHUETERNAL.Resource.AboveAverage", income: 100000, assets: "CTHULHUETERNAL.Resource.AboveAverageModern"},
16: {name: "Well Off", description: "CTHULHUETERNAL.Resource.WellOff", income: 150000, assets: "CTHULHUETERNAL.Resource.WellOffModern"},
18: {name: "Rich", description: "CTHULHUETERNAL.Resource.Rich", income: 20000, assets: "CTHULHUETERNAL.Resource.RichModern"},
19: {name: "Very Rich", description: "CTHULHUETERNAL.Resource.VeryRich", income: 500000, assets: "CTHULHUETERNAL.Resource.VeryRichModern"},
20: {name: "Super Rich", description: "CTHULHUETERNAL.Resource.SuperRich", income: 1000000, assets: "CTHULHUETERNAL.Resource.SuperRichModern"}
},
victorian: {
0: {name: "Penury", description: "CTHULHUETERNAL.Resource.Penury", income: 0, assets: "CTHULHUETERNAL.Resource.NoAssets"},
4: {name: "Poor", description: "CTHULHUETERNAL.Resource.Poor", income: 30, assets: "CTHULHUETERNAL.Resource.PoorVictorian"},
8: {name: "Average", description: "CTHULHUETERNAL.Resource.Average", income: 90, assets: "CTHULHUETERNAL.Resource.AverageVictorian"},
12: {name: "Above Average", description: "CTHULHUETERNAL.Resource.AboveAverage", income: 400, assets: "CTHULHUETERNAL.Resource.AboveAverageVictorian"},
16: {name: "Well Off", description: "CTHULHUETERNAL.Resource.WellOff", income: 1500, assets: "CTHULHUETERNAL.Resource.WellOffVictorian"},
18: {name: "Rich", description: "CTHULHUETERNAL.Resource.Rich", income: 5000, assets: "CTHULHUETERNAL.Resource.RichVictorian"},
19: {name: "Very Rich", description: "CTHULHUETERNAL.Resource.VeryRich", income: 40000, assets: "CTHULHUETERNAL.Resource.VeryRichVictorian"},
20: {name: "Super Rich", description: "CTHULHUETERNAL.Resource.SuperRich", income: 200000, assets: "CTHULHUETERNAL.Resource.SuperRichVictorian"}
}
}
export const MENTAL_ILLNESS_CURE_SKILL = {
jazz: "CTHULHUETERNAL.Skill.Psychoanalyze",
modern: "CTHULHUETERNAL.Skill.Psychoanalyze",
victorian: "CTHULHUETERNAL.Skill.Reassure",
}
export const WEAPON_SKILL_MAPPING = {
modern: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
jazz: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
victorian: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
coldwar: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
ww1: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
ww2: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
future: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.FirearmsBeams",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.FirearmsBeams",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
revolution: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.RangedWeapons",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
ageofsail: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.RangedWeapons",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
medieval: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.RangedWeapons",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
},
classical: {
"melee": "CTHULHUETERNAL.Skill.Melee",
"rangedprimitive": "CTHULHUETERNAL.Skill.RangedWeapons",
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
}
}
/**
* Include all constant definitions within the SYSTEM global export
* @type {Object}
@ -45,7 +175,11 @@ export const SYSTEM = {
HARSHNESS: PROTAGONIST.HARSHNESS,
WEAPON_TYPE: WEAPON.WEAPON_TYPE,
WEAPON_SUBTYPE: WEAPON.WEAPON_SUBTYPE,
WEAPON_SKILL_MAPPING,
BOND_TYPE: BOND.BOND_TYPE,
AVAILABLE_SETTINGS,
RESOURCE_RATING,
MENTAL_ILLNESS_CURE_SKILL,
ERA_CSS,
ASCII
}

View File

@ -5,7 +5,7 @@ export const defaultItemImg = {
skill: "systems/fvtt-cthulhu-eternal/assets/icons/icon_skill.svg",
archetype: "systems/fvtt-cthulhu-eternal/assets/icons/icon_archetype.svg",
bond: "systems/fvtt-cthulhu-eternal/assets/icons/icon_bond.svg",
mentaldisorder: "systems/fvtt-cthulhu-eternal/assets/icons/icon_mentaldisorder.svg",
mentaldisorder: "systems/fvtt-cthulhu-eternal/assets/icons/icon_mental_disorder.svg",
arcane: "systems/fvtt-cthulhu-eternal/assets/icons/icon_arcane.svg",
injury: "systems/fvtt-cthulhu-eternal/assets/icons/icon_injury.svg",
motivation: "systems/fvtt-cthulhu-eternal/assets/icons/icon_motivation.svg",

View File

@ -130,6 +130,8 @@ export default class CthulhuEternalRoll extends Roll {
rollItem: foundry.utils.duplicate(options.rollItem), // Object only, no class
initialScore: options.initialScore,
targetScore: options.initialScore,
isLowWP: options.isLowWP,
isZeroWP: options.isZeroWP,
rollModes,
fieldRollMode,
choiceModifier,
@ -167,23 +169,22 @@ export default class CthulhuEternalRoll extends Roll {
// If the user cancels the dialog, exit
if (rollContext === null) return
const rollData = {
rollType: options.rollType,
rollItem: options.rollItem,
actorId: options.actorId,
actorName: options.actorName,
actorImage: options.actorImage,
rollMode: rollContext.visibility,
hasTarget: options.hasTarget,
initialScore: options.initialScore,
targetName,
targetArmor,
targetMalus,
...rollContext,
}
let rollData = foundry.utils.mergeObject(foundry.utils.duplicate(options), rollContext)
rollData.rollMode = rollContext.visibility
rollData.targetName = targetName
rollData.targetArmor = targetArmor
rollData.targetMalus = targetMalus
// Update target score
console.log(rollData)
rollData.targetScore = Math.min( Math.max(options.initialScore + Number(rollData.modifier), 0), 100)
if ( rollData.isLowWP ) {
rollData.targetScore -= 20
}
if ( rollData.isZeroWP ) {
rollData.targetScore = 0
}
rollData.targetScore = Math.min( Math.max(rollData.targetScore, 0), 100)
/**
* A hook event that fires before the roll is made.
@ -270,32 +271,25 @@ export default class CthulhuEternalRoll extends Roll {
* @property {string} tooltip - The tooltip text for the chat card.
*/
async _getChatCardData(isPrivate) {
const cardData = {
css: [SYSTEM.id, "dice-roll"],
data: this.data,
diceTotal: this.dice.reduce((t, d) => t + d.total, 0),
isGM: game.user.isGM,
rollItem: this.options.rollItem,
initialScore: this.options.initialScore,
targetScore: this.options.targetScore,
rollType: this.options.rollType,
modifier: this.options.modifier,
formula: this.formula,
total: this.total,
isSuccess: this.options.isSuccess,
isFailure: this.options.isFailure,
isCritical: this.options.isCritical,
actorId: this.actorId,
actingCharName: this.actorName,
actingCharImg: this.actorImage,
resultType: this.resultType,
hasTarget: this.hasTarget,
targetName: this.targetName,
targetArmor: this.targetArmor,
realDamage: this.realDamage,
isPrivate: isPrivate,
}
let cardData = foundry.utils.duplicate(this.options)
cardData.css = [SYSTEM.id, "dice-roll"]
cardData.data = this.data
cardData.diceTotal = this.dice.reduce((t, d) => t + d.total, 0)
cardData.isGM = game.user.isGM
cardData.formula = this.formula
cardData.total = this.total
cardData.actorId = this.actorId
cardData.actingCharName = this.actorName
cardData.actingCharImg = this.actorImage
cardData.resultType = this.resultType
cardData.hasTarget = this.hasTarget
cardData.targetName = this.targetName
cardData.targetArmor = this.targetArmor
cardData.realDamage = this.realDamage
cardData.isPrivate = isPrivate
console.log(cardData)
cardData.cssClass = cardData.css.join(" ")
cardData.tooltip = isPrivate ? "" : await this.getTooltip()
return cardData

View File

@ -5,7 +5,7 @@ export default class CthulhuEternalArchetype extends foundry.abstract.TypeDataMo
const requiredInteger = { required: true, nullable: false, integer: true }
const schema = {}
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.description = new fields.HTMLField({
required: false,

View File

@ -6,7 +6,7 @@ export default class CthulhuEternalArmor extends foundry.abstract.TypeDataModel
const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.protection = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })

View File

@ -7,7 +7,7 @@ export default class CthulhuEternalGHear extends foundry.abstract.TypeDataModel
const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })
return schema

View File

@ -142,6 +142,15 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
}
}
isLowWP() {
return this.wp.value <= 2
}
isZeroWP() {
return this.wp.value === 0
}
/** */
/**
* Rolls a dice for a character.
@ -168,6 +177,8 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
let roll = await CthulhuEternalRoll.prompt({
rollType,
rollItem,
isLowWP: this.isLowWP(),
isZeroWP: this.isZeroWP(),
actorId: this.parent.id,
actorName: this.parent.name,
actorImage: this.parent.img,

View File

@ -6,9 +6,9 @@ export default class CthulhuEternalSkill extends foundry.abstract.TypeDataModel
const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.base = new fields.StringField({ required: true, initial: "WIS" })
schema.base = new fields.StringField({ required: true, initial: "0" })
schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
schema.diceEvolved = new fields.BooleanField({ required: true, initial: true })
schema.rollFailed = new fields.BooleanField({ required: true, initial: false })

View File

@ -7,7 +7,7 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE })
schema.damage = new fields.StringField({required: true, initial: "1d6"})

View File

@ -1,6 +1,19 @@
export class CthulhuEternalUtils {
static registerSettings() {
game.settings.register("fvtt-cthulhu-eternal", "settings-era", {
name: game.i18n.localize("CHTUHLUETERNAL.Settings.era"),
hint: game.i18n.localize("CHTUHLUETERNAL.Settings.eraHint"),
default: true,
scope: "world",
type: String,
choices: SYSTEM.AVAILABLE_SETTINGS,
config: true,
onChange: _ => window.location.reload()
});
}
static registerHandlebarsHelpers() {
Handlebars.registerHelper('isNull', function (val) {
@ -153,4 +166,17 @@ export class CthulhuEternalUtils {
});
}
static setupCSSRootVariables() {
const era = game.settings.get("fvtt-cthulhu-eternal", "settings-era")
let eraCSS = SYSTEM.ERA_CSS[era];
if (!eraCSS) eraCSS = SYSTEM.ERA_CSS["jazz"];
document.documentElement.style.setProperty('--font-primary', eraCSS.primaryFont);
document.documentElement.style.setProperty('--font-secondary', eraCSS.secondaryFont);
document.documentElement.style.setProperty('--font-title', eraCSS.titleFont);
document.documentElement.style.setProperty('--img-icon-color-filter', eraCSS.imgFilter);
}
}

View File

@ -1,6 +1,107 @@
@font-face {
font-family: "Georama";
src: url("../assets/fonts/georama.woff2") format("woff2");
src: url("../assets/fonts/Georama-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Tangerine";
src: url("../assets/fonts/Tangerine-Regular.ttf") format("truetype");
}
@font-face {
font-family: "TrajanPro";
src: url("../assets/fonts/Trajan-Pro-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Teko";
src: url("../assets/fonts/Teko-Regular.ttf") format("truetype");
}
@font-face {
font-family: "P22Operina";
src: url("../assets/fonts/P22-Operina.ttf") format("truetype");
}
@font-face {
font-family: "SpectralSC";
src: url("../assets/fonts/SpectralSC-Regular.ttf") format("truetype");
}
@font-face {
font-family: "RozhaOne";
src: url("../assets/fonts/RozhaOne-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Megrim";
src: url("../assets/fonts/Megrim-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Volkhov";
src: url("../assets/fonts/Volkhov-Regular.ttf") format("truetype");
}
@font-face {
font-family: "IMFell";
src: url("../assets/fonts/IMFell.ttf") format("truetype");
}
@font-face {
font-family: "Dominican";
src: url("../assets/fonts/dominican.ttf") format("truetype");
}
@font-face {
font-family: "UncialAntiqua";
src: url("../assets/fonts/UncialAntiqua-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Luminari";
src: url("../assets/fonts/Luminari-Regular.ttf") format("truetype");
}
@font-face {
font-family: "SairaStencilOne";
src: url("../assets/fonts/SairaStencilOne-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Armalite";
src: url("../assets/fonts/armalite.ttf") format("truetype");
}
@font-face {
font-family: "CarterOne";
src: url("../assets/fonts/CarterOne-Regular.ttf") format("truetype");
}
@font-face {
font-family: "SigmarOne";
src: url("../assets/fonts/SigmarOne-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Excelsior";
src: url("../assets/fonts/Excelsior-Normal.ttf") format("truetype");
}
@font-face {
font-family: "TopSecret";
src: url("../assets/fonts/Top-Secret.ttf") format("truetype");
}
@font-face {
font-family: "BebasNeue";
src: url("../assets/fonts/BebasNeue-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Seabreed";
src: url("../assets/fonts/Seabreed.ttf") format("truetype");
}
@font-face {

View File

@ -3,19 +3,22 @@
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)),
url("../assets/ui/jazzage_background_main.webp");
/*--background-image-base: url("../assets/ui/jazzage_background_main.webp");*/
--font-primary: "Georama";
--font-secondary: "Georama";
--font-primary: "RozhaOne";
--font-secondary: "RozhaOne";
--font-title: "Broadway";
--logo-standard: url("../assets/logos/reanimated-ce-logo.webp");
--color-success: darkgreen;
--color-failure: darkred;
--color-critical-success: lightgreen;
--color-critical-failure: lightcoral;
--img-icon-color-filter: brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%);
}
.era-icon-color {
.item .thumbnail,
.item-img {
/*filter: invert(90%) sepia(10%) saturate(1215%) hue-rotate(55deg) brightness(93%) contrast(89%);*/
/*filter: invert(48%) sepia(79%) saturate(2476%) hue-rotate(86deg) brightness(118%) contrast(119%);*/
filter: var(--img-icon-color-filter);
}
#logo {

View File

@ -12,7 +12,6 @@
background-color: var(--color-light-1);
display: flex;
.protagonist-pc {
display: flex;
gap: 4px;
@ -67,7 +66,36 @@
width: 400px;
}
}
.san {
input {
min-width: 2.2rem;
}
.san-checkbox {
min-width: 1rem;
max-width: 1rem;
}
.label-field {
flex-grow: 0;
margin-left: 4px;
}
.spacing {
margin-left: 4px;
}
}
.willpower {
input {
min-width: 2.2rem;
}
.label-field {
flex-grow: 0;
margin-left: 4px;
}
.checkbox {
min-width: 1rem;
max-width: 1rem;
}
}
.protagonist-infos {
display: flex;
flex-direction: column;
@ -154,7 +182,6 @@
.protagonist-characteristic-edit {
min-width: 400px;
}
}
.protagonist-biography {
@ -165,6 +192,39 @@
prose-mirror.active {
min-height: 150px;
}
.field-label {
margin-left: 8px;
}
.biodata {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
}
.motivations {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
.motivation {
display: flex;
align-items: center;
gap: 4px;
min-width: 14rem;
max-width: 14rem;
.controls {
min-width: 2rem;
max-width: 2rem;
}
.name {
min-width: 8rem;
max-width: 8rem;
}
.item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
}
}
}
.tab.protagonist-skills {
@ -209,6 +269,101 @@
}
}
.tab.protagonist-status {
background-color: var(--color-light-1);
display: grid;
grid-template-columns: 1fr;
legend {
a {
font-size: calc(var(--font-size-standard) * 1.4);
padding-left: 5px;
}
}
.bonds {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
.bond {
display: flex;
align-items: center;
gap: 4px;
min-width: 16rem;
max-width: 16rem;
.controls {
min-width: 2rem;
max-width: 2rem;
}
.name {
min-width: 12rem;
max-width: 12rem;
}
.type {
min-width: 4rem;
max-width: 4rem;
}
.level {
min-width: 2rem;
max-width: 2rem;
}
.item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
}
}
.mentaldisorders {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
.mentaldisorder {
display: flex;
align-items: center;
gap: 4px;
min-width: 16rem;
max-width: 16rem;
.controls {
min-width: 2rem;
max-width: 2rem;
}
.name {
min-width: 14rem;
max-width: 14rem;
}
.item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
}
}
.injuries {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 4px;
.injury {
display: flex;
align-items: center;
gap: 4px;
min-width: 16rem;
max-width: 16rem;
.controls {
min-width: 2rem;
max-width: 2rem;
}
.name {
min-width: 14rem;
max-width: 14rem;
}
.item-img {
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
}
}
}
.tab.protagonist-equipment {
background-color: var(--color-light-1);
display: grid;
@ -221,16 +376,35 @@
}
.weapons {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-columns: repeat(2, 1fr);
gap: 4px;
.weapon {
display: flex;
align-items: center;
gap: 4px;
min-width: 13rem;
max-width: 13srem;
.rollable:hover,
.rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.controls {
min-width: 2rem;
max-width: 2rem;
}
.damage {
min-width: 5rem;
max-width: 5rem;
}
.name {
min-width: 8rem;
max-width: 8rem;
}
.item-img {
width: 50px;
height: 50px;
margin: 5px 0 0 0;
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
}
}
@ -242,10 +416,29 @@
display: flex;
align-items: center;
gap: 4px;
min-width: 13rem;
max-width: 13srem;
.rollable:hover,
.rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.controls {
min-width: 2rem;
max-width: 2rem;
}
.protection {
min-width: 5rem;
max-width: 5rem;
}
.name {
min-width: 8rem;
max-width: 8rem;
}
.item-img {
width: 50px;
height: 50px;
margin: 5px 0 0 0;
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
}
}
@ -257,10 +450,29 @@
display: flex;
align-items: center;
gap: 4px;
min-width: 13rem;
max-width: 13srem;
.rollable:hover,
.rollable:focus {
text-shadow: 0 0 8px var(--color-shadow-primary);
cursor: pointer;
}
.controls {
min-width: 2rem;
max-width: 2rem;
}
.damage {
min-width: 5rem;
max-width: 5rem;
}
.name {
min-width: 8rem;
max-width: 8rem;
}
.item-img {
width: 50px;
height: 50px;
margin: 5px 0 0 0;
width: 32px;
height: 32px;
margin: 4px 0 0 0;
}
}
}

View File

@ -1,6 +1,6 @@
<section>
<div class="header">
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
<img class="item-img era-icon-color" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
{{formInput fields.name value=source.name}}
</div>

View File

@ -2,13 +2,43 @@
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.biodata"}}</legend>
{{formInput systemFields.biodata.fields.harshness value=system.biodata.harshness name="system.biodata.harshness" localize=true}}
<div class="biodata">
{{formField systemFields.biodata.fields.harshness value=system.biodata.harshness name="system.biodata.harshness" localize=true}}
{{formField systemFields.biodata.fields.age value=system.biodata.age name="system.biodata.age" localize=true classes="field-label"}}
{{formField systemFields.biodata.fields.gender value=system.biodata.gender name="system.biodata.gender" localize=true classes="field-label"}}
{{formField systemFields.biodata.fields.height value=system.biodata.height name="system.biodata.height" localize=true classes="field-label"}}
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes name="system.biodata.eyes" localize=true classes="field-label"}}
{{formField systemFields.biodata.fields.hair value=system.biodata.hair name="system.biodata.hair" localize=true classes="field-label"}}
{{formField systemFields.biodata.fields.gender value=system.biodata.gender name="system.biodata.gender" localize=true classes="field-label"}}
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace name="system.biodata.birthplace" localize=true classes="field-label"}}
</div>
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.motivations"}}{{#if isEditMode}}
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addMotivation"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createMotivation"></i></a>{{/if}}</legend>
<div class="motivations">
{{#each motivations as |item|}}
{{!log 'armor' this}}
<div class="motivation" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
</div>
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.description"}}</legend>
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.notes"}}</legend>
{{formInput systemFields.notes enriched=notes value=system.notes name="system.notes" toggled=true}}

View File

@ -2,25 +2,28 @@
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.weapons"}}{{#if isEditMode}}
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}</legend>
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}</legend>
<div class="weapons">
{{#each weapons as |item|}}
{{!log 'weapon' this}}
<div class="weapon" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true" data-drag-type="damage">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
<div class="name rollable" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<a class="rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage" data-roll-value="{{item.system.degats}}">{{localize "CTHULHUETERNAL.Label.damage"}} : {{item.system.damage}}</a>
{{#if @root.isEditMode}}
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage" data-roll-value="{{item.system.damage}}">{{localize "CTHULHUETERNAL.Label.damageShort"}} : {{item.system.damage}}</a>
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</div>
{{/each}}
</div>
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.armors"}}{{#if isEditMode}}
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addArmor"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createArmor"></i></a>{{/if}}</legend>
<div class="armors">
{{#each armors as |item|}}
{{!log 'armor' this}}
@ -29,7 +32,7 @@
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
{{localize "CTHULHUETERNAL.Label.armor"}} : {{item.system.protection}}
<span class="protection">{{localize "CTHULHUETERNAL.Label.armor"}} : {{item.system.protection}}</span>
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
@ -37,7 +40,11 @@
</div>
{{/each}}
</div>
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.gears"}}{{#if isEditMode}}
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addGear"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createGear"></i></a>{{/if}}</legend>
<div class="gears">
{{#each gears as |item|}}
{{!log 'armor' this}}
@ -46,7 +53,6 @@
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
{{localize "CTHULHUETERNAL.Label.gear"}} : {{item.system.protection}}
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>

View File

@ -29,44 +29,47 @@
</div>
<fieldset>
<fieldset class="san">
<legend>{{localize "CTHULHUETERNAL.Label.SAN"}}</legend>
<div class="flexrow">
{{localize "CTHULHUETERNAL.Label.current"}} {{formField systemFields.san.fields.value
value=system.san.value}}
{{localize "CTHULHUETERNAL.Label.max"}} {{formField systemFields.san.fields.max value=system.san.max
rootId=partId disabled=true}}
{{localize "CTHULHUETERNAL.Label.recovery"}} {{formField systemFields.san.fields.recovery
value=system.san.recovery disabled=true}}
<span data-tooltip='{{localize "CTHULHUETERNAL.Tooltip.sanBP"}}'>{{localize "CTHULHUETERNAL.Label.breakingPoint"}}</span> {{formField systemFields.san.fields.breakingPoint
value=system.san.breakingPoint disabled=true}}
<span class="label-field">{{localize "CTHULHUETERNAL.Label.current"}}</span>
{{formField systemFields.san.fields.value value=system.san.value}}
<span class="label-field">{{localize "CTHULHUETERNAL.Label.max"}}</span>
{{formField systemFields.san.fields.max value=system.san.max rootId=partId disabled=true}}
<span class="label-field">{{localize "CTHULHUETERNAL.Label.recovery"}}</span>
{{formField systemFields.san.fields.recovery value=system.san.recovery disabled=true}}
<span class="label-field" data-tooltip='{{localize "CTHULHUETERNAL.Tooltip.sanBP"}}'>{{localize
"CTHULHUETERNAL.Label.breakingPoint"}}</span>
{{formField systemFields.san.fields.breakingPoint value=system.san.breakingPoint disabled=true}}
</div>
<div class="flexrow">
{{localize "CTHULHUETERNAL.Label.violence"}}
{{#each system.san.violence as |violence idx|}}
<input type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}" data-name="violence" {{#if
violence}} checked {{/if}}>
<input class="san-checkbox" type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}"
data-name="violence" {{#if violence}} checked {{/if}}>
{{/each}}
</div>
<div class="flexrow">
<span class="spacing"></span>
{{localize "CTHULHUETERNAL.Label.helplessness"}}
{{#each system.san.helplessness as |helplessness idx|}}
<input type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}" data-name="helplessness"
{{#if helplessness}} checked {{/if}}>
<input class="san-checkbox" type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}"
data-name="helplessness" {{#if helplessness}} checked {{/if}}>
{{/each}}
</div>
</fieldset>
<fieldset>
<fieldset class="willpower">
<legend>{{localize "CTHULHUETERNAL.Label.willpower"}}</legend>
<div class="flexrow">
{{localize "CTHULHUETERNAL.Label.current"}}{{formField systemFields.wp.fields.value value=system.wp.value}}
{{localize "CTHULHUETERNAL.Label.max"}}{{formField systemFields.wp.fields.max value=system.wp.max rootId=partId disabled=true}}
{{localize "CTHULHUETERNAL.Label.exhausted"}}{{formField systemFields.wp.fields.exhausted value=system.wp.exhausted }}
<span class="label-field">{{localize "CTHULHUETERNAL.Label.current"}}</span>
{{formField systemFields.wp.fields.value value=system.wp.value}}
<span class="label-field">{{localize "CTHULHUETERNAL.Label.max"}}</span>
{{formField systemFields.wp.fields.max value=system.wp.max rootId=partId disabled=true}}
<span class="label-field">{{localize "CTHULHUETERNAL.Label.exhausted"}}</span>
{{formField systemFields.wp.fields.exhausted value=system.wp.exhausted classes=checkbox}}
</div>
</fieldset>
</div>
</div>
</fieldset>
@ -74,37 +77,43 @@
<fieldset class="protagonist-characteristics protagonist-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
<legend>{{localize "CTHULHUETERNAL.Label.characteristics"}}</legend>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
<label class="rollable" data-roll-type="char" data-char-id="str">{{localize "CTHULHUETERNAL.Label.strShort"}}</label>
<label class="rollable" data-roll-type="char" data-char-id="str">{{localize
"CTHULHUETERNAL.Label.strShort"}}</label>
{{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value
rootId=partId disabled=isPlayMode }}
{{mul system.characteristics.str.value 5}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
<label class="rollable" data-roll-type="char" data-char-id="dex">{{localize "CTHULHUETERNAL.Label.dexShort"}}</label>
<label class="rollable" data-roll-type="char" data-char-id="dex">{{localize
"CTHULHUETERNAL.Label.dexShort"}}</label>
{{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value
rootId=partId disabled=isPlayMode }}
{{mul system.characteristics.dex.value 5}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
<label class="rollable" data-roll-type="char" data-char-id="con">{{localize "CTHULHUETERNAL.Label.conShort"}}</label>
<label class="rollable" data-roll-type="char" data-char-id="con">{{localize
"CTHULHUETERNAL.Label.conShort"}}</label>
{{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value
rootId=partId disabled=isPlayMode }}
{{mul system.characteristics.con.value 5}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
<label class="rollable" data-roll-type="char" data-char-id="int">{{localize "CTHULHUETERNAL.Label.intShort"}}</label>
<label class="rollable" data-roll-type="char" data-char-id="int">{{localize
"CTHULHUETERNAL.Label.intShort"}}</label>
{{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value
rootId=partId disabled=isPlayMode }}
{{mul system.characteristics.int.value 5}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
<label class="rollable" data-roll-type="char" data-char-id="pow">{{localize "CTHULHUETERNAL.Label.powShort"}}</label>
<label class="rollable" data-roll-type="char" data-char-id="pow">{{localize
"CTHULHUETERNAL.Label.powShort"}}</label>
{{formField systemFields.characteristics.fields.pow.fields.value value=system.characteristics.pow.value
rootId=partId disabled=isPlayMode }}
{{mul system.characteristics.pow.value 5}}
</div>
<div class="protagonist-characteristic" data-drag="true" data-drag-type="characteristic">
<label class="rollable" data-roll-type="char" data-char-id="cha">{{localize "CTHULHUETERNAL.Label.chaShort"}}</label>
<label class="rollable" data-roll-type="char" data-char-id="cha">{{localize
"CTHULHUETERNAL.Label.chaShort"}}</label>
{{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value
rootId=partId disabled=isPlayMode }}
{{mul system.characteristics.cha.value 5}}

View File

@ -0,0 +1,68 @@
<section class="tab protagonist-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.bonds"}}{{#if isEditMode}}
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addBond"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createBond"></i></a>{{/if}}</legend>
<div class="bonds">
{{#each bonds as |item|}}
{{!log 'weapon' this}}
<div class="bond" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" >
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<div class="type">
{{item.system.bondType}}
</div>
<div class="level">
{{item.system.value}}
</div>
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
</div>
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.injuries"}}{{#if isEditMode}}
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addInjury"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createInjury"></i></a>{{/if}}</legend>
<div class="injuries">
{{#each injuries as |item|}}
<div class="injury" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
</div>
</fieldset>
<fieldset>
<legend>{{localize "CTHULHUETERNAL.Label.mentaldisorders"}}{{#if isEditMode}}
<a class="action" data-tooltip="{{localize "CTHULHUETERNAL.Tooltip.addMentalDisorder"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createMentalDisorder"></i></a>{{/if}}</legend>
<div class="mentaldisorders">
{{#each mentaldisorders as |item|}}
{{!log 'armor' this}}
<div class="mentaldisorder" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<div class="controls">
<a data-tooltip="{{localize 'CTHULHUETERNAL.Edit'}}" data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'CTHULHUETERNAL.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/each}}
</div>
</fieldset>
</section>

View File

@ -8,6 +8,13 @@
<legend>{{localize "CTHULHUETERNAL.Label.characteristic"}}</legend>
{{/if}}
<div class="dialog-skill">{{rollItem.name}} : {{initialScore}}%</div>
{{#if isZeroWP}}
<div class="dialog-skill">Zero WP : Automatic failure (ie 0%)</div>
{{else}}
{{#if isLowWP}}
<div class="dialog-skill">Low WP : -20%</div>
{{/if}}
{{/if}}
</fieldSet>
<fieldSet class="dialog-modifier">