ENhance and fix

This commit is contained in:
2026-05-10 23:12:21 +02:00
parent e200b5f7b0
commit 7542890232
43 changed files with 638 additions and 390 deletions
Binary file not shown.
Binary file not shown.
+11 -12
View File
@@ -80,7 +80,6 @@
"army_fortification": "Fortification", "army_fortification": "Fortification",
"army_cohort": "Régiment", "army_cohort": "Régiment",
"arcane": "Arcane", "arcane": "Arcane",
"etat": "État",
"mystere": "Mystère", "mystere": "Mystère",
"technique_ecole": "Technique École", "technique_ecole": "Technique École",
"mot_invocation": "Mot d'Invocation" "mot_invocation": "Mot d'Invocation"
@@ -222,7 +221,9 @@
"inventory": "Inventaire", "inventory": "Inventaire",
"equipment": "Équipement", "equipment": "Équipement",
"rank": "Rang", "rank": "Rang",
"name": "Nom" "name": "Nom",
"attributes": "Attributs",
"infos": "Infos"
}, },
"dice": { "dice": {
"chat": { "chat": {
@@ -480,7 +481,8 @@
"school_curriculum_journal": "Déposer un journal de Cursus dans la feuille pour le lier", "school_curriculum_journal": "Déposer un journal de Cursus dans la feuille pour le lier",
"warning": { "warning": {
"total_less_then_spent": "L'expérience totale est inférieure à l'expérience utilisée." "total_less_then_spent": "L'expérience totale est inférieure à l'expérience utilisée."
} },
"advancement": "Progression"
}, },
"character_types": { "character_types": {
"character": "Personnage Joueur", "character": "Personnage Joueur",
@@ -886,6 +888,10 @@
"assez_difficile": "Assez Difficile", "assez_difficile": "Assez Difficile",
"difficile": "Difficile" "difficile": "Difficile"
}, },
"technique_ecole": {
"title": "Techniques d'École",
"label": "Technique d'École"
},
"arcane": { "arcane": {
"title": "Arcanes", "title": "Arcanes",
"label": "Arcane", "label": "Arcane",
@@ -893,15 +899,8 @@
"application": "Compétences", "application": "Compétences",
"bonus": "Bonus", "bonus": "Bonus",
"progression": "Progression", "progression": "Progression",
"xp_cost": "Coût XP" "xp_cost": "Coût XP",
}, "xp_used": "XP dépensé"
"etat": {
"title": "États",
"label": "État",
"application": "Application",
"mod": "Modificateur",
"effect": "Effet",
"elimination": "Condition d'élimination"
}, },
"mystere": { "mystere": {
"title": "Mystères", "title": "Mystères",
+36 -7
View File
@@ -92,11 +92,8 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
gaugeColor: gauge > 0 ? "#d4a855" : gauge < 0 ? "#5588aa" : "#888888", gaugeColor: gauge > 0 ? "#d4a855" : gauge < 0 ? "#5588aa" : "#888888",
}; };
// Chiaroscuro: État items active on the character // Chiaroscuro: Invocations split by type (direct from items)
sheetData.data.etatItems = sheetData.items.filter((i) => i.type === "etat"); const invocations = sheetData.items.filter((i) => i.type === "mot_invocation");
// Chiaroscuro: Invocations split by type (from splitTechniquesList)
const invocations = sheetData.data.splitTechniquesList["mot_invocation"] ?? [];
sheetData.data.splitInvocationsList = { sheetData.data.splitInvocationsList = {
general: invocations.filter((t) => !t.system.invocation_type || t.system.invocation_type === "general"), general: invocations.filter((t) => !t.system.invocation_type || t.system.invocation_type === "general"),
neutre: invocations.filter((t) => t.system.invocation_type === "neutre"), neutre: invocations.filter((t) => t.system.invocation_type === "neutre"),
@@ -109,6 +106,9 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
// Chiaroscuro: Mystere items // Chiaroscuro: Mystere items
sheetData.data.mystereItems = sheetData.items.filter((i) => i.type === "mystere"); sheetData.data.mystereItems = sheetData.items.filter((i) => i.type === "mystere");
// Chiaroscuro: Technique École items
sheetData.data.techniqueEcoleItems = sheetData.items.filter((i) => i.type === "technique_ecole");
// Chiaroscuro: Identity tabs enriched HTML // Chiaroscuro: Identity tabs enriched HTML
sheetData.data.enrichedHtml.identity_text1 = await foundry.applications.ux.TextEditor.implementation.enrichHTML( sheetData.data.enrichedHtml.identity_text1 = await foundry.applications.ux.TextEditor.implementation.enrichHTML(
this.actor.system.identity_text1 ?? "", { async: true } this.actor.system.identity_text1 ?? "", { async: true }
@@ -191,6 +191,34 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
.activate("advancement_rank_" + (this.actor.system.identity.school_rank || 0)); .activate("advancement_rank_" + (this.actor.system.identity.school_rank || 0));
} }
/**
* Override to handle mot_invocation creation with invocation_type from the column.
* @param {Event} event
* @override
*/
async _addSubItem(event) {
const type = $(event.currentTarget).data("item-type");
if (type === "mot_invocation") {
event.preventDefault();
event.stopPropagation();
const invocationType = $(event.currentTarget).data("invocation-type") || "general";
const created = await this.actor.createEmbeddedDocuments("Item", [
{
name: game.i18n.localize(`TYPES.Item.mot_invocation`),
type: "mot_invocation",
img: `${CONFIG.l5r5e.paths.assets}icons/items/mot_invocation.svg`,
system: { invocation_type: invocationType },
},
]);
if (created?.length > 0) {
const item = this.actor.items.get(created[0].id);
item?.sheet.render(true);
}
return;
}
return super._addSubItem(event);
}
/** /**
* Override base dice picker to open Chiaroscuro d6 dialog. * Override base dice picker to open Chiaroscuro d6 dialog.
* @param {Event} event * @param {Event} event
@@ -198,9 +226,10 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
_openDicePickerForSkill(event) { _openDicePickerForSkill(event) {
event.preventDefault(); event.preventDefault();
const el = $(event.currentTarget); const el = $(event.currentTarget);
const skillId = el.data("skill"); const weapon = this._getWeaponInfos(el.data("weapon-id") || null);
const skillId = weapon?.skill || el.data("skill");
const ringId = el.data("ring") || this.actor.system?.default_ring || "void"; const ringId = el.data("ring") || this.actor.system?.default_ring || "void";
new game.l5r5e.ChiaroscuroDiceDialog({ actor: this.actor, ringId, skillId }).render(true); new game.l5r5e.ChiaroscuroDiceDialog({ actor: this.actor, ringId, skillId, itemUuid: weapon?.uuid }).render(true);
} }
/** /**
+3 -2
View File
@@ -124,8 +124,9 @@ export class NpcSheetL5r5e extends BaseCharacterSheetL5r5e {
_openDicePickerForSkill(event) { _openDicePickerForSkill(event) {
event.preventDefault(); event.preventDefault();
const el = $(event.currentTarget); const el = $(event.currentTarget);
const skillId = el.data("skill"); const weapon = this._getWeaponInfos(el.data("weapon-id") || null);
const skillId = weapon?.skill || el.data("skill");
const ringId = el.data("ring") || this.actor.system?.default_ring || "void"; const ringId = el.data("ring") || this.actor.system?.default_ring || "void";
new game.l5r5e.ChiaroscuroDiceDialog({ actor: this.actor, ringId, skillId }).render(true); new game.l5r5e.ChiaroscuroDiceDialog({ actor: this.actor, ringId, skillId, itemUuid: weapon?.uuid }).render(true);
} }
} }
+7 -25
View File
@@ -57,7 +57,7 @@ export class ChiaroscuroDiceDialog extends FormApplication {
} }
/** /**
* @param options actor, actorId, ringId, skillId * @param options actor, actorId, ringId, skillId, itemUuid
*/ */
constructor(options = {}) { constructor(options = {}) {
super({}, options); super({}, options);
@@ -74,6 +74,9 @@ export class ChiaroscuroDiceDialog extends FormApplication {
} }
}); });
// Resolve item from uuid (weapon, technique, etc.)
this._item = options.itemUuid ? fromUuidSync(options.itemUuid) : null;
// Default ring: options > actor default_ring > void // Default ring: options > actor default_ring > void
const ringId = options.ringId ?? this._actor?.system?.default_ring ?? "void"; const ringId = options.ringId ?? this._actor?.system?.default_ring ?? "void";
this.ringId = ringId; this.ringId = ringId;
@@ -272,32 +275,8 @@ export class ChiaroscuroDiceDialog extends FormApplication {
[`${aspectsPath}.solar`]: 0, [`${aspectsPath}.solar`]: 0,
[`${aspectsPath}.lunar`]: 0, [`${aspectsPath}.lunar`]: 0,
}); });
// Remove all desequilibre conditions
const toRemove = this._actor.items
.filter((i) => i.type === "etat" && ["desequilibre_solaire", "desequilibre_lunaire"].includes(i.system?.condition_type))
.map((i) => i.id);
if (toRemove.length) {
await this._actor.deleteEmbeddedDocuments("Item", toRemove);
}
} else { } else {
await this._actor.update({ [`${aspectsPath}.gauge`]: newGauge }); await this._actor.update({ [`${aspectsPath}.gauge`]: newGauge });
if (Math.abs(newGauge) >= 5) {
// Apply opposing desequilibre
const condType = this.object.aspectType === "solar" ? "desequilibre_lunaire" : "desequilibre_solaire";
const existing = this._actor.items.find(
(i) => i.type === "etat" && i.system?.condition_type === condType
);
if (!existing) {
await this._actor.createEmbeddedDocuments("Item", [
{
type: "etat",
name: game.i18n.localize(`chiaroscuro.aspects.${condType}`),
system: { condition_type: condType },
},
]);
}
}
} }
} }
@@ -321,6 +300,9 @@ export class ChiaroscuroDiceDialog extends FormApplication {
useAssistance: this.object.useAssistance, useAssistance: this.object.useAssistance,
modifier: this.object.modifier, modifier: this.object.modifier,
quickInfo: this._actor?.system?.quick_info ?? "", quickInfo: this._actor?.system?.quick_info ?? "",
l5r5e: {
item: this._item ?? null,
},
...rollData, ...rollData,
} }
); );
+1 -1
View File
@@ -21,7 +21,7 @@ export class ItemL5r5e extends Item {
* @memberof ClientDocumentMixin# * @memberof ClientDocumentMixin#
*/ */
get uuid() { get uuid() {
const parents = this.system.parent_id; const parents = this.system?.parent_id;
if (!parents?.item_id) { if (!parents?.item_id) {
return super.uuid; return super.uuid;
} }
+3 -3
View File
@@ -10,8 +10,8 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
static types = [ static types = [
{ id: "ring", label: "l5r5e.rings.label" }, { id: "ring", label: "l5r5e.rings.label" },
{ id: "skill", label: "l5r5e.skills.label" }, { id: "skill", label: "l5r5e.skills.label" },
{ id: "arcane", label: "l5r5e.chiaroscuro.arcane.label" }, { id: "arcane", label: "chiaroscuro.arcane.label" },
{ id: "mot_invocation", label: "l5r5e.chiaroscuro.technique.mot_invocation" }, { id: "mot_invocation", label: "chiaroscuro.technique.mot_invocation" },
// others have theirs own xp count // others have theirs own xp count
]; ];
@@ -30,7 +30,7 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
sheetData.data.skillsList = game.l5r5e.HelpersL5r5e.getSkillsList(true); sheetData.data.skillsList = game.l5r5e.HelpersL5r5e.getSkillsList(true);
// Invocation sub-types (Général / Neutre / Précis) // Invocation sub-types (Général / Neutre / Précis)
const invTypes = game.l5r5e.HelpersL5r5e.getLocalizedRawObject("l5r5e.chiaroscuro.technique.invocation_types") ?? {}; const invTypes = game.l5r5e.HelpersL5r5e.getLocalizedRawObject("chiaroscuro.technique.invocation_types") ?? {};
sheetData.data.invocationTypesList = [{ id: "", label: "—" }].concat( sheetData.data.invocationTypesList = [{ id: "", label: "—" }].concat(
Object.entries(invTypes).map(([id, label]) => ({ id, label })) Object.entries(invTypes).map(([id, label]) => ({ id, label }))
); );
-30
View File
@@ -1,30 +0,0 @@
import { BaseItemSheetL5r5e } from "./base-item-sheet.js";
/**
* Sheet for État items (Chiaroscuro).
* @extends {BaseItemSheetL5r5e}
*/
export class EtatSheetL5r5e extends BaseItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "etat"],
template: CONFIG.l5r5e.paths.templates + "items/etat/etat-sheet.html",
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "attributes" }],
});
}
/** @override */
async getData(options = {}) {
const sheetData = await super.getData(options);
sheetData.data.enrichedHtml = {
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(
sheetData.data.system.description ?? "",
{ async: true }
),
};
return sheetData;
}
}
+1 -1
View File
@@ -27,7 +27,7 @@ export class MotInvocationSheetL5r5e extends BaseItemSheetL5r5e {
const sheetData = await super.getData(options); const sheetData = await super.getData(options);
// Build invocation types list from i18n // Build invocation types list from i18n
const invTypes = game.l5r5e.HelpersL5r5e.getLocalizedRawObject("l5r5e.chiaroscuro.technique.invocation_types") ?? {}; const invTypes = game.l5r5e.HelpersL5r5e.getLocalizedRawObject("chiaroscuro.technique.invocation_types") ?? {};
sheetData.data.invocationTypesList = [{ id: "", label: "—" }].concat( sheetData.data.invocationTypesList = [{ id: "", label: "—" }].concat(
Object.entries(invTypes).map(([id, label]) => ({ id, label })) Object.entries(invTypes).map(([id, label]) => ({ id, label }))
); );
-6
View File
@@ -28,7 +28,6 @@ import { WeaponSheetL5r5e } from "./items/weapon-sheet.js";
import { AdvancementSheetL5r5e } from "./items/advancement-sheet.js"; import { AdvancementSheetL5r5e } from "./items/advancement-sheet.js";
import { PeculiaritySheetL5r5e } from "./items/peculiarity-sheet.js"; import { PeculiaritySheetL5r5e } from "./items/peculiarity-sheet.js";
import { ArcaneSheetL5r5e } from "./items/arcane-sheet.js"; import { ArcaneSheetL5r5e } from "./items/arcane-sheet.js";
import { EtatSheetL5r5e } from "./items/etat-sheet.js";
import { MystereSheetL5r5e } from "./items/mystere-sheet.js"; import { MystereSheetL5r5e } from "./items/mystere-sheet.js";
import { TechniqueEcoleSheetL5r5e } from "./items/technique-ecole-sheet.js"; import { TechniqueEcoleSheetL5r5e } from "./items/technique-ecole-sheet.js";
import { MotInvocationSheetL5r5e } from "./items/mot-invocation-sheet.js"; import { MotInvocationSheetL5r5e } from "./items/mot-invocation-sheet.js";
@@ -177,11 +176,6 @@ Hooks.once("init", async () => {
label: "TYPES.Item.arcane", label: "TYPES.Item.arcane",
makeDefault: true, makeDefault: true,
}); });
fdc.Items.registerSheet(L5R5E.namespace, EtatSheetL5r5e, {
types: ["etat"],
label: "TYPES.Item.etat",
makeDefault: true,
});
fdc.Items.registerSheet(L5R5E.namespace, MystereSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, MystereSheetL5r5e, {
types: ["mystere"], types: ["mystere"],
label: "TYPES.Item.mystere", label: "TYPES.Item.mystere",
+14 -1
View File
@@ -6,7 +6,7 @@ export class MigrationL5r5e {
* Minimum Version needed for migration stuff to trigger * Minimum Version needed for migration stuff to trigger
* @type {string} * @type {string}
*/ */
static NEEDED_VERSION = "1.13.0"; static NEEDED_VERSION = "14.0.1";
/** /**
* Return true if the version need some updates * Return true if the version need some updates
@@ -56,6 +56,19 @@ export class MigrationL5r5e {
console.error(err); console.error(err);
} }
// ***** 14.0.1: Remove obsolete etat items *****
if (options?.force || MigrationL5r5e.needUpdate("14.0.1")) {
try {
const etatIds = actor.items.filter((i) => i.type === "etat").map((i) => i.id);
if (etatIds.length) {
console.log(`L5R5E | Migration | Removing ${etatIds.length} etat item(s) from Actor ${actor.name}`);
await actor.deleteEmbeddedDocuments("Item", etatIds);
}
} catch (err) {
console.error(`L5R5E | Migration | Failed to remove etat items from Actor ${actor.name}: ${err.message}`);
}
}
// Migrate Actor's Items // Migrate Actor's Items
if (actor.items.size) { if (actor.items.size) {
console.group(`Checking within ${actor.items.size} items`); console.group(`Checking within ${actor.items.size} items`);
File diff suppressed because one or more lines are too long
+11 -37
View File
@@ -31,7 +31,7 @@
.gauge-bar-wrapper { .gauge-bar-wrapper {
flex: 0 0 100%; flex: 0 0 100%;
height: 0.4rem; height: 1rem;
background: linear-gradient(to right, $chi-lunar, rgba(128,128,128,0.3) 50%, $chi-solar); background: linear-gradient(to right, $chi-lunar, rgba(128,128,128,0.3) 50%, $chi-solar);
border-radius: 0.25rem; border-radius: 0.25rem;
position: relative; position: relative;
@@ -47,34 +47,6 @@
} }
} }
// ── État badges (character sheet header) ─────────────────────────────────
.etat-summary {
flex: 0 0 100%;
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.2rem;
padding: 0.1rem 0;
font-size: 0.8rem;
.etat-summary-label {
color: $l5r5e-label;
font-style: italic;
margin-right: 0.2rem;
}
.etat-badge {
display: inline-flex;
align-items: center;
gap: 0.2rem;
padding: 0.1rem 0.35rem;
border-radius: 0.2rem;
background: rgba($chi-title, 0.18);
border: 1px solid rgba($chi-title, 0.4);
color: $chi-title;
cursor: default;
&:hover { background: rgba($chi-title, 0.32); }
}
}
// ── Identity text blocks ────────────────────────────────────────────────── // ── Identity text blocks ──────────────────────────────────────────────────
.identity-text-wrapper { .identity-text-wrapper {
@@ -478,16 +450,16 @@ article.tab.notes {
box-shadow: inset 0 1px 0 rgba($white, 0.07), 0 1px 3px rgba($l5r5e-black, 0.4); box-shadow: inset 0 1px 0 rgba($white, 0.07), 0 1px 3px rgba($l5r5e-black, 0.4);
&.die-low { &.die-low {
color: $l5r5e-red; color: #ff6b6b;
background: rgba($l5r5e-red, 0.14); background: rgba($l5r5e-red, 0.25);
border-color: rgba($l5r5e-red, 0.5); border-color: rgba($l5r5e-red, 0.7);
box-shadow: inset 0 1px 0 rgba($white, 0.05), 0 0 6px rgba($l5r5e-red, 0.15); box-shadow: inset 0 1px 0 rgba($white, 0.05), 0 0 6px rgba($l5r5e-red, 0.2);
} }
&.die-high { &.die-high {
color: $chi-solar; color: #ffd166;
background: rgba($chi-solar, 0.14); background: rgba($chi-solar, 0.25);
border-color: rgba($chi-solar, 0.5); border-color: rgba($chi-solar, 0.7);
box-shadow: inset 0 1px 0 rgba($white, 0.1), 0 0 8px rgba($chi-solar, 0.2); box-shadow: inset 0 1px 0 rgba($white, 0.1), 0 0 8px rgba($chi-solar, 0.3);
} }
.die-adj-icon { .die-adj-icon {
position: absolute; position: absolute;
@@ -599,6 +571,7 @@ article.tab.notes {
.invocations-wrapper { .invocations-wrapper {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex: 1;
gap: 0.5rem; gap: 0.5rem;
.invocations-roll-header { .invocations-roll-header {
@@ -612,6 +585,7 @@ article.tab.notes {
font-size: 1rem; font-size: 1rem;
font-weight: bold; font-weight: bold;
padding: 0.3rem 1.5rem; padding: 0.3rem 1.5rem;
width: fit-content;
} }
} }
+182 -38
View File
@@ -150,6 +150,7 @@
align-self: stretch; align-self: stretch;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-content: flex-start;
} }
article { article {
display: flex; display: flex;
@@ -239,13 +240,14 @@
} }
&.infos { &.infos {
display: flex; display: flex;
flex-direction: column;
align-self: stretch; align-self: stretch;
height: calc(100% - 7.5rem); height: calc(100% - 7.5rem);
width: 100%; width: 100%;
padding-bottom: 1.25rem; padding-bottom: 1.25rem;
.reference { .reference {
display: flex; display: flex;
flex: 0 0 calc(100% - 0.5rem); flex: 0 0 auto;
margin: 0.5rem 0.25rem; margin: 0.5rem 0.25rem;
input[name="system.source_reference.source"] { input[name="system.source_reference.source"] {
text-align: center; text-align: center;
@@ -256,9 +258,14 @@
} }
} }
fieldset { fieldset {
align-self: stretch; flex: 1 1 auto;
height: calc(100% - 2rem); display: flex;
flex-direction: column;
box-sizing: content-box; box-sizing: content-box;
.editor {
flex: 1 1 auto;
min-height: 6rem;
}
} }
} }
&.properties { &.properties {
@@ -271,6 +278,7 @@
&.advancement { &.advancement {
article { article {
&.attributes { &.attributes {
height: auto;
.attribute-value, .attribute-value,
.attribute, .attribute,
.value { .value {
@@ -286,6 +294,9 @@
} }
} }
} }
&.infos {
height: calc(100% - 5.5rem);
}
} }
} }
&.technique { &.technique {
@@ -332,18 +343,15 @@
&.item { &.item {
article { article {
&.attributes { &.attributes {
height: 4.5rem; height: auto;
.properties { .properties {
flex: 100%; flex: 100%;
} }
} }
&.infos { &.infos {
flex: 0 0 60%; flex: 1 1 100%;
height: calc(100% - 5.5rem); height: auto;
} min-height: 10rem;
&.properties {
flex: 0 0 40%;
height: calc(100% - 5.5rem);
} }
} }
} }
@@ -360,56 +368,111 @@
&.armor { &.armor {
article { article {
&.attributes { &.attributes {
height: 9.5rem; height: auto;
align-content: flex-start;
.attribute-value {
flex: 0 0 calc(25% - 0.5rem);
margin: 0.25rem 0.25rem 0;
}
.value {
flex: 0 0 calc(25% - 0.5rem);
margin: 0.25rem;
input {
width: 100%;
}
}
.stat {
flex: 0 0 calc(33.33% - 0.5rem);
display: flex;
flex-direction: column;
margin: 0.25rem;
span {
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 0.03em;
color: $l5r5e-label;
}
input {
text-align: center;
width: 100%;
}
}
.category {
flex: 0 0 calc(33.33% - 0.5rem);
margin: 0.25rem;
select {
width: 100%;
margin-top: 0.15rem;
}
}
} }
&.infos { &.infos {
flex: 0 0 60%; flex: 1 1 100%;
height: calc(100% - 10.5rem); height: auto;
} min-height: 10rem;
&.properties {
flex: 0 0 40%;
height: calc(100% - 10.5rem);
} }
} }
} }
&.weapon { &.weapon {
article { article {
&.attributes { &.attributes {
height: 18.5rem; height: auto;
.stats, align-content: flex-start;
.attribute-value { .attribute-value {
flex: 0 0 calc(50% - 0.5rem); flex: 0 0 calc(20% - 0.5rem);
flex-wrap: wrap; margin: 0.25rem 0.25rem 0;
}
.stat {
flex: 0 0 calc(20% - 0.5rem);
display: flex;
flex-direction: column;
margin: 0.25rem; margin: 0.25rem;
label { span {
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 0.03em;
color: $l5r5e-label;
}
input {
text-align: center;
width: 100%; width: 100%;
} }
} }
.stats {
input[type="text"] {
text-align: center;
}
}
.value {
flex: 0 0 calc(25% - 0.5rem);
}
.category, .category,
.skillType { .skillType {
flex: 0 0 calc(50% - 0.5rem); flex: 0 0 calc(50% - 0.5rem);
input, margin: 0.25rem;
select,
.attribute-dtype { .attribute-dtype {
width: 100%; width: 100%;
margin: 0.25rem; margin-top: 0.15rem;
}
}
.grip {
flex: 0 0 calc(40% - 0.5rem);
display: flex;
flex-direction: row;
align-items: center;
gap: 0.25rem;
margin: 0.25rem;
font-size: 0.8rem;
input {
flex: 1;
width: auto;
}
}
.value {
flex: 0 0 calc(20% - 0.5rem);
margin: 0.25rem;
input {
width: 100%;
} }
} }
} }
&.infos { &.infos {
flex: 0 0 60%; flex: 1 1 100%;
height: calc(100% - 19.5rem); height: auto;
} min-height: 10rem;
&.properties {
flex: 0 0 40%;
height: calc(100% - 19.5rem);
} }
} }
} }
@@ -550,3 +613,84 @@
} }
} }
} }
// Chiaroscuro-specific item types
&.arcane,
&.mot-invocation,
&.mystere,
&.technique-ecole {
.sheet-header {
margin-bottom: 0.5rem;
img {
flex: 0 0 90px;
height: 90px;
width: 90px;
background: rgba(255, 255, 255, 0.25);
}
h1 input {
height: 5.5rem;
}
}
.sheet-body {
flex: 100%;
height: calc(100% - 90px - 0.25rem);
align-self: stretch;
display: flex;
flex-wrap: wrap;
align-content: flex-start;
}
article {
display: flex;
flex-wrap: wrap;
label {
color: $l5r5e-label;
margin: 0.25rem;
line-height: 1.5rem;
}
&.attributes,
&.tab.attributes {
width: 100%;
min-height: auto;
align-self: flex-start;
align-content: flex-start;
align-items: flex-start;
.attribute {
display: flex;
flex-direction: column;
flex: 0 0 calc(50% - 0.5rem);
input, select {
width: 100%;
}
}
}
&.infos,
&.tab.infos {
display: flex;
flex-direction: column;
width: 100%;
flex: 1 1 100%;
padding-bottom: 1.25rem;
fieldset {
flex: 1 1 auto;
display: flex;
flex-direction: column;
.editor {
flex: 1 1 auto;
min-height: 8rem;
}
}
.reference {
display: flex;
flex: 0 0 auto;
margin: 0.5rem 0.25rem;
input[name="system.source_reference.source"] {
text-align: center;
width: 70%;
}
input[name="system.source_reference.page"] {
width: 30%;
}
}
}
}
}
+53 -63
View File
@@ -1,41 +1,66 @@
/** Rings — disposition en pentagone **/ /** Rings — disposition en grille 2×2 + Vide centré en bas **/
.rings { .rings {
position: relative; display: grid;
min-height: 260px; grid-template-areas:
color: $white-light; "air water"
"fire earth"
"void void";
grid-template-columns: 1fr 1fr;
gap: 0.5rem;
min-height: 0;
padding: 0.25rem;
list-style: none; list-style: none;
padding: 0; color: $white-light;
margin: 0;
// — Common rules for all ring items — #air { grid-area: air; }
#water { grid-area: water; }
#fire { grid-area: fire; }
#earth { grid-area: earth; }
#void { grid-area: void; justify-self: center; }
// — Common ring cell —
#earth, #earth,
#air, #air,
#water, #water,
#fire, #fire,
#void { #void {
position: absolute; position: relative;
display: flex;
flex-direction: column;
align-items: center;
gap: 0.15rem;
label { label {
position: relative; position: relative;
display: block; display: flex;
text-align: center; flex-direction: column;
align-items: center;
cursor: pointer; cursor: pointer;
width: 5.5rem; width: 5.5rem;
line-height: normal; text-align: center;
&.stance-active strong { &.stance-active strong {
text-decoration: underline 2px; text-decoration: underline 2px;
} }
} }
.ring-circle {
position: relative;
width: 4.5rem;
height: 4.5rem;
display: flex;
align-items: center;
justify-content: center;
}
i.i_earth, i.i_earth,
i.i_water, i.i_water,
i.i_fire, i.i_fire,
i.i_air, i.i_air,
i.i_void { i.i_void {
font-size: 5rem; font-size: 4.5rem;
line-height: 4.75rem; line-height: 1;
display: block; display: block;
} }
@@ -43,20 +68,23 @@
display: block; display: block;
font-size: 0.78rem; font-size: 0.78rem;
line-height: 1.3; line-height: 1.3;
margin-top: 0.15rem; margin-top: 0.1rem;
} }
input { input {
position: absolute; position: absolute;
height: 1.9rem; height: 2rem;
width: 1.9rem; width: 2rem;
border-radius: 100%; border-radius: 100%;
top: 0; bottom: -0.5rem;
left: 0; right: -0.5rem;
text-align: center; text-align: center;
font-size: 0.95rem; font-size: 1rem;
font-weight: bold;
border: 2px solid $l5r5e-title; border: 2px solid $l5r5e-title;
color: $white-light; color: $white-light;
background: rgba($l5r5e-black, 0.75);
&:hover { &:hover {
border: 2px solid $red-light; border: 2px solid $red-light;
text-shadow: 0 0 3px $red; text-shadow: 0 0 3px $red;
@@ -88,48 +116,10 @@
} }
} }
// — Pentagone centré — rayon 4.5rem autour du centre x=50%, y≈6.875rem // — Ring colors —
// (centre de l'icône à 2.375rem du haut de chaque li) #void { color: $l5r5e-void; input { background: rgba($l5r5e-void, 0.7); } }
// cos/sin calculés pour les 5 sommets d'un pentagone régulier (Vide au sommet) #air { color: $l5r5e-air; input { background: rgba($l5r5e-air, 0.7); } }
#water { color: $l5r5e-water; input { background: rgba($l5r5e-water, 0.7); } }
// Pentagone ancré à gauche — centre du cercle à 8rem du bord gauche #fire { color: $l5r5e-fire; input { background: rgba($l5r5e-fire, 0.7); } }
// Vide — sommet (90°) #earth { color: $l5r5e-earth; input { background: rgba($l5r5e-earth, 0.7); } }
#void {
top: 0;
left: 5.25rem;
color: $l5r5e-void;
input { background: $l5r5e-void; }
}
// Air (Solaire) — haut gauche (162° : cos=0.951, sin=0.309)
#air {
top: 3.1rem;
left: 1rem;
color: $l5r5e-air;
input { background: $l5r5e-air; }
}
// Eau (Lunaire) — haut droite (18° : cos=0.951, sin=0.309)
#water {
top: 3.1rem;
left: 9.5rem;
color: $l5r5e-water;
input { background: $l5r5e-water; }
}
// Feu (Solaire) — bas gauche (126° : cos=0.588, sin=0.809)
#fire {
top: 8.1rem;
left: 2.6rem;
color: $l5r5e-fire;
input { background: $l5r5e-fire; }
}
// Terre (Lunaire) — bas droite (54° : cos=0.588, sin=0.809)
#earth {
top: 8.1rem;
left: 7.9rem;
color: $l5r5e-earth;
input { background: $l5r5e-earth; }
}
} }
+1 -1
View File
@@ -8,7 +8,7 @@
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md", "license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json", "manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build", "download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build",
"version": "14.0.0", "version": "14.0.1",
"compatibility": { "compatibility": {
"minimum": "13", "minimum": "13",
"verified": "14" "verified": "14"
+10 -16
View File
@@ -129,8 +129,8 @@
}, },
"aspects": { "aspects": {
"aspects": { "aspects": {
"solar": 0, "solar": 2,
"lunar": 0, "lunar": 2,
"gauge": 0 "gauge": 0
} }
} }
@@ -199,7 +199,6 @@
"peculiarity", "peculiarity",
"advancement", "advancement",
"arcane", "arcane",
"etat",
"mystere", "mystere",
"technique_ecole", "technique_ecole",
"mot_invocation" "mot_invocation"
@@ -289,16 +288,8 @@
"application": [], "application": [],
"bonus": 2, "bonus": 2,
"progression": "", "progression": "",
"xp_cost": 1 "xp_cost": 1,
}, "xp_used": 0
"etat": {
"templates": [
"basics"
],
"application": "",
"mod": 0,
"effect": "",
"elimination": ""
}, },
"mystere": { "mystere": {
"templates": [ "templates": [
@@ -306,21 +297,24 @@
], ],
"mystere_type": "mineur", "mystere_type": "mineur",
"prerequisite_skill": "", "prerequisite_skill": "",
"prerequisite_condition": "" "prerequisite_condition": "",
"xp_used": 0
}, },
"technique_ecole": { "technique_ecole": {
"templates": [ "templates": [
"basics" "basics"
], ],
"application": "", "application": "",
"bonus": 3 "bonus": 3,
"xp_used": 0
}, },
"mot_invocation": { "mot_invocation": {
"templates": [ "templates": [
"basics" "basics"
], ],
"invocation_type": "", "invocation_type": "",
"mode_invocation": 0 "mode_invocation": 0,
"xp_used": 0
} }
} }
} }
+1 -1
View File
@@ -14,7 +14,7 @@
<li>{{#ifCond data.system.template '==' 'pow'}}{{localize 'l5r5e.sheets.upbringing'}}{{else}}{{localize 'l5r5e.sheets.family'}}{{/ifCond}} : {{data.system.identity.family}}</li> <li>{{#ifCond data.system.template '==' 'pow'}}{{localize 'l5r5e.sheets.upbringing'}}{{else}}{{localize 'l5r5e.sheets.family'}}{{/ifCond}} : {{data.system.identity.family}}</li>
<li>{{localize 'l5r5e.sheets.rank'}} : {{data.system.identity.school_rank}}</li> <li>{{localize 'l5r5e.sheets.rank'}} : {{data.system.identity.school_rank}}</li>
<li>{{localize 'l5r5e.sheets.school'}} : {{data.system.identity.school}}</li> <li>{{localize 'l5r5e.sheets.school'}} : {{data.system.identity.school}}</li>
<li>{{localize 'l5r5e.roles'}} : {{data.system.identity.roles}}</li> <li>{{localize 'l5r5e.roles.title'}} : {{data.system.identity.roles}}</li>
{{!-- Social --}} {{!-- Social --}}
<li>{{localize 'l5r5e.social.honor'}} : {{data.system.social.honor}}</li> <li>{{localize 'l5r5e.social.honor'}} : {{data.system.social.honor}}</li>
@@ -1,12 +1,9 @@
<tr data-group="advancements" data-tab="advancement_rank_{{rank}}" class="flexrow row advancement tab"> <tr data-group="advancements" data-tab="advancement_rank_{{rank}}" class="flexrow row advancement tab">
<td class="name l5r5e-tooltip" data-item-id="{{advancement._id}}" name="advancement.name"><img src="{{advancement.img}}" title="{{advancement.name}}"> {{advancement.name}}</td> <td class="name l5r5e-tooltip" data-item-id="{{advancement._id}}" name="advancement.name"><img src="{{advancement.img}}" title="{{advancement.name}}"> {{advancement.name}}</td>
<td class="curriculum" name="curriculum">{{#if advancement.system.in_curriculum}}<i class="fas fa-graduation-cap"></i> {{/if}}</td>
<td class="xp" name="advancement.xp">{{advancement.system.xp_used}}</td> <td class="xp" name="advancement.xp">{{advancement.system.xp_used}}</td>
<td class="rank" name="advancement.rank">{{advancement.system.rank}}</td>
{{#if editable}} {{#if editable}}
<td class="actions"> <td class="actions">
<ul> <ul>
<li data-item-id="{{advancement._id}}" class="item-control item-curriculum" title="{{localize 'l5r5e.advancements.curriculum'}}"><i class="fas fa-graduation-cap"></i></li>
<li data-item-id="{{advancement._id}}" class="item-control item-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li> <li data-item-id="{{advancement._id}}" class="item-control item-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li>
<li data-item-id="{{advancement._id}}" class="item-control item-delete" title="{{localize 'Delete'}}"><i class="fas fa-trash"></i></li> <li data-item-id="{{advancement._id}}" class="item-control item-delete" title="{{localize 'Delete'}}"><i class="fas fa-trash"></i></li>
</ul> </ul>
@@ -16,15 +16,4 @@
<div class="gauge-bar" style="width: {{data.aspectsData.gaugePercent}}%; background-color: {{data.aspectsData.gaugeColor}};"></div> <div class="gauge-bar" style="width: {{data.aspectsData.gaugePercent}}%; background-color: {{data.aspectsData.gaugeColor}};"></div>
</div> </div>
</div> </div>
{{#if data.etatItems.length}}
<div class="etat-summary">
<span class="etat-summary-label">{{localize 'chiaroscuro.etat.title'}}</span>
{{#each data.etatItems as |etat|}}
<span class="etat-badge l5r5e-tooltip" title="{{etat.system.effect}}">
<img src="{{etat.img}}" width="16" height="16" />
{{etat.name}}
</span>
{{/each}}
</div>
{{/if}}
</div> </div>
@@ -4,7 +4,7 @@
{{#if data.system.identity.school_curriculum_journal.id}} {{#if data.system.identity.school_curriculum_journal.id}}
<a class="school-journal-link"><i class="fas fa-file-alt"></i></a> {{data.system.identity.school_curriculum_journal.name}} <a class="school-journal-link"><i class="fas fa-file-alt"></i></a> {{data.system.identity.school_curriculum_journal.name}}
{{else}} {{else}}
<i class="fas fa-question-circle" title="{{localize 'l5r5e.advancements.school_curriculum_journal'}}"></i> {{localize 'l5r5e.sheets.school'}} <i class="fas fa-question-circle" title="{{localize 'l5r5e.advancements.school_curriculum_journal'}}"></i> {{localize 'l5r5e.advancements.advancement'}}
{{/if}} {{/if}}
{{#if data.editable_not_soft_locked}} {{#if data.editable_not_soft_locked}}
<a data-item-type="advancement" class="advancement-control item-add" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a> <a data-item-type="advancement" class="advancement-control item-add" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a>
@@ -22,9 +22,7 @@
<thead class="flex"> <thead class="flex">
<tr class="flexrow row"> <tr class="flexrow row">
<th class="name">{{localize 'l5r5e.sheets.name'}}</th> <th class="name">{{localize 'l5r5e.sheets.name'}}</th>
<th class="curriculum"><i class="fas fa-graduation-cap"></i></th>
<th class="xp">{{localize 'l5r5e.advancements.spent'}}</th> <th class="xp">{{localize 'l5r5e.advancements.spent'}}</th>
<th class="rank">{{localize 'l5r5e.sheets.rank'}}</th>
{{#if data.editable_not_soft_locked}} {{#if data.editable_not_soft_locked}}
<th class="actions"></th> <th class="actions"></th>
{{/if}} {{/if}}
@@ -36,10 +34,6 @@
{{> 'systems/l5rx-chiaroscuro/templates/actors/character/advancement-school.html' advancement=advancement rank=rankObject.rank editable=../../data.editable_not_soft_locked}} {{> 'systems/l5rx-chiaroscuro/templates/actors/character/advancement-school.html' advancement=advancement rank=rankObject.rank editable=../../data.editable_not_soft_locked}}
{{/each}} {{/each}}
{{#ifCond rankObject.rank '>' 0}} {{#ifCond rankObject.rank '>' 0}}
<tr class="tfoot flexrow row tab" data-group="advancements" data-tab="advancement_rank_{{rankObject.rank}}">
<th>{{localize 'l5r5e.advancements.total_xp_curriculum'}} : {{rankObject.spent.curriculum}}{{#if rankObject.goal}} / {{rankObject.goal}}{{/if}}</th>
<th>{{localize 'l5r5e.advancements.total_xp_spent'}} : {{rankObject.spent.total}}</th>
</tr>
{{#if ../data.editable_not_soft_locked}} {{#if ../data.editable_not_soft_locked}}
{{#ifCond ../data.system.identity.school_rank '<' 6}} {{#ifCond ../data.system.identity.school_rank '<' 6}}
{{#ifCond (ifCond ../data.system.identity.school_rank '==' rankObject.rank) '&&' (ifCond rankObject.spent.curriculum '>=' rankObject.goal)}} {{#ifCond (ifCond ../data.system.identity.school_rank '==' rankObject.rank) '&&' (ifCond rankObject.spent.curriculum '>=' rankObject.goal)}}
@@ -58,36 +52,3 @@
</tbody> </tbody>
</table> </table>
</fieldset> </fieldset>
{{!-- Others progression (does not count in school xp) --}}
<fieldset class="xp-spent xp-spent-body">
<legend class="tools">
{{localize 'l5r5e.advancements.title'}}
{{#if data.editable_not_soft_locked}}
<a class="advancement-others-control item-advancement-choose" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a>
{{/if}}
</legend>
<table>
<thead class="flex">
<tr class="flexrow row">
<th class="name">{{localize 'l5r5e.sheets.name'}}</th>
<th class="xp">{{localize 'l5r5e.advancements.spent'}}</th>
<th class="rank">{{localize 'l5r5e.sheets.rank'}}</th>
{{#if data.editable_not_soft_locked}}
<th class="actions"></th>
{{/if}}
</tr>
</thead>
<tbody class="flex">
{{#each data.advancementsOthers as |advancement advancementId|}}
{{> 'systems/l5rx-chiaroscuro/templates/actors/character/advancement-others.html' advancement=advancement show_curriculum_toggle=false editable=../data.editable_not_soft_locked}}
{{/each}}
</tbody>
<tfoot class="flex">
<tr class="tfoot flexrow">
<th>
{{localize 'l5r5e.advancements.total_xp_spent'}} : {{data.advancementsOthersTotalXp}}
</th>
</tr>
</tfoot>
</table>
</fieldset>
@@ -1,6 +1,6 @@
<div class="invocations-wrapper"> <div class="invocations-wrapper">
<div class="invocations-roll-header"> <div class="invocations-roll-header">
<button class="dice-picker invocation-roll-btn" data-skill="invocation">{{localize 'l5r5e.skills.social.invocation'}}</button> <button type="button" class="dice-picker invocation-roll-btn" data-skill="invocation">{{localize 'l5r5e.skills.social.invocation'}}</button>
</div> </div>
<div class="invocations-columns"> <div class="invocations-columns">
{{#each data.splitInvocationsList as |list type|}} {{#each data.splitInvocationsList as |list type|}}
@@ -8,12 +8,21 @@
<legend class="technique-controls"> <legend class="technique-controls">
<span>{{localize (concat 'chiaroscuro.technique.invocation_types.' type)}}</span> <span>{{localize (concat 'chiaroscuro.technique.invocation_types.' type)}}</span>
{{#if ../data.editable_not_soft_locked}} {{#if ../data.editable_not_soft_locked}}
<a data-item-type="technique" class="technique-control item-add" data-tech-type="mot_invocation" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a> <a data-item-type="mot_invocation" class="technique-control item-add" data-invocation-type="{{type}}" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a>
{{/if}} {{/if}}
</legend> </legend>
<ul class="item-list"> <ul class="item-list">
{{#each list as |item|}} {{#each list as |item|}}
{{> 'systems/l5rx-chiaroscuro/templates/items/technique/technique-entry.html' technique=item editable=../../data.editable_not_soft_locked}} <li class="item technique flexcol" data-item-id="{{item._id}}">
<ul class="item-header technique-controls">
<li class="item-img"><img src="{{item.img}}" title="{{item.name}}" width="32px" height="32px"/></li>
<li class="item-name l5r5e-tooltip" data-item-id="{{item._id}}">{{item.name}}</li>
{{#if ../../data.editable_not_soft_locked}}
<li data-item-id="{{item._id}}" class="item-control item-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li>
<li data-item-id="{{item._id}}" class="item-control item-delete" title="{{localize 'Delete'}}"><i class="fas fa-trash"></i></li>
{{/if}}
</ul>
</li>
{{/each}} {{/each}}
</ul> </ul>
</fieldset> </fieldset>
+20 -10
View File
@@ -1,41 +1,51 @@
<ul class="rings"> <ul class="rings">
<li id="air"> <li id="air">
<label class="air {{#ifCond 'air' '==' data.system.stance}}stance-active{{/ifCond}}"> <label class="air {{#ifCond 'air' '==' data.system.stance}}stance-active{{/ifCond}}">
<i class="i_air dice-picker rollable" data-ring="air"></i> <div class="ring-circle">
<i class="i_air dice-picker rollable" data-ring="air"></i>
<input class="centered-input select-on-focus" type="number" name="system.rings.air" value="{{data.system.rings.air}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</div>
<strong class="ring-set-default {{#ifCond 'air' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="air" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'air'}}</strong> <strong class="ring-set-default {{#ifCond 'air' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="air" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'air'}}</strong>
<span class="ring-type solaire">☀ Solaire</span> <span class="ring-type solaire">☀ Solaire</span>
<input class="centered-input select-on-focus" type="number" name="system.rings.air" value="{{data.system.rings.air}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</label> </label>
</li> </li>
<li id="water"> <li id="water">
<label class="water {{#ifCond 'water' '==' data.system.stance}}stance-active{{/ifCond}}"> <label class="water {{#ifCond 'water' '==' data.system.stance}}stance-active{{/ifCond}}">
<i class="i_water dice-picker rollable" data-ring="water"></i> <div class="ring-circle">
<i class="i_water dice-picker rollable" data-ring="water"></i>
<input class="centered-input select-on-focus" type="number" name="system.rings.water" value="{{data.system.rings.water}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</div>
<strong class="ring-set-default {{#ifCond 'water' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="water" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'water'}}</strong> <strong class="ring-set-default {{#ifCond 'water' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="water" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'water'}}</strong>
<span class="ring-type lunaire">☽ Lunaire</span> <span class="ring-type lunaire">☽ Lunaire</span>
<input class="centered-input select-on-focus" type="number" name="system.rings.water" value="{{data.system.rings.water}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</label> </label>
</li> </li>
<li id="fire"> <li id="fire">
<label class="fire {{#ifCond 'fire' '==' data.system.stance}}stance-active{{/ifCond}}"> <label class="fire {{#ifCond 'fire' '==' data.system.stance}}stance-active{{/ifCond}}">
<i class="i_fire dice-picker rollable" data-ring="fire"></i> <div class="ring-circle">
<i class="i_fire dice-picker rollable" data-ring="fire"></i>
<input class="centered-input select-on-focus" type="number" name="system.rings.fire" value="{{data.system.rings.fire}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</div>
<strong class="ring-set-default {{#ifCond 'fire' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="fire" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'fire'}}</strong> <strong class="ring-set-default {{#ifCond 'fire' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="fire" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'fire'}}</strong>
<span class="ring-type solaire">☀ Solaire</span> <span class="ring-type solaire">☀ Solaire</span>
<input class="centered-input select-on-focus" type="number" name="system.rings.fire" value="{{data.system.rings.fire}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</label> </label>
</li> </li>
<li id="earth"> <li id="earth">
<label class="earth {{#ifCond 'earth' '==' data.system.stance}}stance-active{{/ifCond}}"> <label class="earth {{#ifCond 'earth' '==' data.system.stance}}stance-active{{/ifCond}}">
<i class="i_earth dice-picker rollable" data-ring="earth"></i> <div class="ring-circle">
<i class="i_earth dice-picker rollable" data-ring="earth"></i>
<input class="centered-input select-on-focus" type="number" name="system.rings.earth" value="{{data.system.rings.earth}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</div>
<strong class="ring-set-default {{#ifCond 'earth' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="earth" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'earth'}}</strong> <strong class="ring-set-default {{#ifCond 'earth' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="earth" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'earth'}}</strong>
<span class="ring-type lunaire">☽ Lunaire</span> <span class="ring-type lunaire">☽ Lunaire</span>
<input class="centered-input select-on-focus" type="number" name="system.rings.earth" value="{{data.system.rings.earth}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</label> </label>
</li> </li>
<li id="void"> <li id="void">
<label class="void {{#ifCond 'void' '==' data.system.stance}}stance-active{{/ifCond}}"> <label class="void {{#ifCond 'void' '==' data.system.stance}}stance-active{{/ifCond}}">
<i class="i_void dice-picker rollable" data-ring="void"></i> <div class="ring-circle">
<i class="i_void dice-picker rollable" data-ring="void"></i>
<input class="centered-input select-on-focus" type="number" name="system.rings.void" value="{{data.system.rings.void}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</div>
<strong class="ring-set-default {{#ifCond 'void' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="void" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'void'}}</strong> <strong class="ring-set-default {{#ifCond 'void' '==' data.system.default_ring}}default-ring{{/ifCond}}" data-ring="void" title="{{localize 'chiaroscuro.character.default_ring'}}">{{localizeRing 'void'}}</strong>
<input class="centered-input select-on-focus" type="number" name="system.rings.void" value="{{data.system.rings.void}}" data-dtype="Number" min="1" max="9" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</label> </label>
</li> </li>
</ul> </ul>
@@ -1,4 +1,27 @@
<div class="techniques-wrapper"> <div class="techniques-wrapper">
{{!-- Technique d'École items list --}}
<fieldset class="section-header flexrow">
<legend class="text-block-header">
{{localize 'chiaroscuro.technique_ecole.title'}}
{{#if data.editable_not_soft_locked}}
<a data-item-type="technique_ecole" class="technique-ecole-control item-add" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a>
{{/if}}
</legend>
<ul class="item-list">
{{#each data.techniqueEcoleItems as |item|}}
<li class="item technique flexcol" data-item-id="{{item._id}}">
<ul class="item-header technique-controls">
<li class="item-img"><img src="{{item.img}}" title="{{item.name}}" width="32px" height="32px"/></li>
<li class="item-name l5r5e-tooltip" data-item-id="{{item._id}}">{{item.name}}</li>
{{#if ../data.editable_not_soft_locked}}
<li data-item-id="{{item._id}}" class="item-control item-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li>
<li data-item-id="{{item._id}}" class="item-control item-delete" title="{{localize 'Delete'}}"><i class="fas fa-trash"></i></li>
{{/if}}
</ul>
</li>
{{/each}}
</ul>
</fieldset>
{{!-- Arcane items list --}} {{!-- Arcane items list --}}
<fieldset class="section-header flexrow"> <fieldset class="section-header flexrow">
<legend class="text-block-header"> <legend class="text-block-header">
@@ -2,13 +2,9 @@
{{!-- Ring accent bar --}} {{!-- Ring accent bar --}}
<div class="chi-ring-bar {{ring.id}}"></div> <div class="chi-ring-bar {{ring.id}}"></div>
{{!-- Header: portrait + actor + ring badge --}} {{!-- Header: portrait + ring badge --}}
<div class="chi-chat-header"> <div class="chi-chat-header">
<img class="profile-img" src="{{profileImg}}" alt="{{actor.name}}" /> <img class="profile-img" src="{{profileImg}}" alt="{{actor.name}}" />
<div class="chi-chat-actor">
<strong>{{actor.name}}</strong>
{{#if quickInfo}}<div class="chi-chat-quick-info">{{quickInfo}}</div>{{/if}}
</div>
<div class="chi-chat-badges"> <div class="chi-chat-badges">
<span class="chi-ring-badge {{ring.id}}" title="{{ring.label}}"> <span class="chi-ring-badge {{ring.id}}" title="{{ring.label}}">
<i class="i_{{ring.id}}"></i> <i class="i_{{ring.id}}"></i>
@@ -101,4 +97,12 @@
{{/if}}{{/if}} {{/if}}{{/if}}
</div> </div>
</div> </div>
{{!-- Item link (arcane, weapon, etc.) --}}
{{#if l5r5e.item.uuid}}
<div class="l5r5e item-infos">
<div class="profile"><img class="profile-img" src="{{l5r5e.item.img}}" alt="{{l5r5e.item.name}}" /></div>
<div class="name">@UUID[{{l5r5e.item.uuid}}]</div>
</div>
{{/if}}
</div> </div>
@@ -4,10 +4,17 @@
<img class="profile-img" src="{{#if actor.img}}{{actor.img}}{{else}}icons/svg/mystery-man.svg{{/if}}" alt="{{actor.name}}" /> <img class="profile-img" src="{{#if actor.img}}{{actor.img}}{{else}}icons/svg/mystery-man.svg{{/if}}" alt="{{actor.name}}" />
<div class="chi-dice-actor-info"> <div class="chi-dice-actor-info">
<strong>{{actor.name}}</strong> <strong>{{actor.name}}</strong>
{{#if quickInfo}}<div class="chi-dice-quick-info">{{quickInfo}}</div>{{/if}}
</div> </div>
</div> </div>
{{!-- Quick Info --}}
{{#if quickInfo}}
<fieldset class="chi-dice-section">
<legend>{{localize 'chiaroscuro.character.quick_info'}}</legend>
<div class="chi-dice-quick-info">{{quickInfo}}</div>
</fieldset>
{{/if}}
{{!-- Ring selector --}} {{!-- Ring selector --}}
<fieldset class="chi-dice-section"> <fieldset class="chi-dice-section">
<legend>{{localize 'l5r5e.rings.title'}}</legend> <legend>{{localize 'l5r5e.rings.title'}}</legend>
@@ -0,0 +1,23 @@
<div id="l5r5e_gm_combat_tracker_bar" class="l5r5e-combat-bar">
<div class="encounter-types">
{{#each encounterTypeList as |type|}}
<a class="encounter-control {{#ifCond type '==' ../encounterType}}active{{/ifCond}}" data-id="{{type}}" title="{{localize (concat 'l5r5e.conflict.initiative.' type)}}">
{{localize (concat 'l5r5e.conflict.initiative.' type)}}
</a>
{{/each}}
</div>
<div class="prepared-controls">
<a class="prepared-control prepared-{{prepared.character}}" data-id="character" title="{{localize (concat 'l5r5e.conflict.initiative.prepared_' prepared.character)}}">
<i class="fas {{#ifCond prepared.character '==' 'true'}}fa-shield-alt{{else}}{{#ifCond prepared.character '==' 'actor'}}fa-user{{else}}fa-skull{{/ifCond}}{{/ifCond}}"></i>
{{localize 'l5r5e.character_types.character'}}
</a>
<a class="prepared-control prepared-{{prepared.adversary}}" data-id="adversary" title="{{localize (concat 'l5r5e.conflict.initiative.prepared_' prepared.adversary)}}">
<i class="fas {{#ifCond prepared.adversary '==' 'true'}}fa-shield-alt{{else}}{{#ifCond prepared.adversary '==' 'actor'}}fa-user{{else}}fa-skull{{/ifCond}}{{/ifCond}}"></i>
{{localize 'l5r5e.character_types.adversary'}}
</a>
<a class="prepared-control prepared-{{prepared.minion}}" data-id="minion" title="{{localize (concat 'l5r5e.conflict.initiative.prepared_' prepared.minion)}}">
<i class="fas {{#ifCond prepared.minion '==' 'true'}}fa-shield-alt{{else}}{{#ifCond prepared.minion '==' 'actor'}}fa-user{{else}}fa-skull{{/ifCond}}{{/ifCond}}"></i>
{{localize 'l5r5e.character_types.minion'}}
</a>
</div>
</div>
@@ -11,6 +11,10 @@
{{localize 'chiaroscuro.arcane.arcane_type'}} {{localize 'chiaroscuro.arcane.arcane_type'}}
<input type="text" name="system.arcane_type" value="{{data.system.arcane_type}}" /> <input type="text" name="system.arcane_type" value="{{data.system.arcane_type}}" />
</label> </label>
<label class="attribute">
{{localize 'chiaroscuro.arcane.xp_used'}}
<input class="select-on-focus" type="number" name="system.xp_used" value="{{data.system.xp_used}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
<label class="attribute"> <label class="attribute">
{{localize 'chiaroscuro.arcane.application'}} {{localize 'chiaroscuro.arcane.application'}}
<input type="text" name="system.applicationDisplay" value="{{data.system.applicationDisplay}}" placeholder="compétence1, compétence2" /> <input type="text" name="system.applicationDisplay" value="{{data.system.applicationDisplay}}" placeholder="compétence1, compétence2" />
@@ -25,7 +29,7 @@
</label> </label>
</article> </article>
{{!-- Description --}} {{!-- Description --}}
<article class="infos"> <article class="tab infos active" data-group="primary" data-tab="infos">
<fieldset> <fieldset>
<legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend>
{{editor data.enrichedHtml.description target="system.description" button=true owner=owner editable=editable engine="prosemirror" collaborate=false}} {{editor data.enrichedHtml.description target="system.description" button=true owner=owner editable=editable engine="prosemirror" collaborate=false}}
@@ -0,0 +1,36 @@
<div class="{{cssClass}}" data-actor-id="{{actor._id}}" data-item-id="{{data._id}}">
<header class="card-header">
<h2 class="item-name"><img src="{{data.img}}" title="{{data.name}}" /> {{data.name}}</h2>
</header>
<section class="sheet-body">
<ul>
{{#if data.system.arcane_type}}
<li>
<strong>{{localize 'chiaroscuro.arcane.arcane_type'}}</strong> : {{data.system.arcane_type}}
</li>
{{/if}}
{{#if data.system.applicationDisplay}}
<li>
<strong>{{localize 'chiaroscuro.arcane.application'}}</strong> : {{data.system.applicationDisplay}}
</li>
{{/if}}
{{#if data.system.bonus}}
<li>
<strong>{{localize 'chiaroscuro.arcane.bonus'}}</strong> : {{data.system.bonus}}
</li>
{{/if}}
{{#if data.system.progression}}
<li>
<strong>{{localize 'chiaroscuro.arcane.progression'}}</strong> : {{data.system.progression}}
</li>
{{/if}}
{{#if data.system.xp_used}}
<li>
<strong>{{localize 'chiaroscuro.arcane.xp_used'}}</strong> : {{data.system.xp_used}}
</li>
{{/if}}
</ul>
{{> 'systems/l5rx-chiaroscuro/templates/items/item/item-text-partial-reference.html'}}
</section>
</div>
+27 -5
View File
@@ -5,13 +5,34 @@
</header> </header>
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
{{!-- attributes --}}
<article class="attributes" data-group="primary" data-tab="description"> <article class="attributes" data-group="primary" data-tab="description">
<label class="equipped checkbox"> {{!-- Row 1 : quantité / rareté / coût / équipé --}}
<input type="checkbox" name="system.equipped" {{checked data.system.equipped}} /> <label class="value">
{{ localize 'l5r5e.armors.equipped' }} {{localize 'l5r5e.sheets.quantity'}}
<input class="select-on-focus" type="number" name="system.quantity" value="{{data.system.quantity}}" data-dtype="Number" min="0" placeholder="0"/>
</label> </label>
<label class="attribute"> <label class="value">
{{localize 'l5r5e.sheets.rarity'}}
<input class="select-on-focus" type="text" name="system.rarity" value="{{data.system.rarity}}" data-dtype="String" placeholder="—"/>
</label>
<label class="value">
{{localize 'l5r5e.money.zeni'}}
<input class="select-on-focus" type="text" name="system.zeni" value="{{data.system.zeni}}" data-dtype="String" placeholder="0"/>
</label>
<label class="attribute-value checkbox">
<input type="checkbox" name="system.equipped" {{checked data.system.equipped}} />
{{localize 'l5r5e.armors.equipped'}}
</label>
{{!-- Row 2 : défenses + catégorie --}}
<label class="stat">
<span>{{localize 'l5r5e.armors.physical'}}</span>
<input class="select-on-focus" type="number" name="system.armor.physical" value="{{data.system.armor.physical}}" data-dtype="Number" placeholder="0"/>
</label>
<label class="stat">
<span>{{localize 'l5r5e.armors.supernatural'}}</span>
<input class="select-on-focus" type="number" name="system.armor.supernatural" value="{{data.system.armor.supernatural}}" data-dtype="Number" placeholder="0"/>
</label>
<label class="category">
{{localize 'l5r5e.armors.type'}} {{localize 'l5r5e.armors.type'}}
<select name="system.armor_category"> <select name="system.armor_category">
<option value=""></option> <option value=""></option>
@@ -19,6 +40,7 @@
</select> </select>
</label> </label>
</article> </article>
{{!-- Description pleine largeur --}}
<article class="tab infos active" data-group="primary" data-tab="infos"> <article class="tab infos active" data-group="primary" data-tab="infos">
<fieldset> <fieldset>
<legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend>
@@ -1,31 +0,0 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
</header>
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item active" data-group="primary" data-tab="attributes">{{localize 'l5r5e.sheets.attributes'}}</a>
<a class="item" data-group="primary" data-tab="description">{{localize 'l5r5e.sheets.infos'}}</a>
</nav>
<section class="sheet-body">
<article class="attributes" data-group="primary" data-tab="attributes">
<label class="attribute">
{{localize 'chiaroscuro.etat.application'}}
<input type="text" name="system.application" value="{{data.system.application}}" />
</label>
<label class="attribute">
{{localize 'chiaroscuro.etat.mod'}}
<input class="select-on-focus" type="number" name="system.mod" value="{{data.system.mod}}" data-dtype="Number" placeholder="0"/>
</label>
<label class="attribute">
{{localize 'chiaroscuro.etat.effect'}}
<input type="text" name="system.effect" value="{{data.system.effect}}" />
</label>
<label class="attribute">
{{localize 'chiaroscuro.etat.elimination'}}
<input type="text" name="system.elimination" value="{{data.system.elimination}}" />
</label>
</article>
{{> 'systems/l5rx-chiaroscuro/templates/items/item/item-infos.html'}}
</section>
</form>
+1 -1
View File
@@ -19,7 +19,7 @@
<input class="select-on-focus" type="text" name="system.rarity" value="{{data.system.rarity}}" data-dtype="String" placeholder="0"/> <input class="select-on-focus" type="text" name="system.rarity" value="{{data.system.rarity}}" data-dtype="String" placeholder="0"/>
</label> </label>
<label class="value"> <label class="value">
<i class="fas fa-coins"></i> {{localize 'l5r5e.money.zeni'}}
<input class="select-on-focus" type="text" name="system.zeni" value="{{data.system.zeni}}" data-dtype="String" placeholder="0"/> <input class="select-on-focus" type="text" name="system.zeni" value="{{data.system.zeni}}" data-dtype="String" placeholder="0"/>
</label> </label>
</article> </article>
+6 -2
View File
@@ -1,13 +1,17 @@
{{#each data.splitItemsList as |cat type|}} {{#each data.splitItemsList as |cat type|}}
<h3 class="toggle-on-click" data-toggle="inventory-item-list-{{type}}"> <h3 class="toggle-on-click" data-toggle="inventory-item-list-{{type}}">
{{localize (localize 'l5r5e.{type}s.title' type=type)}} ({{cat.length}}) {{localize (concat 'l5r5e.' type 's.title')}} ({{cat.length}})
{{#if ../data.editable_not_soft_locked}} {{#if ../data.editable_not_soft_locked}}
<a data-item-type="{{type}}" class="item-control item-add" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a> <a data-item-type="{{type}}" class="item-control item-add" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a>
{{/if}} {{/if}}
</h3> </h3>
<ul class="item-list inventory-item-list-{{type}} {{#ifCond ../data.storeInfos 'includes' (concat 'inventory-item-list-' type)}}toggle-hidden{{/ifCond}}"> <ul class="item-list inventory-item-list-{{type}} {{#ifCond ../data.storeInfos 'includes' (concat 'inventory-item-list-' type)}}toggle-hidden{{/ifCond}}">
{{#each cat as |item id|}} {{#each cat as |item id|}}
{{> 'systems/l5rx-chiaroscuro/templates/items/item/item-entry.html' item=item id=id editable=../../options.editable soft_locked=../../data.system.soft_locked}} {{#ifCond item.type '==' 'weapon'}}
{{> 'systems/l5rx-chiaroscuro/templates/items/weapon/weapon-entry.html' weapon=item id=id editable=../../data.editable_not_soft_locked}}
{{else}}
{{> 'systems/l5rx-chiaroscuro/templates/items/item/item-entry.html' item=item id=id editable=../../options.editable soft_locked=../../data.system.soft_locked}}
{{/ifCond}}
{{/each}} {{/each}}
</ul> </ul>
{{/each}} {{/each}}
@@ -0,0 +1,22 @@
<div class="{{cssClass}}" data-actor-id="{{actor._id}}" data-item-id="{{data._id}}">
<header class="card-header">
<h2 class="item-name"><img src="{{data.img}}" title="{{data.name}}" /> {{data.name}}</h2>
</header>
<section class="sheet-body">
<ul>
<li>
<strong>{{localize 'chiaroscuro.technique.invocation_type'}}</strong> : {{localize (concat 'chiaroscuro.technique.invocation_types.' data.system.invocation_type)}}
</li>
<li>
<strong>{{localize 'chiaroscuro.technique.mode_invocation'}}</strong> : {{data.system.mode_invocation}}
</li>
{{#if data.system.xp_used}}
<li>
<strong>{{localize 'chiaroscuro.arcane.xp_used'}}</strong> : {{data.system.xp_used}}
</li>
{{/if}}
</ul>
{{> 'systems/l5rx-chiaroscuro/templates/items/item/item-text-partial-reference.html'}}
</section>
</div>
@@ -17,9 +17,13 @@
{{localize 'chiaroscuro.technique.mode_invocation'}} {{localize 'chiaroscuro.technique.mode_invocation'}}
<input class="select-on-focus" type="number" id="mot_invocation_mode" name="system.mode_invocation" value="{{data.system.mode_invocation}}" data-dtype="Number" placeholder="0" readonly /> <input class="select-on-focus" type="number" id="mot_invocation_mode" name="system.mode_invocation" value="{{data.system.mode_invocation}}" data-dtype="Number" placeholder="0" readonly />
</label> </label>
<label class="attribute">
{{localize 'chiaroscuro.arcane.xp_used'}}
<input class="select-on-focus" type="number" name="system.xp_used" value="{{data.system.xp_used}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
</article> </article>
{{!-- Description --}} {{!-- Description --}}
<article class="infos"> <article class="tab infos active" data-group="primary" data-tab="infos">
<fieldset> <fieldset>
<legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend>
{{editor data.enrichedHtml.description target="system.description" button=true owner=owner editable=editable engine="prosemirror" collaborate=false}} {{editor data.enrichedHtml.description target="system.description" button=true owner=owner editable=editable engine="prosemirror" collaborate=false}}
@@ -11,6 +11,10 @@
{{selectOptions data.mystereTypes selected=data.system.mystere_type valueAttr='id' labelAttr='label'}} {{selectOptions data.mystereTypes selected=data.system.mystere_type valueAttr='id' labelAttr='label'}}
</select> </select>
</label> </label>
<label class="attribute">
{{localize 'chiaroscuro.arcane.xp_used'}}
<input class="select-on-focus" type="number" name="system.xp_used" value="{{data.system.xp_used}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
<label class="attribute"> <label class="attribute">
{{localize 'chiaroscuro.mystere.prerequisite_skill'}} {{localize 'chiaroscuro.mystere.prerequisite_skill'}}
<input type="text" name="system.prerequisite_skill" value="{{data.system.prerequisite_skill}}" /> <input type="text" name="system.prerequisite_skill" value="{{data.system.prerequisite_skill}}" />
@@ -20,7 +24,7 @@
<input type="text" name="system.prerequisite_condition" value="{{data.system.prerequisite_condition}}" /> <input type="text" name="system.prerequisite_condition" value="{{data.system.prerequisite_condition}}" />
</label> </label>
</article> </article>
<article class="infos"> <article class="tab infos active" data-group="primary" data-tab="infos">
<fieldset> <fieldset>
<legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend>
{{editor data.enrichedHtml.description target="system.description" button=true owner=owner editable=editable engine="prosemirror" collaborate=false}} {{editor data.enrichedHtml.description target="system.description" button=true owner=owner editable=editable engine="prosemirror" collaborate=false}}
@@ -0,0 +1,31 @@
<div class="{{cssClass}}" data-actor-id="{{actor._id}}" data-item-id="{{data._id}}">
<header class="card-header">
<h2 class="item-name"><img src="{{data.img}}" title="{{data.name}}" /> {{data.name}}</h2>
</header>
<section class="sheet-body">
<ul>
{{#if data.system.mystere_type}}
<li>
<strong>{{localize 'chiaroscuro.mystere.mystere_type'}}</strong> : {{data.system.mystere_type}}
</li>
{{/if}}
{{#if data.system.prerequisite_skill}}
<li>
<strong>{{localize 'chiaroscuro.mystere.prerequisite_skill'}}</strong> : {{data.system.prerequisite_skill}}
</li>
{{/if}}
{{#if data.system.prerequisite_condition}}
<li>
<strong>{{localize 'chiaroscuro.mystere.prerequisite_condition'}}</strong> : {{data.system.prerequisite_condition}}
</li>
{{/if}}
{{#if data.system.xp_used}}
<li>
<strong>{{localize 'chiaroscuro.arcane.xp_used'}}</strong> : {{data.system.xp_used}}
</li>
{{/if}}
</ul>
{{> 'systems/l5rx-chiaroscuro/templates/items/item/item-text-partial-reference.html'}}
</section>
</div>
@@ -0,0 +1,26 @@
<div class="{{cssClass}}" data-actor-id="{{actor._id}}" data-item-id="{{data._id}}">
<header class="card-header">
<h2 class="item-name"><img src="{{data.img}}" title="{{data.name}}" /> {{data.name}}</h2>
</header>
<section class="sheet-body">
<ul>
{{#if data.system.application}}
<li>
<strong>{{localize 'chiaroscuro.arcane.application'}}</strong> : {{data.system.application}}
</li>
{{/if}}
{{#if data.system.bonus}}
<li>
<strong>{{localize 'chiaroscuro.arcane.bonus'}}</strong> : {{data.system.bonus}}
</li>
{{/if}}
{{#if data.system.xp_used}}
<li>
<strong>{{localize 'chiaroscuro.arcane.xp_used'}}</strong> : {{data.system.xp_used}}
</li>
{{/if}}
</ul>
{{> 'systems/l5rx-chiaroscuro/templates/items/item/item-text-partial-reference.html'}}
</section>
</div>
@@ -15,9 +15,13 @@
{{localize 'chiaroscuro.arcane.bonus'}} {{localize 'chiaroscuro.arcane.bonus'}}
<input class="select-on-focus" type="number" name="system.bonus" value="{{data.system.bonus}}" data-dtype="Number" min="0" placeholder="3" readonly /> <input class="select-on-focus" type="number" name="system.bonus" value="{{data.system.bonus}}" data-dtype="Number" min="0" placeholder="3" readonly />
</label> </label>
<label class="attribute">
{{localize 'chiaroscuro.arcane.xp_used'}}
<input class="select-on-focus" type="number" name="system.xp_used" value="{{data.system.xp_used}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
</article> </article>
{{!-- Description --}} {{!-- Description --}}
<article class="infos"> <article class="tab infos active" data-group="primary" data-tab="infos">
<fieldset> <fieldset>
<legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend>
{{editor data.enrichedHtml.description target="system.description" button=true owner=owner editable=editable engine="prosemirror" collaborate=false}} {{editor data.enrichedHtml.description target="system.description" button=true owner=owner editable=editable engine="prosemirror" collaborate=false}}
@@ -1,19 +1,19 @@
<li class="item weapon flexcol"> <li class="item weapon flexcol">
<ul class="item-header item-control"> <ul class="item-header item-control">
<li class="item-img"><img src="{{weapon.img}}" title="{{weapon.name}}" width="32px" height="32px"/></li> <li class="item-img"><img src="{{weapon.img}}" title="{{weapon.name}}" width="32px" height="32px"/></li>
<li class="item-name dice-picker l5r5e-tooltip" data-item-id="{{weapon.id}}" data-weapon-id="{{weapon.id}}">{{weapon.name}}</li> <li class="item-name dice-picker l5r5e-tooltip" data-item-id="{{weapon._id}}" data-weapon-id="{{weapon._id}}">{{weapon.name}}</li>
<li class="icon-stat-container"> <li class="icon-stat-container">
<i class="fas fa-arrows-alt-h" title="{{localize 'l5r5e.weapons.range'}}"> {{weapon.system.range}}</i> <i class="fas fa-arrows-alt-h" title="{{localize 'l5r5e.weapons.range'}}"> {{weapon.system.range}}</i>
<i class="fas fa-tint" title="{{localize 'l5r5e.weapons.damage'}}"> {{weapon.system.damage}}</i> <i class="fas fa-tint" title="{{localize 'l5r5e.weapons.damage'}}"> {{weapon.system.damage}}</i>
<i class="fas fa-skull" title="{{localize 'l5r5e.weapons.deadliness'}}"> {{weapon.system.deadliness}}</i> <i class="fas fa-skull" title="{{localize 'l5r5e.weapons.deadliness'}}"> {{weapon.system.deadliness}}</i>
</li> </li>
{{#if editable}} {{#if editable}}
<li data-item-id="{{weapon.id}}" class="item-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li> <li data-item-id="{{weapon._id}}" class="item-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li>
<li data-item-id="{{weapon.id}}" class="item-delete" title="{{localize 'Delete'}}"><i class="fas fa-trash"></i></li> <li data-item-id="{{weapon._id}}" class="item-delete" title="{{localize 'Delete'}}"><i class="fas fa-trash"></i></li>
{{/if}} {{/if}}
</ul> </ul>
<ul class="item-properties"> <ul class="item-properties">
<li class="equip-readied-control" data-item-id="{{weapon.id}}" data-type="readied"> <li class="equip-readied-control" data-item-id="{{weapon._id}}" data-type="readied">
<i class="i_readied fa{{^if weapon.system.readied}}r{{/if}} fa-check-circle" title="{{#if weapon.system.readied}}{{localize 'l5r5e.weapons.readied'}}{{else}}{{localize 'l5r5e.weapons.sheathed'}}{{/if}}"></i> <i class="i_readied fa{{^if weapon.system.readied}}r{{/if}} fa-check-circle" title="{{#if weapon.system.readied}}{{localize 'l5r5e.weapons.readied'}}{{else}}{{localize 'l5r5e.weapons.sheathed'}}{{/if}}"></i>
</li> </li>
{{#each weapon.system.properties as |property|}} {{#each weapon.system.properties as |property|}}
+32 -23
View File
@@ -5,48 +5,57 @@
</header> </header>
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
{{!-- attributes--}} {{!-- Attributes --}}
<article class="attributes" data-group="primary" data-tab="description"> <article class="attributes" data-group="primary" data-tab="description">
{{!-- Row 1 : quantité / rareté / coût / équipé --}}
<label class="value">
{{localize 'l5r5e.sheets.quantity'}}
<input class="select-on-focus" type="number" name="system.quantity" value="{{data.system.quantity}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
<label class="value">
{{localize 'l5r5e.sheets.rarity'}}
<input class="select-on-focus" type="text" name="system.rarity" value="{{data.system.rarity}}" data-dtype="String" placeholder="—"/>
</label>
<label class="value">
{{localize 'l5r5e.money.zeni'}}
<input class="select-on-focus" type="text" name="system.zeni" value="{{data.system.zeni}}" data-dtype="String" placeholder="0"/>
</label>
<label class="attribute-value checkbox"> <label class="attribute-value checkbox">
<input type="checkbox" name="system.equipped" {{checked data.system.equipped}} /> <input type="checkbox" name="system.equipped" {{checked data.system.equipped}} />
{{localize 'l5r5e.weapons.sheathed'}} {{localize 'l5r5e.weapons.sheathed'}}
</label> </label>
<label class="attribute-value checkbox"> <label class="value">
<input type="checkbox" name="system.readied" {{checked data.system.readied}} /> <span>{{localize 'chiaroscuro.weapon.bonus'}}</span>
{{localize 'l5r5e.weapons.readied'}} <input class="select-on-focus" type="number" name="system.bonus" value="{{data.system.bonus}}" data-dtype="Number" placeholder="0"/>
</label> </label>
{{!-- Row 3 : catégorie + compétence --}}
<label class="category"> <label class="category">
{{localize 'l5r5e.weapons.category'}} {{localize 'l5r5e.weapons.category'}}
<select name="system.category"> <select name="system.category">
{{selectOptions data.weaponCategories selected=data.system.category valueAttr='id' labelAttr='label'}} {{selectOptions data.weaponCategories selected=data.system.category valueAttr='id' labelAttr='label'}}
</select> </select>
</label> </label>
<label class="attribute">
{{localize 'chiaroscuro.weapon.bonus'}}
<input class="select-on-focus" type="number" name="system.bonus" value="{{data.system.bonus}}" data-dtype="Number" placeholder="0"/>
</label>
<label class="skillType"> <label class="skillType">
{{localize 'l5r5e.skills.label'}} {{localize 'l5r5e.skills.label'}}
<select class="attribute-dtype" name="system.skill"> <select class="attribute-dtype" name="system.skill">
{{selectOptions data.skills selected=data.system.skill valueAttr='id' labelAttr='label' localize=true}} {{selectOptions data.skills selected=data.system.skill valueAttr='id' labelAttr='label' localize=true}}
</select> </select>
</label> </label>
<fieldset class="stats"> {{!-- Row 4 : apprêté + prises --}}
<legend class="text-block-header">{{localize 'l5r5e.weapons.stats'}}</legend> <label class="attribute-value checkbox">
<label> <input type="checkbox" name="system.readied" {{checked data.system.readied}} />
{{localize 'l5r5e.weapons.range'}} {{localize 'l5r5e.weapons.readied'}}
<input class="select-on-focus" type="text" name="system.range" value="{{data.system.range}}" data-dtype="String" placeholder="0"/> </label>
</label> <label class="grip">
<label> {{localize 'l5r5e.weapons.1hand'}}
{{localize 'l5r5e.weapons.damage'}} <input class="select-on-focus" type="text" name="system.grip_1" value="{{data.system.grip_1}}" data-dtype="String" placeholder="—"/>
<input class="select-on-focus" type="number" name="system.damage" value="{{data.system.damage}}" data-dtype="Number" min="0" placeholder="0"/> </label>
</label> <label class="grip">
<label> {{localize 'l5r5e.weapons.2hand'}}
{{localize 'l5r5e.weapons.deadliness'}} <input class="select-on-focus" type="text" name="system.grip_2" value="{{data.system.grip_2}}" data-dtype="String" placeholder="—"/>
<input class="select-on-focus" type="number" name="system.deadliness" value="{{data.system.deadliness}}" data-dtype="Number" min="0" placeholder="0"/> </label>
</label>
</fieldset>
</article> </article>
{{!-- Description pleine largeur --}}
<article class="tab infos active" data-group="primary" data-tab="infos"> <article class="tab infos active" data-group="primary" data-tab="infos">
<fieldset> <fieldset>
<legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend>
+1 -1
View File
@@ -31,7 +31,7 @@
</a> </a>
</li> </li>
<li> <li>
<a href="{{localize 'l5r5e.logo.drivethrurpg.link'}}" target="_blank" title="{{localize 'l5r5e.logo.drivethrurpg.info"'}}"> <a href="{{localize 'l5r5e.logo.drivethrurpg.link'}}" target="_blank" title="{{localize 'l5r5e.logo.drivethrurpg.info'}}">
{{localize 'l5r5e.logo.drivethrurpg.title'}} {{localize 'l5r5e.logo.drivethrurpg.title'}}
</a> </a>
</li> </li>