Compare commits

...

5 Commits

Author SHA1 Message Date
uberwald 2348827842 Corrections sur anneaux
Release Creation / build (release) Failing after 1m38s
2026-05-20 23:03:10 +02:00
uberwald 3c92532601 Correction sur bonus armes
Release Creation / build (release) Failing after 1m39s
2026-05-19 00:23:20 +02:00
uberwald 3fc10ad669 Derniers fixs
Release Creation / build (release) Failing after 1m29s
2026-05-13 23:07:22 +02:00
uberwald 2e1c499c23 Implémentation des modifs v3 2026-05-12 01:09:06 +02:00
uberwald 03c3f1757e Implémentation des modifs v3
Release Creation / build (release) Failing after 1m30s
2026-05-12 00:17:42 +02:00
13 changed files with 171 additions and 73 deletions
@@ -685,9 +685,9 @@ export class BaseCharacterSheetL5r5e extends BaseSheetL5r5e {
const data = { const data = {
equipped: tmpItem.system.equipped, equipped: tmpItem.system.equipped,
}; };
// Only weapons // For weapons: sync readied with equipped so both toggle together
if (tmpItem.system.readied !== undefined) { if (tmpItem.system.readied !== undefined) {
data.readied = tmpItem.system.readied; data.readied = type === "equipped" ? tmpItem.system.equipped : tmpItem.system.readied;
} }
// Update the Item: we need to manually notify the "Gm Monitor" as the Actor himself is not updated // Update the Item: we need to manually notify the "Gm Monitor" as the Actor himself is not updated
@@ -714,6 +714,7 @@ export class BaseCharacterSheetL5r5e extends BaseSheetL5r5e {
return { return {
uuid: item.uuid, uuid: item.uuid,
skill: item.system.skill, skill: item.system.skill,
bonus: parseInt(item.system.bonus || 0),
}; };
} }
+4 -11
View File
@@ -11,7 +11,6 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
template: CONFIG.l5r5e.paths.templates + "actors/character-sheet.html", template: CONFIG.l5r5e.paths.templates + "actors/character-sheet.html",
tabs: [ tabs: [
{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "skills" }, { navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "skills" },
{ navSelector: ".advancements-tabs", contentSelector: ".advancements-body", initial: "last" },
], ],
}); });
} }
@@ -82,11 +81,11 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
} }
// Chiaroscuro: Aspects gauge data // Chiaroscuro: Aspects gauge data
const aspectsData = sheetData.data.system.aspects?.aspects ?? {}; const aspectsData = sheetData.data.system.aspects ?? {};
const gauge = aspectsData.gauge ?? 0; const gauge = aspectsData.gauge ?? 0;
sheetData.data.aspectsData = { sheetData.data.aspectsData = {
solar: aspectsData.solar ?? 0, solar: aspectsData.solar ?? 2,
lunar: aspectsData.lunar ?? 0, lunar: aspectsData.lunar ?? 2,
gauge, gauge,
gaugePercent: ((gauge + 10) / 20) * 100, gaugePercent: ((gauge + 10) / 20) * 100,
gaugeColor: gauge > 0 ? "#d4a855" : gauge < 0 ? "#5588aa" : "#888888", gaugeColor: gauge > 0 ? "#d4a855" : gauge < 0 ? "#5588aa" : "#888888",
@@ -184,12 +183,6 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
}); });
// Advancements Tab to current rank onload
// TODO class "Active" Bug on load, dunno why :/
this._tabs
.find((e) => e._navSelector === ".advancements-tabs")
.activate("advancement_rank_" + (this.actor.system.identity.school_rank || 0));
// Arcane roll on name click // Arcane roll on name click
html.find(".dice-picker-arcane").on("click", this._openDicePickerForArcane.bind(this)); html.find(".dice-picker-arcane").on("click", this._openDicePickerForArcane.bind(this));
} }
@@ -289,7 +282,7 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
const weapon = this._getWeaponInfos(el.data("weapon-id") || null); const weapon = this._getWeaponInfos(el.data("weapon-id") || null);
const skillId = weapon?.skill || el.data("skill"); 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, itemUuid: weapon?.uuid }).render(true); new game.l5r5e.ChiaroscuroDiceDialog({ actor: this.actor, ringId, skillId, itemUuid: weapon?.uuid, arcaneBonus: weapon?.bonus ?? 0 }).render(true);
} }
/** /**
+1 -1
View File
@@ -127,6 +127,6 @@ export class NpcSheetL5r5e extends BaseCharacterSheetL5r5e {
const weapon = this._getWeaponInfos(el.data("weapon-id") || null); const weapon = this._getWeaponInfos(el.data("weapon-id") || null);
const skillId = weapon?.skill || el.data("skill"); 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, itemUuid: weapon?.uuid }).render(true); new game.l5r5e.ChiaroscuroDiceDialog({ actor: this.actor, ringId, skillId, itemUuid: weapon?.uuid, arcaneBonus: weapon?.bonus ?? 0 }).render(true);
} }
} }
+12 -4
View File
@@ -104,9 +104,9 @@ export class ChiaroscuroDiceDialog extends FormApplication {
set ringId(ringId) { set ringId(ringId) {
this.object.ring.id = CONFIG.l5r5e.stances.includes(ringId) ? ringId : "void"; this.object.ring.id = CONFIG.l5r5e.stances.includes(ringId) ? ringId : "void";
this.object.ring.value = this._actor?.system?.rings?.[this.object.ring.id] || 1; this.object.ring.value = this._actor?.system?.rings?.[this.object.ring.id] || 1;
// Auto-derive aspect type from ring (fire/earth → solar, air/water → lunar; void = manual) // Auto-derive aspect type from ring (air/fire → solar, water/earth → lunar; void = manual)
if (this.object.ring.id !== "void") { if (this.object.ring.id !== "void") {
this.object.aspectType = ["fire", "earth"].includes(this.object.ring.id) ? "solar" : "lunar"; this.object.aspectType = ["air", "fire"].includes(this.object.ring.id) ? "solar" : "lunar";
} }
} }
@@ -291,9 +291,14 @@ export class ChiaroscuroDiceDialog extends FormApplication {
: "system.aspects"; : "system.aspects";
const aspects = foundry.utils.getProperty(this._actor, aspectsPath) ?? {}; const aspects = foundry.utils.getProperty(this._actor, aspectsPath) ?? {};
const gaugeDirection = this.object.aspectType === "solar" ? 1 : -1; const isSolar = this.object.aspectType === "solar";
const gaugeDirection = isSolar ? 1 : -1;
const newGauge = (aspects.gauge ?? 0) + gaugeDirection; const newGauge = (aspects.gauge ?? 0) + gaugeDirection;
// Decrement the consumed aspect point
const aspectKey = isSolar ? "solar" : "lunar";
const newAspectValue = Math.max(0, (aspects[aspectKey] ?? 0) - 1);
if (Math.abs(newGauge) >= 10) { if (Math.abs(newGauge) >= 10) {
// Full reset // Full reset
await this._actor.update({ await this._actor.update({
@@ -302,7 +307,10 @@ export class ChiaroscuroDiceDialog extends FormApplication {
[`${aspectsPath}.lunar`]: 0, [`${aspectsPath}.lunar`]: 0,
}); });
} else { } else {
await this._actor.update({ [`${aspectsPath}.gauge`]: newGauge }); await this._actor.update({
[`${aspectsPath}.gauge`]: newGauge,
[`${aspectsPath}.${aspectKey}`]: newAspectValue,
});
} }
} }
File diff suppressed because one or more lines are too long
+52
View File
@@ -504,6 +504,58 @@
&.experience { &.experience {
flex: 100%; flex: 100%;
height: calc(100% - 4rem); height: calc(100% - 4rem);
.xp-summary {
display: flex;
flex-direction: row;
align-items: center;
background: rgba($l5r5e-red, 0.08);
border: 1px solid rgba($l5r5e-red, 0.3);
border-radius: 4px;
padding: 0.3rem 0.75rem;
margin-bottom: 0.5rem;
gap: 0;
.xp-block {
display: flex;
flex-direction: row;
align-items: center;
gap: 0.4rem;
flex: 1;
justify-content: center;
padding: 0 0.5rem;
.xp-label {
font-size: 0.75rem;
text-transform: uppercase;
color: $l5r5e-title;
letter-spacing: 0.04em;
white-space: nowrap;
}
.xp-value {
font-family: $font-secondary;
font-size: 1rem;
font-weight: bold;
color: $l5r5e-red;
width: 3.5rem;
text-align: center;
background: rgba($l5r5e-red, 0.06);
border: 1px solid rgba($l5r5e-red, 0.25);
border-radius: 3px;
padding: 0.1rem 0.25rem;
&:disabled {
opacity: 0.75;
cursor: default;
}
}
}
.xp-block + .xp-block {
border-left: 1px solid rgba($l5r5e-red, 0.25);
}
}
} }
} }
} }
+73 -34
View File
@@ -1,23 +1,21 @@
/** Rings — disposition en grille 2×2 + Vide centré en bas **/ /** Rings — disposition pentagonale (5 éléments autour d'un cercle) **/
// Centre (130, 130), rayon 75px, sens horaire depuis le haut (-90°)
// Air(-90°) Eau(-18°) Feu(54°) Terre(126°) Vide(198°)
.rings { .rings {
display: grid; position: relative;
grid-template-areas: width: 260px;
"air water" height: 260px;
"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;
margin: 0 auto;
color: $white-light; color: $white-light;
#air { grid-area: air; } #air { left: 86px; top: 59px; z-index: 2; } // haut-gauche (36°)
#water { grid-area: water; } #water { left: 174px; top: 59px; z-index: 2; } // haut-droite ( 36°)
#fire { grid-area: fire; } #fire { left: 59px; top: 153px; z-index: 1; } // gauche (252°)
#earth { grid-area: earth; } #earth { left: 201px; top: 153px; z-index: 1; } // droite (108°)
#void { grid-area: void; justify-self: center; } #void { left: 130px; top: 205px; z-index: 1; } // bas (180°)
// — Common ring cell — // — Common ring cell —
#earth, #earth,
@@ -25,7 +23,8 @@
#water, #water,
#fire, #fire,
#void { #void {
position: relative; position: absolute;
transform: translate(-50%, -50%);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@@ -93,27 +92,56 @@
} }
} }
// — Solaire / Lunaire badges // — Solaire / Lunaire : masqués sur les anneaux, affichés latéralement
.ring-type { .ring-type { display: none; }
display: block;
text-align: center;
font-size: 0.62rem;
line-height: 1.2 !important;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 0.07em;
white-space: nowrap;
margin-top: 0.1rem;
pointer-events: none;
&.solaire { // Air et Eau : label texte flottant AU-DESSUS de l'icône, hors du flux
color: #f5c842; // (position: absolute → ne décale pas le cercle, ne casse pas l'espacement)
text-shadow: 0 0 4px rgba(245, 180, 0, 0.6); #air label strong, #water label strong {
position: absolute;
bottom: calc(100% + 0.3rem); // au-dessus du ring-circle
left: 0; right: 0;
text-align: center;
visibility: visible;
} }
&.lunaire {
color: #9ecfef; // Label vertical "☀ SOLAIRE" sur le côté gauche (entre Air et Feu)
text-shadow: 0 0 4px rgba(100, 180, 230, 0.6); &::before {
content: "☀ SOLAIRE";
position: absolute;
left: 0;
top: 80px;
writing-mode: vertical-lr;
transform: rotate(180deg); // lecture de bas en haut
font-size: 0.7rem;
font-weight: bold;
letter-spacing: 0.12em;
text-transform: uppercase;
color: #ffe066;
background: rgba(0, 0, 0, 0.55);
padding: 4px 2px;
border-radius: 3px;
text-shadow: 0 0 4px #000, 0 0 8px rgba(255, 180, 0, 0.9);
pointer-events: none;
} }
// Label vertical "☽ LUNAIRE" sur le côté droit (entre Eau et Terre)
&::after {
content: "☽ LUNAIRE";
position: absolute;
right: 0;
top: 80px;
writing-mode: vertical-lr;
font-size: 0.7rem;
font-weight: bold;
letter-spacing: 0.12em;
text-transform: uppercase;
color: #b8e4ff;
background: rgba(0, 0, 0, 0.55);
padding: 4px 2px;
border-radius: 3px;
text-shadow: 0 0 4px #000, 0 0 8px rgba(80, 160, 255, 0.9);
pointer-events: none;
} }
// — Ring colors — // — Ring colors —
@@ -122,4 +150,15 @@
#water { color: $l5r5e-water; input { background: rgba($l5r5e-water, 0.7); } } #water { color: $l5r5e-water; input { background: rgba($l5r5e-water, 0.7); } }
#fire { color: $l5r5e-fire; input { background: rgba($l5r5e-fire, 0.7); } } #fire { color: $l5r5e-fire; input { background: rgba($l5r5e-fire, 0.7); } }
#earth { color: $l5r5e-earth; input { background: rgba($l5r5e-earth, 0.7); } } #earth { color: $l5r5e-earth; input { background: rgba($l5r5e-earth, 0.7); } }
// — Input value orienté vers le centre du pentagone —
// #air (haut-gauche) → centre est bas-droite → default (bottom/right) ✓
// #water (haut-droite) → centre est bas-gauche → bottom / left
#water .ring-circle input { right: auto; left: -0.5rem; }
// #fire (gauche) → centre est haut-droite → top / right
#fire .ring-circle input { bottom: auto; top: -0.5rem; }
// #earth (droite) → centre est haut-gauche → top / left
#earth .ring-circle input { bottom: auto; top: -0.5rem; right: auto; left: -0.5rem; }
// #void (bas) → centre est haut-centre → top / centré
#void .ring-circle input { bottom: auto; top: -0.5rem; right: auto; left: 50%; transform: translateX(-50%); }
} }
-1
View File
@@ -297,7 +297,6 @@
.rings { .rings {
padding: 0; padding: 0;
margin-top: 0.5rem; margin-top: 0.5rem;
width: 100%;
} }
.social-content, .social-content,
.attributes-wrapper { .attributes-wrapper {
@@ -1,4 +1,4 @@
<tr data-group="advancements" data-tab="advancement_rank_{{rank}}" class="flexrow row advancement tab"> <tr class="flexrow row advancement">
<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="xp" name="advancement.xp">{{advancement.system.xp_used}}</td> <td class="xp" name="advancement.xp">{{advancement.system.xp_used}}</td>
{{#if editable}} {{#if editable}}
@@ -2,15 +2,15 @@
<div class="aspect-fields"> <div class="aspect-fields">
<label class="attribute-label"> <label class="attribute-label">
{{localize 'chiaroscuro.aspects.solar'}} {{localize 'chiaroscuro.aspects.solar'}}
<input type="number" name="system.aspects.aspects.solar" value="{{data.system.aspects.aspects.solar}}" class="select-on-focus" data-dtype="Number" min="0" max="100" {{^if data.editable_not_soft_locked}}disabled{{/if}}/> <input type="number" name="system.aspects.solar" value="{{data.system.aspects.solar}}" class="select-on-focus" data-dtype="Number" min="0" max="100" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</label> </label>
<label class="attribute-label"> <label class="attribute-label">
{{localize 'chiaroscuro.aspects.lunar'}} {{localize 'chiaroscuro.aspects.lunar'}}
<input type="number" name="system.aspects.aspects.lunar" value="{{data.system.aspects.aspects.lunar}}" class="select-on-focus" data-dtype="Number" min="0" max="100" {{^if data.editable_not_soft_locked}}disabled{{/if}}/> <input type="number" name="system.aspects.lunar" value="{{data.system.aspects.lunar}}" class="select-on-focus" data-dtype="Number" min="0" max="100" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</label> </label>
<label class="attribute-label"> <label class="attribute-label">
{{localize 'chiaroscuro.aspects.gauge'}} {{localize 'chiaroscuro.aspects.gauge'}}
<input type="number" name="system.aspects.aspects.gauge" value="{{data.system.aspects.aspects.gauge}}" class="select-on-focus" data-dtype="Number" min="-10" max="10" {{^if data.editable_not_soft_locked}}disabled{{/if}}/> <input type="number" name="system.aspects.gauge" value="{{data.system.aspects.gauge}}" class="select-on-focus" data-dtype="Number" min="-10" max="10" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
</label> </label>
<div class="gauge-bar-wrapper"> <div class="gauge-bar-wrapper">
<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>
@@ -1,3 +1,19 @@
{{!-- XP Summary banner --}}
<div class="xp-summary" style="display:flex;flex-direction:row;align-items:center;gap:1rem;background:rgba(120,20,20,0.08);border:1px solid rgba(120,20,20,0.3);border-radius:4px;padding:0.3rem 0.75rem;margin-bottom:0.5rem;width:100%;box-sizing:border-box;">
<div class="xp-block" style="display:flex;flex-direction:row;align-items:center;gap:0.4rem;flex:1;justify-content:center;">
<label class="xp-label" style="font-size:0.75rem;text-transform:uppercase;white-space:nowrap;">{{localize 'l5r5e.advancements.total'}}</label>
<input class="xp-value" type="number" name="system.xp_total" value="{{data.system.xp_total}}" min="0" style="width:3.5rem;text-align:center;" {{#unless data.editable_not_soft_locked}}disabled{{/unless}} />
</div>
<div class="xp-block" style="display:flex;flex-direction:row;align-items:center;gap:0.4rem;flex:1;justify-content:center;border-left:1px solid rgba(120,20,20,0.25);padding-left:1rem;">
<label class="xp-label" style="font-size:0.75rem;text-transform:uppercase;white-space:nowrap;">{{localize 'l5r5e.advancements.spent'}}</label>
<input class="xp-value" type="number" value="{{data.system.xp_spent}}" disabled style="width:3.5rem;text-align:center;" />
</div>
<div class="xp-block" style="display:flex;flex-direction:row;align-items:center;gap:0.4rem;flex:1;justify-content:center;border-left:1px solid rgba(120,20,20,0.25);padding-left:1rem;">
<label class="xp-label" style="font-size:0.75rem;text-transform:uppercase;white-space:nowrap;">{{localize 'l5r5e.advancements.saved'}}</label>
<input class="xp-value" type="number" value="{{data.system.xp_saved}}" disabled style="width:3.5rem;text-align:center;" />
</div>
</div>
{{!-- School progession --}} {{!-- School progession --}}
<fieldset class="advancement advancements-body"> <fieldset class="advancement advancements-body">
<legend class="tools"> <legend class="tools">
@@ -10,14 +26,6 @@
<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>
{{/if}} {{/if}}
</legend> </legend>
<nav class="advancements-tabs tabs" data-group="advancements">
<a class="item advancements-tab" data-tab="advancement_rank_0">{{localize 'l5r5e.advancements.school_rank_0'}}</a>
{{#each data.advancementsListByRank as |rankObject|}}
{{#ifCond rank '>' 0}}
<a class="item advancements-tab" data-tab="advancement_rank_{{rank}}" title="{{localize 'l5r5e.advancements.school_rank'}} {{rankObject.rank}}">{{rankObject.rank}}</a>
{{/ifCond}}
{{/each}}
</nav>
<table> <table>
<thead class="flex"> <thead class="flex">
<tr class="flexrow row"> <tr class="flexrow row">
@@ -37,7 +45,7 @@
{{#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)}}
<tr class="tfoot flexrow row tab" data-group="advancements" data-tab="advancement_rank_{{rankObject.rank}}"> <tr class="tfoot flexrow row">
<th> <th>
<button type="button" name="validate-curriculum"> <button type="button" name="validate-curriculum">
<i class='fas fa-check-square'></i> {{ localize 'l5r5e.advancements.curriculum_validate'}} <i class='fas fa-check-square'></i> {{ localize 'l5r5e.advancements.curriculum_validate'}}
@@ -12,7 +12,7 @@
<li class="item technique flexcol" data-item-id="{{item._id}}"> <li class="item technique flexcol" data-item-id="{{item._id}}">
<ul class="item-header technique-controls"> <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-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> <li class="item-name dice-picker-arcane l5r5e-tooltip" data-item-id="{{item._id}}">{{item.name}}</li>
{{#if ../data.editable_not_soft_locked}} {{#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-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> <li data-item-id="{{item._id}}" class="item-control item-delete" title="{{localize 'Delete'}}"><i class="fas fa-trash"></i></li>
@@ -8,14 +8,12 @@
<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}}" data-type="equipped" class="equip-readied-control" title="{{localize 'l5r5e.armors.equipped'}}"><i class="fas {{#if weapon.system.equipped}}fa-tshirt{{else}}fa-weight-hanging{{/if}}"></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-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">
<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>
{{#each weapon.system.properties as |property|}} {{#each weapon.system.properties as |property|}}
<li class="l5r5e-tooltip" data-property-id="{{property.id}}">{{{property.name}}}</li> <li class="l5r5e-tooltip" data-property-id="{{property.id}}">{{{property.name}}}</li>
{{/each}} {{/each}}