This commit is contained in:
rwanoux
2024-11-15 22:05:29 +01:00
parent a163528acb
commit e721c706eb
37 changed files with 334 additions and 185 deletions
+4 -4
View File
@@ -12,10 +12,10 @@
### fiche de groupe ### fiche de groupe
- [ ] pas encore penché dessus - [ ] pas encore penché dessus
### Members et encounters #### Members et encounters
- [ ] faire une classe GroupLink pour avoir les actors en objets dans les array group.members[], group.encounters[], et character.encounters[], - [ ] faire une classe GroupLink pour avoir les actors en objets dans les array group.members[], group.encounters[], et character.encounters[],
- [ ] faire une fonction sur le Hook.onUpdateActor => update des groupes dans characters, update des encounters et members dans groups - [ ] faire une fonction sur le Hook.onUpdateActor => update des groupes dans characters, update des encounters et members dans groups
### fiche de pnj créature ### fiche de pnj créature
- [ ] à faire, - [ ] à faire,
@@ -43,7 +43,7 @@ faut s'y pencher
### les items ### les items
- [ ] gérer les rolls d'items dans le chat - [ ] gérer les rolls d'items dans le chat
- [-] repasser sur les différents itemTypes et sheets - [-] repasser sur les différents itemTypes et sheets
- [ ] construire une selecteur de traits, traits= CONFIG.VEERMINE.traits - [ ] construire une selecteur de traits, traits= CONFIG.VERMINE.traits
traits:[ traits:[
key:{ key:{
name:string, name:string,
+1 -1
View File
File diff suppressed because one or more lines are too long
-3
View File
@@ -57,9 +57,6 @@ export class VermineCharacterSheet extends VermineActorSheet {
context.rollData = context.actor.getRollData(); context.rollData = context.actor.getRollData();
//get the group actor
context.group = this.getGroup()
// Prepare active effects // Prepare active effects
context.effects = prepareActiveEffectCategories(this.actor.effects); context.effects = prepareActiveEffectCategories(this.actor.effects);
+10 -2
View File
@@ -1,3 +1,5 @@
import { TraitSelector } from "../system/applications.mjs";
/** /**
* Extend the basic ItemSheet with some very simple modifications * Extend the basic ItemSheet with some very simple modifications
* @extends {ItemSheet} * @extends {ItemSheet}
@@ -55,7 +57,6 @@ export class VermineItemSheet extends ItemSheet {
/** @override */ /** @override */
activateListeners(html) { activateListeners(html) {
super.activateListeners(html); super.activateListeners(html);
// Everything below here is only needed if the sheet is editable // Everything below here is only needed if the sheet is editable
if (!this.isEditable) return; if (!this.isEditable) return;
//click on wound radio //click on wound radio
@@ -63,7 +64,9 @@ export class VermineItemSheet extends ItemSheet {
this._onClickDamage(ev) this._onClickDamage(ev)
}) })
// Roll handlers, click handlers, etc. would go here. html.find('.traits-selector').click(ev => {
this.openTraitSelector(ev)
})
} }
async _onClickDamage(ev) { async _onClickDamage(ev) {
if (!ev.currentTarget.checked) { return } if (!ev.currentTarget.checked) { return }
@@ -73,4 +76,9 @@ export class VermineItemSheet extends ItemSheet {
this.item.update(update) this.item.update(update)
} }
async openTraitSelector(ev) {
let selector = new TraitSelector(this.item);
selector.render(true)
}
} }
+65
View File
@@ -118,3 +118,68 @@ export class ActorPicker extends Application {
} }
} }
export class TraitSelector extends Application {
constructor(targetItem) {
super();
this.targetItem = targetItem;
this.traits = CONFIG.VERMINE.traits
}
/* -------------------------------------------- */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
id: "TRAITS_SELECTOR",
title: game.i18n.localize("VERMINE.traits_selector"),
template: 'systems/vermine2047/templates/applications/choose-traits.hbs',
popOut: true,
resizable: true,
height: "500",
width: "500"
});
}
getData() {
return {
traits: this.traits,
item: this.targetItem
}
}
async activateListeners(html) {
super.activateListeners(html);
this.validateTraits(html);
html.find('input').click(ev => {
this.onChangeInput(ev)
})
}
async validateTraits(html) {
let checks = html.find("input.trait-selector");
for (let ch of checks) {
if (this.targetItem.system.traits[ch.dataset.trait]) {
ch.checked = true
}
}
}
async onChangeInput(ev) {
let el = ev.currentTarget;
if (el.classList.contains('trait-selector')) {
let traitKey = el.dataset.trait; // Récupère la clé du trait à partir de l'attribut data-trait
let traits = this.targetItem.system.traits || {}; // Récupère les traits actuels, ou un objet vide si aucun trait n'est défini
if (!traits[traitKey]) {
// Si la case est cochée, ajoute le trait
await this.targetItem.update({ [`system.traits.${traitKey}`]: this.traits[traitKey] });
} else {
// Si la case est décochée, retire le trait
await this.targetItem.update({ [`system.traits.${traitKey}`]: null });
}
}
else if (el.classList.contains('trait-value')) {
// Logique pour les valeurs des traits si nécessaire
}
}
}
+71 -1
View File
@@ -172,7 +172,77 @@ VERMINE.traits = {
"coque": { "coque": {
name: "coque", name: "coque",
description: "Ignore les (n) premiers Dommages. Quand (n) est atteint, lobjet perd ce Trait.", description: "Ignore les (n) premiers Dommages. Quand (n) est atteint, lobjet perd ce Trait.",
value: 1 // = la valeur "n" dans le tableau page 51 livre règles, indiquer 1 si valeur "n" présente value: 1
},
"duree": {
name: "Durée",
description: "Les effets de larme ou de lobjet durent (n) Tours de combat.Les durées en minutes, en heures ou en jours sont toujours indiquées de façon claire, notamment dans le cas des maladies ou des empoisonnements.",
value: 1
},
"etanche": {
name: "Étanche.",
description: "Tant que sa Fiabilité est à son maximum, lobjet ignore les Dommages dus à limmersion prolongée.De plus, les vêtements et protections Étanches permettent d’éviter les effets de Zone liés aux gaz, et font baisser dun cran le niveau dexposition à une maladie(jusqu’à éventuellement éviter de lancer les Dés de Santé) voir « Maladies et infections », page 105.",
value: 0
},
"fetiche": {
name: "Fétiche",
description: "Le personnage possède un objet fétiche auquel il tient.Tant quil le possède, sa Réserve dEffort ou de Sang- Froid est augmentée de 1D, et il ne subit pas les Malus d’Épuisement liés à la valeur de ses Réserves, même si elles sont réduites à 0. Si le personnage perd ou est privé de cet objet, les règles d’Épuisement sappliquent de nouveau et il perd immédiatement 2D dans chacune de ses Réserves, dont les valeurs maximales sont réduites de 1D.Un même personnage ne peut posséder quun seul objet avec le Trait Fétiche.",
value: 0
},
"incapacitant": {
name: "Incapacitant",
description: "Ignore les (n) premiers Dommages. Quand (n) est atteint, lobjet perd ce Trait.",
value: 1
},
"intimidant": {
name: "Intimidant",
description: "Tant que le personnage utilise cet objet, il bénéficie dune Relance de 1D sur ses jets visant à effrayer, impressionner ou menacer. Il subit cependant un Malus de 1D à toutes ses Actions avec Psychologie.Le meneur peut décider quune créature est trop bête ou trop confiante pour se laisser intimider.De plus si votre personnage brandit un objet Intimidant mais démontre rapidement quil ne sait pas sen servir, le meneur peut le priver de sa Relance.",
value: 0
},
"lourd": {
name: "Lourd",
description: "Lobjet est particulièrement lourd et demande une Vigueur minimum de(n) D pour être porté, manié ou utilisé correctement.Si la Vigueur du personnage est inférieure à(n), il subit un Malus de 1D. Sil porte plusieurs objets Lourds, comme une arme Lourde et une Protection blindée, les Malus éventuels se cumulent.",
value: 1
},
"malus": {
name: "Malus",
description: "Larme ou lobjet inflige un Malus de(n) D à toutes les actions des personnages affectés pendant toute la Durée de leffet.Cest le cas notamment de certains gaz, venins, poisons ou maladies.",
value: 1
},
"maniable": {
name: "Maniable.",
description: "Lobjet ninflige pas de Handicap de Mobilité à son porteur voir « Handicap de Mobilité », page 70. Un objet peut être Maniable et Lourd(n).",
value: 0
},
"ponctuel": {
name: "Ponctuel",
description: "Cet objet contient un certain nombre dingrédients, charges, batteries ou petites composantes qui peuvent être utilisés pour réduire les Handicaps infligés sur une action où ils peuvent être utiles.Pour chaque degré de Handicap que le joueur souhaite annuler, la valeur du Trait est réduite de 1. Quand cette valeur tombe à 0, lobjet perd définitivement ce Trait.",
value: 1
},
"portee": {
name: "Portée",
description: "Lobjet a une portée utile ou maximale de(n) mètres.Les armes de distance disposent de plusieurs Portées, qui peuvent être fixes ou modifiées par la Vigueur de lattaquant, notamment pour les armes de tir ou de lancer.",
value: 1
},
"pratique.": {
name: "Pratique.",
description: "Le matériel offre une prise en main exceptionnelle, une maniabilité étonnante, une simplicité dusage remarquable.Utiliser un tel matériel pour une action adéquate accorde un Bonus de 2D au lieu de 1D.Rechercher ce Trait sur un matériel compte comme deux critères de Rareté à lui seul.De plus les réparations, améliorations et fabrications de matériel avec ce Trait souffrent de(I) Handicap en plus de ceux applicables normalement.",
value: 0
},
"rapide": {
name: "Rapide",
description: "Lobjet est particulièrement léger et permet de porter plusieurs attaques consécutives, au contact ou à distance.Ces(n) coups ou projectiles sont gérés par un seul jet dattaque et imposent (n) Handicaps au défenseur.",
value: 1
},
"rafale": {
name: "Rafale",
description: "Certaines armes à feu automatiques permettent de tirer en rafales.Le tireur neffectue quun seul jet contre une Difficulté augmentée de 2, mais gagne(n) Réussites supplémentaires si son jet est réussi.",
value: 1
},
"zone": {
name: "Zone",
description: "Larme ou lobjet déclenche ses effets dans une zone de(n) mètres de diamètre.Si lobjet inflige des Dommages, tout ce qui se trouve dans la zone les subit.",
value: 1
}, },
// etc...etc... // etc...etc...
} }
+2 -1
View File
@@ -38,8 +38,9 @@ export const preloadHandlebarsTemplates = async function () {
// dialog templates // dialog templates
"systems/vermine2047/templates/dialogs/roll-dialog.hbs", "systems/vermine2047/templates/dialogs/roll-dialog.hbs",
//items damages //items partials
"systems/vermine2047/templates/item/partials/damages.html", "systems/vermine2047/templates/item/partials/damages.html",
"systems/vermine2047/templates/item/partials/traits.html",
]); ]);
}; };
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000233 MANIFEST-000241
+3 -3
View File
@@ -1,3 +1,3 @@
2024/06/24-07:16:50.211 a308 Recovering log #231 2024/10/31-10:18:45.771 19524 Recovering log #240
2024/06/24-07:16:50.217 a308 Delete type=0 #231 2024/10/31-10:18:45.776 19524 Delete type=0 #240
2024/06/24-07:16:50.217 a308 Delete type=3 #229 2024/10/31-10:18:45.776 19524 Delete type=3 #239
+3 -7
View File
@@ -1,7 +1,3 @@
2024/05/17-09:03:17.265 6020 Recovering log #227 2024/10/30-12:55:42.036 3a54 Recovering log #238
2024/05/17-09:03:17.270 6020 Delete type=0 #227 2024/10/30-12:55:42.043 3a54 Delete type=0 #238
2024/05/17-09:03:17.270 6020 Delete type=3 #225 2024/10/30-12:55:42.043 3a54 Delete type=3 #237
2024/05/17-09:03:22.858 1b1c Level-0 table #232: started
2024/05/17-09:03:22.858 1b1c Level-0 table #232: 0 bytes OK
2024/05/17-09:03:22.859 1b1c Delete type=0 #230
2024/05/17-09:03:22.876 1b1c Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000233 MANIFEST-000241
+3 -3
View File
@@ -1,3 +1,3 @@
2024/06/24-07:16:50.399 b264 Recovering log #231 2024/10/31-10:18:45.998 151e8 Recovering log #240
2024/06/24-07:16:50.405 b264 Delete type=0 #231 2024/10/31-10:18:46.003 151e8 Delete type=0 #240
2024/06/24-07:16:50.405 b264 Delete type=3 #229 2024/10/31-10:18:46.003 151e8 Delete type=3 #239
+3 -7
View File
@@ -1,7 +1,3 @@
2024/05/17-09:03:17.424 6020 Recovering log #227 2024/10/30-12:55:42.175 146c Recovering log #238
2024/05/17-09:03:17.430 6020 Delete type=0 #227 2024/10/30-12:55:42.181 146c Delete type=0 #238
2024/05/17-09:03:17.430 6020 Delete type=3 #225 2024/10/30-12:55:42.181 146c Delete type=3 #237
2024/05/17-09:03:22.901 1b1c Level-0 table #232: started
2024/05/17-09:03:22.902 1b1c Level-0 table #232: 0 bytes OK
2024/05/17-09:03:22.903 1b1c Delete type=0 #230
2024/05/17-09:03:22.904 1b1c Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000217 MANIFEST-000225
+3 -3
View File
@@ -1,3 +1,3 @@
2024/06/24-07:16:50.274 b264 Recovering log #215 2024/10/31-10:18:45.841 151e8 Recovering log #224
2024/06/24-07:16:50.279 b264 Delete type=0 #215 2024/10/31-10:18:45.848 151e8 Delete type=0 #224
2024/06/24-07:16:50.279 b264 Delete type=3 #213 2024/10/31-10:18:45.849 151e8 Delete type=3 #223
+3 -7
View File
@@ -1,7 +1,3 @@
2024/05/17-09:03:17.320 6020 Recovering log #211 2024/10/30-12:55:42.080 146c Recovering log #222
2024/05/17-09:03:17.326 6020 Delete type=0 #211 2024/10/30-12:55:42.086 146c Delete type=0 #222
2024/05/17-09:03:17.326 6020 Delete type=3 #209 2024/10/30-12:55:42.086 146c Delete type=3 #221
2024/05/17-09:03:22.892 1b1c Level-0 table #216: started
2024/05/17-09:03:22.892 1b1c Level-0 table #216: 0 bytes OK
2024/05/17-09:03:22.893 1b1c Delete type=0 #214
2024/05/17-09:03:22.895 1b1c Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000231 MANIFEST-000239
+3 -3
View File
@@ -1,3 +1,3 @@
2024/06/24-07:16:50.377 b728 Recovering log #229 2024/10/31-10:18:45.972 14280 Recovering log #238
2024/06/24-07:16:50.382 b728 Delete type=0 #229 2024/10/31-10:18:45.981 14280 Delete type=0 #238
2024/06/24-07:16:50.382 b728 Delete type=3 #227 2024/10/31-10:18:45.981 14280 Delete type=3 #237
+3 -7
View File
@@ -1,7 +1,3 @@
2024/05/17-09:03:17.407 3604 Recovering log #225 2024/10/30-12:55:42.160 94e8 Recovering log #236
2024/05/17-09:03:17.412 3604 Delete type=0 #225 2024/10/30-12:55:42.167 94e8 Delete type=0 #236
2024/05/17-09:03:17.412 3604 Delete type=3 #223 2024/10/30-12:55:42.167 94e8 Delete type=3 #235
2024/05/17-09:03:22.896 1b1c Level-0 table #230: started
2024/05/17-09:03:22.896 1b1c Level-0 table #230: 0 bytes OK
2024/05/17-09:03:22.898 1b1c Delete type=0 #228
2024/05/17-09:03:22.904 1b1c Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000127 MANIFEST-000136
+3 -3
View File
@@ -1,3 +1,3 @@
2024/06/24-07:16:50.305 96dc Recovering log #125 2024/10/31-10:18:45.881 17aec Recovering log #135
2024/06/24-07:16:50.311 96dc Delete type=0 #125 2024/10/31-10:18:45.885 17aec Delete type=0 #135
2024/06/24-07:16:50.311 96dc Delete type=3 #123 2024/10/31-10:18:45.885 17aec Delete type=3 #134
+3 -8
View File
@@ -1,8 +1,3 @@
2024/05/17-09:03:17.348 3604 Recovering log #121 2024/10/30-12:55:42.097 2944 Recovering log #133
2024/05/17-09:03:17.353 3604 Delete type=0 #121 2024/10/30-12:55:42.111 2944 Delete type=0 #133
2024/05/17-09:03:17.353 3604 Delete type=3 #119 2024/10/30-12:55:42.111 2944 Delete type=3 #132
2024/05/17-09:03:22.893 1b1c Level-0 table #126: started
2024/05/17-09:03:22.893 1b1c Level-0 table #126: 0 bytes OK
2024/05/17-09:03:22.895 1b1c Delete type=0 #124
2024/05/17-09:03:22.895 1b1c Manual compaction at level-0 from '!items!10vhNURxl8FOwfy0' @ 72057594037927935 : 1 .. '!items!vX832Z4LpasxLIIx' @ 0 : 0; will stop at (end)
2024/05/17-09:03:22.895 1b1c Manual compaction at level-1 from '!items!10vhNURxl8FOwfy0' @ 72057594037927935 : 1 .. '!items!vX832Z4LpasxLIIx' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000124 MANIFEST-000133
+3 -3
View File
@@ -1,3 +1,3 @@
2024/06/24-07:16:50.355 a308 Recovering log #122 2024/10/31-10:18:45.934 19524 Recovering log #132
2024/06/24-07:16:50.360 a308 Delete type=0 #122 2024/10/31-10:18:45.940 19524 Delete type=0 #132
2024/06/24-07:16:50.360 a308 Delete type=3 #120 2024/10/31-10:18:45.941 19524 Delete type=3 #131
+3 -8
View File
@@ -1,8 +1,3 @@
2024/05/17-09:03:17.381 6020 Recovering log #118 2024/10/30-12:55:42.139 3a54 Recovering log #130
2024/05/17-09:03:17.386 6020 Delete type=0 #118 2024/10/30-12:55:42.146 3a54 Delete type=0 #130
2024/05/17-09:03:17.387 6020 Delete type=3 #116 2024/10/30-12:55:42.146 3a54 Delete type=3 #129
2024/05/17-09:03:22.898 1b1c Level-0 table #123: started
2024/05/17-09:03:22.898 1b1c Level-0 table #123: 0 bytes OK
2024/05/17-09:03:22.901 1b1c Delete type=0 #121
2024/05/17-09:03:22.904 1b1c Manual compaction at level-0 from '!tables!UxgGMRs0kTplpTbe' @ 72057594037927935 : 1 .. '!tables.results!dXo0EN9ieo1tSnRY.ymnitiW2yAuk75M3' @ 0 : 0; will stop at (end)
2024/05/17-09:03:22.904 1b1c Manual compaction at level-1 from '!tables!UxgGMRs0kTplpTbe' @ 72057594037927935 : 1 .. '!tables.results!dXo0EN9ieo1tSnRY.ymnitiW2yAuk75M3' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000231 MANIFEST-000239
+3 -3
View File
@@ -1,3 +1,3 @@
2024/06/24-07:16:50.242 b728 Recovering log #229 2024/10/31-10:18:45.812 14280 Recovering log #238
2024/06/24-07:16:50.248 b728 Delete type=0 #229 2024/10/31-10:18:45.817 14280 Delete type=0 #238
2024/06/24-07:16:50.248 b728 Delete type=3 #227 2024/10/31-10:18:45.818 14280 Delete type=3 #237
+3 -7
View File
@@ -1,7 +1,3 @@
2024/05/17-09:03:17.291 3604 Recovering log #225 2024/10/30-12:55:42.061 94e8 Recovering log #236
2024/05/17-09:03:17.297 3604 Delete type=0 #225 2024/10/30-12:55:42.065 94e8 Delete type=0 #236
2024/05/17-09:03:17.297 3604 Delete type=3 #223 2024/10/30-12:55:42.067 94e8 Delete type=3 #235
2024/05/17-09:03:22.890 1b1c Level-0 table #230: started
2024/05/17-09:03:22.890 1b1c Level-0 table #230: 0 bytes OK
2024/05/17-09:03:22.891 1b1c Delete type=0 #228
2024/05/17-09:03:22.895 1b1c Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
+5 -3
View File
@@ -24,7 +24,9 @@
} }
img.profile-img { img.profile-img {
filter: drop-shadow(0px 0px 20px rgb(110, 133, 27)) filter: drop-shadow(0px 0px 20px rgb(110, 133, 27));
height: auto;
width: 100%;
} }
/* custom styles */ /* custom styles */
@@ -156,8 +158,8 @@ ul.unstyled li {
} }
.actor.sheet .form aside .image-wrapper img { .actor.sheet .form aside .image-wrapper img {
width: 170px; width: 80%;
height: 145px; height: auto;
} }
.actor.sheet .form aside .paper { .actor.sheet .form aside .paper {
+4 -2
View File
@@ -92,8 +92,10 @@
"private": false "private": false
} }
], ],
"gridDistance": 5, "grid": {
"gridUnits": "ft", "distance": 1,
"units": "m"
},
"primaryTokenAttribute": "health", "primaryTokenAttribute": "health",
"secondaryTokenAttribute": "power", "secondaryTokenAttribute": "power",
"url": "https://gitlab.com/init-status/fvtt_systems/vermine2047", "url": "https://gitlab.com/init-status/fvtt_systems/vermine2047",
+5 -2
View File
@@ -489,7 +489,7 @@
"reliability": 3, "reliability": 3,
"quantity": 1, "quantity": 1,
"weight": 0, "weight": 0,
"traits": [], "traits": {},
"damages": { "damages": {
"value": 0, "value": 0,
"min": 0, "min": 0,
@@ -532,7 +532,10 @@
], ],
"min_range": 0, "min_range": 0,
"max_range": 0, "max_range": 0,
"damage": 0, "damage": {
"value": 0,
"type": ""
},
"ammo": 0 "ammo": 0
}, },
"defense": { "defense": {
+1 -2
View File
@@ -1,5 +1,4 @@
<iframe src="https://app.syrinscape.com/#/" frameborder="0" width="100%"
heihgt="400px"></iframe>
<div class="totem choose grid grid-2col" <div class="totem choose grid grid-2col"
style="padding:5px;"> style="padding:5px;">
+22
View File
@@ -0,0 +1,22 @@
<div class="trait choose grid grid-2col"
style="padding:5px;">
{{#each traits as | trait ind|}}
{{log @root.item}}
{{log trait}}
{{log ind}}
<div class="form-group" data-trait="{{ind}}">
<label>
<input type="checkbox" class="trait-selector" data-trait="{{ind}}">
{{trait.name}}
{{#if trait.value}}
<input type="number" class="hexa trait-value" name="{{ind}}.value">
{{/if}}
</label>
<p class="hint">{{trait.description}}</p>
</div>
{{/each}}
</div>
+4 -2
View File
@@ -81,7 +81,7 @@
<select class="info-value" data-roll="true" <select class="info-value" data-roll="true"
data-dtype="String" data-dtype="String"
type="number" name="skill" id="skill" min="1" max="5"> type="number" name="skill" id="skill" min="1" max="5">
<option>-- Choisissez une caractéristique <option>-- Choisissez une compétence
--</option> --</option>
{{#each config.skillCategories as |skillCategory catkey|}} {{#each config.skillCategories as |skillCategory catkey|}}
<optgroup label="{{ smarttlk 'SKILLS_CATEGORIES' catkey 'name' }}"> <optgroup label="{{ smarttlk 'SKILLS_CATEGORIES' catkey 'name' }}">
@@ -104,6 +104,8 @@
</optgroup> </optgroup>
{{/each}} {{/each}}
</select> </select>
{{log availableSpecialties.length}}
{{#if availableSpecialties.length}}
<label class="label">{{localize 'VERMINE.specialty'}} (+1D)</label> <label class="label">{{localize 'VERMINE.specialty'}} (+1D)</label>
<div class="flexrow"> <div class="flexrow">
{{#each availableSpecialties as |spec ind|}} {{#each availableSpecialties as |spec ind|}}
@@ -116,7 +118,7 @@
{{/each}} {{/each}}
</div> </div>
{{/if}}
</h3> </h3>
</div> </div>
+12 -53
View File
@@ -1,84 +1,43 @@
<form <form class="{{cssClass}}" autocomplete="off">
class="{{cssClass}}"
autocomplete="off"
>
<header class="sheet-header"> <header class="sheet-header">
<img <img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
class="profile-img"
src="{{item.img}}"
data-edit="img"
title="{{item.name}}"
/>
<div class="header-fields"> <div class="header-fields">
<h1 class="charname"><input <h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
name="name"
type="text"
value="{{item.name}}"
placeholder="Name"
/></h1>
</div> </div>
</header> </header>
<section class="sheet-body"> <section class="sheet-body">
{{> "systems/vermine2047/templates/item/partials/traits.html"}}
<h4 class="flexrow"> <h4 class="flexrow">
<div class="resource"> <div class="resource">
<label class="resource-label">{{ localize "VERMINE.ranges"}}</label> <label class="resource-label">{{ localize "VERMINE.ranges"}}</label>
<div> <div>
<span class="hexa"> <span class="hexa">
<input <input type="number" name="system.min_range" value="{{system.min_range}}" data-dtype="Number"/>
type="number" </span>/
name="system.min_range"
value="{{system.min_range}}"
data-dtype="Number"
/> </span>/
<span class="hexa"> <span class="hexa">
<input <input type="number" name="system.max_range" value="{{system.max_range}}" data-dtype="Number"/></span>
type="number"
name="system.max_range"
value="{{system.max_range}}"
data-dtype="Number"
/></span>
</div> </div>
</div> </div>
<div class="resource"> <div class="resource">
<label class="resource-label">{{ localize "VERMINE.damages"}}</label> <label class="resource-label">{{ localize "VERMINE.damages"}}</label>
<div class="hexa"><input <div class="hexa"><input type="number" name="system.damage" value="{{system.damage}}" data-dtype="Number"/></div>
type="number"
name="system.damage"
value="{{system.damage}}"
data-dtype="Number"
/></div>
</div> </div>
<div class="resource"> <div class="resource">
<label class="resource-label">{{ localize "VERMINE.ammo"}}</label> <label class="resource-label">{{ localize "VERMINE.ammo"}}</label>
<div class="hexa"><input <div class="hexa"><input type="number" name="system.ammo" value="{{system.ammo}}" data-dtype="Number"/></div>
type="number"
name="system.ammo"
value="{{system.ammo}}"
data-dtype="Number"
/></div>
</div> </div>
<div class="resource"> <div class="resource">
<label class="resource-label">{{ localize "VERMINE.rarity"}}</label> <label class="resource-label">{{ localize "VERMINE.rarity"}}</label>
<div class="hexa"><input <div class="hexa"><input type="number" name="system.rarity" value="{{system.rarity}}" data-dtype="Number"/></div>
type="number"
name="system.rarity"
value="{{system.rarity}}"
data-dtype="Number"
/></div>
</div> </div>
<div class="resource"> <div class="resource">
<label class="resource-label">{{ localize "VERMINE.reliability"}}</label> <label class="resource-label">{{ localize "VERMINE.reliability"}}</label>
<div class="hexa"><input <div class="hexa"><input type="number" name="system.reliability" value="{{system.reliability}}" data-dtype="Number"/></div>
type="number"
name="system.reliability"
value="{{system.reliability}}"
data-dtype="Number"
/></div>
</div> </div>
</h4> </h4>
<h2>description</h2> <h2>description</h2>
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}} {{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
{{> "systems/vermine2047/templates/item/partials/damages.html"}} {{> "systems/vermine2047/templates/item/partials/damages.html"}}
</form> </form>
+15
View File
@@ -0,0 +1,15 @@
<div class="traits">
<h3>traits
<span class="traits-selector" data-tooltip="ajouter un trait">
<i class="fas fa-plus"></i>
</span>
</h3>
{{#each item.system.traits as | trait index|}}
<span data-tooltip="{{trait.description}}">{{trait.name}}
{{#if trait.value}}
<input type="number" class="hexa" value="{{trait.value}}" name="system.traits.{{index}}.value">
{{/if}}
</span>
{{/each}}
</div>
+34
View File
@@ -0,0 +1,34 @@
{
"folders": [
{
"path": "../noc"
},
{
"path": "."
},
{
"path": "../../modules/rolenplay-starterkit"
},
{
"path": "../../modules/rolenplay-core"
},
{
"path": "../../modules/SRD-Heros-et-Dragons"
},
{
"path": "../../../../../../../../Program Files/Foundry Virtual Tabletop_V12/resources"
},
{
"path": "../../modules/dnd5e_fr-FR"
},
{
"path": "../cthack"
},
{
"path": "../torgeternity"
}
],
"settings": {
"liveServer.settings.multiRootWorkspaceName": "noc"
}
}