Rework complet des fiches et dialog de jets
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
# Les Chroniques de l'étrange
|
# Les Chroniques de l'étrange pour FoundryVTT
|
||||||
|
|
||||||
A rudimentary implementation of Les Chroniques de l'étrange for Foundry VTT.
|
Implémentation du JDR Les Chroniques de l'Etrange de Antre-Monde éditions.
|
||||||
|
|
||||||
The 2 integrated CdE d10 die sets – for dice-so-nice extension – look nicer with 'white', 'paper', and plastic' dice options selected in this very extension.
|
|
||||||
|
|||||||
@@ -29,12 +29,21 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.cde-sheet input,
|
.cde-sheet input,
|
||||||
.cde-sheet select,
|
|
||||||
.cde-sheet textarea {
|
.cde-sheet textarea {
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
color: #e2e8f4;
|
color: #e2e8f4;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
.cde-sheet select {
|
||||||
|
font-family: inherit;
|
||||||
|
color: #e2e8f4;
|
||||||
|
background: #101622;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
.cde-sheet select option {
|
||||||
|
background: #080c14;
|
||||||
|
color: #e2e8f4;
|
||||||
|
}
|
||||||
.cde-neon-header {
|
.cde-neon-header {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: #101622;
|
background: #101622;
|
||||||
@@ -182,8 +191,7 @@
|
|||||||
color: #e2e8f4;
|
color: #e2e8f4;
|
||||||
letter-spacing: 0.02em;
|
letter-spacing: 0.02em;
|
||||||
}
|
}
|
||||||
.cde-stat-cell input,
|
.cde-stat-cell input {
|
||||||
.cde-stat-cell select {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border: none;
|
border: none;
|
||||||
@@ -194,7 +202,18 @@
|
|||||||
outline: none;
|
outline: none;
|
||||||
transition: border-color 0.15s;
|
transition: border-color 0.15s;
|
||||||
}
|
}
|
||||||
.cde-stat-cell input:focus,
|
.cde-stat-cell input:focus {
|
||||||
|
border-bottom-color: #00d4d4;
|
||||||
|
}
|
||||||
|
.cde-stat-cell select {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid #1a2436;
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 4px 0;
|
||||||
|
outline: none;
|
||||||
|
transition: border-color 0.15s;
|
||||||
|
}
|
||||||
.cde-stat-cell select:focus {
|
.cde-stat-cell select:focus {
|
||||||
border-bottom-color: #00d4d4;
|
border-bottom-color: #00d4d4;
|
||||||
}
|
}
|
||||||
@@ -492,8 +511,7 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
color: #7d94b8;
|
color: #7d94b8;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
.cde-chip input,
|
.cde-chip input {
|
||||||
.cde-chip select {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: none;
|
border: none;
|
||||||
border-bottom: 1px solid #1a2436;
|
border-bottom: 1px solid #1a2436;
|
||||||
@@ -502,7 +520,16 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
.cde-chip input:focus,
|
.cde-chip input:focus {
|
||||||
|
border-bottom-color: #00d4d4;
|
||||||
|
}
|
||||||
|
.cde-chip select {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid #1a2436;
|
||||||
|
padding: 4px 0;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
.cde-chip select:focus {
|
.cde-chip select:focus {
|
||||||
border-bottom-color: #00d4d4;
|
border-bottom-color: #00d4d4;
|
||||||
}
|
}
|
||||||
@@ -738,7 +765,6 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
color: #7d94b8;
|
color: #7d94b8;
|
||||||
}
|
}
|
||||||
.cde-field input,
|
.cde-field input,
|
||||||
.cde-field select,
|
|
||||||
.cde-field textarea {
|
.cde-field textarea {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: none;
|
border: none;
|
||||||
@@ -749,10 +775,19 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
.cde-field input:focus,
|
.cde-field input:focus,
|
||||||
.cde-field select:focus,
|
|
||||||
.cde-field textarea:focus {
|
.cde-field textarea:focus {
|
||||||
border-bottom-color: #00d4d4;
|
border-bottom-color: #00d4d4;
|
||||||
}
|
}
|
||||||
|
.cde-field select {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid #1a2436;
|
||||||
|
padding: 5px 0;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.cde-field select:focus {
|
||||||
|
border-bottom-color: #00d4d4;
|
||||||
|
}
|
||||||
.cde-section-title {
|
.cde-section-title {
|
||||||
font-family: "Averia", sans-serif;
|
font-family: "Averia", sans-serif;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
@@ -793,8 +828,7 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
.cde-data-table tr:hover {
|
.cde-data-table tr:hover {
|
||||||
background: rgba(38, 56, 83, 0.2);
|
background: rgba(38, 56, 83, 0.2);
|
||||||
}
|
}
|
||||||
.cde-data-table input,
|
.cde-data-table input {
|
||||||
.cde-data-table select {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: none;
|
border: none;
|
||||||
border-bottom: 1px solid #1a2436;
|
border-bottom: 1px solid #1a2436;
|
||||||
@@ -803,6 +837,13 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
.cde-data-table select {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid #1a2436;
|
||||||
|
padding: 4px 0;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
.cde-centered-card {
|
.cde-centered-card {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
@@ -1222,6 +1263,763 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
letter-spacing: 0.06em;
|
letter-spacing: 0.06em;
|
||||||
color: #7d94b8;
|
color: #7d94b8;
|
||||||
}
|
}
|
||||||
|
.cde-section-label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.12em;
|
||||||
|
color: #7d94b8;
|
||||||
|
border-bottom: 1px solid #1a2436;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.cde-section-label i {
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
.cde-section-label--top-margin {
|
||||||
|
margin-top: 18px;
|
||||||
|
}
|
||||||
|
.cde-components-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 6px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.cde-component-cell {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
background: #101622;
|
||||||
|
border: 1px solid #1a2436;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 4px 8px;
|
||||||
|
}
|
||||||
|
.cde-component-cell:hover {
|
||||||
|
border-color: #263853;
|
||||||
|
}
|
||||||
|
.cde-component-die {
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
opacity: 0.85;
|
||||||
|
}
|
||||||
|
.cde-component-input {
|
||||||
|
flex: 1;
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
|
color: #e2e8f4;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
.cde-component-input:focus {
|
||||||
|
outline: none;
|
||||||
|
border-bottom-color: #4a9eff;
|
||||||
|
}
|
||||||
|
.cde-component-input::placeholder {
|
||||||
|
color: #7d94b8;
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
.cde-component-random-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
.cde-btn-random-component {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 6px 16px;
|
||||||
|
background: rgba(74, 158, 255, 0.08);
|
||||||
|
border: 1px solid rgba(74, 158, 255, 0.35);
|
||||||
|
border-radius: 8px;
|
||||||
|
color: #4a9eff;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
font-size: 11px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background 0.15s, box-shadow 0.15s;
|
||||||
|
}
|
||||||
|
.cde-btn-random-component i {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.cde-btn-random-component:hover {
|
||||||
|
background: rgba(74, 158, 255, 0.16);
|
||||||
|
box-shadow: 0 0 8px rgba(74, 158, 255, 0.3);
|
||||||
|
}
|
||||||
|
.cde-magic-card {
|
||||||
|
background: #101622;
|
||||||
|
border: 1px solid #1a2436;
|
||||||
|
border-left: 3px solid #263853;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
.cde-magic-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
.cde-magic-aspect-icon {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-magic-info {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1px;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
.cde-magic-name {
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #e2e8f4;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.cde-magic-aspect-name {
|
||||||
|
font-size: 10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
color: #7d94b8;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
}
|
||||||
|
.cde-magic-value-input {
|
||||||
|
width: 52px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-magic-roll-btn {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background 0.15s;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-magic-roll-btn i {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
.cde-magic-roll-btn:hover {
|
||||||
|
background: rgba(74, 158, 255, 0.15);
|
||||||
|
}
|
||||||
|
.cde-magic-toggle {
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #7d94b8;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-magic-toggle input[type="checkbox"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.cde-magic-toggle i {
|
||||||
|
font-size: 11px;
|
||||||
|
transition: color 0.15s;
|
||||||
|
}
|
||||||
|
.cde-magic-toggle:hover i {
|
||||||
|
color: #e2e8f4;
|
||||||
|
}
|
||||||
|
.cde-magic-specialities {
|
||||||
|
border-top: 1px solid #1a2436;
|
||||||
|
padding: 4px 0;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 5px 10px 5px 42px;
|
||||||
|
opacity: 0.55;
|
||||||
|
transition: opacity 0.12s, background 0.12s;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-row:hover {
|
||||||
|
opacity: 1;
|
||||||
|
background: rgba(38, 56, 83, 0.3);
|
||||||
|
}
|
||||||
|
.cde-magic-spec-row--active {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-check-label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-check-label input[type="checkbox"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-check-label .cde-spec-checkbox-ui {
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
border: 1px solid #7d94b8;
|
||||||
|
border-radius: 3px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
transition: border-color 0.12s, background 0.12s;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-check-label input:checked + .cde-spec-checkbox-ui {
|
||||||
|
background: #4a9eff;
|
||||||
|
border-color: #4a9eff;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-check-label input:checked + .cde-spec-checkbox-ui::after {
|
||||||
|
content: "✓";
|
||||||
|
font-size: 9px;
|
||||||
|
color: #080c14;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-element {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-polarity {
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.06em;
|
||||||
|
color: #7d94b8;
|
||||||
|
width: 42px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-polarity.icon-yin {
|
||||||
|
color: #cc44ff;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-polarity.icon-yang {
|
||||||
|
color: #00d4d4;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-polarity.icon-yinyang {
|
||||||
|
color: #4a9eff;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-name {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #e2e8f4;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-roll-btn {
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #7d94b8;
|
||||||
|
flex-shrink: 0;
|
||||||
|
transition: color 0.15s, background 0.15s;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-roll-btn i {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.cde-magic-spec-roll-btn:hover {
|
||||||
|
color: #4a9eff;
|
||||||
|
background: rgba(74, 158, 255, 0.12);
|
||||||
|
}
|
||||||
|
.cde-magic--internalcinnabar {
|
||||||
|
border-left-color: #70706e;
|
||||||
|
}
|
||||||
|
.cde-magic--internalcinnabar .cde-magic-name {
|
||||||
|
color: #a3a3a1;
|
||||||
|
}
|
||||||
|
.cde-magic--internalcinnabar .cde-magic-roll-btn i {
|
||||||
|
color: #70706e;
|
||||||
|
}
|
||||||
|
.cde-magic--alchemy {
|
||||||
|
border-left-color: #009fe2;
|
||||||
|
}
|
||||||
|
.cde-magic--alchemy .cde-magic-name {
|
||||||
|
color: #30c1ff;
|
||||||
|
}
|
||||||
|
.cde-magic--alchemy .cde-magic-roll-btn i {
|
||||||
|
color: #009fe2;
|
||||||
|
}
|
||||||
|
.cde-magic--masteryoftheway {
|
||||||
|
border-left-color: #a85747;
|
||||||
|
}
|
||||||
|
.cde-magic--masteryoftheway .cde-magic-name {
|
||||||
|
color: #cd9488;
|
||||||
|
}
|
||||||
|
.cde-magic--masteryoftheway .cde-magic-roll-btn i {
|
||||||
|
color: #be7364;
|
||||||
|
}
|
||||||
|
.cde-magic--exorcism {
|
||||||
|
border-left-color: #cd171a;
|
||||||
|
}
|
||||||
|
.cde-magic--exorcism .cde-magic-name {
|
||||||
|
color: #ed5d60;
|
||||||
|
}
|
||||||
|
.cde-magic--exorcism .cde-magic-roll-btn i {
|
||||||
|
color: #cd171a;
|
||||||
|
}
|
||||||
|
.cde-magic--geomancy {
|
||||||
|
border-left-color: #41a436;
|
||||||
|
}
|
||||||
|
.cde-magic--geomancy .cde-magic-name {
|
||||||
|
color: #68ca5d;
|
||||||
|
}
|
||||||
|
.cde-magic--geomancy .cde-magic-roll-btn i {
|
||||||
|
color: #41a436;
|
||||||
|
}
|
||||||
|
.cde-grimoire-section {
|
||||||
|
border-top: 1px dashed rgba(26, 36, 54, 0.6);
|
||||||
|
margin-top: 6px;
|
||||||
|
padding-top: 6px;
|
||||||
|
}
|
||||||
|
.cde-grimoire-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
padding: 4px 10px;
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
color: #7d94b8;
|
||||||
|
}
|
||||||
|
.cde-grimoire-header i {
|
||||||
|
font-size: 10px;
|
||||||
|
color: #4a9eff;
|
||||||
|
}
|
||||||
|
.cde-grimoire-header span {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.cde-grimoire-add {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
border-radius: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #7d94b8;
|
||||||
|
transition: color 0.12s, background 0.12s;
|
||||||
|
}
|
||||||
|
.cde-grimoire-add i {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
.cde-grimoire-add:hover {
|
||||||
|
color: #4a9eff;
|
||||||
|
background: rgba(74, 158, 255, 0.15);
|
||||||
|
}
|
||||||
|
.cde-grimoire-list {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.cde-grimoire-entry {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
padding: 4px 10px 4px 14px;
|
||||||
|
border-bottom: 1px solid rgba(26, 36, 54, 0.4);
|
||||||
|
transition: background 0.1s;
|
||||||
|
}
|
||||||
|
.cde-grimoire-entry:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.cde-grimoire-entry:hover {
|
||||||
|
background: rgba(26, 36, 54, 0.25);
|
||||||
|
}
|
||||||
|
.cde-grimoire-entry:hover .cde-grimoire-controls {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.cde-grimoire-img {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
object-fit: contain;
|
||||||
|
border-radius: 2px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-grimoire-name {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #e2e8f4;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.cde-grimoire-meta {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
font-size: 10px;
|
||||||
|
color: #7d94b8;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-grimoire-meta em {
|
||||||
|
color: #4a9eff;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 10px;
|
||||||
|
max-width: 80px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.cde-grimoire-diff,
|
||||||
|
.cde-grimoire-hei {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 3px;
|
||||||
|
}
|
||||||
|
.cde-grimoire-diff i,
|
||||||
|
.cde-grimoire-hei i {
|
||||||
|
font-size: 9px;
|
||||||
|
}
|
||||||
|
.cde-grimoire-diff {
|
||||||
|
color: #7d94b8;
|
||||||
|
}
|
||||||
|
.cde-grimoire-hei {
|
||||||
|
color: #ff3d5a;
|
||||||
|
}
|
||||||
|
.cde-grimoire-controls {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.12s;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-grimoire-controls a {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #7d94b8;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.12s, background 0.12s;
|
||||||
|
}
|
||||||
|
.cde-grimoire-controls a i {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
.cde-grimoire-controls a:hover {
|
||||||
|
color: #e2e8f4;
|
||||||
|
background: rgba(38, 56, 83, 0.3);
|
||||||
|
}
|
||||||
|
.cde-grimoire-empty {
|
||||||
|
padding: 4px 14px 8px;
|
||||||
|
font-size: 11px;
|
||||||
|
color: #7d94b8;
|
||||||
|
font-style: italic;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.cde-kf-add-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding: 4px 0 8px;
|
||||||
|
}
|
||||||
|
.cde-kf-add-btn {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
font-size: 11px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
color: #7d94b8;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 4px 10px;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid #1a2436;
|
||||||
|
transition: color 0.12s, border-color 0.12s, background 0.12s;
|
||||||
|
}
|
||||||
|
.cde-kf-add-btn i {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
.cde-kf-add-btn:hover {
|
||||||
|
color: #ff3d5a;
|
||||||
|
border-color: #ff3d5a;
|
||||||
|
background: rgba(255, 61, 90, 0.08);
|
||||||
|
}
|
||||||
|
.cde-kf-card {
|
||||||
|
border: 1px solid #1a2436;
|
||||||
|
border-left: 3px solid #ff3d5a;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: rgba(16, 22, 34, 0.7);
|
||||||
|
margin-bottom: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: box-shadow 0.15s;
|
||||||
|
}
|
||||||
|
.cde-kf-card:hover {
|
||||||
|
box-shadow: 0 0 8px rgba(255, 61, 90, 0.2);
|
||||||
|
}
|
||||||
|
.cde-kf-card.cde-kf--metal {
|
||||||
|
border-left-color: #70706e;
|
||||||
|
}
|
||||||
|
.cde-kf-card.cde-kf--eau {
|
||||||
|
border-left-color: #009fe2;
|
||||||
|
}
|
||||||
|
.cde-kf-card.cde-kf--terre {
|
||||||
|
border-left-color: #be7364;
|
||||||
|
}
|
||||||
|
.cde-kf-card.cde-kf--feu {
|
||||||
|
border-left-color: #cd171a;
|
||||||
|
}
|
||||||
|
.cde-kf-card.cde-kf--bois {
|
||||||
|
border-left-color: #41a436;
|
||||||
|
}
|
||||||
|
.cde-kf-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
.cde-kf-header:hover .cde-kf-controls {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.cde-kf-aspect-icon {
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-kf-orient-icon {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
opacity: 0.75;
|
||||||
|
}
|
||||||
|
.cde-kf-info {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
.cde-kf-name {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
color: #e2e8f4;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.cde-kf-meta {
|
||||||
|
font-size: 10px;
|
||||||
|
color: #7d94b8;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.06em;
|
||||||
|
}
|
||||||
|
.cde-kf-meta em {
|
||||||
|
color: #e2e8f4;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
.cde-kf-roll-btn {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #7d94b8;
|
||||||
|
flex-shrink: 0;
|
||||||
|
transition: color 0.15s, background 0.15s;
|
||||||
|
}
|
||||||
|
.cde-kf-roll-btn i {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.cde-kf-roll-btn:hover {
|
||||||
|
color: #ff3d5a;
|
||||||
|
background: rgba(255, 61, 90, 0.15);
|
||||||
|
}
|
||||||
|
.cde-kf-controls {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.12s;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-kf-controls a {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #7d94b8;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.12s, background 0.12s;
|
||||||
|
}
|
||||||
|
.cde-kf-controls a i {
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
.cde-kf-controls a:hover {
|
||||||
|
color: #e2e8f4;
|
||||||
|
background: rgba(38, 56, 83, 0.3);
|
||||||
|
}
|
||||||
|
.cde-kf-style-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 4px 12px 6px 44px;
|
||||||
|
border-top: 1px solid rgba(26, 36, 54, 0.6);
|
||||||
|
background: rgba(16, 22, 34, 0.4);
|
||||||
|
}
|
||||||
|
.cde-kf-style-label {
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
color: #ff3d5a;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.cde-kf-style-label i {
|
||||||
|
font-size: 9px;
|
||||||
|
}
|
||||||
|
.cde-kf-style-text {
|
||||||
|
font-size: 11px;
|
||||||
|
color: #e2e8f4;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.cde-kf-techniques {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border-top: 1px solid rgba(26, 36, 54, 0.5);
|
||||||
|
}
|
||||||
|
.cde-kf-tech {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
padding: 5px 12px 5px 44px;
|
||||||
|
border-bottom: 1px solid rgba(26, 36, 54, 0.3);
|
||||||
|
opacity: 0.5;
|
||||||
|
transition: opacity 0.1s, background 0.1s;
|
||||||
|
}
|
||||||
|
.cde-kf-tech:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.cde-kf-tech--mastered {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.cde-kf-tech:hover {
|
||||||
|
background: rgba(26, 36, 54, 0.2);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.cde-kf-tech-mastered {
|
||||||
|
font-size: 11px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
width: 14px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.cde-kf-tech--mastered .cde-kf-tech-mastered {
|
||||||
|
color: #ff3d5a;
|
||||||
|
}
|
||||||
|
.cde-kf-tech:not(.cde-kf-tech--mastered) .cde-kf-tech-mastered {
|
||||||
|
color: #7d94b8;
|
||||||
|
}
|
||||||
|
.cde-act-badge {
|
||||||
|
font-size: 9px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
padding: 2px 5px;
|
||||||
|
border-radius: 3px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
max-width: 110px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
border: 1px solid currentColor;
|
||||||
|
}
|
||||||
|
.cde-act-badge.cde-act--action-attack {
|
||||||
|
color: #cd171a;
|
||||||
|
background: rgba(205, 23, 26, 0.1);
|
||||||
|
}
|
||||||
|
.cde-act-badge.cde-act--action-defense {
|
||||||
|
color: #009fe2;
|
||||||
|
background: rgba(0, 159, 226, 0.1);
|
||||||
|
}
|
||||||
|
.cde-act-badge.cde-act--action-aid {
|
||||||
|
color: #41a436;
|
||||||
|
background: rgba(65, 164, 54, 0.1);
|
||||||
|
}
|
||||||
|
.cde-act-badge.cde-act--action-attack-defense {
|
||||||
|
color: #70706e;
|
||||||
|
background: rgba(112, 112, 110, 0.12);
|
||||||
|
}
|
||||||
|
.cde-act-badge.cde-act--reaction {
|
||||||
|
color: #a85747;
|
||||||
|
background: rgba(168, 87, 71, 0.12);
|
||||||
|
}
|
||||||
|
.cde-act-badge.cde-act--dice {
|
||||||
|
color: #4a9eff;
|
||||||
|
background: rgba(74, 158, 255, 0.1);
|
||||||
|
}
|
||||||
|
.cde-act-badge.cde-act--damage-inflicted {
|
||||||
|
color: #ff6b35;
|
||||||
|
background: rgba(255, 107, 53, 0.1);
|
||||||
|
}
|
||||||
|
.cde-act-badge.cde-act--damage-received {
|
||||||
|
color: #7d94b8;
|
||||||
|
background: rgba(26, 36, 54, 0.2);
|
||||||
|
}
|
||||||
|
.cde-kf-tech-name {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #e2e8f4;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.cde-kf-tech-name em {
|
||||||
|
color: #7d94b8;
|
||||||
|
}
|
||||||
|
.cde-kf-empty {
|
||||||
|
padding: 16px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #7d94b8;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.cde-chat-random-component {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
}
|
||||||
|
.cde-chat-component-label {
|
||||||
|
font-size: 10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
color: #7d94b8;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
}
|
||||||
|
.cde-chat-component-value {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #4a9eff;
|
||||||
|
text-shadow: 0 0 8px rgba(74, 158, 255, 0.5);
|
||||||
|
}
|
||||||
.cde-tabs {
|
.cde-tabs {
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
border-bottom: 1px solid #1a2436;
|
border-bottom: 1px solid #1a2436;
|
||||||
|
|||||||
@@ -69,11 +69,24 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
input, select, textarea {
|
input, textarea {
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
color: @cde-text;
|
color: @cde-text;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Selects need an explicit dark background — transparent fails on native dropdowns
|
||||||
|
select {
|
||||||
|
font-family: inherit;
|
||||||
|
color: @cde-text;
|
||||||
|
background: @cde-surface;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
select option {
|
||||||
|
background: @cde-bg;
|
||||||
|
color: @cde-text;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
@@ -213,8 +226,7 @@
|
|||||||
letter-spacing: 0.02em;
|
letter-spacing: 0.02em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cde-stat-cell input,
|
.cde-stat-cell input {
|
||||||
.cde-stat-cell select {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border: none;
|
border: none;
|
||||||
@@ -225,9 +237,19 @@
|
|||||||
outline: none;
|
outline: none;
|
||||||
transition: border-color 0.15s;
|
transition: border-color 0.15s;
|
||||||
|
|
||||||
&:focus {
|
&:focus { border-bottom-color: @cde-item; }
|
||||||
border-bottom-color: @cde-item;
|
}
|
||||||
}
|
|
||||||
|
.cde-stat-cell select {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid @cde-border;
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 4px 0;
|
||||||
|
outline: none;
|
||||||
|
transition: border-color 0.15s;
|
||||||
|
|
||||||
|
&:focus { border-bottom-color: @cde-item; }
|
||||||
}
|
}
|
||||||
|
|
||||||
.cde-neon-header.kungfu .cde-stat-cell input:focus,
|
.cde-neon-header.kungfu .cde-stat-cell input:focus,
|
||||||
@@ -504,7 +526,7 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
input, select {
|
input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: none;
|
border: none;
|
||||||
border-bottom: 1px solid @cde-border;
|
border-bottom: 1px solid @cde-border;
|
||||||
@@ -516,6 +538,16 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
&:focus { border-bottom-color: @cde-item; }
|
&:focus { border-bottom-color: @cde-item; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid @cde-border;
|
||||||
|
padding: 4px 0;
|
||||||
|
outline: none;
|
||||||
|
|
||||||
|
&:focus { border-bottom-color: @cde-item; }
|
||||||
|
}
|
||||||
|
|
||||||
input[type="checkbox"] {
|
input[type="checkbox"] {
|
||||||
width: auto;
|
width: auto;
|
||||||
align-self: flex-start;
|
align-self: flex-start;
|
||||||
@@ -754,7 +786,7 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
color: @cde-muted;
|
color: @cde-muted;
|
||||||
}
|
}
|
||||||
|
|
||||||
input, select, textarea {
|
input, textarea {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: none;
|
border: none;
|
||||||
border-bottom: 1px solid @cde-border;
|
border-bottom: 1px solid @cde-border;
|
||||||
@@ -765,6 +797,16 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
|
|
||||||
&:focus { border-bottom-color: @cde-item; }
|
&:focus { border-bottom-color: @cde-item; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid @cde-border;
|
||||||
|
padding: 5px 0;
|
||||||
|
outline: none;
|
||||||
|
|
||||||
|
&:focus { border-bottom-color: @cde-item; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cde-section-title {
|
.cde-section-title {
|
||||||
@@ -809,7 +851,7 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
tr:nth-child(even) { background: fade(@cde-surface, 50%); }
|
tr:nth-child(even) { background: fade(@cde-surface, 50%); }
|
||||||
tr:hover { background: fade(@cde-border-hi, 20%); }
|
tr:hover { background: fade(@cde-border-hi, 20%); }
|
||||||
|
|
||||||
input, select {
|
input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: none;
|
border: none;
|
||||||
border-bottom: 1px solid @cde-border;
|
border-bottom: 1px solid @cde-border;
|
||||||
@@ -818,6 +860,14 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid @cde-border;
|
||||||
|
padding: 4px 0;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cde-centered-card {
|
.cde-centered-card {
|
||||||
@@ -1227,6 +1277,727 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Magics tab — components grid + magic cards
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
.cde-section-label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.12em;
|
||||||
|
color: @cde-muted;
|
||||||
|
border-bottom: 1px solid @cde-border;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
i { font-size: 11px; }
|
||||||
|
|
||||||
|
&--top-margin { margin-top: 18px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2-column grid for the 10 components
|
||||||
|
.cde-components-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 6px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-component-cell {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
background: @cde-surface;
|
||||||
|
border: 1px solid @cde-border;
|
||||||
|
border-radius: @cde-radius;
|
||||||
|
padding: 4px 8px;
|
||||||
|
|
||||||
|
&:hover { border-color: @cde-border-hi; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-component-die {
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
opacity: 0.85;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-component-input {
|
||||||
|
flex: 1;
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
|
color: @cde-text;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 2px 0;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
border-bottom-color: @cde-spell;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::placeholder { color: @cde-muted; font-style: italic; font-size: 11px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-component-random-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-btn-random-component {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 6px 16px;
|
||||||
|
background: fade(@cde-spell, 8%);
|
||||||
|
border: 1px solid fade(@cde-spell, 35%);
|
||||||
|
border-radius: @cde-radius;
|
||||||
|
color: @cde-spell;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
font-size: 11px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background 0.15s, box-shadow 0.15s;
|
||||||
|
|
||||||
|
i { font-size: 14px; }
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: fade(@cde-spell, 16%);
|
||||||
|
box-shadow: 0 0 8px fade(@cde-spell, 30%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// === Magic type cards ===
|
||||||
|
.cde-magic-card {
|
||||||
|
background: @cde-surface;
|
||||||
|
border: 1px solid @cde-border;
|
||||||
|
border-left: 3px solid @cde-border-hi;
|
||||||
|
border-radius: @cde-radius;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: @cde-shadow-sm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-aspect-icon {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-info {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1px;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-name {
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: @cde-text;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-aspect-name {
|
||||||
|
font-size: 10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
color: @cde-muted;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-value-input {
|
||||||
|
width: 52px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-roll-btn {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: @cde-radius;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background 0.15s;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
i { font-size: 15px; }
|
||||||
|
|
||||||
|
&:hover { background: fade(@cde-spell, 15%); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-toggle {
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
color: @cde-muted;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
input[type="checkbox"] { display: none; }
|
||||||
|
|
||||||
|
i { font-size: 11px; transition: color 0.15s; }
|
||||||
|
|
||||||
|
&:hover i { color: @cde-text; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Specialities list
|
||||||
|
.cde-magic-specialities {
|
||||||
|
border-top: 1px solid @cde-border;
|
||||||
|
padding: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-spec-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 5px 10px 5px 42px; // indent aligned with aspect icon
|
||||||
|
opacity: 0.55;
|
||||||
|
transition: opacity 0.12s, background 0.12s;
|
||||||
|
|
||||||
|
&:hover { opacity: 1; background: fade(@cde-border-hi, 30%); }
|
||||||
|
&--active { opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-spec-check-label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
input[type="checkbox"] { display: none; }
|
||||||
|
|
||||||
|
.cde-spec-checkbox-ui {
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
border: 1px solid @cde-muted;
|
||||||
|
border-radius: 3px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
transition: border-color 0.12s, background 0.12s;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:checked + .cde-spec-checkbox-ui {
|
||||||
|
background: @cde-spell;
|
||||||
|
border-color: @cde-spell;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: "✓";
|
||||||
|
font-size: 9px;
|
||||||
|
color: @cde-bg;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-spec-element {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-spec-polarity {
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.06em;
|
||||||
|
color: @cde-muted;
|
||||||
|
width: 42px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
&.icon-yin { color: @cde-supernatural; }
|
||||||
|
&.icon-yang { color: @cde-item; }
|
||||||
|
&.icon-yinyang { color: @cde-spell; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-spec-name {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 12px;
|
||||||
|
color: @cde-text;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-magic-spec-roll-btn {
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: @cde-radius;
|
||||||
|
cursor: pointer;
|
||||||
|
color: @cde-muted;
|
||||||
|
flex-shrink: 0;
|
||||||
|
transition: color 0.15s, background 0.15s;
|
||||||
|
|
||||||
|
i { font-size: 12px; }
|
||||||
|
|
||||||
|
&:hover { color: @cde-spell; background: fade(@cde-spell, 12%); }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Per-magic accent colors using direct Wu Xing LESS variables
|
||||||
|
.cde-magic--internalcinnabar {
|
||||||
|
border-left-color: @wu-gray;
|
||||||
|
.cde-magic-name { color: lighten(@wu-gray, 20%); }
|
||||||
|
.cde-magic-roll-btn i { color: @wu-gray; }
|
||||||
|
}
|
||||||
|
.cde-magic--alchemy {
|
||||||
|
border-left-color: @wu-blue;
|
||||||
|
.cde-magic-name { color: lighten(@wu-blue, 15%); }
|
||||||
|
.cde-magic-roll-btn i { color: @wu-blue; }
|
||||||
|
}
|
||||||
|
.cde-magic--masteryoftheway {
|
||||||
|
border-left-color: @wu-brown;
|
||||||
|
.cde-magic-name { color: lighten(@wu-brown, 20%); }
|
||||||
|
.cde-magic-roll-btn i { color: lighten(@wu-brown, 10%); }
|
||||||
|
}
|
||||||
|
.cde-magic--exorcism {
|
||||||
|
border-left-color: @wu-red;
|
||||||
|
.cde-magic-name { color: lighten(@wu-red, 20%); }
|
||||||
|
.cde-magic-roll-btn i { color: @wu-red; }
|
||||||
|
}
|
||||||
|
.cde-magic--geomancy {
|
||||||
|
border-left-color: @wu-green;
|
||||||
|
.cde-magic-name { color: lighten(@wu-green, 15%); }
|
||||||
|
.cde-magic-roll-btn i { color: @wu-green; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// =====================================================================
|
||||||
|
// GRIMOIRE (spell list integrated in magic discipline cards)
|
||||||
|
// =====================================================================
|
||||||
|
|
||||||
|
.cde-grimoire-section {
|
||||||
|
border-top: 1px dashed fade(@cde-border, 60%);
|
||||||
|
margin-top: 6px;
|
||||||
|
padding-top: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
padding: 4px 10px;
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
color: @cde-muted;
|
||||||
|
|
||||||
|
i { font-size: 10px; color: @cde-spell; }
|
||||||
|
|
||||||
|
span { flex: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-add {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
border-radius: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
color: @cde-muted;
|
||||||
|
transition: color 0.12s, background 0.12s;
|
||||||
|
|
||||||
|
i { font-size: 10px; }
|
||||||
|
|
||||||
|
&:hover { color: @cde-spell; background: fade(@cde-spell, 15%); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-list {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-entry {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
padding: 4px 10px 4px 14px;
|
||||||
|
border-bottom: 1px solid fade(@cde-border, 40%);
|
||||||
|
transition: background 0.1s;
|
||||||
|
|
||||||
|
&:last-child { border-bottom: none; }
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: fade(@cde-border, 25%);
|
||||||
|
|
||||||
|
.cde-grimoire-controls { opacity: 1; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-img {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
object-fit: contain;
|
||||||
|
border-radius: 2px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-name {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 12px;
|
||||||
|
color: @cde-text;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-meta {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
font-size: 10px;
|
||||||
|
color: @cde-muted;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
em {
|
||||||
|
color: @cde-spell;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 10px;
|
||||||
|
max-width: 80px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-diff, .cde-grimoire-hei {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 3px;
|
||||||
|
|
||||||
|
i { font-size: 9px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-diff { color: @cde-muted; }
|
||||||
|
.cde-grimoire-hei { color: @cde-kungfu; }
|
||||||
|
|
||||||
|
.cde-grimoire-controls {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.12s;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: @cde-muted;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.12s, background 0.12s;
|
||||||
|
|
||||||
|
i { font-size: 10px; }
|
||||||
|
|
||||||
|
&:hover { color: @cde-text; background: fade(@cde-border-hi, 30%); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-grimoire-empty {
|
||||||
|
padding: 4px 14px 8px;
|
||||||
|
font-size: 11px;
|
||||||
|
color: @cde-muted;
|
||||||
|
font-style: italic;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =====================================================================
|
||||||
|
// KUNG-FU CARDS (actor tab redesign)
|
||||||
|
// =====================================================================
|
||||||
|
|
||||||
|
.cde-kf-add-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding: 4px 0 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-add-btn {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
font-size: 11px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
color: @cde-muted;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 4px 10px;
|
||||||
|
border-radius: @cde-radius;
|
||||||
|
border: 1px solid @cde-border;
|
||||||
|
transition: color 0.12s, border-color 0.12s, background 0.12s;
|
||||||
|
|
||||||
|
i { font-size: 10px; }
|
||||||
|
|
||||||
|
&:hover { color: @cde-kungfu; border-color: @cde-kungfu; background: fade(@cde-kungfu, 8%); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-card {
|
||||||
|
border: 1px solid @cde-border;
|
||||||
|
border-left: 3px solid @cde-kungfu;
|
||||||
|
border-radius: @cde-radius;
|
||||||
|
background: fade(@cde-surface, 70%);
|
||||||
|
margin-bottom: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: box-shadow 0.15s;
|
||||||
|
|
||||||
|
&:hover { box-shadow: 0 0 8px fade(@cde-kungfu, 20%); }
|
||||||
|
|
||||||
|
&.cde-kf--metal { border-left-color: @wu-gray; }
|
||||||
|
&.cde-kf--eau { border-left-color: @wu-blue; }
|
||||||
|
&.cde-kf--terre { border-left-color: lighten(@wu-brown, 10%); }
|
||||||
|
&.cde-kf--feu { border-left-color: @wu-red; }
|
||||||
|
&.cde-kf--bois { border-left-color: @wu-green; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 8px 10px;
|
||||||
|
|
||||||
|
&:hover .cde-kf-controls { opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-aspect-icon {
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-orient-icon {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
object-fit: contain;
|
||||||
|
flex-shrink: 0;
|
||||||
|
opacity: 0.75;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-info {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-name {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
color: @cde-text;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-meta {
|
||||||
|
font-size: 10px;
|
||||||
|
color: @cde-muted;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.06em;
|
||||||
|
|
||||||
|
em { color: @cde-text; font-style: normal; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-roll-btn {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: @cde-radius;
|
||||||
|
cursor: pointer;
|
||||||
|
color: @cde-muted;
|
||||||
|
flex-shrink: 0;
|
||||||
|
transition: color 0.15s, background 0.15s;
|
||||||
|
|
||||||
|
i { font-size: 14px; }
|
||||||
|
|
||||||
|
&:hover { color: @cde-kungfu; background: fade(@cde-kungfu, 15%); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-controls {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.12s;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: @cde-muted;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.12s, background 0.12s;
|
||||||
|
|
||||||
|
i { font-size: 11px; }
|
||||||
|
|
||||||
|
&:hover { color: @cde-text; background: fade(@cde-border-hi, 30%); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-style-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 4px 12px 6px 44px;
|
||||||
|
border-top: 1px solid fade(@cde-border, 60%);
|
||||||
|
background: fade(@cde-surface, 40%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-style-label {
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
color: @cde-kungfu;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
i { font-size: 9px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-style-text {
|
||||||
|
font-size: 11px;
|
||||||
|
color: @cde-text;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-techniques {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border-top: 1px solid fade(@cde-border, 50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-tech {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
padding: 5px 12px 5px 44px;
|
||||||
|
border-bottom: 1px solid fade(@cde-border, 30%);
|
||||||
|
opacity: 0.5;
|
||||||
|
transition: opacity 0.1s, background 0.1s;
|
||||||
|
|
||||||
|
&:last-child { border-bottom: none; }
|
||||||
|
&--mastered { opacity: 1; }
|
||||||
|
&:hover { background: fade(@cde-border, 20%); opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-tech-mastered {
|
||||||
|
font-size: 11px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
width: 14px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.cde-kf-tech--mastered & { color: @cde-kungfu; }
|
||||||
|
.cde-kf-tech:not(.cde-kf-tech--mastered) & { color: @cde-muted; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-act-badge {
|
||||||
|
font-size: 9px;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
padding: 2px 5px;
|
||||||
|
border-radius: 3px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
max-width: 110px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
border: 1px solid currentColor;
|
||||||
|
|
||||||
|
&.cde-act--action-attack { color: @wu-red; background: fade(@wu-red, 10%); }
|
||||||
|
&.cde-act--action-defense { color: @wu-blue; background: fade(@wu-blue, 10%); }
|
||||||
|
&.cde-act--action-aid { color: @wu-green; background: fade(@wu-green, 10%); }
|
||||||
|
&.cde-act--action-attack-defense { color: @wu-gray; background: fade(@wu-gray, 12%); }
|
||||||
|
&.cde-act--reaction { color: @wu-brown; background: fade(@wu-brown, 12%); }
|
||||||
|
&.cde-act--dice { color: @cde-spell; background: fade(@cde-spell, 10%); }
|
||||||
|
&.cde-act--damage-inflicted { color: @cde-weapon; background: fade(@cde-weapon, 10%); }
|
||||||
|
&.cde-act--damage-received { color: @cde-muted; background: fade(@cde-border, 20%); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-tech-name {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 12px;
|
||||||
|
color: @cde-text;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
|
||||||
|
em { color: @cde-muted; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-kf-empty {
|
||||||
|
padding: 16px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 12px;
|
||||||
|
color: @cde-muted;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Random component chat message
|
||||||
|
.cde-chat-random-component {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-chat-component-label {
|
||||||
|
font-size: 10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
color: @cde-muted;
|
||||||
|
font-family: "Averia", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cde-chat-component-value {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: @cde-spell;
|
||||||
|
text-shadow: 0 0 8px fade(@cde-spell, 50%);
|
||||||
|
}
|
||||||
|
|
||||||
// Legacy tabs (actor sheets still use cde-tabs)
|
// Legacy tabs (actor sheets still use cde-tabs)
|
||||||
.cde-tabs {
|
.cde-tabs {
|
||||||
margin-top: @cde-gap;
|
margin-top: @cde-gap;
|
||||||
|
|||||||
124
dist/system.js
vendored
124
dist/system.js
vendored
@@ -449,7 +449,7 @@ var SpellDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
effects: htmlField(""),
|
effects: htmlField(""),
|
||||||
examples: htmlField(""),
|
examples: htmlField(""),
|
||||||
notes: htmlField(""),
|
notes: htmlField(""),
|
||||||
discipline: stringField("cinabre"),
|
discipline: stringField("internalcinnabar"),
|
||||||
heiType: stringField("yin"),
|
heiType: stringField("yin"),
|
||||||
heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),
|
heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),
|
||||||
difficulty: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 })
|
difficulty: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 })
|
||||||
@@ -727,6 +727,55 @@ function registerHandlebarsHelpers() {
|
|||||||
Handlebars.registerHelper("getMagicSpecialityLabelElement", function(magic, speciality) {
|
Handlebars.registerHelper("getMagicSpecialityLabelElement", function(magic, speciality) {
|
||||||
return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.labelelement ?? "");
|
return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.labelelement ?? "");
|
||||||
});
|
});
|
||||||
|
Handlebars.registerHelper("getMagicAspectIcon", function(magic) {
|
||||||
|
const icons = {
|
||||||
|
internalcinnabar: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png",
|
||||||
|
alchemy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png",
|
||||||
|
masteryoftheway: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png",
|
||||||
|
exorcism: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png",
|
||||||
|
geomancy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png"
|
||||||
|
};
|
||||||
|
return icons[magic] ?? "";
|
||||||
|
});
|
||||||
|
Handlebars.registerHelper("getElementIcon", function(aspect) {
|
||||||
|
const icons = {
|
||||||
|
metal: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png",
|
||||||
|
eau: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png",
|
||||||
|
terre: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png",
|
||||||
|
feu: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png",
|
||||||
|
bois: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png"
|
||||||
|
};
|
||||||
|
return icons[aspect] ?? "";
|
||||||
|
});
|
||||||
|
Handlebars.registerHelper("getOrientationIcon", function(orientation) {
|
||||||
|
const icons = {
|
||||||
|
yin: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png",
|
||||||
|
yang: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png",
|
||||||
|
yinyang: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png"
|
||||||
|
};
|
||||||
|
return icons[orientation] ?? "";
|
||||||
|
});
|
||||||
|
Handlebars.registerHelper("getOrientationLabel", function(orientation) {
|
||||||
|
const keys = {
|
||||||
|
yin: "CDE.OrientationYin",
|
||||||
|
yang: "CDE.OrientationYang",
|
||||||
|
yinyang: "CDE.OrientationYinYang"
|
||||||
|
};
|
||||||
|
return game.i18n.localize(keys[orientation] ?? "CDE.Orientation");
|
||||||
|
});
|
||||||
|
Handlebars.registerHelper("getActivationLabel", function(activation) {
|
||||||
|
const keys = {
|
||||||
|
"action-attack": "CDE.ActivationAttack",
|
||||||
|
"action-defense": "CDE.ActivationDefense",
|
||||||
|
"action-aid": "CDE.ActivationAid",
|
||||||
|
"action-attack-defense": "CDE.ActivationAttackOrDefense",
|
||||||
|
reaction: "CDE.ActivationReaction",
|
||||||
|
dice: "CDE.ActivationDice",
|
||||||
|
"damage-inflicted": "CDE.ActivationDamageInflicted",
|
||||||
|
"damage-received": "CDE.ActivationDamageReceived"
|
||||||
|
};
|
||||||
|
return game.i18n.localize(keys[activation] ?? "CDE.Activation");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/ui/templates.js
|
// src/ui/templates.js
|
||||||
@@ -1449,15 +1498,19 @@ var CDEBaseActorSheet = class _CDEBaseActorSheet extends HandlebarsApplicationMi
|
|||||||
supernatural: "CDE.SupernaturalNew"
|
supernatural: "CDE.SupernaturalNew"
|
||||||
};
|
};
|
||||||
const name = game.i18n.localize(labels[type] ?? "CDE.ItemNew");
|
const name = game.i18n.localize(labels[type] ?? "CDE.ItemNew");
|
||||||
return cls.create({ name, type }, { parent: this.document });
|
const systemData = {};
|
||||||
|
if (type === "spell" && target.dataset.discipline) {
|
||||||
|
systemData.discipline = target.dataset.discipline;
|
||||||
|
}
|
||||||
|
return cls.create({ name, type, system: systemData }, { parent: this.document });
|
||||||
}
|
}
|
||||||
static #onItemEdit(event, target) {
|
static #onItemEdit(event, target) {
|
||||||
const itemId = target.closest(".item")?.dataset.itemId;
|
const itemId = target.dataset.itemId ?? target.closest("[data-item-id]")?.dataset.itemId;
|
||||||
const item = this.document.items.get(itemId);
|
const item = this.document.items.get(itemId);
|
||||||
if (item) item.sheet.render(true);
|
if (item) item.sheet.render(true);
|
||||||
}
|
}
|
||||||
static #onItemDelete(event, target) {
|
static #onItemDelete(event, target) {
|
||||||
const itemId = target.closest(".item")?.dataset.itemId;
|
const itemId = target.dataset.itemId ?? target.closest("[data-item-id]")?.dataset.itemId;
|
||||||
const item = this.document.items.get(itemId);
|
const item = this.document.items.get(itemId);
|
||||||
if (item) item.delete();
|
if (item) item.delete();
|
||||||
}
|
}
|
||||||
@@ -1482,6 +1535,32 @@ var CDECharacterSheet = class extends CDEBaseActorSheet {
|
|||||||
context.spells = context.items.filter((item) => item.type === "spell");
|
context.spells = context.items.filter((item) => item.type === "spell");
|
||||||
context.kungfus = context.items.filter((item) => item.type === "kungfu");
|
context.kungfus = context.items.filter((item) => item.type === "kungfu");
|
||||||
context.CDE = { MAGICS, SUBTYPES };
|
context.CDE = { MAGICS, SUBTYPES };
|
||||||
|
const spellsByDiscipline = {};
|
||||||
|
for (const spell of context.spells) {
|
||||||
|
const disc = spell.system?.discipline ?? "internalcinnabar";
|
||||||
|
if (!spellsByDiscipline[disc]) spellsByDiscipline[disc] = [];
|
||||||
|
spellsByDiscipline[disc].push(spell);
|
||||||
|
}
|
||||||
|
const systemMagics = context.systemData.magics ?? {};
|
||||||
|
context.magicsDisplay = Object.fromEntries(
|
||||||
|
Object.entries(MAGICS).map(([magicKey, magicDef]) => {
|
||||||
|
const magicData = systemMagics[magicKey] ?? {};
|
||||||
|
return [
|
||||||
|
magicKey,
|
||||||
|
{
|
||||||
|
value: magicData.value ?? 0,
|
||||||
|
visible: magicData.visible ?? false,
|
||||||
|
speciality: Object.fromEntries(
|
||||||
|
Object.keys(magicDef.speciality).map((specKey) => [
|
||||||
|
specKey,
|
||||||
|
{ check: magicData.speciality?.[specKey]?.check ?? false }
|
||||||
|
])
|
||||||
|
),
|
||||||
|
grimoire: spellsByDiscipline[magicKey] ?? []
|
||||||
|
}
|
||||||
|
];
|
||||||
|
})
|
||||||
|
);
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
_onRender(context, options) {
|
_onRender(context, options) {
|
||||||
@@ -1489,6 +1568,7 @@ var CDECharacterSheet = class extends CDEBaseActorSheet {
|
|||||||
this.#bindInitiativeControls();
|
this.#bindInitiativeControls();
|
||||||
this.#bindPrefs();
|
this.#bindPrefs();
|
||||||
this.#bindRollButtons();
|
this.#bindRollButtons();
|
||||||
|
this.#bindComponentRandomize();
|
||||||
}
|
}
|
||||||
#bindInitiativeControls() {
|
#bindInitiativeControls() {
|
||||||
const buttons = this.element?.querySelectorAll(".click-initiative");
|
const buttons = this.element?.querySelectorAll(".click-initiative");
|
||||||
@@ -1563,6 +1643,42 @@ var CDECharacterSheet = class extends CDEBaseActorSheet {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
#bindComponentRandomize() {
|
||||||
|
const btn = this.element?.querySelector("[data-action='randomize-component']");
|
||||||
|
if (!btn) return;
|
||||||
|
btn.addEventListener("click", async () => {
|
||||||
|
const roll = new Roll("1d10");
|
||||||
|
await roll.evaluate();
|
||||||
|
const face = roll.total === 10 ? 0 : roll.total;
|
||||||
|
const COMPONENT_KEYS = {
|
||||||
|
1: "one",
|
||||||
|
2: "two",
|
||||||
|
3: "three",
|
||||||
|
4: "four",
|
||||||
|
5: "five",
|
||||||
|
6: "six",
|
||||||
|
7: "seven",
|
||||||
|
8: "eight",
|
||||||
|
9: "nine",
|
||||||
|
0: "zero"
|
||||||
|
};
|
||||||
|
const componentKey = COMPONENT_KEYS[face];
|
||||||
|
const componentValue = this.document.system.component?.[componentKey]?.value ?? "";
|
||||||
|
const label = componentValue ? `<strong>${componentValue}</strong>` : `<em>${game.i18n.localize("CDE.Component")}${face}</em>`;
|
||||||
|
const content = `
|
||||||
|
<div class="cde-chat-random-component">
|
||||||
|
<span class="cde-chat-component-label">${game.i18n.localize("CDE.ChanceThrowResult")}</span>
|
||||||
|
<span class="cde-chat-component-value">${label}</span>
|
||||||
|
</div>`;
|
||||||
|
await ChatMessage.create({
|
||||||
|
user: game.user.id,
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.document }),
|
||||||
|
content,
|
||||||
|
rolls: [roll],
|
||||||
|
rollMode: "roll"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// src/ui/sheets/actors/npc.js
|
// src/ui/sheets/actors/npc.js
|
||||||
|
|||||||
4
dist/system.js.map
vendored
4
dist/system.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -44,6 +44,7 @@
|
|||||||
"CDE.CelestialGuardian4": "Oiseau Écarlate (Feu)",
|
"CDE.CelestialGuardian4": "Oiseau Écarlate (Feu)",
|
||||||
"CDE.CelestialGuardian5": "Dragon d′Azur (Bois)",
|
"CDE.CelestialGuardian5": "Dragon d′Azur (Bois)",
|
||||||
"CDE.ChanceThrow": "Choisir un composant au hasard dans l′urgence",
|
"CDE.ChanceThrow": "Choisir un composant au hasard dans l′urgence",
|
||||||
|
"CDE.ChanceThrowResult": "Composant tiré au sort :",
|
||||||
"CDE.ClimateControl": "Maîtrise Climatique",
|
"CDE.ClimateControl": "Maîtrise Climatique",
|
||||||
"CDE.Component": "Composant n° ",
|
"CDE.Component": "Composant n° ",
|
||||||
"CDE.Components": "Composantes",
|
"CDE.Components": "Composantes",
|
||||||
@@ -143,6 +144,7 @@
|
|||||||
"CDE.KFCreate": "Créer un Art Martial",
|
"CDE.KFCreate": "Créer un Art Martial",
|
||||||
"CDE.KFDelete": "Supprimer l′Art Martial",
|
"CDE.KFDelete": "Supprimer l′Art Martial",
|
||||||
"CDE.KFEdit": "Éditer l′Art Martial",
|
"CDE.KFEdit": "Éditer l′Art Martial",
|
||||||
|
"CDE.KFEmpty": "Aucun art martial maîtrisé.",
|
||||||
"CDE.KFNew": "Nouvel Art Martial",
|
"CDE.KFNew": "Nouvel Art Martial",
|
||||||
"CDE.Knavery": "Filouterie",
|
"CDE.Knavery": "Filouterie",
|
||||||
"CDE.KungFu": "Kung Fu",
|
"CDE.KungFu": "Kung Fu",
|
||||||
@@ -176,6 +178,8 @@
|
|||||||
"CDE.MsgMagic3": ". La puissance à invoquer est de ",
|
"CDE.MsgMagic3": ". La puissance à invoquer est de ",
|
||||||
"CDE.MsgMagic4": ", si toutefois le sort est lancé avec succès.",
|
"CDE.MsgMagic4": ", si toutefois le sort est lancé avec succès.",
|
||||||
"CDE.NPCName": "Nom du PNJ",
|
"CDE.NPCName": "Nom du PNJ",
|
||||||
|
"CDE.FatSi": "Fat Si",
|
||||||
|
"CDE.PNJ": "PNJ",
|
||||||
"CDE.Name": "Nom",
|
"CDE.Name": "Nom",
|
||||||
"CDE.Necromancy": "Nécromancie",
|
"CDE.Necromancy": "Nécromancie",
|
||||||
"CDE.Neutralization": "Neutralisation",
|
"CDE.Neutralization": "Neutralisation",
|
||||||
@@ -256,6 +260,8 @@
|
|||||||
"CDE.SpellDelete": "Supprimer le Sortilège",
|
"CDE.SpellDelete": "Supprimer le Sortilège",
|
||||||
"CDE.SpellEdit": "Éditer le Sortilège",
|
"CDE.SpellEdit": "Éditer le Sortilège",
|
||||||
"CDE.SpellNew": "Nouveau Sortilège",
|
"CDE.SpellNew": "Nouveau Sortilège",
|
||||||
|
"CDE.Grimoire": "Grimoire",
|
||||||
|
"CDE.GrimoireEmpty": "Aucun sortilège noté pour cette discipline.",
|
||||||
"CDE.Spells": "Sortilèges",
|
"CDE.Spells": "Sortilèges",
|
||||||
"CDE.Spiritual": "● Spirituelle",
|
"CDE.Spiritual": "● Spirituelle",
|
||||||
"CDE.Style": "Style",
|
"CDE.Style": "Style",
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000050
|
MANIFEST-000062
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
2026/03/26-23:22:41.148674 7f90f77fe6c0 Recovering log #48
|
2026/03/27-23:40:07.003627 7f90f7fff6c0 Recovering log #60
|
||||||
2026/03/26-23:22:41.202546 7f90f77fe6c0 Delete type=3 #46
|
2026/03/27-23:40:07.014585 7f90f7fff6c0 Delete type=3 #58
|
||||||
2026/03/26-23:22:41.202617 7f90f77fe6c0 Delete type=0 #48
|
2026/03/27-23:40:07.014647 7f90f7fff6c0 Delete type=0 #60
|
||||||
|
2026/03/28-01:06:04.060694 7f90f5ffb6c0 Level-0 table #65: started
|
||||||
|
2026/03/28-01:06:04.060719 7f90f5ffb6c0 Level-0 table #65: 0 bytes OK
|
||||||
|
2026/03/28-01:06:04.067602 7f90f5ffb6c0 Delete type=0 #63
|
||||||
|
2026/03/28-01:06:04.080111 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!ZWBHiWW5QlUeseAX' @ 72057594037927935 : 1 .. '!journal.pages!ZWBHiWW5QlUeseAX.jtQXIqLfyet8Nlte' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/03/26-22:00:22.685636 7f90f7fff6c0 Recovering log #44
|
2026/03/27-21:21:30.280454 7f90f67fc6c0 Recovering log #56
|
||||||
2026/03/26-22:00:22.746783 7f90f7fff6c0 Delete type=3 #42
|
2026/03/27-21:21:30.290347 7f90f67fc6c0 Delete type=3 #54
|
||||||
2026/03/26-22:00:22.746837 7f90f7fff6c0 Delete type=0 #44
|
2026/03/27-21:21:30.290399 7f90f67fc6c0 Delete type=0 #56
|
||||||
2026/03/26-23:22:30.433416 7f90f5ffb6c0 Level-0 table #49: started
|
2026/03/27-21:21:32.095874 7f90f5ffb6c0 Level-0 table #61: started
|
||||||
2026/03/26-23:22:30.433442 7f90f5ffb6c0 Level-0 table #49: 0 bytes OK
|
2026/03/27-21:21:32.095896 7f90f5ffb6c0 Level-0 table #61: 0 bytes OK
|
||||||
2026/03/26-23:22:30.471510 7f90f5ffb6c0 Delete type=0 #47
|
2026/03/27-21:21:32.102427 7f90f5ffb6c0 Delete type=0 #59
|
||||||
2026/03/26-23:22:30.471678 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!ZWBHiWW5QlUeseAX' @ 72057594037927935 : 1 .. '!journal.pages!ZWBHiWW5QlUeseAX.jtQXIqLfyet8Nlte' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.116179 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!ZWBHiWW5QlUeseAX' @ 72057594037927935 : 1 .. '!journal.pages!ZWBHiWW5QlUeseAX.jtQXIqLfyet8Nlte' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000166
|
MANIFEST-000178
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
2026/03/26-23:22:41.093289 7f90f67fc6c0 Recovering log #164
|
2026/03/27-23:40:06.991314 7f90f77fe6c0 Recovering log #176
|
||||||
2026/03/26-23:22:41.146507 7f90f67fc6c0 Delete type=3 #162
|
2026/03/27-23:40:07.001875 7f90f77fe6c0 Delete type=3 #174
|
||||||
2026/03/26-23:22:41.146560 7f90f67fc6c0 Delete type=0 #164
|
2026/03/27-23:40:07.001926 7f90f77fe6c0 Delete type=0 #176
|
||||||
|
2026/03/28-01:06:04.048472 7f90f5ffb6c0 Level-0 table #181: started
|
||||||
|
2026/03/28-01:06:04.048493 7f90f5ffb6c0 Level-0 table #181: 0 bytes OK
|
||||||
|
2026/03/28-01:06:04.054367 7f90f5ffb6c0 Delete type=0 #179
|
||||||
|
2026/03/28-01:06:04.054479 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
||||||
|
2026/03/28-01:06:04.054500 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/03/26-22:00:22.608830 7f90f67fc6c0 Recovering log #160
|
2026/03/27-21:21:30.268953 7f90f6ffd6c0 Recovering log #172
|
||||||
2026/03/26-22:00:22.665730 7f90f67fc6c0 Delete type=3 #158
|
2026/03/27-21:21:30.278662 7f90f6ffd6c0 Delete type=3 #170
|
||||||
2026/03/26-22:00:22.665947 7f90f67fc6c0 Delete type=0 #160
|
2026/03/27-21:21:30.278730 7f90f6ffd6c0 Delete type=0 #172
|
||||||
2026/03/26-23:22:30.583548 7f90f5ffb6c0 Level-0 table #165: started
|
2026/03/27-21:21:32.067762 7f90f5ffb6c0 Level-0 table #177: started
|
||||||
2026/03/26-23:22:30.583573 7f90f5ffb6c0 Level-0 table #165: 0 bytes OK
|
2026/03/27-21:21:32.067784 7f90f5ffb6c0 Level-0 table #177: 0 bytes OK
|
||||||
2026/03/26-23:22:30.620608 7f90f5ffb6c0 Delete type=0 #163
|
2026/03/27-21:21:32.074619 7f90f5ffb6c0 Delete type=0 #175
|
||||||
2026/03/26-23:22:30.620784 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.089332 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
||||||
2026/03/26-23:22:30.620826 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.089368 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000738
|
MANIFEST-000750
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
2026/03/26-23:22:41.037729 7f90f7fff6c0 Recovering log #736
|
2026/03/27-23:40:06.977536 7f90f67fc6c0 Recovering log #748
|
||||||
2026/03/26-23:22:41.091148 7f90f7fff6c0 Delete type=3 #734
|
2026/03/27-23:40:06.987624 7f90f67fc6c0 Delete type=3 #746
|
||||||
2026/03/26-23:22:41.091204 7f90f7fff6c0 Delete type=0 #736
|
2026/03/27-23:40:06.987699 7f90f67fc6c0 Delete type=0 #748
|
||||||
|
2026/03/28-01:06:04.041962 7f90f5ffb6c0 Level-0 table #753: started
|
||||||
|
2026/03/28-01:06:04.041998 7f90f5ffb6c0 Level-0 table #753: 0 bytes OK
|
||||||
|
2026/03/28-01:06:04.048371 7f90f5ffb6c0 Delete type=0 #751
|
||||||
|
2026/03/28-01:06:04.054466 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
||||||
|
2026/03/28-01:06:04.054494 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/03/26-22:00:22.529664 7f90f77fe6c0 Recovering log #732
|
2026/03/27-21:21:30.255554 7f90f77fe6c0 Recovering log #744
|
||||||
2026/03/26-22:00:22.584296 7f90f77fe6c0 Delete type=3 #730
|
2026/03/27-21:21:30.266879 7f90f77fe6c0 Delete type=3 #742
|
||||||
2026/03/26-22:00:22.584358 7f90f77fe6c0 Delete type=0 #732
|
2026/03/27-21:21:30.266948 7f90f77fe6c0 Delete type=0 #744
|
||||||
2026/03/26-23:22:30.358180 7f90f5ffb6c0 Level-0 table #737: started
|
2026/03/27-21:21:32.081193 7f90f5ffb6c0 Level-0 table #749: started
|
||||||
2026/03/26-23:22:30.358207 7f90f5ffb6c0 Level-0 table #737: 0 bytes OK
|
2026/03/27-21:21:32.081218 7f90f5ffb6c0 Level-0 table #749: 0 bytes OK
|
||||||
2026/03/26-23:22:30.395875 7f90f5ffb6c0 Delete type=0 #735
|
2026/03/27-21:21:32.089124 7f90f5ffb6c0 Delete type=0 #747
|
||||||
2026/03/26-23:22:30.471656 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.089363 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
||||||
2026/03/26-23:22:30.471686 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.089373 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-004359
|
MANIFEST-004371
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
2026/03/26-23:22:40.912790 7f90f67fc6c0 Recovering log #4357
|
2026/03/27-23:40:06.951174 7f90f77fe6c0 Recovering log #4369
|
||||||
2026/03/26-23:22:40.970516 7f90f67fc6c0 Delete type=3 #4355
|
2026/03/27-23:40:06.961084 7f90f77fe6c0 Delete type=3 #4367
|
||||||
2026/03/26-23:22:40.970566 7f90f67fc6c0 Delete type=0 #4357
|
2026/03/27-23:40:06.961153 7f90f77fe6c0 Delete type=0 #4369
|
||||||
|
2026/03/28-01:06:04.029376 7f90f5ffb6c0 Level-0 table #4374: started
|
||||||
|
2026/03/28-01:06:04.029452 7f90f5ffb6c0 Level-0 table #4374: 0 bytes OK
|
||||||
|
2026/03/28-01:06:04.035591 7f90f5ffb6c0 Delete type=0 #4372
|
||||||
|
2026/03/28-01:06:04.054447 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!0lxwWrzKsdTBQhH0' @ 72057594037927935 : 1 .. '!journal.pages!wgSyae4GTJDkmBOm.6Ql0lgquUCTrMyTZ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/03/26-22:00:22.375122 7f90f67fc6c0 Recovering log #4353
|
2026/03/27-21:21:30.230925 7f90f67fc6c0 Recovering log #4365
|
||||||
2026/03/26-22:00:22.431093 7f90f67fc6c0 Delete type=3 #4351
|
2026/03/27-21:21:30.240633 7f90f67fc6c0 Delete type=3 #4363
|
||||||
2026/03/26-22:00:22.431156 7f90f67fc6c0 Delete type=0 #4353
|
2026/03/27-21:21:30.240686 7f90f67fc6c0 Delete type=0 #4365
|
||||||
2026/03/26-23:22:30.322515 7f90f5ffb6c0 Level-0 table #4358: started
|
2026/03/27-21:21:32.060793 7f90f5ffb6c0 Level-0 table #4370: started
|
||||||
2026/03/26-23:22:30.322564 7f90f5ffb6c0 Level-0 table #4358: 0 bytes OK
|
2026/03/27-21:21:32.060834 7f90f5ffb6c0 Level-0 table #4370: 0 bytes OK
|
||||||
2026/03/26-23:22:30.358054 7f90f5ffb6c0 Delete type=0 #4356
|
2026/03/27-21:21:32.067619 7f90f5ffb6c0 Delete type=0 #4368
|
||||||
2026/03/26-23:22:30.471641 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!0lxwWrzKsdTBQhH0' @ 72057594037927935 : 1 .. '!journal.pages!wgSyae4GTJDkmBOm.6Ql0lgquUCTrMyTZ' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.089309 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!0lxwWrzKsdTBQhH0' @ 72057594037927935 : 1 .. '!journal.pages!wgSyae4GTJDkmBOm.6Ql0lgquUCTrMyTZ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000079
|
MANIFEST-000091
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
2026/03/26-23:22:41.320339 7f90f6ffd6c0 Recovering log #77
|
2026/03/27-23:40:07.041219 7f90f6ffd6c0 Recovering log #89
|
||||||
2026/03/26-23:22:41.378833 7f90f6ffd6c0 Delete type=3 #75
|
2026/03/27-23:40:07.052133 7f90f6ffd6c0 Delete type=3 #87
|
||||||
2026/03/26-23:22:41.378896 7f90f6ffd6c0 Delete type=0 #77
|
2026/03/27-23:40:07.052198 7f90f6ffd6c0 Delete type=0 #89
|
||||||
|
2026/03/28-01:06:04.074099 7f90f5ffb6c0 Level-0 table #94: started
|
||||||
|
2026/03/28-01:06:04.074129 7f90f5ffb6c0 Level-0 table #94: 0 bytes OK
|
||||||
|
2026/03/28-01:06:04.080023 7f90f5ffb6c0 Delete type=0 #92
|
||||||
|
2026/03/28-01:06:04.080128 7f90f5ffb6c0 Manual compaction at level-0 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
||||||
|
2026/03/28-01:06:04.080153 7f90f5ffb6c0 Manual compaction at level-1 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/03/26-22:00:22.875118 7f90f77fe6c0 Recovering log #73
|
2026/03/27-21:21:30.316292 7f90f77fe6c0 Recovering log #85
|
||||||
2026/03/26-22:00:22.937050 7f90f77fe6c0 Delete type=3 #71
|
2026/03/27-21:21:30.326791 7f90f77fe6c0 Delete type=3 #83
|
||||||
2026/03/26-22:00:22.937152 7f90f77fe6c0 Delete type=0 #73
|
2026/03/27-21:21:30.326838 7f90f77fe6c0 Delete type=0 #85
|
||||||
2026/03/26-23:22:30.545930 7f90f5ffb6c0 Level-0 table #78: started
|
2026/03/27-21:21:32.102543 7f90f5ffb6c0 Level-0 table #90: started
|
||||||
2026/03/26-23:22:30.545959 7f90f5ffb6c0 Level-0 table #78: 0 bytes OK
|
2026/03/27-21:21:32.102564 7f90f5ffb6c0 Level-0 table #90: 0 bytes OK
|
||||||
2026/03/26-23:22:30.583434 7f90f5ffb6c0 Delete type=0 #76
|
2026/03/27-21:21:32.109807 7f90f5ffb6c0 Delete type=0 #88
|
||||||
2026/03/26-23:22:30.620775 7f90f5ffb6c0 Manual compaction at level-0 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.116185 7f90f5ffb6c0 Manual compaction at level-0 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
||||||
2026/03/26-23:22:30.620818 7f90f5ffb6c0 Manual compaction at level-1 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.123641 7f90f5ffb6c0 Manual compaction at level-1 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000060
|
MANIFEST-000072
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
2026/03/26-23:22:41.264104 7f90f77fe6c0 Recovering log #58
|
2026/03/27-23:40:07.028975 7f90f7fff6c0 Recovering log #70
|
||||||
2026/03/26-23:22:41.318473 7f90f77fe6c0 Delete type=3 #56
|
2026/03/27-23:40:07.039557 7f90f7fff6c0 Delete type=3 #68
|
||||||
2026/03/26-23:22:41.318542 7f90f77fe6c0 Delete type=0 #58
|
2026/03/27-23:40:07.039615 7f90f7fff6c0 Delete type=0 #70
|
||||||
|
2026/03/28-01:06:04.054602 7f90f5ffb6c0 Level-0 table #75: started
|
||||||
|
2026/03/28-01:06:04.054622 7f90f5ffb6c0 Level-0 table #75: 0 bytes OK
|
||||||
|
2026/03/28-01:06:04.060604 7f90f5ffb6c0 Delete type=0 #73
|
||||||
|
2026/03/28-01:06:04.080099 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
||||||
|
2026/03/28-01:06:04.080138 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/03/26-22:00:22.812984 7f90f7fff6c0 Recovering log #54
|
2026/03/27-21:21:30.304400 7f90f67fc6c0 Recovering log #66
|
||||||
2026/03/26-22:00:22.870518 7f90f7fff6c0 Delete type=3 #52
|
2026/03/27-21:21:30.314598 7f90f67fc6c0 Delete type=3 #64
|
||||||
2026/03/26-22:00:22.870588 7f90f7fff6c0 Delete type=0 #54
|
2026/03/27-21:21:30.314668 7f90f67fc6c0 Delete type=0 #66
|
||||||
2026/03/26-23:22:30.508599 7f90f5ffb6c0 Level-0 table #59: started
|
2026/03/27-21:21:32.089478 7f90f5ffb6c0 Level-0 table #71: started
|
||||||
2026/03/26-23:22:30.508625 7f90f5ffb6c0 Level-0 table #59: 0 bytes OK
|
2026/03/27-21:21:32.089505 7f90f5ffb6c0 Level-0 table #71: 0 bytes OK
|
||||||
2026/03/26-23:22:30.545804 7f90f5ffb6c0 Delete type=0 #57
|
2026/03/27-21:21:32.095733 7f90f5ffb6c0 Delete type=0 #69
|
||||||
2026/03/26-23:22:30.620763 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.116170 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
||||||
2026/03/26-23:22:30.620799 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.123631 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000238
|
MANIFEST-000250
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
2026/03/26-23:22:41.206104 7f90f6ffd6c0 Recovering log #236
|
2026/03/27-23:40:07.017004 7f90f6ffd6c0 Recovering log #248
|
||||||
2026/03/26-23:22:41.262267 7f90f6ffd6c0 Delete type=3 #234
|
2026/03/27-23:40:07.027187 7f90f6ffd6c0 Delete type=3 #246
|
||||||
2026/03/26-23:22:41.262335 7f90f6ffd6c0 Delete type=0 #236
|
2026/03/27-23:40:07.027254 7f90f6ffd6c0 Delete type=0 #248
|
||||||
|
2026/03/28-01:06:04.067738 7f90f5ffb6c0 Level-0 table #253: started
|
||||||
|
2026/03/28-01:06:04.067767 7f90f5ffb6c0 Level-0 table #253: 0 bytes OK
|
||||||
|
2026/03/28-01:06:04.073991 7f90f5ffb6c0 Delete type=0 #251
|
||||||
|
2026/03/28-01:06:04.080120 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
||||||
|
2026/03/28-01:06:04.080146 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/03/26-22:00:22.749196 7f90f6ffd6c0 Recovering log #232
|
2026/03/27-21:21:30.291918 7f90f7fff6c0 Recovering log #244
|
||||||
2026/03/26-22:00:22.804213 7f90f6ffd6c0 Delete type=3 #230
|
2026/03/27-21:21:30.302711 7f90f7fff6c0 Delete type=3 #242
|
||||||
2026/03/26-22:00:22.804283 7f90f6ffd6c0 Delete type=0 #232
|
2026/03/27-21:21:30.302762 7f90f7fff6c0 Delete type=0 #244
|
||||||
2026/03/26-23:22:30.471790 7f90f5ffb6c0 Level-0 table #237: started
|
2026/03/27-21:21:32.109958 7f90f5ffb6c0 Level-0 table #249: started
|
||||||
2026/03/26-23:22:30.471814 7f90f5ffb6c0 Level-0 table #237: 0 bytes OK
|
2026/03/27-21:21:32.109983 7f90f5ffb6c0 Level-0 table #249: 0 bytes OK
|
||||||
2026/03/26-23:22:30.508477 7f90f5ffb6c0 Delete type=0 #235
|
2026/03/27-21:21:32.116069 7f90f5ffb6c0 Delete type=0 #247
|
||||||
2026/03/26-23:22:30.620742 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.116191 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
||||||
2026/03/26-23:22:30.620792 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.116205 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000980
|
MANIFEST-000992
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
2026/03/26-23:22:40.972919 7f90f77fe6c0 Recovering log #978
|
2026/03/27-23:40:06.964100 7f90f7fff6c0 Recovering log #990
|
||||||
2026/03/26-23:22:41.035302 7f90f77fe6c0 Delete type=3 #976
|
2026/03/27-23:40:06.975062 7f90f7fff6c0 Delete type=3 #988
|
||||||
2026/03/26-23:22:41.035379 7f90f77fe6c0 Delete type=0 #978
|
2026/03/27-23:40:06.975129 7f90f7fff6c0 Delete type=0 #990
|
||||||
|
2026/03/28-01:06:04.035671 7f90f5ffb6c0 Level-0 table #995: started
|
||||||
|
2026/03/28-01:06:04.035691 7f90f5ffb6c0 Level-0 table #995: 0 bytes OK
|
||||||
|
2026/03/28-01:06:04.041795 7f90f5ffb6c0 Delete type=0 #993
|
||||||
|
2026/03/28-01:06:04.054457 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
||||||
|
2026/03/28-01:06:04.054505 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/03/26-22:00:22.455743 7f90f6ffd6c0 Recovering log #974
|
2026/03/27-21:21:30.242574 7f90f7fff6c0 Recovering log #986
|
||||||
2026/03/26-22:00:22.523057 7f90f6ffd6c0 Delete type=3 #972
|
2026/03/27-21:21:30.253063 7f90f7fff6c0 Delete type=3 #984
|
||||||
2026/03/26-22:00:22.523122 7f90f6ffd6c0 Delete type=0 #974
|
2026/03/27-21:21:30.253116 7f90f7fff6c0 Delete type=0 #986
|
||||||
2026/03/26-23:22:30.395975 7f90f5ffb6c0 Level-0 table #979: started
|
2026/03/27-21:21:32.074771 7f90f5ffb6c0 Level-0 table #991: started
|
||||||
2026/03/26-23:22:30.395996 7f90f5ffb6c0 Level-0 table #979: 0 bytes OK
|
2026/03/27-21:21:32.074793 7f90f5ffb6c0 Level-0 table #991: 0 bytes OK
|
||||||
2026/03/26-23:22:30.433284 7f90f5ffb6c0 Delete type=0 #977
|
2026/03/27-21:21:32.081032 7f90f5ffb6c0 Delete type=0 #989
|
||||||
2026/03/26-23:22:30.471668 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.089348 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
||||||
2026/03/26-23:22:30.471709 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
2026/03/27-21:21:32.089398 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -17,7 +17,7 @@ export default class SpellDataModel extends foundry.abstract.TypeDataModel {
|
|||||||
effects: htmlField(""),
|
effects: htmlField(""),
|
||||||
examples: htmlField(""),
|
examples: htmlField(""),
|
||||||
notes: htmlField(""),
|
notes: htmlField(""),
|
||||||
discipline: stringField("cinabre"),
|
discipline: stringField("internalcinnabar"),
|
||||||
heiType: stringField("yin"),
|
heiType: stringField("yin"),
|
||||||
heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),
|
heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),
|
||||||
difficulty: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),
|
difficulty: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),
|
||||||
|
|||||||
@@ -46,4 +46,58 @@ export function registerHandlebarsHelpers() {
|
|||||||
Handlebars.registerHelper("getMagicSpecialityLabelElement", function (magic, speciality) {
|
Handlebars.registerHelper("getMagicSpecialityLabelElement", function (magic, speciality) {
|
||||||
return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.labelelement ?? "")
|
return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.labelelement ?? "")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Handlebars.registerHelper("getMagicAspectIcon", function (magic) {
|
||||||
|
const icons = {
|
||||||
|
internalcinnabar: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png",
|
||||||
|
alchemy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png",
|
||||||
|
masteryoftheway: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png",
|
||||||
|
exorcism: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png",
|
||||||
|
geomancy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png",
|
||||||
|
}
|
||||||
|
return icons[magic] ?? ""
|
||||||
|
})
|
||||||
|
|
||||||
|
Handlebars.registerHelper("getElementIcon", function (aspect) {
|
||||||
|
const icons = {
|
||||||
|
metal: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png",
|
||||||
|
eau: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png",
|
||||||
|
terre: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png",
|
||||||
|
feu: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png",
|
||||||
|
bois: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png",
|
||||||
|
}
|
||||||
|
return icons[aspect] ?? ""
|
||||||
|
})
|
||||||
|
|
||||||
|
Handlebars.registerHelper("getOrientationIcon", function (orientation) {
|
||||||
|
const icons = {
|
||||||
|
yin: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png",
|
||||||
|
yang: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png",
|
||||||
|
yinyang: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png",
|
||||||
|
}
|
||||||
|
return icons[orientation] ?? ""
|
||||||
|
})
|
||||||
|
|
||||||
|
Handlebars.registerHelper("getOrientationLabel", function (orientation) {
|
||||||
|
const keys = {
|
||||||
|
yin: "CDE.OrientationYin",
|
||||||
|
yang: "CDE.OrientationYang",
|
||||||
|
yinyang: "CDE.OrientationYinYang",
|
||||||
|
}
|
||||||
|
return game.i18n.localize(keys[orientation] ?? "CDE.Orientation")
|
||||||
|
})
|
||||||
|
|
||||||
|
Handlebars.registerHelper("getActivationLabel", function (activation) {
|
||||||
|
const keys = {
|
||||||
|
"action-attack": "CDE.ActivationAttack",
|
||||||
|
"action-defense": "CDE.ActivationDefense",
|
||||||
|
"action-aid": "CDE.ActivationAid",
|
||||||
|
"action-attack-defense": "CDE.ActivationAttackOrDefense",
|
||||||
|
reaction: "CDE.ActivationReaction",
|
||||||
|
dice: "CDE.ActivationDice",
|
||||||
|
"damage-inflicted": "CDE.ActivationDamageInflicted",
|
||||||
|
"damage-received": "CDE.ActivationDamageReceived",
|
||||||
|
}
|
||||||
|
return game.i18n.localize(keys[activation] ?? "CDE.Activation")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,17 +59,21 @@ export class CDEBaseActorSheet extends HandlebarsApplicationMixin(foundry.applic
|
|||||||
supernatural: "CDE.SupernaturalNew",
|
supernatural: "CDE.SupernaturalNew",
|
||||||
}
|
}
|
||||||
const name = game.i18n.localize(labels[type] ?? "CDE.ItemNew")
|
const name = game.i18n.localize(labels[type] ?? "CDE.ItemNew")
|
||||||
return cls.create({ name, type }, { parent: this.document })
|
const systemData = {}
|
||||||
|
if (type === "spell" && target.dataset.discipline) {
|
||||||
|
systemData.discipline = target.dataset.discipline
|
||||||
|
}
|
||||||
|
return cls.create({ name, type, system: systemData }, { parent: this.document })
|
||||||
}
|
}
|
||||||
|
|
||||||
static #onItemEdit(event, target) {
|
static #onItemEdit(event, target) {
|
||||||
const itemId = target.closest(".item")?.dataset.itemId
|
const itemId = target.dataset.itemId ?? target.closest("[data-item-id]")?.dataset.itemId
|
||||||
const item = this.document.items.get(itemId)
|
const item = this.document.items.get(itemId)
|
||||||
if (item) item.sheet.render(true)
|
if (item) item.sheet.render(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
static #onItemDelete(event, target) {
|
static #onItemDelete(event, target) {
|
||||||
const itemId = target.closest(".item")?.dataset.itemId
|
const itemId = target.dataset.itemId ?? target.closest("[data-item-id]")?.dataset.itemId
|
||||||
const item = this.document.items.get(itemId)
|
const item = this.document.items.get(itemId)
|
||||||
if (item) item.delete()
|
if (item) item.delete()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,37 @@ export class CDECharacterSheet extends CDEBaseActorSheet {
|
|||||||
context.spells = context.items.filter((item) => item.type === "spell")
|
context.spells = context.items.filter((item) => item.type === "spell")
|
||||||
context.kungfus = context.items.filter((item) => item.type === "kungfu")
|
context.kungfus = context.items.filter((item) => item.type === "kungfu")
|
||||||
context.CDE = { MAGICS, SUBTYPES }
|
context.CDE = { MAGICS, SUBTYPES }
|
||||||
|
|
||||||
|
// Group spells by discipline key (matches MAGICS keys)
|
||||||
|
const spellsByDiscipline = {}
|
||||||
|
for (const spell of context.spells) {
|
||||||
|
const disc = spell.system?.discipline ?? "internalcinnabar"
|
||||||
|
if (!spellsByDiscipline[disc]) spellsByDiscipline[disc] = []
|
||||||
|
spellsByDiscipline[disc].push(spell)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build magicsDisplay: only include the 5 relevant specialities per magic type + grimoire
|
||||||
|
const systemMagics = context.systemData.magics ?? {}
|
||||||
|
context.magicsDisplay = Object.fromEntries(
|
||||||
|
Object.entries(MAGICS).map(([magicKey, magicDef]) => {
|
||||||
|
const magicData = systemMagics[magicKey] ?? {}
|
||||||
|
return [
|
||||||
|
magicKey,
|
||||||
|
{
|
||||||
|
value: magicData.value ?? 0,
|
||||||
|
visible: magicData.visible ?? false,
|
||||||
|
speciality: Object.fromEntries(
|
||||||
|
Object.keys(magicDef.speciality).map((specKey) => [
|
||||||
|
specKey,
|
||||||
|
{ check: magicData.speciality?.[specKey]?.check ?? false },
|
||||||
|
])
|
||||||
|
),
|
||||||
|
grimoire: spellsByDiscipline[magicKey] ?? [],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,6 +63,7 @@ export class CDECharacterSheet extends CDEBaseActorSheet {
|
|||||||
this.#bindInitiativeControls()
|
this.#bindInitiativeControls()
|
||||||
this.#bindPrefs()
|
this.#bindPrefs()
|
||||||
this.#bindRollButtons()
|
this.#bindRollButtons()
|
||||||
|
this.#bindComponentRandomize()
|
||||||
}
|
}
|
||||||
|
|
||||||
#bindInitiativeControls() {
|
#bindInitiativeControls() {
|
||||||
@@ -109,4 +141,33 @@ export class CDECharacterSheet extends CDEBaseActorSheet {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#bindComponentRandomize() {
|
||||||
|
const btn = this.element?.querySelector("[data-action='randomize-component']")
|
||||||
|
if (!btn) return
|
||||||
|
btn.addEventListener("click", async () => {
|
||||||
|
const roll = new Roll("1d10")
|
||||||
|
await roll.evaluate()
|
||||||
|
const face = roll.total === 10 ? 0 : roll.total
|
||||||
|
const COMPONENT_KEYS = { 1:"one", 2:"two", 3:"three", 4:"four", 5:"five",
|
||||||
|
6:"six", 7:"seven", 8:"eight", 9:"nine", 0:"zero" }
|
||||||
|
const componentKey = COMPONENT_KEYS[face]
|
||||||
|
const componentValue = this.document.system.component?.[componentKey]?.value ?? ""
|
||||||
|
const label = componentValue
|
||||||
|
? `<strong>${componentValue}</strong>`
|
||||||
|
: `<em>${game.i18n.localize("CDE.Component")}${face}</em>`
|
||||||
|
const content = `
|
||||||
|
<div class="cde-chat-random-component">
|
||||||
|
<span class="cde-chat-component-label">${game.i18n.localize("CDE.ChanceThrowResult")}</span>
|
||||||
|
<span class="cde-chat-component-value">${label}</span>
|
||||||
|
</div>`
|
||||||
|
await ChatMessage.create({
|
||||||
|
user: game.user.id,
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.document }),
|
||||||
|
content,
|
||||||
|
rolls: [roll],
|
||||||
|
rollMode: "roll",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,12 +15,12 @@
|
|||||||
<div class="cde-grid two">
|
<div class="cde-grid two">
|
||||||
<div class="cde-field">
|
<div class="cde-field">
|
||||||
<label>{{ localize "CDE.Concept" }}</label>
|
<label>{{ localize "CDE.Concept" }}</label>
|
||||||
<input type="text" name="system.concept" value="{{systemData.concept}}" placeholder="{{ localize 'CDE.Concept' }}" />
|
<input type="text" name="system.concept" value="{{systemData.concept}}" placeholder="—" />
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-field">
|
<div class="cde-field">
|
||||||
<label>{{ localize "CDE.CelestialGuardian" }}</label>
|
<label>{{ localize "CDE.CelestialGuardian" }}</label>
|
||||||
<select name="system.guardian">
|
<select name="system.guardian">
|
||||||
<option value="0" {{#if (eq systemData.guardian 0)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian" }}</option>
|
<option value="0" {{#if (eq systemData.guardian 0)}}selected{{/if}}>—</option>
|
||||||
<option value="1" {{#if (eq systemData.guardian 1)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian1" }}</option>
|
<option value="1" {{#if (eq systemData.guardian 1)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian1" }}</option>
|
||||||
<option value="2" {{#if (eq systemData.guardian 2)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian2" }}</option>
|
<option value="2" {{#if (eq systemData.guardian 2)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian2" }}</option>
|
||||||
<option value="3" {{#if (eq systemData.guardian 3)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian3" }}</option>
|
<option value="3" {{#if (eq systemData.guardian 3)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian3" }}</option>
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="cde-quick-meta">
|
<div class="cde-quick-meta">
|
||||||
<div class="cde-tag">
|
<div class="cde-tag">
|
||||||
<span class="cde-pill character">{{ localize "CDE.PCName" }}</span>
|
<span class="cde-pill character">{{ localize "CDE.FatSi" }}</span>
|
||||||
<span>Chroniques de l'Étrange</span>
|
<span>Chroniques de l'Étrange</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-initiative-card">
|
<div class="cde-initiative-card">
|
||||||
@@ -74,7 +74,6 @@
|
|||||||
<a class="item" data-action="tab" data-group="primary" data-tab="skills">{{ localize "CDE.Skills" }}</a>
|
<a class="item" data-action="tab" data-group="primary" data-tab="skills">{{ localize "CDE.Skills" }}</a>
|
||||||
<a class="item" data-action="tab" data-group="primary" data-tab="treasures">{{ localize "CDE.Treasures" }}</a>
|
<a class="item" data-action="tab" data-group="primary" data-tab="treasures">{{ localize "CDE.Treasures" }}</a>
|
||||||
<a class="item" data-action="tab" data-group="primary" data-tab="magics">{{ localize "CDE.Magics" }}</a>
|
<a class="item" data-action="tab" data-group="primary" data-tab="magics">{{ localize "CDE.Magics" }}</a>
|
||||||
<a class="item" data-action="tab" data-group="primary" data-tab="spells">{{ localize "CDE.Spells" }}</a>
|
|
||||||
<a class="item" data-action="tab" data-group="primary" data-tab="kungfus">{{ localize "CDE.KungFu" }}</a>
|
<a class="item" data-action="tab" data-group="primary" data-tab="kungfus">{{ localize "CDE.KungFu" }}</a>
|
||||||
<a class="item" data-action="tab" data-group="primary" data-tab="items">{{ localize "CDE.Items" }}</a>
|
<a class="item" data-action="tab" data-group="primary" data-tab="items">{{ localize "CDE.Items" }}</a>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -110,12 +109,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab" data-group="primary" data-tab="spells">
|
|
||||||
<div class="cde-card cde-data-table">
|
|
||||||
{{> "systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-spells.html"}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tab" data-group="primary" data-tab="kungfus">
|
<div class="tab" data-group="primary" data-tab="kungfus">
|
||||||
<div class="cde-card cde-data-table">
|
<div class="cde-card cde-data-table">
|
||||||
{{> "systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-kungfus.html"}}
|
{{> "systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-kungfus.html"}}
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-tag">
|
<div class="cde-tag">
|
||||||
<span class="cde-pill npc">{{ localize "CDE.NPCName" }}</span>
|
<span class="cde-pill npc">{{ localize "CDE.PNJ" }}</span>
|
||||||
<span>Chroniques de l'Étrange</span>
|
<span>Chroniques de l'Étrange</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,16 +1,83 @@
|
|||||||
<ol class="item-list">
|
{{!-- ===================== ARTS MARTIAUX ===================== --}}
|
||||||
{{#each kungfus as |item id|}}
|
|
||||||
<li class="item flexrow" data-item-id="{{item._id}}">
|
<div class="cde-kf-add-row">
|
||||||
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24" />
|
<a class="cde-kf-add-btn" data-action="create" data-type="kungfu" title="{{ localize 'CDE.KFCreate' }}">
|
||||||
<h4 class="item-name">{{item.name}}</h4>
|
<i class="fas fa-plus"></i> {{ localize "CDE.KFCreate" }}
|
||||||
<div class="item-controls">
|
</a>
|
||||||
<a class="item-control cde-roll-trigger" title="{{ localize 'CDE.Roll' }}" data-libel-id="{{item._id}}-itemkungfu"><i class="fas fa-dice"></i></a>
|
</div>
|
||||||
<a class="item-control" title="{{ localize 'CDE.KFEdit' }}" data-action="edit"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control" title="{{ localize 'CDE.KFDelete' }}" data-action="delete"><i class="fas fa-trash"></i></a>
|
{{#if kungfus.length}}
|
||||||
|
{{#each kungfus as |item|}}
|
||||||
|
<div class="cde-kf-card cde-kf--{{item.system.aspect}}">
|
||||||
|
|
||||||
|
<div class="cde-kf-header">
|
||||||
|
<img class="cde-kf-aspect-icon" src="{{ getElementIcon item.system.aspect }}" alt="{{item.system.aspect}}" />
|
||||||
|
<img class="cde-kf-orient-icon" src="{{ getOrientationIcon item.system.orientation }}" alt="{{item.system.orientation}}"
|
||||||
|
title="{{ getOrientationLabel item.system.orientation }}" />
|
||||||
|
<div class="cde-kf-info">
|
||||||
|
<span class="cde-kf-name">{{item.name}}</span>
|
||||||
|
<span class="cde-kf-meta">
|
||||||
|
{{#if (eq item.system.skill "rangedcombat")}}{{ localize "CDE.RangedCombat" }}{{else}}{{ localize "CDE.SkillKungfu" }}{{/if}}
|
||||||
|
{{#if item.system.speciality}}· <em>{{item.system.speciality}}</em>{{/if}}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
<a class="cde-roll-trigger cde-kf-roll-btn" data-libel-id="{{item._id}}-itemkungfu"
|
||||||
|
title="{{ localize 'CDE.Roll' }} {{item.name}}">
|
||||||
|
<i class="fas fa-dice-d10"></i>
|
||||||
|
</a>
|
||||||
|
<div class="cde-kf-controls">
|
||||||
|
<a data-action="edit" data-item-id="{{item._id}}" title="{{ localize 'CDE.KFEdit' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-action="delete" data-item-id="{{item._id}}" title="{{ localize 'CDE.KFDelete' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{!-- Style --}}
|
||||||
|
{{#if item.system.style}}
|
||||||
|
<div class="cde-kf-style-row">
|
||||||
|
<span class="cde-kf-style-label"><i class="fas fa-star"></i> {{ localize "CDE.Style" }}</span>
|
||||||
|
<span class="cde-kf-style-text">{{item.system.style}}</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!-- Techniques --}}
|
||||||
|
<ul class="cde-kf-techniques">
|
||||||
|
{{#with item.system.techniques.technique1 as |tech|}}
|
||||||
|
{{#if tech.name}}
|
||||||
|
<li class="cde-kf-tech {{#if tech.check}}cde-kf-tech--mastered{{/if}}">
|
||||||
|
<span class="cde-kf-tech-mastered" title="{{ localize 'CDE.Masterized' }}">
|
||||||
|
{{#if tech.check}}<i class="fas fa-check-circle"></i>{{else}}<i class="far fa-circle"></i>{{/if}}
|
||||||
|
</span>
|
||||||
|
<span class="cde-act-badge cde-act--{{tech.activation}}" title="{{ getActivationLabel tech.activation }}">{{ getActivationLabel tech.activation }}</span>
|
||||||
|
<span class="cde-kf-tech-name">{{#if tech.name}}{{tech.name}}{{else}}<em>—</em>{{/if}}</span>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/if}}
|
||||||
</ol>
|
{{/with}}
|
||||||
<p>
|
{{#with item.system.techniques.technique2 as |tech|}}
|
||||||
<a class="item-control" title="{{ localize 'CDE.KFCreate' }}" data-action="create" data-type="kungfu"><i class="fas fa-plus"></i> {{ localize "CDE.KFCreate" }}</a>
|
{{#if tech.name}}
|
||||||
</p>
|
<li class="cde-kf-tech {{#if tech.check}}cde-kf-tech--mastered{{/if}}">
|
||||||
|
<span class="cde-kf-tech-mastered" title="{{ localize 'CDE.Masterized' }}">
|
||||||
|
{{#if tech.check}}<i class="fas fa-check-circle"></i>{{else}}<i class="far fa-circle"></i>{{/if}}
|
||||||
|
</span>
|
||||||
|
<span class="cde-act-badge cde-act--{{tech.activation}}" title="{{ getActivationLabel tech.activation }}">{{ getActivationLabel tech.activation }}</span>
|
||||||
|
<span class="cde-kf-tech-name">{{#if tech.name}}{{tech.name}}{{else}}<em>—</em>{{/if}}</span>
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
|
{{/with}}
|
||||||
|
{{#with item.system.techniques.technique3 as |tech|}}
|
||||||
|
{{#if tech.name}}
|
||||||
|
<li class="cde-kf-tech {{#if tech.check}}cde-kf-tech--mastered{{/if}}">
|
||||||
|
<span class="cde-kf-tech-mastered" title="{{ localize 'CDE.Masterized' }}">
|
||||||
|
{{#if tech.check}}<i class="fas fa-check-circle"></i>{{else}}<i class="far fa-circle"></i>{{/if}}
|
||||||
|
</span>
|
||||||
|
<span class="cde-act-badge cde-act--{{tech.activation}}" title="{{ getActivationLabel tech.activation }}">{{ getActivationLabel tech.activation }}</span>
|
||||||
|
<span class="cde-kf-tech-name">{{#if tech.name}}{{tech.name}}{{else}}<em>—</em>{{/if}}</span>
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
|
{{/with}}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
{{else}}
|
||||||
|
<p class="cde-kf-empty">{{ localize "CDE.KFEmpty" }}</p>
|
||||||
|
{{/if}}
|
||||||
|
|||||||
@@ -1,138 +1,153 @@
|
|||||||
<div class="tab-sous-titre">{{ localize "CDE.Components2" }}</div>
|
{{!-- ======================== COMPOSANTS & INGRÉDIENTS ======================== --}}
|
||||||
<table class="cde-magics-table">
|
<div class="cde-section-label">
|
||||||
<tr>
|
<i class="fas fa-flask"></i> {{ localize "CDE.Components2" }}
|
||||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-1.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}1" name="system.component.one.value" value="{{systemData.component.one.value}}" />
|
|
||||||
</td>
|
|
||||||
<td class="td-spacer"> </td>
|
|
||||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-6.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}6" name="system.component.six.value" value="{{systemData.component.six.value}}" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-2.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}2" name="system.component.two.value" value="{{systemData.component.two.value}}" />
|
|
||||||
</td>
|
|
||||||
<td class="td-spacer"> </td>
|
|
||||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-7.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}7" name="system.component.seven.value" value="{{systemData.component.seven.value}}" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-3.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}3" name="system.component.three.value" value="{{systemData.component.three.value}}" />
|
|
||||||
</td>
|
|
||||||
<td class="td-spacer"> </td>
|
|
||||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-8.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}8" name="system.component.eight.value" value="{{systemData.component.eight.value}}" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-4.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}4" name="system.component.four.value" value="{{systemData.component.four.value}}" />
|
|
||||||
</td>
|
|
||||||
<td class="td-spacer"> </td>
|
|
||||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-9.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}9" name="system.component.nine.value" value="{{systemData.component.nine.value}}" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-5.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}5" name="system.component.five.value" value="{{systemData.component.five.value}}" />
|
|
||||||
</td>
|
|
||||||
<td class="td-spacer"> </td>
|
|
||||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-0.png" alt="Die" /></td>
|
|
||||||
<td class="value">
|
|
||||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}0" name="system.component.zero.value" value="{{systemData.component.zero.value}}" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<div class="chancethrow">
|
|
||||||
<img
|
|
||||||
class="click img-die-sm"
|
|
||||||
data-libel-id="randomize-randomize"
|
|
||||||
src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png"
|
|
||||||
title="{{ localize 'CDE.Die' }}{{ localize 'CDE.ChanceThrow' }}"
|
|
||||||
alt="Die"
|
|
||||||
/>
|
|
||||||
<label class="label"><b> {{ localize "CDE.ChanceThrow" }}</b></label>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab-sous-titre">{{ localize "CDE.TypesOfMagic" }}</div>
|
<div class="cde-components-grid">
|
||||||
|
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-1.png" alt="1" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}1" name="system.component.one.value" value="{{systemData.component.one.value}}" />
|
||||||
|
</div>
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-6.png" alt="6" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}6" name="system.component.six.value" value="{{systemData.component.six.value}}" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-2.png" alt="2" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}2" name="system.component.two.value" value="{{systemData.component.two.value}}" />
|
||||||
|
</div>
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-7.png" alt="7" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}7" name="system.component.seven.value" value="{{systemData.component.seven.value}}" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-3.png" alt="3" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}3" name="system.component.three.value" value="{{systemData.component.three.value}}" />
|
||||||
|
</div>
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-8.png" alt="8" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}8" name="system.component.eight.value" value="{{systemData.component.eight.value}}" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-4.png" alt="4" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}4" name="system.component.four.value" value="{{systemData.component.four.value}}" />
|
||||||
|
</div>
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-9.png" alt="9" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}9" name="system.component.nine.value" value="{{systemData.component.nine.value}}" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-5.png" alt="5" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}5" name="system.component.five.value" value="{{systemData.component.five.value}}" />
|
||||||
|
</div>
|
||||||
|
<div class="cde-component-cell">
|
||||||
|
<img class="cde-component-die" src="systems/fvtt-chroniques-de-l-etrange/images/d10-0.png" alt="0" />
|
||||||
|
<input type="text" class="cde-component-input" placeholder="{{ localize 'CDE.Component' }}0" name="system.component.zero.value" value="{{systemData.component.zero.value}}" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="cde-component-random-row">
|
||||||
|
<button type="button" class="cde-btn-random-component" data-action="randomize-component"
|
||||||
|
title="{{ localize 'CDE.ChanceThrow' }}">
|
||||||
|
<i class="fas fa-dice"></i>
|
||||||
|
<span>{{ localize "CDE.ChanceThrow" }}</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{!-- ======================== TYPES DE MAGIE ======================== --}}
|
||||||
|
<div class="cde-section-label cde-section-label--top-margin">
|
||||||
|
<i class="fas fa-hat-wizard"></i> {{ localize "CDE.TypesOfMagic" }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{#each magicsDisplay as |magic key|}}
|
||||||
|
<div class="cde-magic-card cde-magic--{{key}}">
|
||||||
|
|
||||||
|
<div class="cde-magic-header">
|
||||||
|
<img class="cde-magic-aspect-icon" src="{{getMagicAspectIcon key}}" alt="{{getMagicAspectLabel key}}" />
|
||||||
|
<div class="cde-magic-info">
|
||||||
|
<span class="cde-magic-name">{{getMagicLabel key}}</span>
|
||||||
|
<span class="cde-magic-aspect-name">{{getMagicAspectLabel key}}</span>
|
||||||
|
</div>
|
||||||
|
<input class="cde-circle-input cde-magic-value-input" type="number" min="0"
|
||||||
|
name="system.magics.{{key}}.value" value="{{magic.value}}" />
|
||||||
|
<a class="cde-roll-trigger cde-magic-roll-btn"
|
||||||
|
data-libel-id="{{key}}-magic"
|
||||||
|
title="{{ localize 'CDE.Roll' }} {{getMagicLabel key}}">
|
||||||
|
<i class="fas fa-dice-d10"></i>
|
||||||
|
</a>
|
||||||
|
<label class="cde-magic-toggle" title="{{ localize 'CDE.PracticeSpecialty' }}">
|
||||||
|
<input type="checkbox" name="system.magics.{{key}}.visible" {{checked magic.visible}} />
|
||||||
|
<i class="fas {{#if magic.visible}}fa-chevron-up{{else}}fa-chevron-down{{/if}}"></i>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
{{#each systemData.magics as |magic key|}}
|
|
||||||
{{log 'magic' key magic}}
|
|
||||||
<table class="{{getMagicBackground key}}">
|
|
||||||
<tr>
|
|
||||||
<td class="check visible">
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
name="system.magics.{{key}}.visible"
|
|
||||||
{{
|
|
||||||
checked
|
|
||||||
magic.visible
|
|
||||||
}}
|
|
||||||
title="{{ localize 'CDE.Visible' }}"
|
|
||||||
/>
|
|
||||||
</td>
|
|
||||||
<td class="click" data-libel-id="{{key}}-magic">
|
|
||||||
<img
|
|
||||||
id="system.magics.{{@key}}.click"
|
|
||||||
src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png"
|
|
||||||
title="{{ localize 'CDE.Die' }}{{getMagicLabel key}}"
|
|
||||||
alt="{{ getMagicAspectLabel key }}"
|
|
||||||
/>
|
|
||||||
</td>
|
|
||||||
<td class="label"><b> {{getMagicLabel key}}</b></td>
|
|
||||||
<td class="image">
|
|
||||||
<img id="system.magics.{{@key}}.cercle.value" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Circle" alt="Cercle" />
|
|
||||||
<div class="stick"> </div>
|
|
||||||
<input class="input" type="number" placeholder="0" name="system.magics.{{@key}}.value" value="{{magic.value}}" />
|
|
||||||
</td>
|
|
||||||
<td class="label"><b> , {{ getMagicAspectLabel key }}</b></td>
|
|
||||||
<td>
|
|
||||||
{{#if magic.visible}}
|
{{#if magic.visible}}
|
||||||
<table>
|
<div class="cde-magic-specialities">
|
||||||
{{#each magic.speciality as |special key2|}}
|
{{#each magic.speciality as |special key2|}}
|
||||||
{{log 'speciality' special key key2}}
|
<div class="cde-magic-spec-row {{#if special.check}}cde-magic-spec-row--active{{/if}}">
|
||||||
<tr class="clickondie">
|
<label class="cde-magic-spec-check-label" title="{{ localize 'CDE.PracticeSpecialty' }}{{ getMagicSpecialityLabel key key2 }}">
|
||||||
<td class="check">
|
<input type="checkbox" name="system.magics.{{key}}.speciality.{{key2}}.check" {{checked special.check}} />
|
||||||
<input
|
<span class="cde-spec-checkbox-ui"></span>
|
||||||
type="checkbox"
|
</label>
|
||||||
name="system.magics.{{key}}.speciality.{{key2}}.check"
|
<img class="cde-magic-spec-element" src="{{getMagicSpecialityElementIcon key key2}}"
|
||||||
{{
|
alt="{{getMagicSpecialityLabelElement key key2}}"
|
||||||
checked
|
title="{{getMagicSpecialityLabelElement key key2}}" />
|
||||||
special.check
|
<span class="cde-magic-spec-polarity {{getMagicSpecialityClassIcon key key2}}">
|
||||||
}}
|
{{getMagicSpecialityLabelIcon key key2}}
|
||||||
title="{{ localize 'CDE.PracticeSpecialty' }}{{ getMagicSpecialityLabel key key2 }}"
|
</span>
|
||||||
/>
|
<span class="cde-magic-spec-name">{{getMagicSpecialityLabel key key2}}</span>
|
||||||
</td>
|
<a class="cde-roll-trigger cde-magic-spec-roll-btn"
|
||||||
<td class="label"><b>{{ getMagicSpecialityLabel key key2 }}</b></td>
|
data-libel-id="{{key}}-magicspecial-{{key2}}"
|
||||||
<td class="icon-element"><img src="{{getMagicSpecialityElementIcon key key2}}" title="{{ getMagicSpecialityLabelElement key key2 }}" alt="{{getMagicSpecialityLabelElement key key2}}" /></td>
|
title="{{ localize 'CDE.DieSP' }}{{getMagicSpecialityLabel key key2}}">
|
||||||
<td class="{{getMagicSpecialityClassIcon key key2}}"><img src="{{ getMagicSpecialityIcon key key2 }}" title="{{getMagicSpecialityLabelIcon key key2}}" alt="{{getMagicSpecialityLabelIcon key key2}}" /></td>
|
<i class="fas fa-dice-d10"></i>
|
||||||
<td class="click icon-d" data-libel-id="{{key}}-magicspecial-{{key2}}">
|
</a>
|
||||||
<img
|
</div>
|
||||||
id="{{system.magics.magic.speciality.special.click}}"
|
|
||||||
src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png"
|
|
||||||
title="{{ localize 'CDE.DieSP' }}{{ getMagicSpecialityLabel key key2 }}"
|
|
||||||
alt="Die"
|
|
||||||
/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</table>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</td>
|
|
||||||
</tr>
|
{{!-- ======================== GRIMOIRE — sorts de cette discipline ======================== --}}
|
||||||
</table>
|
<div class="cde-grimoire-section">
|
||||||
|
<div class="cde-grimoire-header">
|
||||||
|
<i class="fas fa-book-open"></i>
|
||||||
|
<span>{{ localize "CDE.Grimoire" }}</span>
|
||||||
|
<a class="cde-grimoire-add" data-action="create" data-type="spell" data-discipline="{{key}}"
|
||||||
|
title="{{ localize 'CDE.SpellCreate' }}">
|
||||||
|
<i class="fas fa-plus"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{{#if magic.grimoire.length}}
|
||||||
|
<ul class="cde-grimoire-list">
|
||||||
|
{{#each magic.grimoire as |spell|}}
|
||||||
|
<li class="cde-grimoire-entry">
|
||||||
|
<img class="cde-grimoire-img" src="{{spell.img}}" alt="{{spell.name}}" width="20" height="20" />
|
||||||
|
<span class="cde-grimoire-name">{{spell.name}}</span>
|
||||||
|
<span class="cde-grimoire-meta">
|
||||||
|
{{#if spell.system.specialityname}}<em>{{spell.system.specialityname}}</em>{{/if}}
|
||||||
|
<span class="cde-grimoire-diff" title="{{ localize 'CDE.Difficulty' }}">
|
||||||
|
<i class="fas fa-layer-group"></i> {{spell.system.difficulty}}
|
||||||
|
</span>
|
||||||
|
<span class="cde-grimoire-hei" title="{{ localize 'CDE.HeiCost' }}">
|
||||||
|
<i class="fas fa-fire"></i> {{spell.system.heiCost}}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<div class="cde-grimoire-controls">
|
||||||
|
<a class="item-control" data-action="edit" data-item-id="{{spell._id}}" title="{{ localize 'CDE.SpellEdit' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control" data-action="delete" data-item-id="{{spell._id}}" title="{{ localize 'CDE.SpellDelete' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
{{else}}
|
||||||
|
<p class="cde-grimoire-empty">{{ localize "CDE.GrimoireEmpty" }}</p>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|||||||
@@ -21,11 +21,30 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="bonusmalusskill" value="{{bonusmalusskill}}" />
|
<select name="bonusmalusskill">
|
||||||
|
<option value="-5" {{#if (eq bonusmalusskill -5)}}selected{{/if}}>−5 dés</option>
|
||||||
|
<option value="-4" {{#if (eq bonusmalusskill -4)}}selected{{/if}}>−4 dés</option>
|
||||||
|
<option value="-3" {{#if (eq bonusmalusskill -3)}}selected{{/if}}>−3 dés</option>
|
||||||
|
<option value="-2" {{#if (eq bonusmalusskill -2)}}selected{{/if}}>−2 dés</option>
|
||||||
|
<option value="-1" {{#if (eq bonusmalusskill -1)}}selected{{/if}}>−1 dé</option>
|
||||||
|
<option value="0" {{#if (eq bonusmalusskill 0)}}selected{{/if}}>0 (aucun)</option>
|
||||||
|
<option value="1" {{#if (eq bonusmalusskill 1)}}selected{{/if}}>+1 dé</option>
|
||||||
|
<option value="2" {{#if (eq bonusmalusskill 2)}}selected{{/if}}>+2 dés</option>
|
||||||
|
<option value="3" {{#if (eq bonusmalusskill 3)}}selected{{/if}}>+3 dés</option>
|
||||||
|
<option value="4" {{#if (eq bonusmalusskill 4)}}selected{{/if}}>+4 dés</option>
|
||||||
|
<option value="5" {{#if (eq bonusmalusskill 5)}}selected{{/if}}>+5 dés</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="bonusauspiciousdice" min="0" max="15" value="{{bonusauspiciousdice}}" />
|
<select name="bonusauspiciousdice">
|
||||||
|
<option value="0" {{#if (eq bonusauspiciousdice 0)}}selected{{/if}}>0 dé-faste</option>
|
||||||
|
<option value="1" {{#if (eq bonusauspiciousdice 1)}}selected{{/if}}>1 dé-faste</option>
|
||||||
|
<option value="2" {{#if (eq bonusauspiciousdice 2)}}selected{{/if}}>2 dés-fastes</option>
|
||||||
|
<option value="3" {{#if (eq bonusauspiciousdice 3)}}selected{{/if}}>3 dés-fastes</option>
|
||||||
|
<option value="4" {{#if (eq bonusauspiciousdice 4)}}selected{{/if}}>4 dés-fastes</option>
|
||||||
|
<option value="5" {{#if (eq bonusauspiciousdice 5)}}selected{{/if}}>5 dés-fastes</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="cde-roll-hint"><i>{{ localize "CDE.DoNotModify" }}</i></p>
|
<p class="cde-roll-hint"><i>{{ localize "CDE.DoNotModify" }}</i></p>
|
||||||
@@ -47,15 +66,40 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.RollDifficulty" }} (×)</label>
|
<label>{{ localize "CDE.RollDifficulty" }} (×)</label>
|
||||||
<input class="cde-roll-input" type="number" name="rolldifficulty" value="{{rolldifficulty}}" />
|
<select name="rolldifficulty">
|
||||||
|
<option value="1" {{#if (eq rolldifficulty 1)}}selected{{/if}}>1 — Action moyenne</option>
|
||||||
|
<option value="2" {{#if (eq rolldifficulty 2)}}selected{{/if}}>2 — Action complexe</option>
|
||||||
|
<option value="3" {{#if (eq rolldifficulty 3)}}selected{{/if}}>3 — Action difficile</option>
|
||||||
|
<option value="4" {{#if (eq rolldifficulty 4)}}selected{{/if}}>4 — Action héroïque</option>
|
||||||
|
<option value="5" {{#if (eq rolldifficulty 5)}}selected{{/if}}>5 — Action légendaire</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="bonusmalusspeciality" value="{{bonusmalusspeciality}}" />
|
<select name="bonusmalusspeciality">
|
||||||
|
<option value="-5" {{#if (eq bonusmalusspeciality -5)}}selected{{/if}}>−5 dés</option>
|
||||||
|
<option value="-4" {{#if (eq bonusmalusspeciality -4)}}selected{{/if}}>−4 dés</option>
|
||||||
|
<option value="-3" {{#if (eq bonusmalusspeciality -3)}}selected{{/if}}>−3 dés</option>
|
||||||
|
<option value="-2" {{#if (eq bonusmalusspeciality -2)}}selected{{/if}}>−2 dés</option>
|
||||||
|
<option value="-1" {{#if (eq bonusmalusspeciality -1)}}selected{{/if}}>−1 dé</option>
|
||||||
|
<option value="0" {{#if (eq bonusmalusspeciality 0)}}selected{{/if}}>0 (aucun)</option>
|
||||||
|
<option value="1" {{#if (eq bonusmalusspeciality 1)}}selected{{/if}}>+1 dé</option>
|
||||||
|
<option value="2" {{#if (eq bonusmalusspeciality 2)}}selected{{/if}}>+2 dés</option>
|
||||||
|
<option value="3" {{#if (eq bonusmalusspeciality 3)}}selected{{/if}}>+3 dés</option>
|
||||||
|
<option value="4" {{#if (eq bonusmalusspeciality 4)}}selected{{/if}}>+4 dés</option>
|
||||||
|
<option value="5" {{#if (eq bonusmalusspeciality 5)}}selected{{/if}}>+5 dés</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.HeiSpend" }}</label>
|
<label>{{ localize "CDE.HeiSpend" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="heispend" min="0" value="{{heispend}}" />
|
<select name="heispend">
|
||||||
|
<option value="0" {{#if (eq heispend 0)}}selected{{/if}}>0 Hei</option>
|
||||||
|
<option value="1" {{#if (eq heispend 1)}}selected{{/if}}>1 Hei</option>
|
||||||
|
<option value="2" {{#if (eq heispend 2)}}selected{{/if}}>2 Hei</option>
|
||||||
|
<option value="3" {{#if (eq heispend 3)}}selected{{/if}}>3 Hei</option>
|
||||||
|
<option value="4" {{#if (eq heispend 4)}}selected{{/if}}>4 Hei</option>
|
||||||
|
<option value="5" {{#if (eq heispend 5)}}selected{{/if}}>5 Hei</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="cde-roll-hint"><i>{{ localize "CDE.DoNotModify" }}</i></p>
|
<p class="cde-roll-hint"><i>{{ localize "CDE.DoNotModify" }}</i></p>
|
||||||
|
|||||||
@@ -18,18 +18,42 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="bonusmalus" value="{{bonusmalus}}" />
|
<select name="bonusmalus">
|
||||||
|
<option value="-5" {{#if (eq bonusmalus -5)}}selected{{/if}}>−5 dés</option>
|
||||||
|
<option value="-4" {{#if (eq bonusmalus -4)}}selected{{/if}}>−4 dés</option>
|
||||||
|
<option value="-3" {{#if (eq bonusmalus -3)}}selected{{/if}}>−3 dés</option>
|
||||||
|
<option value="-2" {{#if (eq bonusmalus -2)}}selected{{/if}}>−2 dés</option>
|
||||||
|
<option value="-1" {{#if (eq bonusmalus -1)}}selected{{/if}}>−1 dé</option>
|
||||||
|
<option value="0" {{#if (eq bonusmalus 0)}}selected{{/if}}>0 (aucun)</option>
|
||||||
|
<option value="1" {{#if (eq bonusmalus 1)}}selected{{/if}}>+1 dé</option>
|
||||||
|
<option value="2" {{#if (eq bonusmalus 2)}}selected{{/if}}>+2 dés</option>
|
||||||
|
<option value="3" {{#if (eq bonusmalus 3)}}selected{{/if}}>+3 dés</option>
|
||||||
|
<option value="4" {{#if (eq bonusmalus 4)}}selected{{/if}}>+4 dés</option>
|
||||||
|
<option value="5" {{#if (eq bonusmalus 5)}}selected{{/if}}>+5 dés</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.WoundMalus" }}</label>
|
<label>{{ localize "CDE.WoundMalus" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="woundmalus" value="{{woundmalus}}" />
|
<select name="woundmalus">
|
||||||
|
<option value="0" {{#if (eq woundmalus 0)}}selected{{/if}}>0 — Indemne</option>
|
||||||
|
<option value="-1" {{#if (eq woundmalus -1)}}selected{{/if}}>−1 dé — Blessé</option>
|
||||||
|
<option value="-2" {{#if (eq woundmalus -2)}}selected{{/if}}>−2 dés — Gravement blessé</option>
|
||||||
|
<option value="-3" {{#if (eq woundmalus -3)}}selected{{/if}}>−3 dés — Critique</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="cde-roll-section">
|
<div class="cde-roll-section">
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="bonusauspiciousdice" min="0" max="15" value="{{bonusauspiciousdice}}" />
|
<select name="bonusauspiciousdice">
|
||||||
|
<option value="0" {{#if (eq bonusauspiciousdice 0)}}selected{{/if}}>0 dé-faste</option>
|
||||||
|
<option value="1" {{#if (eq bonusauspiciousdice 1)}}selected{{/if}}>1 dé-faste</option>
|
||||||
|
<option value="2" {{#if (eq bonusauspiciousdice 2)}}selected{{/if}}>2 dés-fastes</option>
|
||||||
|
<option value="3" {{#if (eq bonusauspiciousdice 3)}}selected{{/if}}>3 dés-fastes</option>
|
||||||
|
<option value="4" {{#if (eq bonusauspiciousdice 4)}}selected{{/if}}>4 dés-fastes</option>
|
||||||
|
<option value="5" {{#if (eq bonusauspiciousdice 5)}}selected{{/if}}>5 dés-fastes</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.TypeOfThrow" }}</label>
|
<label>{{ localize "CDE.TypeOfThrow" }}</label>
|
||||||
|
|||||||
@@ -18,18 +18,42 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="bonusmalus" value="{{bonusmalus}}" />
|
<select name="bonusmalus">
|
||||||
|
<option value="-5" {{#if (eq bonusmalus -5)}}selected{{/if}}>−5 dés</option>
|
||||||
|
<option value="-4" {{#if (eq bonusmalus -4)}}selected{{/if}}>−4 dés</option>
|
||||||
|
<option value="-3" {{#if (eq bonusmalus -3)}}selected{{/if}}>−3 dés</option>
|
||||||
|
<option value="-2" {{#if (eq bonusmalus -2)}}selected{{/if}}>−2 dés</option>
|
||||||
|
<option value="-1" {{#if (eq bonusmalus -1)}}selected{{/if}}>−1 dé</option>
|
||||||
|
<option value="0" {{#if (eq bonusmalus 0)}}selected{{/if}}>0 (aucun)</option>
|
||||||
|
<option value="1" {{#if (eq bonusmalus 1)}}selected{{/if}}>+1 dé</option>
|
||||||
|
<option value="2" {{#if (eq bonusmalus 2)}}selected{{/if}}>+2 dés</option>
|
||||||
|
<option value="3" {{#if (eq bonusmalus 3)}}selected{{/if}}>+3 dés</option>
|
||||||
|
<option value="4" {{#if (eq bonusmalus 4)}}selected{{/if}}>+4 dés</option>
|
||||||
|
<option value="5" {{#if (eq bonusmalus 5)}}selected{{/if}}>+5 dés</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.WoundMalus" }}</label>
|
<label>{{ localize "CDE.WoundMalus" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="woundmalus" value="{{woundmalus}}" />
|
<select name="woundmalus">
|
||||||
|
<option value="0" {{#if (eq woundmalus 0)}}selected{{/if}}>0 — Indemne</option>
|
||||||
|
<option value="-1" {{#if (eq woundmalus -1)}}selected{{/if}}>−1 dé — Blessé</option>
|
||||||
|
<option value="-2" {{#if (eq woundmalus -2)}}selected{{/if}}>−2 dés — Gravement blessé</option>
|
||||||
|
<option value="-3" {{#if (eq woundmalus -3)}}selected{{/if}}>−3 dés — Critique</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="cde-roll-section">
|
<div class="cde-roll-section">
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="bonusauspiciousdice" min="0" max="15" value="{{bonusauspiciousdice}}" />
|
<select name="bonusauspiciousdice">
|
||||||
|
<option value="0" {{#if (eq bonusauspiciousdice 0)}}selected{{/if}}>0 dé-faste</option>
|
||||||
|
<option value="1" {{#if (eq bonusauspiciousdice 1)}}selected{{/if}}>1 dé-faste</option>
|
||||||
|
<option value="2" {{#if (eq bonusauspiciousdice 2)}}selected{{/if}}>2 dés-fastes</option>
|
||||||
|
<option value="3" {{#if (eq bonusauspiciousdice 3)}}selected{{/if}}>3 dés-fastes</option>
|
||||||
|
<option value="4" {{#if (eq bonusauspiciousdice 4)}}selected{{/if}}>4 dés-fastes</option>
|
||||||
|
<option value="5" {{#if (eq bonusauspiciousdice 5)}}selected{{/if}}>5 dés-fastes</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.TypeOfThrow" }}</label>
|
<label>{{ localize "CDE.TypeOfThrow" }}</label>
|
||||||
|
|||||||
@@ -50,18 +50,42 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="bonusmalus" value="{{bonusmalus}}" />
|
<select name="bonusmalus">
|
||||||
|
<option value="-5" {{#if (eq bonusmalus -5)}}selected{{/if}}>−5 dés</option>
|
||||||
|
<option value="-4" {{#if (eq bonusmalus -4)}}selected{{/if}}>−4 dés</option>
|
||||||
|
<option value="-3" {{#if (eq bonusmalus -3)}}selected{{/if}}>−3 dés</option>
|
||||||
|
<option value="-2" {{#if (eq bonusmalus -2)}}selected{{/if}}>−2 dés</option>
|
||||||
|
<option value="-1" {{#if (eq bonusmalus -1)}}selected{{/if}}>−1 dé</option>
|
||||||
|
<option value="0" {{#if (eq bonusmalus 0)}}selected{{/if}}>0 (aucun)</option>
|
||||||
|
<option value="1" {{#if (eq bonusmalus 1)}}selected{{/if}}>+1 dé</option>
|
||||||
|
<option value="2" {{#if (eq bonusmalus 2)}}selected{{/if}}>+2 dés</option>
|
||||||
|
<option value="3" {{#if (eq bonusmalus 3)}}selected{{/if}}>+3 dés</option>
|
||||||
|
<option value="4" {{#if (eq bonusmalus 4)}}selected{{/if}}>+4 dés</option>
|
||||||
|
<option value="5" {{#if (eq bonusmalus 5)}}selected{{/if}}>+5 dés</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="cde-roll-section">
|
<div class="cde-roll-section">
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.WoundMalus" }}</label>
|
<label>{{ localize "CDE.WoundMalus" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="woundmalus" value="{{woundmalus}}" />
|
<select name="woundmalus">
|
||||||
|
<option value="0" {{#if (eq woundmalus 0)}}selected{{/if}}>0 — Indemne</option>
|
||||||
|
<option value="-1" {{#if (eq woundmalus -1)}}selected{{/if}}>−1 dé — Blessé</option>
|
||||||
|
<option value="-2" {{#if (eq woundmalus -2)}}selected{{/if}}>−2 dés — Gravement blessé</option>
|
||||||
|
<option value="-3" {{#if (eq woundmalus -3)}}selected{{/if}}>−3 dés — Critique</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="cde-roll-field">
|
<div class="cde-roll-field">
|
||||||
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
||||||
<input class="cde-roll-input" type="number" name="bonusauspiciousdice" min="0" max="15" value="{{bonusauspiciousdice}}" />
|
<select name="bonusauspiciousdice">
|
||||||
|
<option value="0" {{#if (eq bonusauspiciousdice 0)}}selected{{/if}}>0 dé-faste</option>
|
||||||
|
<option value="1" {{#if (eq bonusauspiciousdice 1)}}selected{{/if}}>1 dé-faste</option>
|
||||||
|
<option value="2" {{#if (eq bonusauspiciousdice 2)}}selected{{/if}}>2 dés-fastes</option>
|
||||||
|
<option value="3" {{#if (eq bonusauspiciousdice 3)}}selected{{/if}}>3 dés-fastes</option>
|
||||||
|
<option value="4" {{#if (eq bonusauspiciousdice 4)}}selected{{/if}}>4 dés-fastes</option>
|
||||||
|
<option value="5" {{#if (eq bonusauspiciousdice 5)}}selected{{/if}}>5 dés-fastes</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -25,10 +25,10 @@
|
|||||||
<div class="cde-stat-cell">
|
<div class="cde-stat-cell">
|
||||||
<span class="cde-stat-label">{{ localize "CDE.Discipline" }}</span>
|
<span class="cde-stat-label">{{ localize "CDE.Discipline" }}</span>
|
||||||
<select name="system.discipline">
|
<select name="system.discipline">
|
||||||
<option value="cinabre" {{#if (eq systemData.discipline "cinabre")}}selected{{/if}}>{{ localize "CDE.SchoolCinabre" }}</option>
|
<option value="internalcinnabar" {{#if (eq systemData.discipline "internalcinnabar")}}selected{{/if}}>{{ localize "CDE.SchoolCinabre" }}</option>
|
||||||
<option value="alchemy" {{#if (eq systemData.discipline "alchemy")}}selected{{/if}}>{{ localize "CDE.SchoolAlchemy" }}</option>
|
<option value="alchemy" {{#if (eq systemData.discipline "alchemy")}}selected{{/if}}>{{ localize "CDE.SchoolAlchemy" }}</option>
|
||||||
<option value="voie" {{#if (eq systemData.discipline "voie")}}selected{{/if}}>{{ localize "CDE.SchoolVoie" }}</option>
|
<option value="masteryoftheway" {{#if (eq systemData.discipline "masteryoftheway")}}selected{{/if}}>{{ localize "CDE.SchoolVoie" }}</option>
|
||||||
<option value="exorcisme" {{#if (eq systemData.discipline "exorcisme")}}selected{{/if}}>{{ localize "CDE.SchoolExorcisme" }}</option>
|
<option value="exorcism" {{#if (eq systemData.discipline "exorcism")}}selected{{/if}}>{{ localize "CDE.SchoolExorcisme" }}</option>
|
||||||
<option value="geomancy" {{#if (eq systemData.discipline "geomancy")}}selected{{/if}}>{{ localize "CDE.SchoolGeomancy" }}</option>
|
<option value="geomancy" {{#if (eq systemData.discipline "geomancy")}}selected{{/if}}>{{ localize "CDE.SchoolGeomancy" }}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user