Various items fixes and enhancements
BIN
assets/fonts/baskerville-bold.ttf
Normal file
BIN
assets/fonts/times-new-roman-regular.ttf
Normal file
BIN
assets/icons/icon_armor.webp
Normal file
After Width: | Height: | Size: 187 KiB |
BIN
assets/icons/icon_equipment.webp
Normal file
After Width: | Height: | Size: 190 KiB |
BIN
assets/icons/icon_gift.webp
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
assets/icons/icon_miracle.webp
Normal file
After Width: | Height: | Size: 147 KiB |
BIN
assets/icons/icon_save.webp
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
assets/icons/icon_saving.webp
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
assets/icons/icon_shield.webp
Normal file
After Width: | Height: | Size: 117 KiB |
BIN
assets/icons/icon_skill.webp
Normal file
After Width: | Height: | Size: 135 KiB |
BIN
assets/icons/icon_spell.webp
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
assets/icons/icon_vulnerability.webp
Normal file
After Width: | Height: | Size: 236 KiB |
BIN
assets/icons/icon_weapon.webp
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
assets/ui/lethal_fantasy_background.webp
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
assets/ui/lf_logo_02.webp
Normal file
After Width: | Height: | Size: 647 KiB |
BIN
assets/ui/lf_logo_small_02.webp
Normal file
After Width: | Height: | Size: 76 KiB |
@ -1,8 +1,9 @@
|
||||
:root {
|
||||
--font-primary: "TimesNewRoman", serif;
|
||||
--font-size-standard: 1rem;
|
||||
--background-image-base: url("../assets/parchment.jpg");
|
||||
--font-secondary: "Amiri", serif;
|
||||
--logo-standard: url("../assets/lethal-fantasy-logo.webp");
|
||||
--background-image-base: url("../assets/ui/lethal_fantasy_background.webp");
|
||||
--font-secondary: "BaskervilleBold", serif;
|
||||
--logo-standard: url("../assets/ui/lf_logo_small_02.webp");
|
||||
}
|
||||
#logo {
|
||||
content: var(--logo-standard);
|
||||
@ -130,32 +131,28 @@ i.lethalfantasy {
|
||||
.lethalfantasy .character-main {
|
||||
display: flex;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage {
|
||||
.lethalfantasy .character-main .character-pc {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
flex: 1;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-gauche {
|
||||
.lethalfantasy .character-main .character-pc .character-left {
|
||||
min-width: 180px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-gauche .character-gauche-image {
|
||||
.lethalfantasy .character-main .character-pc .character-left .character-left-image {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-gauche .character-gauche-image .character-img {
|
||||
.lethalfantasy .character-main .character-pc .character-left .character-left-image .character-img {
|
||||
height: 140px;
|
||||
width: auto;
|
||||
border: none;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-gauche .character-dv .form-fields,
|
||||
.lethalfantasy .character-main .character-personnage .character-gauche .character-dmax .form-fields {
|
||||
flex: none;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-gauche .character-dmax-edit input {
|
||||
.lethalfantasy .character-main .character-pc .character-left .character-hp-edit input {
|
||||
display: flex;
|
||||
width: 60px;
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
@ -164,55 +161,37 @@ i.lethalfantasy {
|
||||
padding: 0 5px 0 5px;
|
||||
text-align: center;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite {
|
||||
.lethalfantasy .character-main .character-pc .character-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-name {
|
||||
.lethalfantasy .character-main .character-pc .character-right .character-name {
|
||||
display: flex;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-name input {
|
||||
.lethalfantasy .character-main .character-pc .character-right .character-name input {
|
||||
width: 400px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos {
|
||||
.lethalfantasy .character-main .character-pc .character-right .character-infos {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos label {
|
||||
.lethalfantasy .character-main .character-pc .character-right .character-infos label {
|
||||
min-width: 120px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-voie-majeure,
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-voie-mineure {
|
||||
display: flex;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-voie-majeure input,
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-voie-mineure input {
|
||||
width: 280px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-voie-majeure .controls,
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-voie-mineure .controls {
|
||||
padding-left: 5px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-commanditaire {
|
||||
display: flex;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-commanditaire input {
|
||||
width: 280px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-pv {
|
||||
.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp {
|
||||
display: flex;
|
||||
gap: 2px;
|
||||
align-items: center;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-pv .character-pv-value .form-fields input {
|
||||
.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp .character-hp-value .form-fields input {
|
||||
flex: none;
|
||||
width: 50px;
|
||||
margin-left: 10px;
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-pv .character-pv-max {
|
||||
.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp .character-hp-max {
|
||||
clear: both;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@ -220,53 +199,53 @@ i.lethalfantasy {
|
||||
margin: 3px 0;
|
||||
align-items: center;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-pv .character-pv-max input {
|
||||
.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp .character-hp-max input {
|
||||
width: 50px;
|
||||
text-align: center;
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage .character-droite .character-infos .character-pv .pv-separator {
|
||||
.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp .hp-separator {
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage-play {
|
||||
.lethalfantasy .character-main .character-pc-play {
|
||||
min-width: 500px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-personnage-edit {
|
||||
.lethalfantasy .character-main .character-pc-edit {
|
||||
min-width: 650px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques {
|
||||
.lethalfantasy .character-main .character-characteristics {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
flex: 1;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .rollable:hover,
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .rollable:focus {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .rollable:hover,
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .form-group {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .form-group {
|
||||
flex: 1;
|
||||
padding-left: 5px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .form-group .form-fields {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .form-group .form-fields {
|
||||
flex: none;
|
||||
width: 70px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .experience {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .experience {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .experience input {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input {
|
||||
display: flex;
|
||||
width: 70px;
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
@ -274,54 +253,54 @@ i.lethalfantasy {
|
||||
justify-content: center;
|
||||
padding: 0 5px 0 5px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .experience input[type="number"] {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input[type="number"] {
|
||||
text-align: center;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .experience input[type="checkbox"] {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input[type="checkbox"] {
|
||||
width: 20px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .experience input[type="checkbox"]:checked {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input[type="checkbox"]:checked {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques .character-caracteristique .experience input[type="checkbox"]:checked::after {
|
||||
.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input[type="checkbox"]:checked::after {
|
||||
color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques-play {
|
||||
.lethalfantasy .character-main .character-characteristics-play {
|
||||
min-width: 225px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-caracteristiques-edit {
|
||||
.lethalfantasy .character-main .character-characteristic-edit {
|
||||
min-width: 400px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources {
|
||||
.lethalfantasy .character-main .character-resources {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
flex: 1;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources .character-ressource {
|
||||
.lethalfantasy .character-main .character-resources .character-resource {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources .character-ressource .rollable:hover,
|
||||
.lethalfantasy .character-main .character-ressources .character-ressource .rollable:focus {
|
||||
.lethalfantasy .character-main .character-resources .character-resource .rollable:hover,
|
||||
.lethalfantasy .character-main .character-resources .character-resource .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources .character-ressource .form-group {
|
||||
.lethalfantasy .character-main .character-resources .character-resource .form-group {
|
||||
flex: 1;
|
||||
padding-left: 5px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources .character-ressource .form-group .form-fields {
|
||||
.lethalfantasy .character-main .character-resources .character-resource .form-group .form-fields {
|
||||
flex: none;
|
||||
width: 70px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources .character-ressource .character-ressource-edit {
|
||||
.lethalfantasy .character-main .character-resources .character-resource .character-resource-edit {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources .character-ressource .character-ressource-edit input {
|
||||
.lethalfantasy .character-main .character-resources .character-resource .character-resource-edit input {
|
||||
display: flex;
|
||||
width: 70px;
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
@ -329,19 +308,19 @@ i.lethalfantasy {
|
||||
justify-content: center;
|
||||
padding: 0 5px 0 5px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources .character-ressource .character-ressource-edit input[type="number"] {
|
||||
.lethalfantasy .character-main .character-resources .character-resource .character-resource-edit input[type="number"] {
|
||||
text-align: center;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources .character-ressource .character-ressource-edit select {
|
||||
.lethalfantasy .character-main .character-resources .character-resource .character-resource-edit select {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1.5);
|
||||
text-align: center;
|
||||
width: 75px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources-play {
|
||||
.lethalfantasy .character-main .character-resources-play {
|
||||
min-width: 235px;
|
||||
}
|
||||
.lethalfantasy .character-main .character-ressources-edit {
|
||||
.lethalfantasy .character-main .character-resources-edit {
|
||||
min-width: 400px;
|
||||
}
|
||||
.lethalfantasy .character-biography prose-mirror.inactive {
|
||||
@ -350,74 +329,118 @@ i.lethalfantasy {
|
||||
.lethalfantasy .character-biography prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items {
|
||||
.lethalfantasy .tab.character-skills {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.lethalfantasy .tab.character-items legend a {
|
||||
.lethalfantasy .tab.character-skills legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .talents {
|
||||
.lethalfantasy .tab.character-skills .skills {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .talents .talent {
|
||||
.lethalfantasy .tab.character-skills .skills .skill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .talents .talent .item-img {
|
||||
.lethalfantasy .tab.character-skills .skills .skill .item-img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .weapons {
|
||||
.lethalfantasy .tab.character-skills .gifts {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-skills .gifts .gift {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-skills .gifts .gift .item-img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
.lethalfantasy .tab.character-skills .vulnerabilities {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-skills .vulnerabilities .vulnerability {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-skills .vulnerabilities .vulnerability .item-img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
.lethalfantasy .tab.character-weapons {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.lethalfantasy .tab.character-weapons legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.lethalfantasy .tab.character-weapons .weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .weapons .weapon {
|
||||
.lethalfantasy .tab.character-weapons .weapons .weapon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .weapons .weapon .item-img {
|
||||
.lethalfantasy .tab.character-weapons .weapons .weapon .item-img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
margin: 5px 0 0 0;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .armors {
|
||||
.lethalfantasy .tab.character-weapons .armors {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .armors .armor {
|
||||
.lethalfantasy .tab.character-weapons .armors .armor {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .armors .armor .item-img {
|
||||
.lethalfantasy .tab.character-weapons .armors .armor .item-img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
margin: 5px 0 0 0;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .spells {
|
||||
.lethalfantasy .tab.character-spells {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells .spells {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .spells .spell {
|
||||
.lethalfantasy .tab.character-spells .spells .spell {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items .appris {
|
||||
.lethalfantasy .tab.character-spells .appris {
|
||||
font-weight: bold;
|
||||
}
|
||||
.lethalfantasy .tab.character-items prose-mirror.inactive {
|
||||
.lethalfantasy .tab.character-spells prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
.lethalfantasy .tab.character-items prose-mirror.active {
|
||||
.lethalfantasy .tab.character-spells prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
.lethalfantasy .opponent-content {
|
||||
|
162
lang/en.json
@ -13,11 +13,54 @@
|
||||
"vulnerability": "Vulnerability",
|
||||
"save": "Save",
|
||||
"equipment": "Equipment" ,
|
||||
"shield": "Shield"
|
||||
"shield": "Shield",
|
||||
"miracle": "Miracle"
|
||||
}
|
||||
},
|
||||
|
||||
"LETHALFANTASY": {
|
||||
"Miracle": {
|
||||
"FIELDS": {
|
||||
"description": {
|
||||
"label": "Description"
|
||||
},
|
||||
"components": {
|
||||
"verbal": {
|
||||
"label": "Verbal"
|
||||
},
|
||||
"somatic": {
|
||||
"label": "Somatic"
|
||||
},
|
||||
"material": {
|
||||
"label": "Material"
|
||||
},
|
||||
"catalyst": {
|
||||
"label": "Catalyst"
|
||||
},
|
||||
"religious": {
|
||||
"label": "Religious"
|
||||
}
|
||||
},
|
||||
"level": {
|
||||
"label": "Level"
|
||||
},
|
||||
"prayerTime": {
|
||||
"label": "Prayer time"
|
||||
},
|
||||
"miracleRange": {
|
||||
"label": "Range"
|
||||
},
|
||||
"duration": {
|
||||
"label": "Duration"
|
||||
},
|
||||
"areaAffected": {
|
||||
"label": "Area affected"
|
||||
},
|
||||
"savingThrow": {
|
||||
"label": "Saving throw"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Character": {
|
||||
"FIELDS": {
|
||||
"str": {
|
||||
@ -59,6 +102,20 @@
|
||||
"category": {
|
||||
"label": "Category"
|
||||
},
|
||||
"weaponClass": {
|
||||
"label": "Class"
|
||||
},
|
||||
"weaponBonus": {
|
||||
"attack": {
|
||||
"label": "Attack Bonus"
|
||||
},
|
||||
"damage": {
|
||||
"label": "Damage Bonus"
|
||||
},
|
||||
"defense": {
|
||||
"label": "Defense Bonus"
|
||||
}
|
||||
},
|
||||
"bonus" :{
|
||||
"label": "Bonus"
|
||||
},
|
||||
@ -101,6 +158,20 @@
|
||||
"melee": "Melee",
|
||||
"ranged": "Ranged"
|
||||
},
|
||||
"WeaponClass": {
|
||||
"longblade": "Long blade",
|
||||
"shortblade": "Short blade",
|
||||
"mediumblade": "Medium blade",
|
||||
"axe": "Axe",
|
||||
"hammer": "Hammer",
|
||||
"polearm": "Polearm",
|
||||
"thrown": "Thrown",
|
||||
"bow": "Bow",
|
||||
"flail": "Flail",
|
||||
"sling": "Sling",
|
||||
"unarmed": "Unarmed",
|
||||
"mace": "Mace"
|
||||
},
|
||||
"FIELDS": {
|
||||
"weaponType": {
|
||||
"label": "Type"
|
||||
@ -147,7 +218,7 @@
|
||||
"defense": {
|
||||
"label": "Defense"
|
||||
},
|
||||
"range": {
|
||||
"weaponRange": {
|
||||
"pointBlank": {
|
||||
"label": "Point blank"
|
||||
},
|
||||
@ -299,7 +370,7 @@
|
||||
"castingTime": {
|
||||
"label": "Casting time"
|
||||
},
|
||||
"range": {
|
||||
"spellRange": {
|
||||
"label": "Range"
|
||||
},
|
||||
"duration": {
|
||||
@ -344,54 +415,45 @@
|
||||
"Platinums": "Platinum"
|
||||
},
|
||||
"Label": {
|
||||
"characteristics": "Characteristics",
|
||||
"characteristic": "Characteristic",
|
||||
"description": "Description",
|
||||
"notes": "Notes",
|
||||
"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",
|
||||
"details": "Details",
|
||||
"skills": "Skills",
|
||||
"equipment": "Equipment",
|
||||
"weapons": "Weapons",
|
||||
"spells" : "Spells",
|
||||
"level": "Level",
|
||||
"damage": "Damage",
|
||||
"resource": "Resource",
|
||||
"resources": "Resources",
|
||||
"save": "Save",
|
||||
"newArmor": "New armor",
|
||||
"newWeapon": "New weapon",
|
||||
"armor": "Armor",
|
||||
"malus": "Malus",
|
||||
"jet": "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"
|
||||
"jet": "Roll",
|
||||
"experience": "Experience",
|
||||
"maximum": "Maximum",
|
||||
"pc": "PC",
|
||||
"biography": "Biography",
|
||||
"gifts": "Gifts",
|
||||
"vulnerabilities": "Vulnerabilities",
|
||||
"str": "STR",
|
||||
"wis": "WIS",
|
||||
"int": "INT",
|
||||
"con": "CON",
|
||||
"dex": "DEX",
|
||||
"luc": "LUC",
|
||||
"app": "APP",
|
||||
"cha": "CHA"
|
||||
},
|
||||
"Edit": "Editer",
|
||||
"Delete": "Supprimer",
|
||||
"ToggleSheet": "Changer de mode",
|
||||
"Edit": "Edit",
|
||||
"Delete": "Delete",
|
||||
"ToggleSheet": "Toggle 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}"
|
||||
},
|
||||
"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 <br> {save}",
|
||||
@ -415,11 +477,9 @@
|
||||
"displayArmor": "{targetName} a une armure de {targetArmor}. <br>Dégâts réels : {realDamage}"
|
||||
},
|
||||
"Tooltip": {
|
||||
"learnedTalents": "Les talents appris sont en gras",
|
||||
"saveIntroTextTooltip": "Caractéristique : {value} <br> Aide : {aide} <br> Gêne : {gene} <br> Modificateur : {modificateur}",
|
||||
"addAttack": "Ajouter une attaque",
|
||||
"addEquipment": "Ajouter une arme, Shift + Click pour ajouter une armure",
|
||||
"addSpell": "Ajouter un sortilège"
|
||||
"skill": "Skills list",
|
||||
"addEquipment": "New equipment",
|
||||
"addSpell": "New spells"
|
||||
},
|
||||
"Setting": {
|
||||
"displayOpponentMalus": "Afficher le malus d'adversité",
|
||||
|
@ -48,7 +48,8 @@ Hooks.once("init", function () {
|
||||
spell: models.LethalFantasySpell,
|
||||
save: models.LethalFantasySave,
|
||||
vulnerability: models.LethalFantasyVulnerability,
|
||||
equipment: models.LethalFantasyEquipment
|
||||
equipment: models.LethalFantasyEquipment,
|
||||
miracle: models.LethalFantasyMiracle
|
||||
}
|
||||
|
||||
// Register sheet application classes
|
||||
@ -66,6 +67,7 @@ Hooks.once("init", function () {
|
||||
Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true })
|
||||
Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true })
|
||||
Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true })
|
||||
Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true })
|
||||
|
||||
// Other Document Configuration
|
||||
CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage
|
||||
@ -193,8 +195,12 @@ Hooks.on("hotbarDrop", (bar, data, slot) => {
|
||||
* Register world usage statistics
|
||||
* @param {string} registerKey
|
||||
*/
|
||||
function registerWorldCount(registerKey) {
|
||||
async function registerWorldCount(registerKey) {
|
||||
if (game.user.isGM) {
|
||||
ClassCounter.registerUsageCount(game.system.id, {})
|
||||
try {
|
||||
ClassCounter.registerUsageCount(game.system.id, {})
|
||||
} catch {
|
||||
console.log("No usage log ")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -9,4 +9,6 @@ export { default as LethalFantasyArmorSheet } from "./sheets/armor-sheet.mjs"
|
||||
export { default as LethalFantasySpellSheet } from "./sheets/spell-sheet.mjs"
|
||||
export { default as LethalFantasyEquipmentSheet } from "./sheets/equipment-sheet.mjs"
|
||||
export { default as LethalFantasyShieldSheet } from "./sheets/shield-sheet.mjs"
|
||||
export { default as LethalFantasyMiracleSheet } from "./sheets/miracle-sheet.mjs"
|
||||
export { default as LethalFantasyManager } from "./manager.mjs"
|
||||
|
||||
|
@ -23,10 +23,16 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs",
|
||||
},
|
||||
tabs: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/generic/tab-navigation.hbs",
|
||||
template: "templates/generic/tab-navigation.hbs",
|
||||
},
|
||||
items: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/character-items.hbs",
|
||||
skills: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs",
|
||||
},
|
||||
weapons: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs",
|
||||
},
|
||||
spells: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs",
|
||||
},
|
||||
biography: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs",
|
||||
@ -35,7 +41,7 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
|
||||
/** @override */
|
||||
tabGroups = {
|
||||
sheet: "items",
|
||||
sheet: "skills",
|
||||
}
|
||||
|
||||
/**
|
||||
@ -44,8 +50,10 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
*/
|
||||
#getTabs() {
|
||||
const tabs = {
|
||||
items: { id: "items", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Character.Label.details" },
|
||||
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Character.Label.biography" },
|
||||
skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" },
|
||||
weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" },
|
||||
spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" },
|
||||
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" },
|
||||
}
|
||||
for (const v of Object.values(tabs)) {
|
||||
v.active = this.tabGroups[v.group] === v.id
|
||||
@ -78,15 +86,24 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
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
|
||||
context.weapons = doc.itemTypes.weapon
|
||||
context.armors = doc.itemTypes.armor
|
||||
case "skills":
|
||||
context.tab = context.tabs.skills
|
||||
context.skills = doc.itemTypes.skill
|
||||
context.gifts = doc.itemTypes.gifts
|
||||
context.vulnerabilities = doc.itemTypes.vulnerability
|
||||
break
|
||||
case "spells":
|
||||
context.tab = context.tabs.spells
|
||||
context.spells = doc.itemTypes.spell
|
||||
context.hasSpells = context.spells.length > 0
|
||||
break
|
||||
case "weapons":
|
||||
context.tab = context.tabs.weapons
|
||||
context.weapons = doc.itemTypes.weapon
|
||||
context.armors = doc.itemTypes.armor
|
||||
context.equipments = doc.itemTypes.equipment
|
||||
break
|
||||
case "biography":
|
||||
context.tab = context.tabs.biography
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
||||
@ -111,11 +128,7 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
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)
|
||||
return this._onDropItem(item)
|
||||
}
|
||||
}
|
||||
|
||||
|
21
module/applications/sheets/miracle-sheet.mjs
Normal file
@ -0,0 +1,21 @@
|
||||
import LethalFantasyItemSheet from "./base-item-sheet.mjs"
|
||||
|
||||
export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet {
|
||||
/** @override */
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["miracle"],
|
||||
position: {
|
||||
width: 450,
|
||||
},
|
||||
window: {
|
||||
contentClasses: ["miracle-content"],
|
||||
},
|
||||
}
|
||||
|
||||
/** @override */
|
||||
static PARTS = {
|
||||
main: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/miracle.hbs",
|
||||
},
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
export const CHARACTERISTICS = Object.freeze({
|
||||
str: {
|
||||
id: "str",
|
||||
label: "LETHALFANTASY.Character.str.label"
|
||||
label: "LETHALFANTASY.Label.str"
|
||||
},
|
||||
int: {
|
||||
id: "int",
|
||||
@ -23,6 +23,10 @@ export const CHARACTERISTICS = Object.freeze({
|
||||
id: "cha",
|
||||
label: "LETHALFANTASY.Character.cha.label"
|
||||
},
|
||||
luc: {
|
||||
id: "luc",
|
||||
label: "LETHALFANTASY.Character.luc.label"
|
||||
},
|
||||
app: {
|
||||
id: "app",
|
||||
label: "LETHALFANTASY.Character.app.label"
|
||||
|
1293
module/config/characteristic-tables.mjs
Normal file
@ -4,20 +4,11 @@ import * as ARMOR from "./armor.mjs"
|
||||
import * as SPELL from "./spell.mjs"
|
||||
import * as SKILL from "./skill.mjs"
|
||||
import * as EQUIPMENT from "./equipment.mjs"
|
||||
import * as CHARACTERISTICS from "./characteristic-tables.mjs"
|
||||
|
||||
export const SYSTEM_ID = "fvtt-lethal-fantasy"
|
||||
export const DEV_MODE = false
|
||||
|
||||
export const DICE_VALUE = Object.freeze({
|
||||
D4: "d4",
|
||||
D6: "d6",
|
||||
D8: "d8",
|
||||
D10: "d10",
|
||||
D12: "d12",
|
||||
})
|
||||
|
||||
export const DICE_VALUES = ["0", "d4", "d6", "d8", "d10", "d12"]
|
||||
|
||||
export const ROLL_TYPE = Object.freeze({
|
||||
SAVE: "save",
|
||||
RESOURCE: "resource",
|
||||
@ -77,15 +68,15 @@ export const ASCII = `
|
||||
export const SYSTEM = {
|
||||
id: SYSTEM_ID,
|
||||
CHARACTERISTICS: CHARACTER.CHARACTERISTICS,
|
||||
RESOURCES: CHARACTER.RESOURCES,
|
||||
CHARACTERISTICS_TABLES: CHARACTERISTICS.TABLES,
|
||||
CHARACTERISTICS_MAJOR: CHARACTERISTICS.MAJOR,
|
||||
SAVES: CHARACTER.SAVES,
|
||||
SKILL_CATEGORY: SKILL.CATEGORY,
|
||||
WEAPON_CATEGORY: WEAPON.CATEGORY,
|
||||
WEAPON_DAMAGE: WEAPON.DAMAGE,
|
||||
ARMOR_TYPE: ARMOR.TYPE,
|
||||
EQUIPMENT_CATEGORY: EQUIPMENT.CATEGORY,
|
||||
SPELL_RANGE: SPELL.RANGE,
|
||||
WEAPON_TYPE: WEAPON.WEAPON_TYPE,
|
||||
WEAPON_CLASS: WEAPON.WEAPON_CLASS,
|
||||
MONEY,
|
||||
ASCII,
|
||||
ROLL_TYPE,
|
||||
|
@ -1,35 +1,20 @@
|
||||
export const CATEGORY = Object.freeze({
|
||||
mains: {
|
||||
id: "mains",
|
||||
label: "LETHALFANTASY.Weapon.Category.main",
|
||||
},
|
||||
improvisee: {
|
||||
id: "improvisee",
|
||||
label: "LETHALFANTASY.Weapon.Category.improvisee",
|
||||
},
|
||||
courte: {
|
||||
id: "courte",
|
||||
label: "LETHALFANTASY.Weapon.Category.courte",
|
||||
},
|
||||
longue: {
|
||||
id: "longue",
|
||||
label: "LETHALFANTASY.Weapon.Category.longue",
|
||||
},
|
||||
lourde: {
|
||||
id: "lourde",
|
||||
label: "LETHALFANTASY.Weapon.Category.lourde",
|
||||
},
|
||||
})
|
||||
|
||||
export const WEAPON_TYPE = {
|
||||
"melee": "LETHALFANTASY.Weapon.WeaponType.melee",
|
||||
"ranged": "LETHALFANTASY.Weapon.WeaponType.ranged"
|
||||
}
|
||||
|
||||
export const DAMAGE = Object.freeze({
|
||||
UN: "1",
|
||||
D4: "d4",
|
||||
D6: "d6",
|
||||
D8: "d8",
|
||||
D10: "d10",
|
||||
})
|
||||
export const WEAPON_CLASS = {
|
||||
"longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade",
|
||||
"shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade",
|
||||
"mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade",
|
||||
"axe": "LETHALFANTASY.Weapon.WeaponClass.axe",
|
||||
"hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer",
|
||||
"mace": "LETHALFANTASY.Weapon.WeaponClass.mace",
|
||||
"flail": "LETHALFANTASY.Weapon.WeaponClass.flail",
|
||||
"bow": "LETHALFANTASY.Weapon.WeaponClass.bow",
|
||||
"sling": "LETHALFANTASY.Weapon.WeaponClass.sling",
|
||||
"thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown",
|
||||
"polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm",
|
||||
"unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed"
|
||||
}
|
@ -1 +1,19 @@
|
||||
export default class LethalFantasyItem extends Item {}
|
||||
export const defaultItemImg = {
|
||||
weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp",
|
||||
armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp",
|
||||
equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp",
|
||||
skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp",
|
||||
gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp",
|
||||
invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp",
|
||||
shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp",
|
||||
spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp"
|
||||
}
|
||||
|
||||
export default class LethalFantasyItem extends Item {
|
||||
constructor(data, context) {
|
||||
if (!data.img) {
|
||||
data.img = defaultItemImg[data.type];
|
||||
}
|
||||
super(data, context);
|
||||
}
|
||||
}
|
||||
|
@ -9,3 +9,4 @@ export { default as LethalFantasyGift } from "./gift.mjs"
|
||||
export { default as LethalFantasyVulnerability } from "./vulnerability.mjs"
|
||||
export { default as LethalFantasySave } from "./save.mjs"
|
||||
export { default as LethalFantasyEquipment } from "./equipment.mjs"
|
||||
export { default as LethalFantasyMiracle } from "./miracle.mjs"
|
||||
|
@ -52,6 +52,7 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
|
||||
bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
})
|
||||
schema.grit = new fields.SchemaField({
|
||||
starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
})
|
||||
@ -87,6 +88,17 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
|
||||
/** @override */
|
||||
static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"]
|
||||
|
||||
prepareDerivedData() {
|
||||
super.prepareDerivedData();
|
||||
let grit = 0
|
||||
for (let c in this.characteristics) {
|
||||
if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) {
|
||||
grit += this.characteristics[c].value
|
||||
}
|
||||
}
|
||||
this.grit.starting = Math.round(grit / 6)
|
||||
}
|
||||
|
||||
/**
|
||||
* Rolls a dice for a character.
|
||||
* @param {("save"|"resource|damage")} rollType The type of the roll.
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
import { CATEGORY } from "../config/weapon.mjs"
|
||||
|
||||
export default class LethalFantasyEquipment extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields
|
||||
|
38
module/models/miracle.mjs
Normal file
@ -0,0 +1,38 @@
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
const schema = {}
|
||||
|
||||
schema.description = new fields.HTMLField({
|
||||
required: false,
|
||||
blank: true,
|
||||
initial: "",
|
||||
textSearch: true,
|
||||
})
|
||||
schema.level = new fields.NumberField({
|
||||
...requiredInteger,
|
||||
initial: 1,
|
||||
min: 1,
|
||||
max: 20,
|
||||
})
|
||||
schema.components = new fields.SchemaField({
|
||||
verbal: new fields.BooleanField(),
|
||||
somatic: new fields.BooleanField(),
|
||||
material: new fields.BooleanField(),
|
||||
catalyst: new fields.BooleanField(),
|
||||
religious: new fields.BooleanField()
|
||||
})
|
||||
schema.prayerTime = new fields.StringField({ required: true, initial: "" })
|
||||
schema.miracleRange = new fields.StringField({ required: true, initial: "" })
|
||||
schema.areaAffected = new fields.StringField({ required: true, initial: "" })
|
||||
schema.duration = new fields.StringField({ required: true, initial: "" })
|
||||
schema.savingThrow = new fields.StringField({ required: true, initial: "" })
|
||||
|
||||
return schema
|
||||
}
|
||||
|
||||
/** @override */
|
||||
static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Miracle"]
|
||||
}
|
@ -12,6 +12,13 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
|
||||
schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 })
|
||||
|
||||
schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS })
|
||||
schema.weaponBonus = new fields.SchemaField({
|
||||
attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
|
||||
defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
|
||||
damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
|
||||
})
|
||||
|
||||
return schema
|
||||
}
|
||||
|
||||
@ -21,10 +28,30 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
get skillCategory() {
|
||||
return game.i18n.localize(CATEGORY[this.category].label)
|
||||
}
|
||||
|
||||
validate(options) {
|
||||
let isError = super.validate(options)
|
||||
console.log(this)
|
||||
let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage
|
||||
console.log(bonus, this._source.skillTotal)
|
||||
if ( bonus > Math.floor(this._source.skillTotal / 10) ) {
|
||||
ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus"))
|
||||
isError = true
|
||||
}
|
||||
return isError
|
||||
}
|
||||
|
||||
prepareDerivedData() {
|
||||
super.prepareDerivedData();
|
||||
this.skillTotal = this.computeBase();
|
||||
if( this.category === "weapon" ) {
|
||||
this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage;
|
||||
if ( Number(this.skillTotal) ) {
|
||||
this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 )
|
||||
} else {
|
||||
this.availableBonus = "N/A"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
computeBase() {
|
||||
@ -47,7 +74,7 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
maxStat = statValue;
|
||||
}
|
||||
}
|
||||
return maxStat;
|
||||
return maxStat + this.bonus
|
||||
} else {
|
||||
// Split with + calculate the total
|
||||
baseSplit = base.split("+");
|
||||
@ -59,9 +86,9 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0;
|
||||
total += statValue;
|
||||
}
|
||||
return total
|
||||
return total + this.bonus
|
||||
}
|
||||
}
|
||||
return `${this.base } + ${ String(this.bonus)}`;
|
||||
return `${this.base} + ${String(this.bonus)}`;
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ export default class LethalFantasySpell extends foundry.abstract.TypeDataModel {
|
||||
material: new fields.BooleanField(),
|
||||
})
|
||||
schema.castingTime = new fields.StringField({ required: true, initial: "" })
|
||||
schema.range = new fields.StringField({ required: true, initial: "" })
|
||||
schema.spellRange = new fields.StringField({ required: true, initial: "" })
|
||||
schema.areaAffected = new fields.StringField({ required: true, initial: "" })
|
||||
schema.duration = new fields.StringField({ required: true, initial: "" })
|
||||
schema.savingThrow = new fields.StringField({ required: true, initial: "" })
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
import { CATEGORY } from "../config/weapon.mjs"
|
||||
|
||||
export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields
|
||||
@ -8,6 +8,8 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE })
|
||||
schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS })
|
||||
|
||||
schema.damageType = new fields.SchemaField({
|
||||
typeP: new fields.BooleanField(),
|
||||
typeB: new fields.BooleanField(),
|
||||
@ -29,7 +31,7 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
})
|
||||
|
||||
schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
|
||||
schema.range = new fields.SchemaField({
|
||||
schema.weaponRange = new fields.SchemaField({
|
||||
pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
|
||||
short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
|
||||
medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
|
||||
@ -49,6 +51,6 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"]
|
||||
|
||||
get weaponCategory() {
|
||||
return game.i18n.localize(CATEGORY[this.category].label)
|
||||
return game.i18n.localize(CATEGORY[this.weaponType].label)
|
||||
}
|
||||
}
|
||||
|
@ -1,23 +1,13 @@
|
||||
import { DICE_VALUES } from "./config/system.mjs"
|
||||
|
||||
export default class LethalFantasyUtils {
|
||||
// Return the maximum damage limited by the maximum damage of the character
|
||||
static maxDamage(damage, damageMax) {
|
||||
const damageIndex = DICE_VALUES.indexOf(damage)
|
||||
const damageMaxIndex = DICE_VALUES.indexOf(damageMax)
|
||||
|
||||
// If damage exceeds damageMax, return damageMax
|
||||
if (damageIndex > damageMaxIndex) {
|
||||
return damageMax
|
||||
}
|
||||
|
||||
// Otherwise, return damage (as it is less than or equal to damageMax)
|
||||
return damage
|
||||
return 0
|
||||
}
|
||||
|
||||
// Used when a ressource is lost to find the next lower dice
|
||||
static findLowerDice(dice) {
|
||||
let index = DICE_VALUES.indexOf(dice)
|
||||
return DICE_VALUES[index - 1]
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
@ -7,17 +7,17 @@
|
||||
.character-main {
|
||||
display: flex;
|
||||
|
||||
.character-personnage {
|
||||
.character-pc {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
flex: 1;
|
||||
|
||||
.character-gauche {
|
||||
.character-left {
|
||||
min-width: 180px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.character-gauche-image {
|
||||
.character-left-image {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
@ -29,13 +29,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.character-dv,
|
||||
.character-dmax {
|
||||
.form-fields {
|
||||
flex: none;
|
||||
}
|
||||
}
|
||||
.character-dmax-edit {
|
||||
.character-hp-edit {
|
||||
input {
|
||||
display: flex;
|
||||
width: 60px;
|
||||
@ -48,7 +42,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.character-droite {
|
||||
.character-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
@ -68,30 +62,11 @@
|
||||
label {
|
||||
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 {
|
||||
.character-hp {
|
||||
display: flex;
|
||||
gap: 2px;
|
||||
align-items: center;
|
||||
.character-pv-value {
|
||||
.character-hp-value {
|
||||
.form-fields input {
|
||||
flex: none;
|
||||
width: 50px;
|
||||
@ -99,7 +74,7 @@
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
}
|
||||
}
|
||||
.character-pv-max {
|
||||
.character-hp-max {
|
||||
clear: both;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@ -112,7 +87,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 +98,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
.character-personnage-play {
|
||||
.character-pc-play {
|
||||
min-width: 500px;
|
||||
}
|
||||
|
||||
.character-personnage-edit {
|
||||
.character-pc-edit {
|
||||
min-width: 650px;
|
||||
}
|
||||
|
||||
.character-caracteristiques {
|
||||
.character-characteristics {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
flex: 1;
|
||||
|
||||
.character-caracteristique {
|
||||
.character-characteristic {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.rollable:hover,
|
||||
@ -182,21 +157,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
.character-caracteristiques-play {
|
||||
.character-characteristics-play {
|
||||
min-width: 225px;
|
||||
}
|
||||
|
||||
.character-caracteristiques-edit {
|
||||
.character-characteristic-edit {
|
||||
min-width: 400px;
|
||||
}
|
||||
|
||||
.character-ressources {
|
||||
.character-resources {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
flex: 1;
|
||||
|
||||
.character-ressource {
|
||||
.character-resource {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.rollable:hover,
|
||||
@ -213,7 +188,7 @@
|
||||
width: 70px;
|
||||
}
|
||||
}
|
||||
.character-ressource-edit {
|
||||
.character-resource-edit {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
@ -239,11 +214,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
.character-ressources-play {
|
||||
.character-resources-play {
|
||||
min-width: 235px;
|
||||
}
|
||||
|
||||
.character-ressources-edit {
|
||||
.character-resources-edit {
|
||||
min-width: 400px;
|
||||
}
|
||||
}
|
||||
@ -257,7 +232,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.character-items {
|
||||
.tab.character-skills {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
@ -266,11 +241,11 @@
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
.talents {
|
||||
.skills {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 10px;
|
||||
.talent {
|
||||
.skill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
@ -280,6 +255,45 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.gifts {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 10px;
|
||||
.gift {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
.item-img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.vulnerabilities {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 10px;
|
||||
.vulnerability {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
.item-img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.tab.character-weapons {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
@ -310,6 +324,18 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab.character-spells {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.spells {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
|
@ -1,24 +1,10 @@
|
||||
@font-face {
|
||||
font-family: "Cat Franken";
|
||||
src: url("../fonts/catfranken-deutsch.ttf") format("truetype");
|
||||
font-family: "TimesNewRoman";
|
||||
src: url("../assets/fonts/times-new-roman-regular.ttf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Caslon";
|
||||
src: url("../fonts/caslonpro-regular.otf") format("truetype");
|
||||
font-family: "BaskervilleBold";
|
||||
src: url("../fonts/baskerville-bold.ttf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Caslon Bold";
|
||||
src: url("../fonts/caslonpro-bold.otf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Caslon Bold Italic";
|
||||
src: url("../fonts/caslonpro-bolditalic.otf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Caslon Italic";
|
||||
src: url("../fonts/caslonpro-italic.otf") format("truetype");
|
||||
}
|
||||
|
@ -14,6 +14,7 @@
|
||||
@import "chat.less";
|
||||
@import "equipment.less";
|
||||
@import "shield.less";
|
||||
@import "miracle.less";
|
||||
}
|
||||
|
||||
@import "roll.less";
|
||||
|
@ -1,8 +1,9 @@
|
||||
:root {
|
||||
--font-primary: "TimesNewRoman", serif;
|
||||
--font-size-standard: 1.0rem;
|
||||
--background-image-base: url("../assets/parchment.jpg");
|
||||
--font-secondary: "Amiri", serif;
|
||||
--logo-standard: url("../assets/lethal-fantasy-logo.webp");
|
||||
--background-image-base: url("../assets/ui/lethal_fantasy_background.webp");
|
||||
--font-secondary: "BaskervilleBold", serif;
|
||||
--logo-standard: url("../assets/ui/lf_logo_small_02.webp");
|
||||
}
|
||||
|
||||
#logo {
|
||||
|
17
styles/miracle.less
Normal file
@ -0,0 +1,17 @@
|
||||
.miracle-content {
|
||||
.sheet-common();
|
||||
.item-sheet-common();
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
label {
|
||||
flex: 10%;
|
||||
}
|
||||
|
||||
}
|
17
system.json
@ -51,5 +51,20 @@
|
||||
"socket": true,
|
||||
"background": "systems/fvtt-lethal-fantasy/assets/background.webp",
|
||||
"packs": [
|
||||
]
|
||||
],
|
||||
"flags": {
|
||||
"hotReload": {
|
||||
"extensions": [
|
||||
"css",
|
||||
"hbs",
|
||||
"json"
|
||||
],
|
||||
"paths": [
|
||||
"css/",
|
||||
"lang/",
|
||||
"assets/",
|
||||
"templates/"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,10 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Character.Label.description"}}</legend>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Character.Label.langues"}}</legend>
|
||||
{{formInput systemFields.langues enriched=enrichedLangues value=system.langues name="system.langues" toggled=true}}
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Character.Label.notes"}}</legend>
|
||||
<legend>{{localize "LETHALFANTASY.Label.notes"}}</legend>
|
||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
||||
</fieldset>
|
||||
</section>
|
@ -1,103 +0,0 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend data-tooltip="{{localize "TENEBRIS.Tooltip.learnedTalents"}}" data-tooltip-direction="UP">{{localize "TENEBRIS.Label.talents"}}</legend>
|
||||
<div class="talents">
|
||||
{{#if @root.isEditMode}}
|
||||
{{#each talents as |item|}}
|
||||
{{!log "path-talent" this}}
|
||||
<div class="talent {{#if item.appris}}appris{{/if}}" 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.description}}}<br><br>{{item.path}}" data-tooltip-direction="UP">{{item.name}}
|
||||
{{#if item.progression}}<span data-tooltip="{{localize 'TENEBRIS.Label.progressionPossible'}}"> (P)</span>{{/if}}
|
||||
{{#if (and item.progression (gt item.niveau 1))}}{{localize 'TENEBRIS.Label.level'}} {{item.niveau}}{{/if}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'TENEBRIS.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 'TENEBRIS.Delete'}}" data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
{{#each talentsAppris as |item|}}
|
||||
{{!log "path-talent appris" this}}
|
||||
<div class="talent" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-tooltip="{{{item.description}}}<br><br>{{item.path}}">
|
||||
{{#if (ne item.img "icons/svg/item-bag.svg")}}
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
{{/if}}
|
||||
{{item.name}} {{item.details}}
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Label.equipement"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "TENEBRIS.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createEquipment"></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">
|
||||
{{#if (ne item.img "icons/svg/item-bag.svg")}}
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
{{/if}}
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<a {{#if (ne item.system.degats "1")}}class="rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage" data-roll-value="{{item.system.degats}}"{{/if}}>{{localize "TENEBRIS.Label.degats"}} : {{item.system.degats}}</a>
|
||||
{{#if @root.isEditMode}}
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'TENEBRIS.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 'TENEBRIS.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>
|
||||
<div class="armors">
|
||||
{{#each armors as |item|}}
|
||||
{{!log 'armor' this}}
|
||||
<div class="armor" 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>
|
||||
{{localize "TENEBRIS.Label.armor"}} : {{item.system.valeur}} {{localize "TENEBRIS.Label.malus"}} : {{item.system.malus}}
|
||||
{{#if @root.isEditMode}}
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'TENEBRIS.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 'TENEBRIS.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 "TENEBRIS.Label.biens"}}</legend>
|
||||
{{formInput systemFields.biens enriched=enrichedBiens value=system.biens name="system.biens" toggled=true }}
|
||||
</fieldset>
|
||||
|
||||
{{#if (or isEditMode (and isPlayMode hasSpells))}}
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Label.spells"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "TENEBRIS.Tooltip.addSpell"}}" data-tooltip-direction="UP"><i class="fas fa-plus" data-action="createSpell"></i></a>{{/if}}</legend>
|
||||
<div class="spells">
|
||||
{{#each spells as |item|}}
|
||||
{{!log 'weapon' this}}
|
||||
<div class="spell" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true" data-drag-type="spell">
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
{{#if @root.isEditMode}}
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'TENEBRIS.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 'TENEBRIS.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>
|
||||
{{/if}}
|
||||
</section>
|
@ -2,185 +2,108 @@
|
||||
{{!log "character-main" this}}
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "TENEBRIS.Character.Label.personnage"}}</legend>
|
||||
<div class="character-personnage character-personnage-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<div class="character-gauche">
|
||||
<div class="character-gauche-image">
|
||||
<img class="character-img" src="{{actor.img}}" data-edit="img" data-action="editImage" data-tooltip="{{actor.name}}" />
|
||||
</div>
|
||||
<div class="character-dv">
|
||||
{{formField systemFields.dv value=system.dv rootId=partId disabled=isPlayMode classes="character-dv"}}
|
||||
<legend>{{localize "LETHALFANTASY.Label.pc"}}</legend>
|
||||
<div class="character-pc character-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<div class="character-left">
|
||||
<div class="character-left-image">
|
||||
<img class="character-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
||||
data-tooltip="{{actor.name}}" />
|
||||
</div>
|
||||
<div class="flexrow character-hp">
|
||||
{{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}}
|
||||
/
|
||||
{{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}}
|
||||
</div>
|
||||
<div class="character-dmax" data-tooltip="{{tooltipsCaracteristiques.dmax}}">
|
||||
{{formField systemFields.dmax.fields.valeur value=system.dmax.valeur rootId=partId disabled=isPlayMode classes="character-dmax"}}
|
||||
{{#if isEditMode}}
|
||||
<div class="character-dmax-edit">
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experienceDetail" detail='Dégâts max'}}">{{formInput systemFields.dmax.fields.experience value=system.dmax.experience}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="character-droite">
|
||||
<div class="character-name">
|
||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
||||
<a class="control" data-action="toggleSheet" data-tooltip="TENEBRIS.ToggleSheet" data-tooltip-direction="UP">
|
||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||
</a>
|
||||
<div class="character-right">
|
||||
<div class="character-name">
|
||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
||||
<a class="control" data-action="toggleSheet" data-tooltip="LETHALFANTASY.ToggleSheet"
|
||||
data-tooltip-direction="UP">
|
||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="character-infos">
|
||||
{{#if isEditMode}}
|
||||
<div class="character-voie-majeure">
|
||||
{{formField systemFields.voies.fields.majeure.fields.nom value=system.voies.majeure.nom rootId=partId disabled=true}}
|
||||
{{#if system.hasVoieMajeure}}
|
||||
<div class="controls">
|
||||
<a class="control" data-action="edit" data-item-id="{{actor.system.voies.majeure.id}}" data-tooltip="{{localize 'TENEBRIS.Edit'}}"><i class="fas fa-edit"></i></a>
|
||||
{{#if (not system.hasVoieMineure)}}
|
||||
<a class="control" data-action="deleteVoieMajeure" data-tooltip="{{localize 'TENEBRIS.Delete'}}"><i class="fas fa-trash"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="character-voie-mineure">
|
||||
{{formField systemFields.voies.fields.mineure.fields.nom value=system.voies.mineure.nom rootId=partId disabled=true}}
|
||||
{{#if system.hasVoieMineure}}
|
||||
<div class="controls">
|
||||
<a class="control" data-action="edit" data-item-id="{{actor.system.voies.majeure.id}}" data-tooltip="{{localize 'TENEBRIS.Edit'}}"><i class="fas fa-edit"></i></a>
|
||||
<a class="control" data-action="deleteVoieMineure" data-tooltip="{{localize 'TENEBRIS.Delete'}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="character-voie-majeure">
|
||||
{{formField systemFields.voies.fields.majeure.fields.nom value=system.voies.majeure.nom rootId=partId disabled=true}}
|
||||
</div>
|
||||
{{#if system.hasVoieMineure}}
|
||||
<div class="character-voie-mineure">
|
||||
{{formField systemFields.voies.fields.mineure.fields.nom value=system.voies.mineure.nom rootId=partId disabled=true}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<div class="character-commanditaire">
|
||||
{{formField systemFields.commanditaire value=system.commanditaire rootId=partId disabled=isPlayMode classes="character-commanditaire"}}
|
||||
</div>
|
||||
<div class="character-pv">
|
||||
<div class="character-pv-value">
|
||||
{{formField systemFields.pv.fields.value value=system.pv.value}}
|
||||
</div>
|
||||
<div class="pv-separator">/</div>
|
||||
<div class="character-pv-max">
|
||||
{{formInput systemFields.pv.fields.max value=system.pv.max rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="character-caracteristiques character-caracteristiques-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<legend>{{localize "TENEBRIS.Character.Label.caracteristiques"}}</legend>
|
||||
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.rob}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.caracteristiques.fields.rob.fields.valeur value=system.caracteristiques.rob.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveRob}}
|
||||
{{#if isEditMode}}
|
||||
<div class="experience">
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.rob.fields.progression.fields.experience value=system.caracteristiques.rob.progression.experience}}</div>
|
||||
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.rob.fields.progression.fields.progres value=system.caracteristiques.rob.progression.progres}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<fieldset class="character-characteristics character-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<legend>{{localize "LETHALFANTASY.Label.characteristics"}}</legend>
|
||||
<div class="character-characteristic" data-drag="true">
|
||||
{{localize "LETHALFANTASY.Label.str"}}
|
||||
{{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value
|
||||
disabled=isPlayMode classes="rollable" data-char-id="str" }}
|
||||
|
||||
{{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent
|
||||
disabled=isPlayMode }}
|
||||
</div>
|
||||
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.dex}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.caracteristiques.fields.dex.fields.valeur value=system.caracteristiques.dex.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveDex}}
|
||||
{{#if isEditMode}}
|
||||
<div class="experience">
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.dex.fields.progression.fields.experience value=system.caracteristiques.dex.progression.experience}}</div>
|
||||
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.dex.fields.progression.fields.progres value=system.caracteristiques.dex.progression.progres}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="character-characteristic" data-drag="true">
|
||||
{{localize "LETHALFANTASY.Label.int"}}
|
||||
{{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value
|
||||
disabled=isPlayMode classes="rollable" data-char-id="int" }}
|
||||
|
||||
{{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent
|
||||
disabled=isPlayMode }}
|
||||
</div>
|
||||
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.int}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.caracteristiques.fields.int.fields.valeur value=system.caracteristiques.int.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveInt}}
|
||||
{{#if isEditMode}}
|
||||
<div class="experience">
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.int.fields.progression.fields.experience value=system.caracteristiques.int.progression.experience}}</div>
|
||||
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.int.fields.progression.fields.progres value=system.caracteristiques.int.progression.progres}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="character-characteristic" data-drag="true">
|
||||
{{localize "LETHALFANTASY.Label.wis"}}
|
||||
{{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value
|
||||
disabled=isPlayMode classes="rollable" data-char-id="wis" }}
|
||||
|
||||
{{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent
|
||||
disabled=isPlayMode }}
|
||||
</div>
|
||||
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.per}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.caracteristiques.fields.per.fields.valeur value=system.caracteristiques.per.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.savePer}}
|
||||
{{#if isEditMode}}
|
||||
<div class="experience">
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.per.fields.progression.fields.experience value=system.caracteristiques.per.progression.experience}}</div>
|
||||
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.per.fields.progression.fields.progres value=system.caracteristiques.per.progression.progres}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="character-characteristic" data-drag="true">
|
||||
{{localize "LETHALFANTASY.Label.dex"}}
|
||||
{{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value
|
||||
disabled=isPlayMode classes="rollable" data-char-id="wis" }}
|
||||
|
||||
{{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent
|
||||
disabled=isPlayMode }}
|
||||
</div>
|
||||
<div class="character-caracteristique" data-drag="true" data-drag-type="save">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsCaracteristiques.vol}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.caracteristiques.fields.vol.fields.valeur value=system.caracteristiques.vol.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.saveVol}}
|
||||
{{#if isEditMode}}
|
||||
<div class="experience">
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.caracteristiques.fields.vol.fields.progression.fields.experience value=system.caracteristiques.vol.progression.experience}}</div>
|
||||
<div class="experience-progress" data-tooltip="{{localize "TENEBRIS.Label.progress"}}">{{formInput systemFields.caracteristiques.fields.vol.fields.progression.fields.progres value=system.caracteristiques.vol.progression.progres}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="character-characteristic" data-drag="true">
|
||||
{{localize "LETHALFANTASY.Label.con"}}
|
||||
{{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value
|
||||
disabled=isPlayMode classes="rollable" data-char-id="con" }}
|
||||
|
||||
{{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent
|
||||
disabled=isPlayMode }}
|
||||
</div>
|
||||
<div class="character-characteristic" data-drag="true">
|
||||
{{localize "LETHALFANTASY.Label.cha"}}
|
||||
{{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value
|
||||
disabled=isPlayMode classes="rollable" data-char-id="cha" }}
|
||||
|
||||
{{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent
|
||||
disabled=isPlayMode }}
|
||||
</div>
|
||||
<div class="character-characteristic" data-drag="true">
|
||||
{{localize "LETHALFANTASY.Label.luc"}}
|
||||
{{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value
|
||||
disabled=isPlayMode classes="rollable" data-char-id="luc" }}
|
||||
|
||||
{{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent
|
||||
disabled=isPlayMode }}
|
||||
</div>
|
||||
<div class="character-characteristic" data-drag="true">
|
||||
{{localize "LETHALFANTASY.Label.app"}}
|
||||
{{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value
|
||||
disabled=isPlayMode classes="rollable" data-char-id="app" }}
|
||||
|
||||
{{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent
|
||||
disabled=isPlayMode }}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="character-ressources character-ressources-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<legend>{{localize "TENEBRIS.Character.Label.ressources"}}</legend>
|
||||
<div class="character-ressource" data-drag="true" data-drag-type="resource">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.san}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.ressources.fields.san.fields.valeur value=system.ressources.san.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceSan}}
|
||||
{{#if isEditMode}}
|
||||
<div class="character-ressource-edit">
|
||||
{{formInput systemFields.ressources.fields.san.fields.max value=system.ressources.san.max}}
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.san.fields.experience value=system.ressources.san.experience}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<fieldset class="character-resources character-resources-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<legend>{{localize "LETHALFANTASY.Label.resources"}}</legend>
|
||||
<div class="character-resource" data-drag="true" data-drag-type="resource">
|
||||
</div>
|
||||
<div class="character-ressource" data-drag="true" data-drag-type="resource">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.oeil}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.ressources.fields.oeil.fields.valeur value=system.ressources.oeil.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceOeil}}
|
||||
{{#if isEditMode}}
|
||||
<div class="character-ressource-edit">
|
||||
{{formInput systemFields.ressources.fields.oeil.fields.max value=system.ressources.oeil.max}}
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.oeil.fields.experience value=system.ressources.oeil.experience}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="character-resource" data-drag="true" data-drag-type="resource">
|
||||
</div>
|
||||
<div class="character-ressource" data-drag="true" data-drag-type="resource">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.verbe}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.ressources.fields.verbe.fields.valeur value=system.ressources.verbe.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceVerbe}}
|
||||
{{#if isEditMode}}
|
||||
<div class="character-ressource-edit">
|
||||
{{formInput systemFields.ressources.fields.verbe.fields.max value=system.ressources.verbe.max}}
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.verbe.fields.experience value=system.ressources.verbe.experience}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="character-ressource" data-drag="true" data-drag-type="resource">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.bourse}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.ressources.fields.bourse.fields.valeur value=system.ressources.bourse.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceBourse}}
|
||||
{{#if isEditMode}}
|
||||
<div class="character-ressource-edit">
|
||||
{{formInput systemFields.ressources.fields.bourse.fields.max value=system.ressources.bourse.max}}
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.bourse.fields.experience value=system.ressources.bourse.experience}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="character-ressource" data-drag="true" data-drag-type="resource">
|
||||
<i class="fa fa-question-circle" aria-hidden="true" data-tooltip="{{tooltipsRessources.magie}}" style="font-size: small;"></i>
|
||||
{{formField systemFields.ressources.fields.magie.fields.valeur value=system.ressources.magie.valeur rootId=partId disabled=isPlayMode classes="rollable" dataset=rollType.resourceMagie}}
|
||||
{{#if isEditMode}}
|
||||
<div class="character-ressource-edit">
|
||||
{{formInput systemFields.ressources.fields.magie.fields.max value=system.ressources.magie.max}}
|
||||
<div data-tooltip="{{localize "TENEBRIS.Label.experience"}}">{{formInput systemFields.ressources.fields.magie.fields.experience value=system.ressources.magie.experience}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="character-resource" data-drag="true" data-drag-type="resource">
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
66
templates/character-skills.hbs
Normal file
@ -0,0 +1,66 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend data-tooltip="{{localize " LETHALFANTASY.Tooltip.skills"}}" data-tooltip-direction="UP">{{localize
|
||||
"LETHALFANTASY.Label.skills"}}</legend>
|
||||
<div class="skills">
|
||||
{{#each skills as |item|}}
|
||||
<div class="skill " 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.description}}}<br><br>{{item.path}}" data-tooltip-direction="UP">
|
||||
{{item.name}} +{{item.system.skillTotal}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.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 'LETHALFANTASY.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 data-tooltip="{{localize " LETHALFANTASY.Tooltip.gifts"}}" data-tooltip-direction="UP">{{localize
|
||||
"LETHALFANTASY.Label.gifts"}}</legend>
|
||||
<div class="gifts">
|
||||
{{#each gifts as |item|}}
|
||||
<div class="gift " 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.description}}}<br><br>{{item.path}}" data-tooltip-direction="UP">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.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 'LETHALFANTASY.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 data-tooltip="{{localize " LETHALFANTASY.Tooltip.vulnerabilities"}}" data-tooltip-direction="UP">{{localize
|
||||
"LETHALFANTASY.Label.vulnerabilities"}}</legend>
|
||||
<div class="vulnerabilities">
|
||||
{{#each gifts as |item|}}
|
||||
<div class="vulnerability " 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.description}}}<br><br>{{item.path}}" data-tooltip-direction="UP">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.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 'LETHALFANTASY.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>
|
26
templates/character-spells.hbs
Normal file
@ -0,0 +1,26 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.spells"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "
|
||||
LETHALFANTASY.Tooltip.addSpell"}}" data-tooltip-direction="UP"><i class="fas fa-plus"
|
||||
data-action="createSpell"></i></a>{{/if}}</legend>
|
||||
<div class="spells">
|
||||
{{#each spells as |item|}}
|
||||
{{!log 'weapon' this}}
|
||||
<div class="spell" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true"
|
||||
data-drag-type="spell">
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.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 'LETHALFANTASY.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>
|
48
templates/character-weapons.hbs
Normal file
@ -0,0 +1,48 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.equipment"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "
|
||||
LETHALFANTASY.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i class="fas fa-plus"
|
||||
data-action="createEquipment"></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">
|
||||
{{#if (ne item.img "icons/svg/item-bag.svg")}}
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
{{/if}}
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.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 'LETHALFANTASY.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>
|
||||
|
||||
<div class="armors">
|
||||
{{#each armors as |item|}}
|
||||
{{!log 'armor' this}}
|
||||
<div class="armor" 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 'LETHALFANTASY.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 'LETHALFANTASY.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>
|
29
templates/miracle.hbs
Normal file
@ -0,0 +1,29 @@
|
||||
<section>
|
||||
<div class="header">
|
||||
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
|
||||
{{formField systemFields.level value=system.level}}
|
||||
|
||||
<label>Components</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.components.fields.verbal value=system.components.verbal}}
|
||||
{{formField systemFields.components.fields.somatic value=system.components.somatic}}
|
||||
{{formField systemFields.components.fields.material value=system.components.material}}
|
||||
{{formField systemFields.components.fields.catalyst value=system.components.catalyst}}
|
||||
{{formField systemFields.components.fields.religious value=system.components.religious}}
|
||||
</div>
|
||||
|
||||
{{formField systemFields.prayerTime value=system.castingTime}}
|
||||
{{formField systemFields.miracleRange value=system.spellRange}}
|
||||
{{formField systemFields.areaAffected value=system.areaAffected}}
|
||||
{{formField systemFields.duration value=system.duration}}
|
||||
{{formField systemFields.savingThrow value=system.savingThrow}}
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
@ -8,6 +8,16 @@
|
||||
{{formField systemFields.bonus value=system.bonus}}
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
|
||||
{{#if (eq system.category "weapon")}}
|
||||
{{formField systemFields.weaponClass value=system.weaponClass localize=true}}
|
||||
<span class="flexrow">
|
||||
<span><strong>Available Bonus : {{system.availableBonus}}</strong></span>
|
||||
</span>
|
||||
{{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}}
|
||||
{{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}}
|
||||
{{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}}
|
||||
{{/if}}
|
||||
|
||||
<div class="total flexrow">
|
||||
<legend>{{localize "LETHALFANTASY.Label.total"}}</legend>
|
||||
{{system.skillTotal}}
|
||||
|
@ -15,7 +15,7 @@
|
||||
</div>
|
||||
|
||||
{{formField systemFields.castingTime value=system.castingTime}}
|
||||
{{formField systemFields.range value=system.range}}
|
||||
{{formField systemFields.spellRange value=system.spellRange}}
|
||||
{{formField systemFields.areaAffected value=system.areaAffected}}
|
||||
{{formField systemFields.duration value=system.duration}}
|
||||
{{formField systemFields.savingThrow value=system.savingThrow}}
|
||||
|
@ -8,18 +8,19 @@
|
||||
<div class="align-top">
|
||||
|
||||
{{formField systemFields.weaponType value=system.weaponType localize=true}}
|
||||
|
||||
{{formField systemFields.weaponClass value=system.weaponClass localize=true}}
|
||||
|
||||
<label>Damage Type</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.damageType.fields.typeP value=system.standing.typeP}}
|
||||
{{formField systemFields.damageType.fields.typeB value=system.standing.typeB}}
|
||||
{{formField systemFields.damageType.fields.typeS value=system.standing.typeS}}
|
||||
{{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}}
|
||||
{{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}}
|
||||
{{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}}
|
||||
</div>
|
||||
|
||||
<label>Damage</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.damage.fields.damageS value=system.standing.damageS}}
|
||||
{{formField systemFields.damage.fields.damageM value=system.standing.damageM}}
|
||||
{{formField systemFields.damage.fields.damageS value=system.damage.damageS}}
|
||||
{{formField systemFields.damage.fields.damageM value=system.damage.damageM}}
|
||||
</div>
|
||||
|
||||
{{formField systemFields.hands value=system.hands localize=true}}
|
||||
@ -45,12 +46,12 @@
|
||||
|
||||
<label>Range</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.range.fields.pointBlank value=system.range.pointBlank}}
|
||||
{{formField systemFields.range.fields.short value=system.range.short}}
|
||||
{{formField systemFields.range.fields.medium value=system.range.medium}}
|
||||
{{formField systemFields.range.fields.long value=system.range.long}}
|
||||
{{formField systemFields.range.fields.extreme value=system.range.extreme}}
|
||||
{{formField systemFields.range.fields.outOfSkill value=system.range.outOfSkill}}
|
||||
{{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}}
|
||||
{{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}}
|
||||
{{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}}
|
||||
{{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}}
|
||||
{{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}}
|
||||
{{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
|