début des messages d'items
@@ -38,16 +38,16 @@
|
|||||||
- [ ] gérer les seuils auto si compétence non maitrisée
|
- [ ] gérer les seuils auto si compétence non maitrisée
|
||||||
|
|
||||||
### le combat
|
### le combat
|
||||||
- [ ] modifier la difficulté en fonction de l'état du combatant /offensif/actif/passif/
|
- [X] modifier la difficulté en fonction de l'état du combatant /offensif/actif/passif/
|
||||||
|
|
||||||
|
|
||||||
### les items
|
### les items
|
||||||
- [X]ajouter apprentissage aux abilities
|
- [X]ajouter apprentissage aux abilities
|
||||||
- [X] passer le type d'arme en select/options
|
- [X] passer le type d'arme en select/options
|
||||||
- [X] ajouter handicap de rareté
|
- [X] ajouter handicap de rareté
|
||||||
- [ ] ajouter pour items Item "competence nécessaire"
|
- [X] ajouter pour items Item "competence nécessaire"
|
||||||
- [-] 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
|
- [X] repasser sur les différents itemTypes et sheets
|
||||||
- [X] verifier le selector de traits (trait pratique cf : msg pretre)
|
- [X] verifier le selector de traits (trait pratique cf : msg pretre)
|
||||||
- [X] construire une selecteur de traits, traits= CONFIG.VERMINE.traits
|
- [X] construire une selecteur de traits, traits= CONFIG.VERMINE.traits
|
||||||
traits:[
|
traits:[
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -13,21 +13,15 @@ export class VermineItem extends Item {
|
|||||||
}
|
}
|
||||||
prepareBaseData() {
|
prepareBaseData() {
|
||||||
const actorType = (this.actor !== null) ? this.actor.type : 'character';
|
const actorType = (this.actor !== null) ? this.actor.type : 'character';
|
||||||
|
const itemType = this.type;
|
||||||
|
|
||||||
switch (this.type) {
|
|
||||||
case 'ability':
|
// Vérifie si une méthode spécifique au type existe// preparedData specifique au type
|
||||||
if (this.system.type == "") {
|
if (typeof this[`prepare${itemType.charAt(0).toUpperCase() + itemType.slice(1)}Data`] === 'function') {
|
||||||
// console.log('je suis une capacité, avec pour sous-type', this.system.type, actorType);
|
this[`prepare${itemType.charAt(0).toUpperCase() + itemType.slice(1)}Data`]();
|
||||||
this.system.type = actorType;
|
|
||||||
}
|
|
||||||
if (this.system.totem == "" && this.actor !== null && this.actor.system.identity.totem != "") {
|
|
||||||
// console.log('je suis une capacité, avec pour sous-type', this.system.type, actorType);
|
|
||||||
this.system.totem = this.actor.system.identity.totem;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// si dégats sur l'item, application du damage label et damage icon
|
||||||
if (this.system.damages?.value) {
|
if (this.system.damages?.value) {
|
||||||
this.damagedLabel = this.system.damages.state[parseInt(this.system.damages?.value) - 1];
|
this.damagedLabel = this.system.damages.state[parseInt(this.system.damages?.value) - 1];
|
||||||
switch (this.damagedLabel) {
|
switch (this.damagedLabel) {
|
||||||
@@ -45,6 +39,19 @@ export class VermineItem extends Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prepareAbilityData() {
|
||||||
|
console.log('ability data', this)
|
||||||
|
const actorType = (this.actor !== null) ? this.actor.type : 'character';
|
||||||
|
|
||||||
|
if (this.system.type == "") {
|
||||||
|
// console.log('je suis une capacité, avec pour sous-type', this.system.type, actorType);
|
||||||
|
this.system.type = actorType;
|
||||||
|
}
|
||||||
|
if (this.system.totem == "" && this.actor !== null && this.actor.system.identity.totem != "") {
|
||||||
|
// console.log('je suis une capacité, avec pour sous-type', this.system.type, actorType);
|
||||||
|
this.system.totem = this.actor.system.identity.totem;
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Prepare a data object which is passed to any Roll formulas which are created related to this Item
|
* Prepare a data object which is passed to any Roll formulas which are created related to this Item
|
||||||
* @private
|
* @private
|
||||||
@@ -65,9 +72,6 @@ export class VermineItem extends Item {
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
async roll() {
|
async roll() {
|
||||||
if (this.type == "weapon") {
|
|
||||||
this.rollWeapon()
|
|
||||||
}
|
|
||||||
const item = this;
|
const item = this;
|
||||||
|
|
||||||
// Initialize chat data.
|
// Initialize chat data.
|
||||||
@@ -76,29 +80,15 @@ export class VermineItem extends Item {
|
|||||||
const label = `[${item.type}] ${item.name}`;
|
const label = `[${item.type}] ${item.name}`;
|
||||||
|
|
||||||
// If there's no roll data, send a chat message.
|
// If there's no roll data, send a chat message.
|
||||||
if (!this.system.formula) {
|
|
||||||
ChatMessage.create({
|
|
||||||
speaker: speaker,
|
|
||||||
rollMode: rollMode,
|
|
||||||
flavor: label,
|
|
||||||
content: item.system.description ?? ''
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Otherwise, create a roll and send a chat message from it.
|
|
||||||
else {
|
|
||||||
// Retrieve roll data.
|
|
||||||
const rollData = this.getRollData();
|
|
||||||
|
|
||||||
// Invoke the roll and submit it to chat.
|
let mess = new ChatMessage({
|
||||||
const roll = new Roll(rollData.item.formula, rollData);
|
speaker: speaker,
|
||||||
// If you need to store the value first, uncomment the next line.
|
rollMode: rollMode,
|
||||||
// let result = await roll.roll({async: true});
|
flavor: label,
|
||||||
roll.toMessage({
|
});
|
||||||
speaker: speaker,
|
mess.content = await renderTemplate(`systems/vermine2047/templates/item/chatCards/${this.type}.html`, { item: this, message: mess }) ?? null;
|
||||||
rollMode: rollMode,
|
console.log(mess)
|
||||||
flavor: label,
|
|
||||||
});
|
|
||||||
return roll;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -134,7 +134,6 @@ export class VermineCharacterSheet extends VermineActorSheet {
|
|||||||
if (input.name != "flags.world.editMode") {
|
if (input.name != "flags.world.editMode") {
|
||||||
input.setAttribute('disabled', true)
|
input.setAttribute('disabled', true)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
for (let select of html.find('select')) {
|
for (let select of html.find('select')) {
|
||||||
select.setAttribute('disabled', true)
|
select.setAttribute('disabled', true)
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ export async function initUserDice(dice3d, user) {
|
|||||||
name: 'human_' + user.name,
|
name: 'human_' + user.name,
|
||||||
description: "human totem dice for " + user.name,
|
description: "human totem dice for " + user.name,
|
||||||
category: "vermine 2047",
|
category: "vermine 2047",
|
||||||
foreground: oppositeColor(lightenColor(baseColor, 60)),
|
foreground: oppositeColor(lightenColor(baseColor, 70)),
|
||||||
background: lightenColor(baseColor, 60),
|
background: lightenColor(baseColor, 70),
|
||||||
outline: 'black',
|
outline: 'black',
|
||||||
visibility: 'visible',
|
visibility: 'visible',
|
||||||
|
|
||||||
@@ -30,8 +30,8 @@ export async function initUserDice(dice3d, user) {
|
|||||||
name: 'adapted_' + user.name,
|
name: 'adapted_' + user.name,
|
||||||
description: "adapted totem dice for " + user.name,
|
description: "adapted totem dice for " + user.name,
|
||||||
category: "vermine 2047",
|
category: "vermine 2047",
|
||||||
foreground: oppositeColor(darkenColor(baseColor, 60)),
|
foreground: oppositeColor(darkenColor(baseColor, 70)),
|
||||||
background: darkenColor(baseColor, 60),
|
background: darkenColor(baseColor, 70),
|
||||||
outline: 'black',
|
outline: 'black',
|
||||||
visibility: 'visible',
|
visibility: 'visible',
|
||||||
|
|
||||||
|
|||||||
@@ -327,66 +327,7 @@ export class VermineCombat extends Combat {
|
|||||||
|
|
||||||
async rollInitiative(ids, formula = undefined, messageOptions = {}) {
|
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
|
return super.rollInitiative(ids, formula, messageOptions)
|
||||||
ids = typeof ids === "string" ? [ids] : ids;
|
|
||||||
|
|
||||||
// étape 1 : on vérifie que le combattant est un pj
|
|
||||||
/*if (ids.length == 1){
|
|
||||||
console.log("il n'y a qu'un actor en lice");
|
|
||||||
} else {
|
|
||||||
console.log("il faut prendre le premier pj pour lancer la confrontation");
|
|
||||||
}*/
|
|
||||||
const combatant = this.combatants.get(ids[0]);
|
|
||||||
let token = canvas.scene.tokens.get(combatant.tokenId);
|
|
||||||
combatant.type = game.actors.get(combatant.actorId)?.type;
|
|
||||||
combatant.disposition = token.disposition;
|
|
||||||
let enemies = [];
|
|
||||||
|
|
||||||
let adversaries = this.combatants.filter((cbt) => {
|
|
||||||
let token = canvas.scene.tokens.get(cbt.tokenId);
|
|
||||||
let enemy = token.actor;
|
|
||||||
const isEnemy = (token.disposition == -1) ? true : false;
|
|
||||||
if (isEnemy) {
|
|
||||||
enemies.push({
|
|
||||||
id: enemy.id,
|
|
||||||
name: enemy.name,
|
|
||||||
img: enemy.img,
|
|
||||||
achievement: parseInt(enemy.system.reroll.achievement.value) + 7,
|
|
||||||
conservation: 7 - parseInt(enemy.system.reroll.conservation.value)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return isEnemy;
|
|
||||||
});
|
|
||||||
|
|
||||||
let allies = this.combatants.filter((cbt) => {
|
|
||||||
let token = canvas.scene.tokens.get(cbt.tokenId);
|
|
||||||
return (token.disposition == 1 && cbt.id != combatant.id) ? true : false;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (combatant.type != 'character') {
|
|
||||||
let warningDialogHTML = await renderTemplate('systems/vermine2047/templates/dialogs/warning.html', {
|
|
||||||
warningText: "Seuls les PJs peuvent initier des confrontations. Relancer l'opération au tour du PJ actif."
|
|
||||||
});
|
|
||||||
Dialog.prompt({
|
|
||||||
title: "Avertissement",
|
|
||||||
content: warningDialogHTML,
|
|
||||||
label: 'Okay !',
|
|
||||||
callback: () => {
|
|
||||||
// console.log('Il a compris');
|
|
||||||
},
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// étape 2 : on envoie les infos
|
|
||||||
let fightingActor = game.actors.get(combatant.actorId);
|
|
||||||
VermineFight.ui({
|
|
||||||
speakerId: combatant.actorId,
|
|
||||||
speakerWeapons: fightingActor.items.filter(item => item.type == 'weapon'),
|
|
||||||
speakerExperience: fightingActor.system.attributes.experience.value,
|
|
||||||
speakerEffects: token.actor.effects,
|
|
||||||
adversaries: enemies,
|
|
||||||
allies: allies
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import RollDialog from "./dialogs/rollDialog.mjs";
|
import RollDialog from "./dialogs/rollDialog.mjs";
|
||||||
import { initUserDice } from "./dice3d.mjs";
|
import { initUserDice } from "./dice3d.mjs";
|
||||||
|
import { DiceSystem } from '../../../../modules/dice-so-nice/api.js';
|
||||||
import { VermineUtils } from "./roll.mjs";
|
import { VermineUtils } from "./roll.mjs";
|
||||||
import { registerTours } from "./tour.mjs";
|
import { registerTours } from "./tour.mjs";
|
||||||
|
|
||||||
@@ -9,7 +10,8 @@ export const registerHooks = function () {
|
|||||||
*/
|
*/
|
||||||
CONFIG.debug.hooks = true;
|
CONFIG.debug.hooks = true;
|
||||||
Hooks.once('diceSoNiceReady', async (dice3d) => {
|
Hooks.once('diceSoNiceReady', async (dice3d) => {
|
||||||
dice3d.addSystem({ id: "Vermine2047", name: "Vermine 2047" }, "preferred");
|
const vermineSystem = new DiceSystem('Vermine2047', 'Vermine 2047', "preferred", 'totem')
|
||||||
|
dice3d.addSystem(vermineSystem);
|
||||||
|
|
||||||
game.users.forEach(user => {
|
game.users.forEach(user => {
|
||||||
initUserDice(dice3d, user)
|
initUserDice(dice3d, user)
|
||||||
@@ -32,7 +34,7 @@ export const registerHooks = function () {
|
|||||||
|
|
||||||
system: "Vermine2047",
|
system: "Vermine2047",
|
||||||
|
|
||||||
},);
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ export class VermineUtils {
|
|||||||
let roll = new Roll(formula, actor.getRollData());
|
let roll = new Roll(formula, actor.getRollData());
|
||||||
//effectuer le lancé
|
//effectuer le lancé
|
||||||
await roll.evaluate();
|
await roll.evaluate();
|
||||||
roll.dice.forEach(die => die.options.appearance = { system: "vermine2047" })
|
|
||||||
//afficher le lancer 3d
|
//afficher le lancer 3d
|
||||||
await VermineUtils.showDiceSoNice(roll);
|
await VermineUtils.showDiceSoNice(roll);
|
||||||
// afficher le résultat dans le chat
|
// afficher le résultat dans le chat
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ Hooks.once('init', async function () {
|
|||||||
|
|
||||||
CONFIG.ui.combat = VermineCombatTracker;
|
CONFIG.ui.combat = VermineCombatTracker;
|
||||||
CONFIG.Combatant.documentClass = VermineCombatant;
|
CONFIG.Combatant.documentClass = VermineCombatant;
|
||||||
|
CONFIG.Combat.documentClass = VermineCombat;
|
||||||
|
|
||||||
|
|
||||||
// Register sheet application classes
|
// Register sheet application classes
|
||||||
Actors.unregisterSheet("core", ActorSheet);
|
Actors.unregisterSheet("core", ActorSheet);
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
ol#chat-log {
|
||||||
|
div.item-card {
|
||||||
|
header img {
|
||||||
|
max-width: 30%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
@import "./base_work.scss";
|
@import "./base_work.scss";
|
||||||
@import "./style.scss";
|
@import "./style.scss";
|
||||||
@import "./roll.scss";
|
@import "./roll.scss";
|
||||||
|
@import "./itemCards.scss";
|
||||||
@import "item-sheet.scss";
|
@import "item-sheet.scss";
|
||||||
@import "dialog.scss";
|
@import "dialog.scss";
|
||||||
@import "special-inputs.scss";
|
@import "special-inputs.scss";
|
||||||
|
|||||||
@@ -1,28 +1,53 @@
|
|||||||
<ol class="items-list">
|
<ol class="items-list">
|
||||||
<li class="item flexrow items-header">
|
<li class="item flexrow items-header">
|
||||||
<div class="item-name" style="flex:4;">{{ localize 'IDENTITY.name'}}</div>
|
<div
|
||||||
|
class="item-name"
|
||||||
|
style="flex:4;"
|
||||||
|
>{{ localize 'IDENTITY.name'}}</div>
|
||||||
<div class="item-clew">{{ localize 'VERMINE.clew'}}</div>
|
<div class="item-clew">{{ localize 'VERMINE.clew'}}</div>
|
||||||
<div class="item-mobility">{{ localize 'VERMINE.mobility'}}</div>
|
<div class="item-mobility">{{ localize 'VERMINE.mobility'}}</div>
|
||||||
<div class="item-rarity">{{ localize 'VERMINE.rarity'}}</div>
|
<div class="item-rarity">{{ localize 'VERMINE.rarity'}}</div>
|
||||||
<div class="item-reliability">{{ localize 'VERMINE.reliability'}}</div>
|
<div class="item-reliability">{{ localize 'VERMINE.reliability'}}</div>
|
||||||
<div class="item-controls">
|
<div class="item-controls">
|
||||||
<a class="item-control item-create" title="Create item" data-type="defense"><i class="fas fa-plus"></i></a>
|
<a
|
||||||
|
class="item-control item-create"
|
||||||
|
title="Create item"
|
||||||
|
data-type="defense"
|
||||||
|
><i class="fas fa-plus"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{#each defenses as |item id|}}
|
{{#each defenses as |item id|}}
|
||||||
<li class="item flexrow flex-group-center" data-item-id="{{item._id}}">
|
<li
|
||||||
<div class="item-name" style="flex:4;">
|
class="item flexrow flex-group-center"
|
||||||
<div class="item-image">
|
data-item-id="{{item._id}}"
|
||||||
<a class="item-control item-edit" data-roll-type="item"><img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/></a>
|
>
|
||||||
|
<div
|
||||||
|
class="item-name"
|
||||||
|
style="flex:4;"
|
||||||
|
>
|
||||||
|
<div class="item-image item-control item-roll">
|
||||||
|
<a data-roll-type="item"><img
|
||||||
|
src="{{item.img}}"
|
||||||
|
title="{{item.name}}"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
/></a>
|
||||||
</div>
|
</div>
|
||||||
<a class="item-control item-edit" title="Edit Item">{{item.name}}</a>
|
<a title="Edit Item">{{item.name}}</a>
|
||||||
</div>
|
</div>
|
||||||
<p><a class="item-control item-edit" title="Edit Item">{{item.system.level}}</a></p>
|
<p><a title="Edit Item">{{item.system.level}}</a></p>
|
||||||
<p><a class="item-control item-edit" title="Edit Item">{{item.system.mobility}}</a></p>
|
<p><a title="Edit Item">{{item.system.mobility}}</a></p>
|
||||||
<p><a class="item-control item-edit" title="Edit Item">{{item.system.rarity}}</a></p>
|
<p><a title="Edit Item">{{item.system.rarity.value}}</a></p>
|
||||||
<p><a class="item-control item-edit" title="Edit Item">{{item.system.reliability}}</a></p>
|
<p><a title="Edit Item">{{item.system.reliability}}</a></p>
|
||||||
<div class="item-controls">
|
<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-delete"
|
||||||
|
title="Delete Item"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
|
<a
|
||||||
|
class="item-control item-edit"
|
||||||
|
title="Delete Item"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<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">
|
||||||
|
<h4 class="resource flexrow">
|
||||||
|
<label class="resource-label">{{ localize "VERMINE.level"}}</label>
|
||||||
|
<span class="hexa"><input type="number" name="system.level.value" value="{{system.level.value }}" data-dtype="Number" min="{{system.level.min }}" max="{{system.level.max }}"/>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
<label class="resource-label">{{ localize "VERMINE.type"}}</label>
|
||||||
|
<select name="system.type" data-dtype="String">
|
||||||
|
<option value="character" {{#if (eq system.type "character")}} selected {{/if}}>Personnage</option>
|
||||||
|
<option value="group" {{#if (eq system.type "group")}} selected {{/if}}>Groupe</option>
|
||||||
|
<option value="creature" {{#if (eq system.type "creature")}} selected {{/if}}>Créature</option>
|
||||||
|
<option value="totem" {{#if (eq system.type "totem")}} selected {{/if}}>Totem</option>
|
||||||
|
</select>
|
||||||
|
<label class="resource-label">{{ localize "IDENTITY.totem"}}</label>
|
||||||
|
<select name="system.totem" data-dtype="String">
|
||||||
|
{{#each config.totems as | totem tk|}}
|
||||||
|
<option value="{{tk}}" {{#if (eq tk @root.system.totem)}} selected="selected" {{/if}}>{{ localize totem }}</option>
|
||||||
|
{{/each}}
|
||||||
|
</select>
|
||||||
|
</h4>
|
||||||
|
<h4 class="resource flexrow">
|
||||||
|
<label class="resource-label">{{ localize "ITEMS.learning"}}</label>
|
||||||
|
<span class=" hexa">
|
||||||
|
<input type="number" name="system.learning.threshold" value="{{system.learning.threshold }}" data-dtype="Number" min="3" max="10"/>
|
||||||
|
</span>/
|
||||||
|
<span class="hexa">
|
||||||
|
<input type="number" name="system.learning.hindrance" value="{{system.learning.hindrance }}" data-dtype="Number" min="0" max="3"/>
|
||||||
|
</span>
|
||||||
|
</h4>
|
||||||
|
<h4>description</h4>
|
||||||
|
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<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>
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body ">
|
||||||
|
<h4 class="resource-label flexrow">
|
||||||
|
<label class="resource-label">{{ localize "ITEMS.cost"}}</label>
|
||||||
|
<span class="hexa">
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
name="system.cost"
|
||||||
|
value="{{system.cost }}"
|
||||||
|
data-dtype="Number"
|
||||||
|
min="1"
|
||||||
|
max="2"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</h4>
|
||||||
|
<h4>description</h4>
|
||||||
|
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<div class="item-card" data-item-id="{{item.id}}">
|
||||||
|
{{log @root}}
|
||||||
|
|
||||||
|
<header class="flexrow align-center">
|
||||||
|
<img src="{{img}}" alt="image de {{item.name}}">
|
||||||
|
<h3>{{item.name}}</h3>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<section class="item-desc">
|
||||||
|
<p>{{{ item.system.description}}}</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<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">
|
||||||
|
|
||||||
|
<h4 class="resource flexrow">
|
||||||
|
<label class="resource-label ">{{ localize "VERMINE.level"}}</label>
|
||||||
|
<span class="hexa"><input type="number" name="system.level.value" value="{{system.level.value }}" data-dtype="Number" min="{{system.level.min }}" max="{{system.level.max }}"/></span>
|
||||||
|
</h4>
|
||||||
|
<h2>description</h2>
|
||||||
|
|
||||||
|
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
{{log this}}
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/header.hbs"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body ">
|
||||||
|
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/traits.html"}}
|
||||||
|
<div class="resource align-center flexcol">
|
||||||
|
<label class="resource-label">compétence necessaire
|
||||||
|
<input type="checkbox" data-tooltip="ajouter la vigueur" name="system.needSkill.value" {{#if system.needSkill.value}} checked {{/if}}>
|
||||||
|
</label>
|
||||||
|
{{#if system.needSkill.value}}
|
||||||
|
<select name="system.needSkill.skill" class="skill-select">
|
||||||
|
<option value="">aucune</option>
|
||||||
|
{{log config}}
|
||||||
|
{{#each @root.config.skillCategories as |skillCategory sckey|}}
|
||||||
|
<optgroup label="{{ smarttlk 'SKILLS_CATEGORIES' sckey 'name' }}">
|
||||||
|
{{#each @root.config.model.Actor.character.skills as |skill key|}}
|
||||||
|
{{#ife skill.category sckey}}
|
||||||
|
<option value="{{sckey}}" {{#ife sckey @root.system.needSkill.skill}} selected {{/ife}}>{{ smarttlk 'SKILLS' key 'name' }}</option>
|
||||||
|
|
||||||
|
{{/ife}}
|
||||||
|
{{/each}}
|
||||||
|
</optgroup>
|
||||||
|
{{/each}}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/physicalItems.hbs"}}
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<header class="flexrow align-center">
|
||||||
|
<img src="{{img}}" alt="image de {{name}}">
|
||||||
|
<h3>{{name}}</h3>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<section class="item-desc">
|
||||||
|
<p>{{{ system.description}}}</p>
|
||||||
|
</section>
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{{!-- This template is a fallback for when items don't have more specific templates. --}}
|
||||||
|
{{!-- Generally, you'll want to make more specific templates when possible. --}}
|
||||||
|
<form class="{{cssClass}} form" autocomplete="off">
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/header.hbs"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body">
|
||||||
|
<aside style="flex:20%;">
|
||||||
|
<div class="resource">
|
||||||
|
|
||||||
|
<label class="resource-label">{{ localize "VERMINE.ability"}}</label>
|
||||||
|
<select name="system.ability" data-dtype="String">
|
||||||
|
<option value="">-- Aucune --</option>
|
||||||
|
{{#each config.abilities as |ability akey| }}
|
||||||
|
<option value="{{ akey }}" {{#if (eq akey @root.system.ability)}} selected="selected" {{/if}}>{{ localize ability}}</option>
|
||||||
|
{{/each}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
<main style="flex:10">
|
||||||
|
<div class="editor-wrapper">
|
||||||
|
{{editor system.description target="system.description" button=true owner=owner editable=editable}}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<div class="grid">
|
||||||
|
<div>
|
||||||
|
<h4>{{ localize 'ITEMS.rituel'}}</h4>
|
||||||
|
<textarea name="system.rituel">{{ system.rituel }}</textarea>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4>{{ localize 'ITEMS.transe'}}</h4>
|
||||||
|
<textarea name="system.transe">{{ system.transe }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h4>{{ localize 'ITEMS.effects'}}</h4>
|
||||||
|
<div class="editor-wrapper">
|
||||||
|
{{editor system.effects target="system.effects" button=true owner=owner editable=editable}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/header.hbs"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body">
|
||||||
|
|
||||||
|
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<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>
|
||||||
|
<select name="system.skill" class="skill-select">
|
||||||
|
{{#each @root.config.skillCategories as |skillCategory sckey|}}
|
||||||
|
{{log skillCategory}}
|
||||||
|
|
||||||
|
|
||||||
|
<optgroup label="{{ smarttlk 'SKILLS_CATEGORIES' sckey 'name' }}">
|
||||||
|
|
||||||
|
{{#each @root.config.model.Actor.character.skills as |skill key|}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#ife skill.category sckey}}
|
||||||
|
<option value="{{key}}" {{#ife key @root.item.system.skill}} selected {{/ife}}>{{ smarttlk 'SKILLS' key 'name' }}</option>
|
||||||
|
{{/ife}}
|
||||||
|
{{/each}}
|
||||||
|
</optgroup>
|
||||||
|
{{/each}}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/header.hbs"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body">
|
||||||
|
|
||||||
|
{{editor system.description target="system.description" rollData=rollData button=true owner=owner editable=editable}}
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/header.hbs"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body">
|
||||||
|
|
||||||
|
<div class="tb flexcol">
|
||||||
|
|
||||||
|
<h4 class="resource">
|
||||||
|
<label class="resource-label">{{ localize "VERMINE.type"}}</label>
|
||||||
|
<select name="system.type" data-dtype="String">
|
||||||
|
<option value="physical" {{#if (eq system.type "physical")}} selected {{/if}}>Physiologique</option>
|
||||||
|
<option value="psychological" {{#if (eq system.type "psychological")}} selected {{/if}}>Psychologique</option>
|
||||||
|
</select>
|
||||||
|
</h4>
|
||||||
|
<h2>description</h2>
|
||||||
|
{{editor system.description target="system.description" rollData=rollData
|
||||||
|
button=true owner=owner editable=editable}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/header.hbs"}}
|
||||||
|
|
||||||
|
|
||||||
|
<section class="sheet-body">
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/traits.html"}}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="flexrow">
|
||||||
|
<div class="resource flexrow align-center">
|
||||||
|
<label class="resource-label">{{ localize "VERMINE.mobility"}}</label>
|
||||||
|
<div class="hexa">
|
||||||
|
<input type="number" name="system.mobility" value="{{system.mobility}}" data-dtype="Number"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/physicalItems.hbs"}}
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/header.hbs"}}
|
||||||
|
|
||||||
|
|
||||||
|
<section class="sheet-body">
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/traits.html"}}
|
||||||
|
|
||||||
|
|
||||||
|
<h4 class="flexrow">
|
||||||
|
<div class="resource align-center flexcol">
|
||||||
|
|
||||||
|
<label class="resource-label">{{ localize "VERMINE.ranges"}}</label>
|
||||||
|
<div class="flexrow align-center">
|
||||||
|
<div class="hexa">
|
||||||
|
<input type="number" name="system.min_range" value="{{system.min_range}}" data-dtype="Number"/>
|
||||||
|
</div>/
|
||||||
|
<div class="hexa">
|
||||||
|
<input type="number" name="system.max_range" value="{{system.max_range}}" data-dtype="Number"/></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="resource align-center flexcol">
|
||||||
|
|
||||||
|
<label class="resource-label">{{ localize "VERMINE.damages"}}</label>
|
||||||
|
<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>
|
||||||
|
<select name="system.damage.type">
|
||||||
|
<option value="0">type</option>
|
||||||
|
{{#each config.damageTypes as |label index|}}
|
||||||
|
<option value="{{label}}" {{#ife @root.system.damage.type label}} selected {{/ife}}>
|
||||||
|
{{label}}
|
||||||
|
</option>
|
||||||
|
{{/each}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<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>
|
||||||
|
|
||||||
|
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
|
||||||
|
{{> "systems/vermine2047/templates/item/partials/physicalItems.hbs"}}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</form>
|
||||||
@@ -16,7 +16,8 @@
|
|||||||
</div>
|
</div>
|
||||||
/
|
/
|
||||||
<div class="hexa">
|
<div class="hexa">
|
||||||
<input type="number" name="system.specificLevel.level" value="{{system.level}}" data-dtype="Number"/>
|
<input type="number" name="system.specificLevel.level" value="{{system.specificLevel.level}}" data-dtype="Number"/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<select name="system.specificLevel.label">
|
<select name="system.specificLevel.label">
|
||||||
|
|
||||||
|
|||||||