some change on items

This commit is contained in:
Vlyan
2020-12-17 23:01:22 +01:00
parent 889a3d0656
commit efca6cd083
24 changed files with 328 additions and 94 deletions

View File

@@ -211,11 +211,12 @@
"voidtip": "You do not receive strife from Strife symbols on checks."
}
},
"xp": {
"advancements": {
"title": "Advancements",
"title_new": "New advancement",
"total": "Total",
"spent": "Used",
"saved": "Saved",
"advancements": "Advancements"
"saved": "Saved"
},
"twenty_questions": {
"title": "Twenty questions",

View File

@@ -210,11 +210,12 @@
"voidtip": "No acumulas Conflicto de los símbolos de Conflicto de tus tiradas."
}
},
"xp": {
"advancements": {
"title": "Advancements",
"title_new": "New advancement",
"total": "Total",
"spent": "Usada",
"saved": "Restante",
"advancements": "Advancements"
"saved": "Restante"
},
"twenty_questions": {
"title": "Twenty questions",

View File

@@ -215,11 +215,12 @@
"voidtip": "Tant que vous êtes dans cette posture, vous ne subissez aucun point de Conflit en cas de Conflit."
}
},
"xp": {
"advancements": {
"title": "Progressions",
"title_new": "Nouvelle progression",
"total": "Totale",
"spent": "Dépensée",
"saved": "Restante",
"advancements": "Progressions"
"saved": "Restante"
},
"twenty_questions": {
"title": "Vingt questions",

View File

@@ -4,6 +4,11 @@ import { ItemSheetL5r5e } from "./item-sheet.js";
* @extends {ItemSheet}
*/
export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
/**
* Sub Types of advancements
*/
static types = ["ring", "skill", "advantage"]; // "technique" has it's own type
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
@@ -14,4 +19,13 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }],
});
}
getData() {
const sheetData = super.getData();
sheetData.data.dtypes = ["String", "Number", "Boolean"];
sheetData.data.subTypesList = AdvancementSheetL5r5e.types;
return sheetData;
}
}

View File

@@ -19,6 +19,20 @@ export class ItemSheetL5r5e extends ItemSheet {
sheetData.data.dtypes = ["String", "Number", "Boolean"];
sheetData.data.ringsList = CONFIG.L5r5e.stances.map((e) => {
return {
id: e,
label: game.i18n.localize(`l5r5e.rings.${e}`),
};
});
sheetData.data.techniquesList = CONFIG.L5r5e.techniques.map((e) => {
return {
id: e,
label: game.i18n.localize(`l5r5e.techniques.${e}`),
};
});
return sheetData;
}

View File

@@ -8,7 +8,7 @@ export class PeculiaritySheetL5r5e extends ItemSheetL5r5e {
/**
* Sub Types of Advantage/Disadvantage
*/
static SUB_TYPES = ["distinction", "passion", "adversity", "anxiety"];
static types = ["distinction", "passion", "adversity", "anxiety"];
/** @override */
static get defaultOptions() {
@@ -23,7 +23,10 @@ export class PeculiaritySheetL5r5e extends ItemSheetL5r5e {
getData() {
const sheetData = super.getData();
sheetData.data.dtypes = ["String", "Number", "Boolean"];
sheetData.data.subTypesList = PeculiaritySheetL5r5e.types;
return sheetData;
}
}

View File

@@ -13,6 +13,7 @@ import { WeaponSheetL5r5e } from "./items/weapon-sheet.js";
import { TechniqueSheetL5r5e } from "./items/technique-sheet.js";
import { QualitySheetL5r5e } from "./items/quality-sheet.js";
import { AdvancementSheetL5r5e } from "./items/advancement-sheet.js";
import { PeculiaritySheetL5r5e } from "./items/peculiarity-sheet.js";
// Import Dice Types
@@ -70,6 +71,7 @@ Hooks.once("init", async function () {
Items.registerSheet("l5r5e", WeaponSheetL5r5e, { types: ["weapon"], makeDefault: true });
Items.registerSheet("l5r5e", TechniqueSheetL5r5e, { types: ["technique"], makeDefault: true });
Items.registerSheet("l5r5e", QualitySheetL5r5e, { types: ["quality"], makeDefault: true });
Items.registerSheet("l5r5e", PeculiaritySheetL5r5e, { types: ["peculiarity"], makeDefault: true });
Items.registerSheet("l5r5e", AdvancementSheetL5r5e, { types: ["advancement"], makeDefault: true });
// for debug

View File

@@ -38,6 +38,9 @@ export const PreloadTemplates = async function () {
"systems/l5r5e/templates/item/advancements.html",
"systems/l5r5e/templates/item/advancement-sheet.html",
"systems/l5r5e/templates/item/advancement-entry.html",
"systems/l5r5e/templates/item/peculiarities.html",
"systems/l5r5e/templates/item/peculiarity-sheet.html",
"systems/l5r5e/templates/item/peculiarity-entry.html",
];
return loadTemplates(templatePaths);

View File

@@ -31,7 +31,44 @@ export class ActorSheetL5r5e extends BaseSheetL5r5e {
await new TwentyQuestionsDialog({}, this.actor).render(true);
},
});
return buttons;
}
/**
* Commons datas
*/
getData() {
const sheetData = super.getData();
// Sort Items by rank 0->6 for advancements tab
sheetData.items.sort((a, b) => {
return (a.data.bought_at_rank || 0) - (b.data.bought_at_rank || 0);
});
// Xp spent only in current rank
sheetData.data.advancement.xp_spent_rank = this.getXpSpentInThisRank();
return sheetData;
}
/**
* Return the current total xp spent for this rank
*/
getXpSpentInThisRank() {
const currentRank = this.actor.data.data.identity.school_rank || 0;
const spent = this.actor.items.reduce((tot, item) => {
// TODO c'est bien par rang actuel +1 ?
if (currentRank + 1 === item.data.data.rank) {
let xp = item.data.data.xp_used || 0;
// if not in curriculum, xp spent /2 for this item
if (!item.data.data.in_curriculum && xp > 0) {
xp = Math.floor(xp / 2);
}
return tot + xp;
}
return tot;
}, 0);
return spent;
}
}

View File

@@ -8,6 +8,7 @@ export class BaseSheetL5r5e extends ActorSheet {
getData() {
const sheetData = super.getData();
sheetData.data.dtypes = ["String", "Number", "Boolean"];
sheetData.data.stances = CONFIG.L5r5e.stances;
return sheetData;
@@ -48,41 +49,35 @@ export class BaseSheetL5r5e extends ActorSheet {
return;
}
// *** Items / Inventory ***
html.find(".item-edit").on("click", (ev) => {
this._editSubItem(ev, "item");
});
html.find(".item-delete").on("click", (ev) => {
this._deleteSubItem(ev, "item");
// *** Items : edit, delete ***
["item", "peculiarity", "technique", "advancement"].forEach((type) => {
html.find(`.${type}-edit`).on("click", (ev) => {
this._editSubItem(ev, type);
});
html.find(`.${type}-delete`).on("click", (ev) => {
this._deleteSubItem(ev, type);
});
if (type !== "item") {
html.find(`.${type}-curriculum`).on("click", (ev) => {
this._switchSubItemCurriculum(ev, type);
});
}
});
// *** Techniques ***
// *** Items : add ***
html.find(".technique-add").on("click", (ev) => {
this._addSubItem({
name: game.i18n.localize("l5r5e.techniques.title_new"),
type: "technique",
});
});
html.find(".technique-edit").on("click", (ev) => {
this._editSubItem(ev, "technique");
});
html.find(".technique-delete").on("click", (ev) => {
this._deleteSubItem(ev, "technique");
});
// *** Advancement ***
html.find(".advancement-add").on("click", (ev) => {
this._addSubItem({
name: game.i18n.localize("l5r5e.xp.advancements"),
name: game.i18n.localize("l5r5e.advancements.title_new"),
type: "advancement",
});
});
html.find(".advancement-edit").on("click", (ev) => {
this._editSubItem(ev, "advancement");
});
html.find(".advancement-delete").on("click", (ev) => {
this._deleteSubItem(ev, "advancement");
});
}
/**
@@ -115,4 +110,19 @@ export class BaseSheetL5r5e extends ActorSheet {
const li = $(ev.currentTarget).parents("." + type);
return this.actor.deleteOwnedItem(li.data(type + "Id"));
}
/**
* Switch "in_curriculum"
* @private
*/
_switchSubItemCurriculum(ev, type) {
const li = $(ev.currentTarget).parents("." + type);
const itemId = li.data(type + "Id");
const item = this.actor.getOwnedItem(itemId);
return item.update({
data: {
in_curriculum: !item.data.data.in_curriculum,
},
});
}
}

View File

@@ -128,21 +128,21 @@ export class TwentyQuestionsDialog extends FormApplication {
let data;
try {
data = JSON.parse(event.dataTransfer.getData("text/plain"));
if (data.type !== "Item") return;
const item = game.items.get(data.id);
if (item.data.type !== type) {
if (data.type !== "Item") {
return;
}
const item = game.items.get(data.id);
if (item || item.data.type !== type) {
return;
}
// TODO
console.log("** OK ", item);
// sub_type === 'peculiarity'
} catch (err) {
return false;
console.warn(err);
}
// TODO
return false;
}

View File

@@ -81,7 +81,7 @@
"strife": 0,
"stance": "void"
},
"xp": {
"advancement": {
"xp_total": 0,
"xp_spent": 0,
"xp_saved": 0
@@ -134,10 +134,10 @@
}
},
"Item": {
"types": ["item", "armor", "weapon", "technique", "quality", "advantage", "disadvantage", "advancement"],
"types": ["item", "armor", "weapon", "technique", "quality", "peculiarity", "advancement"],
"item": {
"description": "",
"properties": "",
"properties": [],
"quantity": 1,
"rarity": 0,
"weight": 0,
@@ -152,7 +152,7 @@
"physical": 0,
"supernatural": 0
},
"properties": "",
"properties": [],
"rarity": 0,
"zeni": 0,
"equipped": false
@@ -165,7 +165,7 @@
"deadliness": 0,
"grip_1": "",
"grip_2": "",
"properties": "",
"properties": [],
"quantity": 1,
"rarity": 0,
"weight": 0,
@@ -175,8 +175,10 @@
},
"technique": {
"technique_type": "",
"in_curriculum": false,
"xp_used": 0,
"rank": 0,
"rank": 1,
"bought_at_rank": 1,
"ring": "",
"effects": "",
"description": ""
@@ -184,15 +186,22 @@
"quality": {
"description": ""
},
"advantage": {
"description": ""
},
"disadvantage": {
"peculiarity": {
"peculiarity_type": "distinction",
"in_curriculum": false,
"xp_used": 0,
"rank": 1,
"bought_at_rank": 1,
"ring": "void",
"types": "",
"description": ""
},
"advancement": {
"advancement_type": "",
"in_curriculum": false,
"xp_used": 0,
"rank": "",
"rank": 1,
"bought_at_rank": 1,
"description": ""
}
}

View File

@@ -18,14 +18,32 @@
</article>
{{!-- Attributes Tab --}}
<article class="tab attributes" data-group="primary" data-tab="attributes">
<!-- TODO j'ai mis tous les attributs en vrac, à réorganiser -->
<select name="data.advancement_type">
{{#select item.data.advancement_type}}
{{#each item.data.subTypesList as |type|}}
<option value="{{type}}">{{type}}</option>
{{/each}}
{{/select}}
</select>
<!-- TODO drag n drop de l'item sélectionné ? -->
<label class="attribute-value checkbox">
<input type="checkbox" name="data.in_curriculum" {{checked item.data.in_curriculum}} />
in curriculum
</label>
<label class="attribute">
{{ localize 'l5r5e.xp.spent' }}
{{ localize 'l5r5e.advancements.spent' }}
<input type="text" name="data.xp_used" value="{{data.xp_used}}" data-dtype="Number" placeholder="0"/>
</label>
<label class="attribute">
{{ localize 'l5r5e.rank' }}
<input type="text" name="data.rank" value="{{data.rank}}" data-dtype="Number" placeholder="0"/>
</label>
<label class="attribute">
{{ localize 'l5r5e.bought_at_rank' }}
<input type="text" name="data.bought_at_rank" value="{{data.bought_at_rank}}" data-dtype="Number" placeholder="0"/>
</label>
</article>
</section>
</form>

View File

@@ -1,5 +1,5 @@
<fieldset class="weapons-content">
<legend class="section-header">{{ localize 'l5r5e.xp.advancements' }}</legend>
<legend class="section-header">{{ localize 'l5r5e.advancements.title' }}</legend>
<ul class="item-list">
{{#each actor.items as |item id|}}
{{#ifCond item.type '==' 'advancement'}}

View File

@@ -22,7 +22,12 @@
<label>{{ localize 'l5r5e.zeni' }}</label>
<input type="text" name="data.zeni" value="{{data.zeni}}" data-dtype="Number"/>
</div>
<label class="attribute-value checkbox">
<input type="checkbox" name="data.equipped" {{checked item.data.equipped}} />
equipped
</label>
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
@@ -51,7 +56,7 @@
<fieldset>
<legend class="text-block-header">{{ localize 'l5r5e.properties' }}</legend>
{{editor content=data.properties target="data.properties" button=true owner=owner editable=editable}}
<!-- TODO data.properties a faire en dnd avec les items de type "quality" -->
</fieldset>
</article>
</section>

View File

@@ -23,6 +23,10 @@
<input type="text" name="data.zeni" value="{{data.zeni}}" data-dtype="Number"/>
</div>
</div>
<label class="attribute-value checkbox">
<input type="checkbox" name="data.equipped" {{checked item.data.equipped}} />
equipped
</label>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
@@ -45,25 +49,11 @@
<li class="attribute-control" data-action="create" title="{{ localize 'l5r5e.add' }}"><i class="fas fa-plus"></i></li>
</ul>
<ol class="attributes-list">
{{#each data.attributes as |attr key|}}
<li class="attribute flexrow" data-attribute="{{key}}">
<input class="attribute-key" type="text" name="data.attributes.{{key}}.key" value="{{key}}"/>
{{#if attr.isCheckbox}}
<label class="attribute-value checkbox"><input type="checkbox" name="data.attributes.{{key}}.value" {{checked attr.value}}/></label>
{{else}}
<input class="attribute-value" type="text" name="data.attributes.{{key}}.value" value="{{attr.value}}" data-dtype="{{attr.dtype}}"/>
{{/if}}
<input class="attribute-label" type="text" name="data.attributes.{{key}}.label" value="{{attr.label}}"/>
<select class="attribute-dtype" name="data.attributes.{{key}}.dtype">
{{#select attr.dtype}}
{{#each ../dtypes as |t|}}
<option value="{{t}}">{{t}}</option>
{{/each}}
{{/select}}
</select>
<a class="attribute-control" data-action="delete"><i class="fas fa-trash"></i></a>
</li>
{{/each}}
<fieldset>
<legend class="text-block-header">{{ localize 'l5r5e.properties' }}</legend>
<!-- TODO data.properties a faire en dnd avec les items de type "quality" -->
</fieldset>
<!--{{#each data.attributes as |attr key|}} {{/each}}-->
</ol>
</article>
</section>

View File

@@ -0,0 +1,10 @@
<fieldset class="weapons-content">
<legend class="section-header">{{ localize 'l5r5e.advancements.title' }}</legend>
<ul class="item-list">
{{#each actor.items as |item id|}}
{{#ifCond item.type '==' 'advancement'}}
{{> 'systems/l5r5e/templates/item/advancement-entry.html' advancement=item id=id }}
{{/ifCond}}
{{/each}}
</ul>
</fieldset>

View File

@@ -0,0 +1,9 @@
<li class="item advancement flexcol" data-advancement-id="{{advancement._id}}">
<ul class="item-header advancement-controls">
<li class="item-img"><img src="{{advancement.img}}" title="{{advancement.name}}" width="32px" height="32px"/></li>
<li class="item-name">{{ advancement.name }}</li>
<li class="item-control advancement-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li>
<li class="item-control advancement-delete" title="{{localize 'l5r5e.global.delete'}}"><i class="fas fa-trash"></i></li>
</ul>
<div class="item-description">{{{ advancement.data.description }}}</div>
</li>

View File

@@ -0,0 +1,64 @@
<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">
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="description">Description</a>
<a class="item" data-tab="attributes">Attributes</a>
</nav>
{{!-- Description Tab --}}
<article class="tab flexcol" data-group="primary" data-tab="description">
{{editor content=item.data.description target="item.data.description" button=true owner=owner editable=editable}}
</article>
{{!-- Attributes Tab --}}
<article class="tab attributes" data-group="primary" data-tab="attributes">
<label class="attribute-value checkbox">
<input type="checkbox" name="data.in_curriculum" {{checked item.data.in_curriculum}} />
in curriculum
</label>
<!-- TODO j'ai mis tous les attributs en vrac, à réorganiser -->
<select name="data.ring">
{{#select item.data.ringsList}}
{{#each item.data.rings as |obj|}}
<option value="{{obj.id}}">{{obj.label}}</option>
{{/each}}
{{/select}}
</select>
<select class="attribute" name="data.peculiarity_type">
{{#select item.data.peculiarity_type}}
{{#each item.data.subTypesList as |type|}}
<option value="{{type}}">{{type}}</option>
{{/each}}
{{/select}}
</select>
<label class="attribute">
{{ localize 'l5r5e.data.types' }}
<input type="text" name="data.types" value="{{item.data.types}}" />
</label>
<label class="attribute">
{{ localize 'l5r5e.advancements.spent' }}
<input type="text" name="data.xp_used" value="{{item.data.xp_used}}" data-dtype="Number" placeholder="0" />
</label>
<label class="attribute">
{{ localize 'l5r5e.rank' }}
<input type="text" name="data.rank" value="{{data.rank}}" data-dtype="Number" placeholder="0" />
</label>
<label class="attribute">
{{ localize 'l5r5e.bought_at_rank' }}
<input type="text" name="data.bought_at_rank" value="{{data.bought_at_rank}}" data-dtype="Number"
placeholder="0" />
</label>
</article>
</section>
</form>

View File

@@ -18,14 +18,46 @@
</article>
{{!-- Attributes Tab --}}
<article class="tab attributes" data-group="primary" data-tab="attributes">
<!-- TODO j'ai mis tous les attributs en vrac, à réorganiser -->
<select name="data.ring">
{{#select item.data.ring}}
{{#each item.data.ringsList as |obj|}}
<option value="{{obj.id}}">{{obj.label}}</option>
{{/each}}
{{/select}}
</select>
<select name="data.technique_type">
{{#select item.data.technique_type}}
{{#each item.data.techniquesList as |obj|}}
<option value="{{obj.id}}">{{obj.label}}</option>
{{/each}}
{{/select}}
</select>
<label class="attribute-value checkbox">
<input type="checkbox" name="data.in_curriculum" {{checked item.data.in_curriculum}} />
in curriculum
</label>
<label class="attribute">
{{ localize 'l5r5e.xp.spent' }}
<input type="text" name="data.xp_used" value="{{data.xp_used}}" data-dtype="Number" placeholder="0"/>
{{ localize 'l5r5e.advancements.spent' }}
<input type="text" name="data.xp_used" value="{{item.data.xp_used}}" data-dtype="Number" placeholder="0"/>
</label>
<label class="attribute">
{{ localize 'l5r5e.rank' }}
<input type="text" name="data.rank" value="{{data.rank}}" data-dtype="Number" placeholder="0"/>
<input type="text" name="data.rank" value="{{item.data.rank}}" data-dtype="Number" placeholder="0"/>
</label>
<label class="attribute">
{{ localize 'l5r5e.bought_at_rank' }}
<input type="text" name="data.bought_at_rank" value="{{item.data.bought_at_rank}}" data-dtype="Number" placeholder="0"/>
</label>
<label class="attribute">
{{ localize 'l5r5e.effects' }}
<input type="text" name="data.effects" value="{{item.data.effects}}"/>
</label>
</article>
</section>
</form>

View File

@@ -28,6 +28,10 @@
{{/select}}
</select>
</div>
<label class="attribute-value checkbox">
<input type="checkbox" name="data.equipped" {{checked item.data.equipped}} />
equipped
</label>
</div>
<div class="header-fields">
@@ -72,7 +76,7 @@
</fieldset>
<fieldset>
<legend class="text-block-header">{{ localize 'l5r5e.properties' }}</legend>
{{editor content=data.properties target="data.properties" button=true owner=owner editable=editable}}
<!-- TODO data.properties a faire en dnd avec les items de type "quality" -->
</fieldset>
<fieldset>
<legend class="text-block-header">{{ localize 'l5r5e.description' }}</legend>

View File

@@ -1,8 +1,9 @@
<tr class="flexrow row advancement" data-advancement-id="{{advancement._id}}">
<td class="name" name="advancement.name">{{ advancement.name }}</td>
<td class="name" name="advancement.name">{{#if advancement.data.in_curriculum}}<i class="fas fa-graduation-cap"></i> {{/if}}{{ advancement.name }}</td>
<td class="xp" name="advancement.xp">{{ advancement.data.xp_used }}</td>
<td class="rank" name="advancement.rank">{{ advancement.data.rank }}</td>
<td class="actions">
<li class="item-control advancement-curriculum" title="{{localize 'l5r5e.global.curriculum'}}"><i class="fas fa-graduation-cap"></i></li>
<li class="item-control advancement-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li>
<li class="item-control advancement-delete" title="{{localize 'l5r5e.global.delete'}}"><i class="fas fa-trash"></i></li>
</td>

View File

@@ -1,32 +1,38 @@
<fieldset class="xp">
<legend>{{ localize 'l5r5e.experience'}}</legend>
<label class="attribute-label">
{{ localize 'l5r5e.xp.total' }}
<input type="text" name="data.xp_total" value="{{ data.xp_total }}" data-dtype="Number" placeholder="0"/>
{{ localize 'l5r5e.advancements.total' }}
<input type="text" name="data.advancement.xp_total" value="{{ data.advancement.xp_total }}" data-dtype="Number" placeholder="0"/>
</label>
<label class="attribute-label">
{{ localize 'l5r5e.xp.spent' }}
{{ localize 'l5r5e.advancements.spent' }}
<input type="text" name="data.xp_spent" value="{{ data.xp_spent }}" data-dtype="Number" placeholder="0"/>
</label>
<label class="attribute-label">
{{ localize 'l5r5e.xp.saved' }}
<input type="text" name="data.xp_saved" value="{{ data.xp_saved }}" data-dtype="Number" placeholder="0"/>
{{ localize 'l5r5e.advancements.saved' }}
<input type="text" name="data.advancement.xp_saved" value="{{ data.advancement.xp_saved }}" data-dtype="Number" placeholder="0"/>
</label>
<label class="attribute-label">
Total dépensé dans ce rang:
{{ data.advancement.xp_spent_rank }}
</label>
</fieldset>
<fieldset class="advancement">
<legend class="tools">{{ localize 'l5r5e.xp.advancements'}} <a class="advancement-control advancement-add" title="{{ localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a></legend>
<legend class="tools">{{ localize 'l5r5e.advancements.title'}} <a class="advancement-control advancement-add" title="{{ localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a></legend>
<table>
<thead class="flex">
<tr class="flexrow row">
<th class="name">{{ localize 'l5r5e.name' }}</th>
<th class="xp">{{ localize 'l5r5e.xp.spent' }}</th>
<th class="xp">{{ localize 'l5r5e.advancements.spent' }}</th>
<th class="rank">{{ localize 'l5r5e.rank' }}</th>
<th class="actions"></th>
</tr>
</thead>
<tbody class="flex">
{{#each actor.items as |advancement advancementId|}}
{{#ifCond (ifCond advancement.type '==' 'technique') '||' (ifCond advancement.type '==' 'advancement')}}
{{#ifCond '["peculiarity", "technique","advancement"]' 'includes' advancement.type}}
{{> 'systems/l5r5e/templates/sheets/actor/advancement.html' advancement=advancement }}
{{/ifCond}}
{{/each}}

View File

@@ -3,35 +3,35 @@
<label class="attribute-label earth centered-input">
<i class="i_earth"></i>
<strong>{{ localizeRing 'earth' }}</strong>
<input class="centered-input" type="text" name="data.rings.earth" value="{{data.rings.earth}}" data-dtype="Number" placeholder="0"/>
<input class="centered-input" type="text" name="data.rings.earth" value="{{data.rings.earth}}" data-dtype="Number" min="0" max="9" placeholder="0"/>
</label>
</li>
<li id="air">
<label class="attribute-label air centered-input">
<i class="i_air"></i>
<strong>{{ localizeRing 'air' }}</strong>
<input class="centered-input" type="text" name="data.rings.air" value="{{data.rings.air}}" data-dtype="Number" placeholder="0"/>
<input class="centered-input" type="text" name="data.rings.air" value="{{data.rings.air}}" data-dtype="Number" min="0" max="9" placeholder="0"/>
</label>
</li>
<li id="water">
<label class="attribute-label water centered-input">
<i class="i_water"></i>
<strong>{{ localizeRing 'water' }}</strong>
<input class="centered-input" type="text" name="data.rings.water" value="{{data.rings.water}}" data-dtype="Number" placeholder="0"/>
<input class="centered-input" type="text" name="data.rings.water" value="{{data.rings.water}}" data-dtype="Number" min="0" max="9" placeholder="0"/>
</label>
</li>
<li id="fire">
<label class="attribute-label fire centered-input">
<i class="i_fire"></i>
<strong>{{ localizeRing 'fire' }}</strong>
<input class="centered-input" type="text" name="data.rings.fire" value="{{data.rings.fire}}" data-dtype="Number" placeholder="0"/>
<input class="centered-input" type="text" name="data.rings.fire" value="{{data.rings.fire}}" data-dtype="Number" min="0" max="9" placeholder="0"/>
</label>
</li>
<li id="void">
<label class="attribute-label void centered-input">
<i class="i_void"></i>
<strong>{{ localizeRing 'void' }}</strong>
<input class="centered-input" type="text" name="data.rings.void" value="{{data.rings.void}}" data-dtype="Number" placeholder="0"/>
<input class="centered-input" type="text" name="data.rings.void" value="{{data.rings.void}}" data-dtype="Number" min="0" max="9" placeholder="0"/>
</label>
</li>
</ul>