traits+debut combat

This commit is contained in:
rwanoux
2024-11-18 16:17:30 +01:00
parent de7cfca093
commit c0432d1efb
29 changed files with 1561 additions and 3691 deletions
+7 -5
View File
@@ -7,7 +7,7 @@
- [X] création de spécialitées depuis le (+) des compétences
- [X] fixer les cases hexas , comprtement chelou , piste = un click à l'air d'envoyer 2 update, verifier le onChange
- [ ] dialog d'edition des min-max
- [X] dialog d'edition des min-max
### fiche de groupe
- [ ] pas encore penché dessus
@@ -24,8 +24,8 @@
### les jets de dés
- [ ] redesign de rollDialog => `<details>+<sumary>`=> rendre moins dense
- [ ] envoyer les spécialités utilisables au rollDialog
- [ ] envoyer les items utilisables au rollDialog
- [X] envoyer les spécialités utilisables au rollDialog
- [X] envoyer les items utilisables au rollDialog
- [ ] gérer le fait de choisir quel totem garder : recalcul des réussites
- [X] refacto des template chat de roll
- [X] gérer les dés de totems humains et adapté : couleur différente/double succès +update actor
@@ -39,11 +39,13 @@
### le combat
faut s'y pencher
- [ ] modifier la difficulté en fonction de l'état du combatant /offensif/actif/passif/
### 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
- [ ] construire une selecteur de traits, traits= CONFIG.VERMINE.traits
- [X] construire une selecteur de traits, traits= CONFIG.VERMINE.traits
traits:[
key:{
name:string,
+1 -1
View File
File diff suppressed because one or more lines are too long
+8 -5
View File
@@ -11,11 +11,11 @@ export class VermineItem extends Item {
// preparation methods overridden (such as prepareBaseData()).
super.prepareData();
}
prepareBaseData(){
prepareBaseData() {
const actorType = (this.actor !== null) ? this.actor.type : 'character';
switch (this.type){
case 'ability':
switch (this.type) {
case 'ability':
if (this.system.type == "") {
// console.log('je suis une capacité, avec pour sous-type', this.system.type, actorType);
this.system.type = actorType;
@@ -34,9 +34,9 @@ export class VermineItem extends Item {
* Prepare a data object which is passed to any Roll formulas which are created related to this Item
* @private
*/
getRollData() {
getRollData() {
// If present, return the actor's roll data.
if ( !this.actor ) return null;
if (!this.actor) return null;
const rollData = this.actor.getRollData();
// Grab the item's system data as well.
rollData.item = foundry.utils.deepClone(this.system);
@@ -50,6 +50,9 @@ export class VermineItem extends Item {
* @private
*/
async roll() {
if (this.type == "weapon") {
this.rollWeapon()
}
const item = this;
// Initialize chat data.
+9 -31
View File
@@ -57,7 +57,6 @@ export class VermineActorSheet extends ActorSheet {
/** @override */
activateListeners(html) {
super.activateListeners(html);
html.find('.min-max-edit').click(this._onMinMaxEdit.bind(this))
// Render the item sheet for viewing/editing prior to the editable check.
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item");
@@ -79,7 +78,9 @@ export class VermineActorSheet extends ActorSheet {
item.delete();
li.slideUp(200, () => this.render(false));
});
html.find(".item-roll").click(ev => {
this._onRollItem(ev)
})
// Active Effect management
html.find(".effect-control").click(ev => onManageActiveEffect(ev, this.actor));
@@ -103,6 +104,12 @@ export class VermineActorSheet extends ActorSheet {
})
}
async _onRollItem(ev) {
const li = $(ev.currentTarget).parents(".item");
const item = this.actor.items.get(li.data("itemId"));
item.roll();
}
_onClickRadioHexa(ev) {
let input = ev.currentTarget;
console.log(input.value, input.name);
@@ -123,35 +130,6 @@ export class VermineActorSheet extends ActorSheet {
}
async _onMinMaxEdit(event) {
event.preventDefault();
let propPath = event.currentTarget.dataset.prop;
let propName = propPath.split('.').slice(-1).pop()
let data = {
actorName: this.actor.name,
propName: propName
}
let html = await renderTemplate('systems/vermine2047/templates/dialogs/min-max-edit.hbs', data);
let ui = new Dialog({
title: "edit : " + propName,
content: html,
buttons: {
roll: {
label: "ok",
callback: (html) => { }
},
cancel: {
label: game.i18n.localize('Close'),
callback: () => { }
}
}
}
);
ui.render(true)
}
async _onItemCreate(event) {
event.preventDefault();
+1
View File
@@ -66,6 +66,7 @@ export class VermineItemSheet extends ItemSheet {
html.find('.traits-selector').click(ev => {
this.openTraitSelector(ev)
})
}
async _onClickDamage(ev) {
+23 -9
View File
@@ -149,27 +149,37 @@ export class TraitSelector extends Application {
async activateListeners(html) {
super.activateListeners(html);
this.validateTraits(html);
html.find('input').click(ev => {
html.find('input').change(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
let val = html.find("input.trait-value");
for (let inp of [...checks, val]) {
if (this.targetItem.system.traits[inp.dataset.trait]) {
if (inp.type == "checkbox") {
inp.checked = true
}
if (inp.type == "value") {
inp.value = this.targetItem.system.traits[inp.dataset.trait].value
}
}
}
}
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
let traitKey = el.dataset.trait; // Récupère la clé du trait à partir de l'attribut data-trait
let traitValue = parseInt(el.value) || null
let traits = this.targetItem.system.traits || {}; // Récupère les traits actuels, ou un objet vide si aucun trait n'est défini
console.log(traitKey, traitValue, traits)
if (el.classList.contains('trait-selector')) {
if (!traits[traitKey]) {
// Si la case est cochée, ajoute le trait
await this.targetItem.update({ [`system.traits.${traitKey}`]: this.traits[traitKey] });
@@ -178,8 +188,12 @@ export class TraitSelector extends Application {
await this.targetItem.update({ [`system.traits.${traitKey}`]: null });
}
}
else if (el.classList.contains('trait-value')) {
if (traitValue) {
console.log(el.value)
// Logique pour les valeurs des traits si nécessaire
el.closest("label").querySelector('.trait-selector').checked = true;
} else {
el.closest("label").querySelector('.trait-selector').checked = false;
}
}
}
+6
View File
@@ -246,3 +246,9 @@ VERMINE.traits = {
},
// etc...etc...
}
VERMINE.damageTypes = [
"choc",
"lame",
"feu",
"balle"
]
+2
View File
@@ -51,7 +51,9 @@ export default class RollDialog extends Dialog {
}) {
// Retrieve the actor data based on the actorId
data.actor = await game.actors.get(data.actorId);
console.log(data.actor)
data.availableSpecialties = data.actor.items.filter(it => it.type == "specialty");
console.log(data.availableSpecialties)
data.availableItems = data.actor.items.filter(it => it.type == "item");
data.config = CONFIG.VERMINE;
// Define options for the dialog
+14 -15
View File
@@ -326,7 +326,7 @@ export class VermineCombat extends Combat {
}
async rollInitiative(ids, formula = undefined, messageOptions = {}) {
// console.log(`${game.system.title} | Combat.rollInitiative()`, ids, formula, messageOptions);
console.log(`${game.system.title} | Combat.rollInitiative()`, ids, formula, messageOptions);
// Structure input data
ids = typeof ids === "string" ? [ids] : ids;
@@ -428,20 +428,7 @@ export class VermineCombatTracker extends CombatTracker {
return "systems/vermine2047/templates/combat-tracker.hbs";
}
async getData(options) {
const context = await super.getData(options);
if (!context.hasCombat) {
return context;
}
for (let [i, combatant] of context.combat.turns.entries()) {
context.turns[i].hasActed = combatant.getFlag("world", "hasActed");
context.turns[i].isPlayer = combatant.actor.type == "player";
context.turns[i].isNpc = combatant.actor.type == "npc";
}
return context;
}
/* -------------------------------------------- */
get template() {
@@ -466,14 +453,26 @@ export class VermineCombatTracker extends CombatTracker {
activateListeners(html) {
super.activateListeners(html);
html.find("[data-attitude]").click(this._setStatut.bind(this));
html.find("[data-control='rollInitiative']").click(this.rollVermineInitiative.bind(this))
}
async rollVermineInitiative(ev) {
ev.preventDefault();
ev.stopPropagation();
const btn = ev.currentTarget;
const li = btn.closest(".combatant");
const combat = this.viewed;
const combatant = combat.combatants.get(li.dataset.combatantId);
console.log(combatant)
}
/**
* @description Use to put an attitude to an actor
* @param {*} event
*/
async _setStatut(event) {
event.preventDefault();
event.stopPropagation();
+1033 -3253
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -13,11 +13,11 @@
},
"author": "Rwan",
"devDependencies": {
"@typhonjs-fvtt/eslint-config-foundry.js": "^0.8.0",
"@foundryvtt/foundryvtt-cli": "^1.0.2",
"browser-sync": "^2.27.11",
"gulp": "^4.0.2",
"@typhonjs-fvtt/eslint-config-foundry.js": "^0.8.0",
"browser-sync": "^3.0.3",
"gulp": "^5.0.0",
"gulp-sass": "^5.1.0",
"sass": "^1.55.0"
}
}
}
+57
View File
@@ -0,0 +1,57 @@
// Flexbox.
.flex-group-center,
.flex-group-left,
.flex-group-right {
justify-content: center;
align-items: center;
text-align: center;
}
.flex-group-left {
justify-content: flex-start;
text-align: left;
}
.flex-group-right {
justify-content: flex-end;
text-align: right;
}
.flexshrink {
flex: 0;
}
.flex-center {
align-items: center;
justify-content: center;
}
.flex-between {
justify-content: space-between;
}
.flex-around {
justify-content: space-around;
}
.flexlarge {
flex: 2;
}
// Alignment styles.
.align-left {
justify-content: flex-start;
text-align: left;
}
.align-right {
justify-content: flex-end;
text-align: right;
}
.align-center {
align-items: center;
justify-content: center;
text-align: center;
}
+10 -17
View File
@@ -27,6 +27,7 @@ img.profile-img {
filter: drop-shadow(0px 0px 20px rgb(110, 133, 27));
height: auto;
width: 100%;
max-width: 10rem;
}
/* custom styles */
@@ -35,13 +36,6 @@ body.system-vermine2047 img#logo {
height: auto;
}
/* Customize the chat roll area! */
#chat-form textarea {
background: url(/systems/vermine2047/assets/images/ui/box_background.webp) repeat;
/*font-family: monospace;
font-size: 14px;
color: black; */
}
/* Customize the chat history area! */
#chat-log .message {
@@ -112,24 +106,22 @@ ul.unstyled li {
}
.actor.sheet form .form {
display: grid;
display: flex;
grid-template-columns: minmax(230px, 1fr) 3fr;
grid-template-rows: 1fr;
align-items: flex-start;
height: 100%;
overflow: auto;
}
.actor.sheet .form aside {
grid-row: span 1 / span 1;
min-width: max-content;
background-image: url(/systems/vermine2047/assets/images/ui/barre_laterale.webp);
background-repeat: no-repeat;
background-size: cover;
background-size: auto 200%;
border-right: 2px black;
height: 100%;
width: 240px;
padding: 0 0.3rem;
box-shadow: -20px 0px 100px #000000b5 inset;
box-shadow: -20px 0px 100px 15px #000000b5 inset;
.major-totem {
@@ -482,8 +474,7 @@ ul.unstyled li {
}
.system-vermine2047 .sheet.actor .sidebar {
width: 230px;
min-height: 518px;
flex: 0.2;
}
.system-vermine2047 .sheet.actor .floatright {
@@ -700,7 +691,8 @@ ul.unstyled li {
.system-vermine2047 .sheet.actor #edit {
background-color: black;
color: white
color: white;
width: 100%
}
.system-vermine2047 .sheet.actor .reserve-grid {
@@ -735,6 +727,7 @@ ul.unstyled li {
background: radial-gradient(circle, rgba(255, 255, 255, 0.425) 0%, rgba(0, 0, 0, 0.288) 100%);
max-height: 1.2rem;
max-width: 1.2rem;
min-width: 1.2rem;
aspect-ratio: 1/1;
color: black;
vertical-align: center;
+12 -1
View File
@@ -3,7 +3,6 @@
.flexrow {
align-items: center;
box-shadow: 0px 5px 10px 0px black;
margin: 1rem;
}
header,
@@ -57,6 +56,18 @@
font-family: "DistressBlack";
}
.traits {
box-shadow: 0px 5px 15px black;
h3 {
margin: 0
}
h4 {
margin: 0
}
}
}
+1
View File
@@ -5,6 +5,7 @@
@import "dialog.scss";
@import "special-inputs.scss";
@import "special-applications.scss";
@import "_flex.scss";
// overwrites variables
+3 -1
View File
@@ -487,6 +487,7 @@
"description": "",
"rarity": 3,
"reliability": 3,
"handicap": 0,
"quantity": 1,
"weight": 0,
"traits": {},
@@ -534,7 +535,8 @@
"max_range": 0,
"damage": {
"value": 0,
"type": ""
"type": "",
"addVigor": false
},
"ammo": 0
},
@@ -1,9 +1,6 @@
<div class="grid grid-2col">
<div class="self-control-container">
<div class="self-control-container flexcol align-center">
<h4 class="align-center">
<a class="min-max-edit" data-prop="system.attributes.self_control">
<i class="fas fa-cogs"> </i>
</a>
{{ localize "VERMINE.self_control"}} :
{{@root.system.attributes.self_control.value}}/
@@ -41,11 +38,9 @@
{{/repeat}}
</div>
</div>
<div class="effort-container">
<div class="effort-container flexcol align-center">
<h4 class="align-center">
<a class="min-max-edit" data-prop="system.attributes.effort">
<i class="fas fa-cogs"></i>
</a>
{{ localize "VERMINE.effort"}} :
{{@root.system.attributes.effort.value}}/
{{@root.system.attributes.effort.max}}
@@ -84,7 +79,7 @@
</div>
</div>
</div>
<h4 class="item-name effect-name flexrow">{{ localize
<h4 class="item-name flexrow">{{ localize
"VERMINE.wounds.name"}}</h4>
<ul class="unstyled">
<li class="row mdb">{{ localize 'VERMINE.wounds.light'}} <span
+69 -30
View File
@@ -2,51 +2,70 @@
<div class="totem-details">
<img
class="img-totem"
src="/systems/vermine2047/assets/images/ui/totems/{{ system.identity.totem }}.webp"
alt="{{ smarttl 'TOTEMS' system.identity.totem 'name' }}" width="80"
src="/systems/vermine2047/assets/images/ui/totems/{{system.identity.totem}}.webp"
alt="{{smarttl 'TOTEMS' system.identity.totem 'name'}}"
width="80"
height="80" />
<h4 class="align-center">
{{ smarttl 'TOTEMS' system.identity.totem 'name' }}
{{smarttl "TOTEMS" system.identity.totem "name"}}
</h4>
<p style="font-size:80%;">{{ smarttlk "TOTEMS" system.identity.totem
"description"}}</p>
<p style="font-size:80%;">{{smarttlk
"TOTEMS"
system.identity.totem
"description"
}}</p>
<div class="grid grid-2col">
<div class>
<div class="item-name"><strong>Principes</strong><br />{{ smarttlk
<div class="item-name"><strong>Principes</strong><br />{{smarttlk
"TOTEMS"
system.identity.totem "instincts"}}</div>
system.identity.totem
"instincts"
}}</div>
</div>
<div class>
<div class="item-name"><strong>Interdits</strong><br />{{ smarttlk
<div class="item-name"><strong>Interdits</strong><br />{{smarttlk
"TOTEMS"
system.identity.totem "bans"}}</div>
system.identity.totem
"bans"
}}</div>
</div>
</div>
</div>
<hr>
<hr />
{{else}}
<h3>choisissez un totem</h3>
{{/if}}
<!--
___________abstract Items_____________
-->
<div class="grid grid-2col">
<div>
<h4>
<span>{{ localize 'ITEMS.abilities'}}</span>
<a class="item-control item-create" title="Create item"
<span>{{localize "ITEMS.abilities"}}</span>
<a
class="item-control item-create"
title="Create item"
data-type="ability"><i class="fas fa-plus"></i></a>
</h4>
<ol class="list-item">
{{#each abilities as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" title="Edit Item">{{item.name}}</a>
<a
class="item-control item-edit"
title="Edit Item">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
{{#if item.system.description}}
<i class="fas fa-circle-question"
<i
class="fas fa-circle-question"
data-tooltip="{{item.system.description}}"></i>
{{/if}}
<a class="item-control item-delete" title="Delete Item"><i
@@ -58,19 +77,24 @@
</div>
<div>
<h4>
<span>{{ localize 'ITEMS.specialties'}}</span>
<a class="item-control item-create" title="Create item"
<span>{{localize "ITEMS.specialties"}}</span>
<a
class="item-control item-create"
title="Create item"
data-type="specialty"><i class="fas fa-plus"></i></a>
</h4>
<ol class="list-item">
{{#each specialties as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" title="Edit Item">{{item.name}}</a>
<a
class="item-control item-edit"
title="Edit Item">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
{{#if item.system.description}}
<i class="fas fa-circle-question"
<i
class="fas fa-circle-question"
data-tooltip="{{item.system.description}}"></i>
{{/if}}
<a class="item-control item-delete" title="Delete Item"><i
@@ -82,19 +106,24 @@
</div>
<div>
<h4>
<span>{{ localize 'ITEMS.backgrounds'}}</span>
<a class="item-control item-create" title="Create item"
<span>{{localize "ITEMS.backgrounds"}}</span>
<a
class="item-control item-create"
title="Create item"
data-type="background"><i class="fas fa-plus"></i></a>
</h4>
<ol class="list-item">
{{#each backgrounds as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" title="Edit Item">{{item.name}}</a>
<a
class="item-control item-edit"
title="Edit Item">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
{{#if item.system.description}}
<i class="fas fa-circle-question"
<i
class="fas fa-circle-question"
data-tooltip="{{item.system.description}}"></i>
{{/if}}
<a class="item-control item-delete" title="Delete Item"><i
@@ -106,19 +135,24 @@
</div>
<div>
<h4>
<span>{{ localize 'ITEMS.traumas'}}</span>
<a class="item-control item-create" title="Create item"
<span>{{localize "ITEMS.traumas"}}</span>
<a
class="item-control item-create"
title="Create item"
data-type="trauma"><i class="fas fa-plus"></i></a>
</h4>
<ol class="list-item">
{{#each traumas as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" title="Edit Item">{{item.name}}</a>
<a
class="item-control item-edit"
title="Edit Item">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
{{#if item.system.description}}
<i class="fas fa-circle-question"
<i
class="fas fa-circle-question"
data-tooltip="{{item.system.description}}"></i>
{{/if}}
<a class="item-control item-delete" title="Delete Item"><i
@@ -130,19 +164,24 @@
</div>
<div>
<h4>
<span>{{ localize 'ITEMS.evolutions'}}</span>
<a class="item-control item-create" title="Create item"
<span>{{localize "ITEMS.evolutions"}}</span>
<a
class="item-control item-create"
title="Create item"
data-type="evolution"><i class="fas fa-plus"></i></a>
</h4>
<ol class="list-item">
{{#each evolutions as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" title="Edit Item">{{item.name}}</a>
<a
class="item-control item-edit"
title="Edit Item">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
{{#if item.system.description}}
<i class="fas fa-circle-question"
<i
class="fas fa-circle-question"
data-tooltip="{{item.system.description}}"></i>
{{/if}}
<a class="item-control item-delete" title="Delete Item"><i
+6 -6
View File
@@ -26,7 +26,7 @@
<li class="row mdb">{{ localize 'VERMINE.wounds.light'}} <span
data-tooltip="seuil">({{
system.minorWound.threshold }})</span>
{{#range system.minorWound.max }}
{{#repeat system.minorWound.max }}
<input type="radio" data-dtype="Number" name="system.minorWound.value"
value="{{this}}" {{#ife @root.system.minorWound.value this
}}checked="checked"{{/ife}} data-wound="minorWound"
@@ -36,10 +36,10 @@
{{/iflteq}}
" />
{{/range}}</li>
{{/repeat}}</li>
<li class="row mdb">{{ localize 'VERMINE.wounds.heavy'}} ({{
system.majorWound.threshold }})
{{#range system.majorWound.max }}
{{#repeat system.majorWound.max }}
<input type="radio" name="system.majorWound.value" value="{{this}}" {{#ife
@root.system.majorWound.value this }}checked="checked"{{/ife}}
data-wound="majorWound"
@@ -49,11 +49,11 @@
{{/iflteq}}
" />
{{/range}}
{{/repeat}}
</li>
<li class="row mdb">{{ localize 'VERMINE.wounds.deadly'}} ({{
system.deadlyWound.threshold }})
{{#range system.deadlyWound.max }}
{{#repeat system.deadlyWound.max }}
<input type="radio" name="system.deadlyWound.value" value="{{this}}" {{#ife
@root.system.deadlyWound.value this }}checked="checked"{{/ife}}
data-wound="deadlyWound"
@@ -63,7 +63,7 @@
{{/iflteq}}
" />
{{/range}}
{{/repeat}}
</li>
</ul>
<h4 class="item-name effect-name flexrow">{{ localize "UI.effects.name"}}</h4>
+74 -52
View File
@@ -2,75 +2,97 @@
<div>
<h4 class="align-center">{{ localize "VERMINE.self_control"}}</h4>
<p class="align-center">
<input type="number" name="system.attributes.self_control.value" value="{{ system.attributes.self_control.value }}" data-dtype="Number" min="{{ system.attributes.self_control.min }}" max="{{ system.attributes.self_control.max }}" /> / {{ system.attributes.self_control.max }}
<input type="number" name="system.attributes.self_control.value"
value="{{ system.attributes.self_control.value }}" data-dtype="Number"
min="{{ system.attributes.self_control.min }}"
max="{{ system.attributes.self_control.max }}" /> / {{
system.attributes.self_control.max }}
</p>
</div>
</div>
<div>
<h4 class="align-center">{{ localize "VERMINE.effort"}}</h4>
<p class="align-center">
<input type="number" name="system.attributes.effort.value" value="{{ system.attributes.effort.value }}" data-dtype="Number" min="{{ system.attributes.effort.min }}" max="{{ system.attributes.effort.max }}" /> / {{ system.attributes.effort.max }}
<input type="number" name="system.attributes.effort.value"
value="{{ system.attributes.effort.value }}" data-dtype="Number"
min="{{ system.attributes.effort.min }}"
max="{{ system.attributes.effort.max }}" /> / {{
system.attributes.effort.max }}
</p>
</div>
</div>
</div>
<h4 class="item-name effect-name flexrow">{{ localize "VERMINE.wounds.name"}}</h4>
<h4 class="item-name effect-name flexrow">{{ localize
"VERMINE.wounds.name"}}</h4>
<ul class="unstyled">
<li class="row mdb">{{ localize 'VERMINE.wounds.light'}} ({{ system.minorWound.threshold }})
{{#range system.minorWound.max }}
<input type="radio" data-dtype="Number" name="system.minorWound.value" value="{{this}}" {{#ife @root.system.minorWound.value this }}checked="checked"{{/ife}} />
{{/range}}</li>
<li class="row mdb">{{ localize 'VERMINE.wounds.heavy'}} ({{ system.majorWound.threshold }})
{{#range system.majorWound.max }}
<input type="radio" name="system.majorWound.value" value="{{this}}" {{#ife @root.system.majorWound.value this }}checked="checked"{{/ife}} />
{{/range}}
<li class="row mdb">{{ localize 'VERMINE.wounds.light'}} ({{
system.minorWound.threshold }})
{{#repeat system.minorWound.max }}
<input type="radio" data-dtype="Number" name="system.minorWound.value"
value="{{this}}" {{#ife @root.system.minorWound.value this
}}checked="checked"{{/ife}} />
{{/repeat}}</li>
<li class="row mdb">{{ localize 'VERMINE.wounds.heavy'}} ({{
system.majorWound.threshold }})
{{#repeat system.majorWound.max }}
<input type="radio" name="system.majorWound.value" value="{{this}}" {{#ife
@root.system.majorWound.value this }}checked="checked"{{/ife}} />
{{/repeat}}
</li>
<li class="row mdb">{{ localize 'VERMINE.wounds.deadly'}} ({{ system.deadlyWound.threshold }})
{{#range system.deadlyWound.max }}
<input type="radio" name="system.deadlyWound.value" value="{{this}}" {{#ife @root.system.deadlyWound.value this }}checked="checked"{{/ife}} />
{{/range}}
<li class="row mdb">{{ localize 'VERMINE.wounds.deadly'}} ({{
system.deadlyWound.threshold }})
{{#repeat system.deadlyWound.max }}
<input type="radio" name="system.deadlyWound.value" value="{{this}}" {{#ife
@root.system.deadlyWound.value this }}checked="checked"{{/ife}} />
{{/repeat}}
</li>
</ul>
<h4 class="item-name effect-name flexrow">{{ localize "UI.effects.name"}}</h4>
<ol class="items-list effects-list">
{{#each effects as |section sid|}}
<li class="items-header flexrow" data-effect-type="{{section.type}}">
<p class="item-name effect-name flexrow">{{#if (eq section.type 'temporary')}}
{{localize "UI.effects.temporary" }}
{{else if (eq section.type 'passive')}}
{{localize "UI.effects.passive" }}
{{else if (eq section.type 'inactive')}}
{{localize "UI.effects.inactive" }}
{{/if}}
</p>
<div class="effect-source">{{localize 'UI.source'}}</div>
<div class="effect-source">{{localize 'UI.duration'}}</div>
<li class="items-header flexrow" data-effect-type="{{section.type}}">
<p class="item-name effect-name flexrow">{{#if (eq section.type
'temporary')}}
{{localize "UI.effects.temporary" }}
{{else if (eq section.type 'passive')}}
{{localize "UI.effects.passive" }}
{{else if (eq section.type 'inactive')}}
{{localize "UI.effects.inactive" }}
{{/if}}
</p>
<div class="effect-source">{{localize 'UI.source'}}</div>
<div class="effect-source">{{localize 'UI.duration'}}</div>
<div class="item-controls effect-controls flexrow">
<a class="effect-control" data-action="create"
title="{{localize 'UI.effect_create'}}">
<i class="fas fa-plus"></i> {{localize "UI.add"}}
</a>
</div>
</li>
<ol class="item-list">
{{#each section.effects as |effect|}}
<li class="item effect flexrow" data-effect-id="{{effect.id}}">
<div class="item-name effect-name">
<a class="effect-control flexrow flex-group-center items-center"
data-action="edit" title="{{localize 'UI.effect_edit'}}">
<img class="item-image" src="{{effect.icon}}" />
<span>{{effect.label}}</span>
</a>
</div>
<div class="effect-source">{{effect.sourceName}}</div>
<div class="effect-duration">{{effect.duration.label}}</div>
<div class="item-controls effect-controls flexrow">
<a class="effect-control" data-action="create" title="{{localize 'UI.effect_create'}}">
<i class="fas fa-plus"></i> {{localize "UI.add"}}
<a class="effect-control" data-action="toggle"
title="{{localize 'UI.effect_toggle'}}">
<i
class="fas {{#if effect.disabled}}fa-check{{else}}fa-times{{/if}}"></i>
</a>
<a class="effect-control" data-action="delete"
title="{{localize 'UI.effect_delete'}}">
<i class="fas fa-trash"></i>
</a>
</div>
</li>
<ol class="item-list">
{{#each section.effects as |effect|}}
<li class="item effect flexrow" data-effect-id="{{effect.id}}">
<div class="item-name effect-name">
<a class="effect-control flexrow flex-group-center items-center" data-action="edit" title="{{localize 'UI.effect_edit'}}">
<img class="item-image" src="{{effect.icon}}"/>
<span>{{effect.label}}</span>
</a>
</div>
<div class="effect-source">{{effect.sourceName}}</div>
<div class="effect-duration">{{effect.duration.label}}</div>
<div class="item-controls effect-controls flexrow">
<a class="effect-control" data-action="toggle" title="{{localize 'UI.effect_toggle'}}">
<i class="fas {{#if effect.disabled}}fa-check{{else}}fa-times{{/if}}"></i>
</a>
<a class="effect-control" data-action="delete" title="{{localize 'UI.effect_delete'}}">
<i class="fas fa-trash"></i>
</a>
</div>
</li>
{{/each}}
</ol>
</ol>
{{/each}}
</ol>
+33 -16
View File
@@ -7,25 +7,42 @@
<div class="item-rarity">{{ localize 'VERMINE.rarity_sm'}}</div>
<div class="item-reliability">{{ localize 'VERMINE.reliability_sm'}}</div>
<div class="item-controls">
<a class="item-control item-create" title="Create item" data-type="weapon"><i class="fas fa-plus"></i></a>
<a class="item-control item-create" title="Create item"
data-type="weapon"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each weapons as |item id|}}
<li class="item flexrow flex-group-center" data-item-id="{{item._id}}">
<div class="item-name flexrow" style="flex:4;">
<div class="item-image">
<a class="item-control item-edit" data-roll-type="item"><img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/></a>
</div>
<a class="item-control item-edit" title="Edit Item">{{item.name}}</a>
<li class="item flexrow flex-group-center align-center"
data-item-id="{{item._id}}">
<div class="item-name flexrow" style="flex:4;">
<div class="item-image">
<a class="item-control" data-roll-type="item"><img
src="{{item.img}}" title="{{item.name}}" width="24"
height="24" /></a>
</div>
<p><a class="item-control item-edit" title="Edit Item">{{item.system.min_range}} / {{item.system.max_range}}</a></p>
<p><a class="item-control item-edit" title="Edit Item">{{item.system.damage}}</a></p>
<p><a class="item-control item-edit" title="Edit Item">{{item.system.ammo}}</a></p>
<p><a class="item-control item-edit" title="Edit Item">{{item.system.rarity}}</a></p>
<p><a class="item-control item-edit" title="Edit Item">{{item.system.reliability}}</a></p>
<div class="item-controls">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
<a class="item-control item-roll">{{item.name}}</a>
</div>
<p><a>{{item.system.min_range}} /
{{item.system.max_range}}</a></p>
<p><a>
{{#if item.system.damage.addVigor}}
vigueur+
{{/if}}
{{item.system.damage.value}}
({{item.system.damage.type}})
</a></p>
<p><a>{{item.system.ammo}}</a></p>
<p><a>{{item.system.rarity}}</a></p>
<p><a>{{item.system.reliability}}</a></p>
<div class="item-controls">
<a class="item-control item-delete" title="Delete Item"><i
class="fas fa-trash"></i></a>
<a class="item-control item-edit" title="Edit Item"><i
class="fas fa-edit"></i></a>
<a class="item-control item-roll" title="Roll Item"><i
class="fas fa-dice"></i></a>
</div>
</li>
{{/each}}
</ol>
+6 -9
View File
@@ -1,22 +1,19 @@
<div class="trait choose grid grid-2col"
style="padding:5px;">
{{#each traits as | trait ind|}}
<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}}">
<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>
</div>
+10 -1
View File
@@ -1 +1,10 @@
<h2>edit {{actorName}} : {{propName}}</h2>
<h2>edit {{actorName}} : {{propName}}</h2>
<div class="flexrow align-center">
<div class="form-row">
<label for="min">maximum</label>
<input type="number" value="0" data-attr="max">
</div>
</div>
+23 -16
View File
@@ -108,7 +108,14 @@
{{#if availableSpecialties.length}}
<label class="label">{{localize 'VERMINE.specialty'}} (+1D)</label>
<div class="flexrow">
<span data-spec-skill="{{spec.system.skill}}">
<i>aucunes</i>
<input type="radio" data-roll="true" name="usingSpecialization"
id="usingSpecialization"
value="aucune">
</span>
{{#each availableSpecialties as |spec ind|}}
<span data-spec-skill="{{spec.system.skill}}">
<i>{{spec.name}}</i>
<input type="radio" data-roll="true" name="usingSpecialization"
@@ -145,24 +152,24 @@
min="0"
max="0" value="0" />
</div>
<div class="flexrow row mdb">
<div class="flexcol row mdb">
<label class="label">{{localize 'VERMINE.tooling'}} (+1D)</label>
<span>
<i>Auncun</i>
<input type="radio" data-roll="true" name="usingTools"
id="usingTools" value="0" checked>
</span>
</div>
<div class="item-list grid grid-4col">
{{#each availableItems as |item ind|}}
<span>
<i>{{item.name}}</i>
<input type="radio" data-roll="true" name="usingTools"
id="usingTools"
value="{{item.name}}">
</span>
{{/each}}
<div class="item-list grid grid-4col">
<h3>
<i>Auncun</i>
<input type="radio" data-roll="true" name="usingTools"
id="usingTools" value="0" checked>
</h3>
{{#each availableItems as |item ind|}}
<span>
<i>{{item.name}}</i>
<input type="radio" data-roll="true" name="usingTools"
id="usingTools"
value="{{item.name}}">
</span>
{{/each}}
</div>
</div>
<div class="flexrow">
+34 -65
View File
@@ -1,67 +1,36 @@
<form
class="{{cssClass}}"
autocomplete="off"
>
<header class="sheet-header">
<img
class="profile-img"
src="{{item.img}}"
data-edit="img"
title="{{item.name}}"
/>
<div class="header-fields">
<h1 class="charname"><input
name="name"
type="text"
value="{{item.name}}"
placeholder="Name"
/></h1>
</div>
</header>
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
</div>
</header>
<section class="sheet-body">
<div class="flexrow">
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.clew"}}</label>
<input
type="number"
name="system.level"
value="{{system.level}}"
data-dtype="Number"
/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.mobility"}}</label>
<input
type="number"
name="system.mobility"
value="{{system.mobility}}"
data-dtype="Number"
/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.rarity"}}</label>
<input
type="number"
name="system.rarity"
value="{{system.rarity}}"
data-dtype="Number"
/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.reliability"}}</label>
<input
type="number"
name="system.reliability"
value="{{system.reliability}}"
data-dtype="Number"
/>
</div>
</div>
<h2>description</h2>
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
</div>
{{> "systems/vermine2047/templates/item/partials/damages.html"}}
<section class="sheet-body">
{{> "systems/vermine2047/templates/item/partials/traits.html"}}
</section>
</form>
<div class="flexrow">
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.clew"}}</label>
<input type="number" name="system.level" value="{{system.level}}" data-dtype="Number"/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.mobility"}}</label>
<input type="number" name="system.mobility" value="{{system.mobility}}" data-dtype="Number"/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.rarity"}}</label>
<input type="number" name="system.rarity" value="{{system.rarity}}" data-dtype="Number"/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.reliability"}}</label>
<input type="number" name="system.reliability" value="{{system.reliability}}" data-dtype="Number"/>
</div>
</div>
<h2>description</h2>
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
</div>
{{> "systems/vermine2047/templates/item/partials/damages.html"}}
</section></form>
+36 -66
View File
@@ -1,72 +1,42 @@
<form
class="{{cssClass}}"
autocomplete="off"
>
<header class="sheet-header">
<img
class="profile-img"
src="{{item.img}}"
data-edit="img"
title="{{item.name}}"
/>
<div class="header-fields">
<h1 class="charname"><input
name="name"
type="text"
value="{{item.name}}"
placeholder="Name"
/></h1>
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
</div>
</header>
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body ">
<div class="flexrow">
{{!-- Description Tab --}}
<div class="resource">
<label class="resource-label">Rarity</label>
<input
type="number"
name="system.rarity"
value="{{system.rarity}}"
data-dtype="Number"
/>
</div>
{{!-- Sheet Body --}}
<section class="sheet-body ">
{{> "systems/vermine2047/templates/item/partials/traits.html"}}
<div class="resource">
<label class="resource-label">Reliability</label>
<input
type="number"
name="system.reliability"
value="{{system.reliability}}"
data-dtype="Number"
/>
</div>
<div class="resource">
<label class="resource-label">Quantity</label>
<input
type="text"
name="system.quantity"
value="{{system.quantity}}"
data-dtype="Number"
/>
</div>
<div class="resource">
<label class="resource-label">Weight</label>
<input
type="text"
name="system.weight"
value="{{system.weight}}"
data-dtype="Number"
/>
</div>
</div>
<h2>Description</h2>
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
<div class="flexrow">
{{!-- Description Tab --}}
<div class="resource">
<label class="resource-label">Rarity</label>
<input type="number" name="system.rarity" value="{{system.rarity}}" data-dtype="Number"/>
</div>
{{> "systems/vermine2047/templates/item/partials/damages.html"}}
</section>
</form>
<div class="resource">
<label class="resource-label">Reliability</label>
<input type="number" name="system.reliability" value="{{system.reliability}}" data-dtype="Number"/>
</div>
<div class="resource">
<label class="resource-label">Quantity</label>
<input type="text" name="system.quantity" value="{{system.quantity}}" data-dtype="Number"/>
</div>
<div class="resource">
<label class="resource-label">Weight</label>
<input type="text" name="system.weight" value="{{system.weight}}" data-dtype="Number"/>
</div>
</div>
<h2>Description</h2>
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
{{> "systems/vermine2047/templates/item/partials/damages.html"}}
</section>
</form>
+32 -61
View File
@@ -1,63 +1,34 @@
<form
class="{{cssClass}}"
autocomplete="off"
>
<header class="sheet-header">
<img
class="profile-img"
src="{{item.img}}"
data-edit="img"
title="{{item.name}}"
/>
<div class="header-fields">
<h1 class="charname"><input
name="name"
type="text"
value="{{item.name}}"
placeholder="Name"
/></h1>
</div>
</header>
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
</div>
</header>
<section class="sheet-body">
<div
class=" flexcol"
data-group="primary"
data-tab="description"
>
<div class="flexrow">
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.mobility"}}</label>
<input
type="number"
name="system.mobility"
value="{{system.mobility}}"
data-dtype="Number"
/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.rarity"}}</label>
<input
type="number"
name="system.rarity"
value="{{system.rarity}}"
data-dtype="Number"
/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.reliability"}}</label>
<input
type="number"
name="system.reliability"
value="{{system.reliability}}"
data-dtype="Number"
/>
</div>
</div>
<h2>Description</h2>
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
</div>
{{> "systems/vermine2047/templates/item/partials/damages.html"}}
<section class="sheet-body">
{{> "systems/vermine2047/templates/item/partials/traits.html"}}
</section>
</form>
<div class=" flexcol" data-group="primary" data-tab="description">
<div class="flexrow">
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.mobility"}}</label>
<input type="number" name="system.mobility" value="{{system.mobility}}" data-dtype="Number"/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.rarity"}}</label>
<input type="number" name="system.rarity" value="{{system.rarity}}" data-dtype="Number"/>
</div>
<div class="resource">
<label class="resource-label">{{ localize "VERMINE.reliability"}}</label>
<input type="number" name="system.reliability" value="{{system.reliability}}" data-dtype="Number"/>
</div>
</div>
<h2>Description</h2>
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
</div>
{{> "systems/vermine2047/templates/item/partials/damages.html"}}
</section>
</form>
+34 -11
View File
@@ -9,29 +9,52 @@
{{> "systems/vermine2047/templates/item/partials/traits.html"}}
<h4 class="flexrow">
<div class="resource">
<div class="resource align-center flexcol">
<label class="resource-label">{{ localize "VERMINE.ranges"}}</label>
<div>
<span class="hexa">
<div class="flexrow align-center">
<div class="hexa">
<input type="number" name="system.min_range" value="{{system.min_range}}" data-dtype="Number"/>
</span>/
<span class="hexa">
<input type="number" name="system.max_range" value="{{system.max_range}}" data-dtype="Number"/></span>
</div>/
<div class="hexa">
<input type="number" name="system.max_range" value="{{system.max_range}}" data-dtype="Number"/></div>
</div>
</div>
<div class="resource">
<div class="resource align-center flexcol">
<label class="resource-label">{{ localize "VERMINE.damages"}}</label>
<div class="hexa"><input type="number" name="system.damage" value="{{system.damage}}" data-dtype="Number"/></div>
<div class="flexcol align-center">
<div class="flexrow">
<div class="hexa">
<input type="number" name="system.damage.value" value="{{system.damage.value}}" data-dtype="Number"/>
</div>
<span>
<input type="checkbox" data-tooltip="ajouter la vigueur" name="system.damage.addVigor" {{#if system.damage.addVigor}} checked {{/if}}>
</span>
</div>
<input type="text" placeholder="type" name="system.damage.type" value="{{system.damage.type}}" data-dtype="Text" list="damageType"/>
<datalist id="damageType">
<option value="choc">choc</option>
<option value="lame">lame</option>
<option value="feu">feu</option>
<option value="balle">balle</option>
</datalist>
</div>
</div>
<div class="resource">
<div class="resource align-center flexcol">
<label class="resource-label">{{ localize "VERMINE.ammo"}}</label>
<div class="hexa"><input type="number" name="system.ammo" value="{{system.ammo}}" data-dtype="Number"/></div>
</div>
<div class="resource">
<div class="resource align-center flexcol">
<label class="resource-label">{{ localize "VERMINE.rarity"}}</label>
<div class="hexa"><input type="number" name="system.rarity" value="{{system.rarity}}" data-dtype="Number"/></div>
</div>
<div class="resource">
<div class="resource align-center flexcol">
<label class="resource-label">{{ localize "VERMINE.reliability"}}</label>
<div class="hexa"><input type="number" name="system.reliability" value="{{system.reliability}}" data-dtype="Number"/></div>
</div>
+9 -7
View File
@@ -5,11 +5,13 @@
</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}}
<h4>
{{#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}}
</h4>
</div>