Working on the spells panel, which resulted in a lot of weird structural changes that aren't *really* functional yet
This commit is contained in:
parent
227029ffcd
commit
dfc51a5899
31 changed files with 499 additions and 84 deletions
|
|
@ -49,10 +49,6 @@
|
|||
.dotdungeon > .window-content select :disabled, .dotdungeon > .window-content select:hover :disabled {
|
||||
cursor: default;
|
||||
}
|
||||
.dotdungeon > .window-content .debug-data {
|
||||
opacity: 60%;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon {
|
||||
container-type: size;
|
||||
|
|
@ -61,17 +57,40 @@
|
|||
padding: 0;
|
||||
background: #f2f2f2;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon button {
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content .debug-data {
|
||||
opacity: 60%;
|
||||
font-family: sans-serif;
|
||||
word-break: break-all;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button {
|
||||
border-radius: 4px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon button.primary {
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.primary {
|
||||
background: #00aa00;
|
||||
color: black;
|
||||
padding: 5px 7px;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon button.primary:hover {
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.primary:hover {
|
||||
background: #008800;
|
||||
color: white;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger {
|
||||
background: red;
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:hover {
|
||||
background: #cc0000;
|
||||
color: white;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.reduced-padding {
|
||||
padding: 2px 4px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.equal-padding {
|
||||
padding: 4px 4px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.equal-padding.reduced-padding {
|
||||
padding: 2px 2px;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAEA;EACC;;AAIF;EACC;EACA,aElDU;;;AFuDZ;EACC;;AAEA;EACC;EACA,YE1DW;;AF6DZ;EACC;;AAEA;EACC,YE9Dc;EF+Dd,OErDe;EFsDf;;AACA;EACC,YE7DiB;EF8DjB,OEpDkB%22,%22file%22:%22generic.css%22%7D */
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YErDW;;AFuDX;EACC;EACA,aE3DS;EF4DT;;AAGD;EACC;;AAEA;EACC,YE9Da;EF+Db,OErDc;EFsDd;;AACA;EACC,YE7DgB;EF8DhB,OEpDiB;;AFwDnB;EACC,YEpDY;EFqDZ,OElDa;EFmDb;;AACA;EACC,YEvDe;EFwDf,OErDgB;;AFyDlB;EACC;;AAID;EACC;;AACA;EACC%22,%22file%22:%22generic.css%22%7D */
|
||||
|
|
|
|||
30
.styles/icons.css
Normal file
30
.styles/icons.css
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--12 {
|
||||
height: 12px;
|
||||
width: 12px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--16 {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--20 {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--24 {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--28 {
|
||||
height: 28px;
|
||||
width: 28px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--32 {
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--36 {
|
||||
height: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/icons.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAOG;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA%22,%22file%22:%22icons.css%22%7D */
|
||||
|
|
@ -49,10 +49,6 @@
|
|||
.dotdungeon > .window-content select :disabled, .dotdungeon > .window-content select:hover :disabled {
|
||||
cursor: default;
|
||||
}
|
||||
.dotdungeon > .window-content .debug-data {
|
||||
opacity: 60%;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon {
|
||||
container-type: size;
|
||||
|
|
@ -61,18 +57,70 @@
|
|||
padding: 0;
|
||||
background: #f2f2f2;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon button {
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content .debug-data {
|
||||
opacity: 60%;
|
||||
font-family: sans-serif;
|
||||
word-break: break-all;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button {
|
||||
border-radius: 4px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon button.primary {
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.primary {
|
||||
background: #00aa00;
|
||||
color: black;
|
||||
padding: 5px 7px;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon button.primary:hover {
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.primary:hover {
|
||||
background: #008800;
|
||||
color: white;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger {
|
||||
background: red;
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:hover {
|
||||
background: #cc0000;
|
||||
color: white;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.reduced-padding {
|
||||
padding: 2px 4px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.equal-padding {
|
||||
padding: 4px 4px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.equal-padding.reduced-padding {
|
||||
padding: 2px 2px;
|
||||
}
|
||||
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--12 {
|
||||
height: 12px;
|
||||
width: 12px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--16 {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--20 {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--24 {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--28 {
|
||||
height: 28px;
|
||||
width: 28px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--32 {
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
}
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon .icon--36 {
|
||||
height: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
.dotdungeon .stat {
|
||||
display: flex;
|
||||
|
|
@ -146,6 +194,18 @@
|
|||
padding: 4px;
|
||||
gap: 4px;
|
||||
}
|
||||
.dotdungeon .actor--pc details {
|
||||
border-radius: 4px;
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
padding: 4px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.dotdungeon .actor--pc details summary {
|
||||
cursor: pointer;
|
||||
}
|
||||
.dotdungeon .actor--pc details[open] .expanded-rotate {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
.dotdungeon .actor--pc .panel--profile {
|
||||
grid-area: profile;
|
||||
}
|
||||
|
|
@ -366,4 +426,17 @@
|
|||
resize: vertical;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22,%22../styles/sheets/partials/stat.scss%22,%22../styles/sheets/partials/skill.scss%22,%22../styles/sheets/partials/panel.scss%22,%22../styles/mixins/_breakpoints.scss%22,%22../styles/sheets/actor/mvp.scss%22,%22../styles/sheets/actor/sync/basic.scss%22,%22../styles/sheets/items/aspect.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAEA;EACC;;AAIF;EACC;EACA,aElDU;;;AFuDZ;EACC;;AAEA;EACC;EACA,YE1DW;;AF6DZ;EACC;;AAEA;EACC,YE9Dc;EF+Dd,OErDe;EFsDf;;AACA;EACC,YE7DiB;EF8DjB,OEpDkB;;;AEvBtB;EACC;EACA;EACA;;ACHD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;ACdH;EACC;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ELlBD;EACA;EACA;EKkBE;EACA;EACA,aJrBU;EIsBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAGC;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;AD1LF;ECkMC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AD1NL;ECoOC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AC5PL;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAMA;EACC;EACA;;;AFlBH;EE4BG;IACC;IACA;;;ACzCL;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */
|
||||
.dotdungeon .item--spell {
|
||||
padding: 4px;
|
||||
}
|
||||
.dotdungeon .item--spell input[type=text] {
|
||||
font-size: 1.5em;
|
||||
height: 1.5em;
|
||||
width: 100%;
|
||||
}
|
||||
.dotdungeon .item--spell textarea {
|
||||
width: 100%;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22,%22../styles/icons.scss%22,%22../styles/sheets/partials/stat.scss%22,%22../styles/sheets/partials/skill.scss%22,%22../styles/sheets/partials/panel.scss%22,%22../styles/mixins/_breakpoints.scss%22,%22../styles/sheets/actor/mvp.scss%22,%22../styles/sheets/actor/sync/basic.scss%22,%22../styles/sheets/items/aspect.scss%22,%22../styles/sheets/items/spell.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YErDW;;AFuDX;EACC;EACA,aE3DS;EF4DT;;AAGD;EACC;;AAEA;EACC,YE9Da;EF+Db,OErDc;EFsDd;;AACA;EACC,YE7DgB;EF8DhB,OEpDiB;;AFwDnB;EACC,YEpDY;EFqDZ,OElDa;EFmDb;;AACA;EACC,YEvDe;EFwDf,OErDgB;;AFyDlB;EACC;;AAID;EACC;;AACA;EACC;;;AI1FF;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;;ACTJ;EACC;EACA;EACA;;ACHD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;ACdH;EACC;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ENlBD;EACA;EACA;EMkBE;EACA;EACA,aLrBU;EKsBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;AD3MF;ECmNC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AD3OL;ECqPC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AC7QL;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAMA;EACC;EACA;;;AFlBH;EE4BG;IACC;IACA;;;ACzCL;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;;ACXF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */
|
||||
|
|
|
|||
|
|
@ -6,6 +6,18 @@
|
|||
padding: 4px;
|
||||
gap: 4px;
|
||||
}
|
||||
.dotdungeon .actor--pc details {
|
||||
border-radius: 4px;
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
padding: 4px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.dotdungeon .actor--pc details summary {
|
||||
cursor: pointer;
|
||||
}
|
||||
.dotdungeon .actor--pc details[open] .expanded-rotate {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
.dotdungeon .actor--pc .panel--profile {
|
||||
grid-area: profile;
|
||||
}
|
||||
|
|
@ -183,4 +195,4 @@
|
|||
}
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../../../styles/sheets/actor/mvp.scss%22,%22../../../styles/mixins/_breakpoints.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAGA;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAGC;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;AC1LF;EDkMC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AC1NL;EDoOC;IACC;IACA;IACA,qBACC;;EAeC;IACC%22,%22file%22:%22mvp.css%22%7D */
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../../../styles/sheets/actor/mvp.scss%22,%22../../../styles/mixins/_breakpoints.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAGA;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;AC3MF;EDmNC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AC3OL;EDqPC;IACC;IACA;IACA,qBACC;;EAeC;IACC%22,%22file%22:%22mvp.css%22%7D */
|
||||
|
|
|
|||
14
.styles/sheets/items/spell.css
Normal file
14
.styles/sheets/items/spell.css
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
.dotdungeon .item--spell {
|
||||
padding: 4px;
|
||||
}
|
||||
.dotdungeon .item--spell input[type=text] {
|
||||
font-size: 1.5em;
|
||||
height: 1.5em;
|
||||
width: 100%;
|
||||
}
|
||||
.dotdungeon .item--spell textarea {
|
||||
width: 100%;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../../../styles/sheets/items/spell.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEA;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22spell.css%22%7D */
|
||||
|
|
@ -74,7 +74,8 @@
|
|||
"SyncSheet": {
|
||||
"basic": "Theme: Basic"
|
||||
},
|
||||
"AspectSheet": "Aspect Sheet"
|
||||
"AspectSheet": "Aspect Sheet",
|
||||
"SpellSheet": "Spell Sheet"
|
||||
},
|
||||
"actor": {
|
||||
"pc": {
|
||||
|
|
@ -184,6 +185,16 @@
|
|||
"duration": "Duration (seconds)",
|
||||
"description": "Description",
|
||||
"send-to-chat": "Send Aspect to Chat"
|
||||
},
|
||||
"spell": {
|
||||
"name.placeholder": "Name...",
|
||||
"cost.label": "Cost",
|
||||
"description.label": "Description",
|
||||
"aria": {
|
||||
"name": "The spell's name",
|
||||
"cost": "The amount of bytes it takes to cast the spell",
|
||||
"description": "The details of the spell"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,22 @@
|
|||
export const DOTDUNGEON = {};
|
||||
const statDice = [ `d4`, `d6`, `d8`, `d10`, `d12`, `d20` ];
|
||||
|
||||
DOTDUNGEON.statDice = [ `d4`, `d6`, `d8`, `d10`, `d12`, `d20` ];
|
||||
const trainingLevels = [``, `locked`, `+2`, `+4`];
|
||||
|
||||
DOTDUNGEON.trainingLevels = [``, `locked`, `+2`, `+4`];
|
||||
const damageTypes = [ `slashing`, `piercing`, `smashing`, `gun`, `neon`, `shadow`, `solar` ];
|
||||
|
||||
DOTDUNGEON.damageTypes = [ `slashing`, `piercing`, `smashing`, `gun`, `neon`, `shadow`, `solar` ];
|
||||
const ammoTypes = [`quivers`, `mags`, `cells`];
|
||||
|
||||
DOTDUNGEON.ammoTypes = [`quivers`, `mags`, `cells`];
|
||||
const skills = {
|
||||
build: [ "defense", "magic", "melee", "platforming", "strength", ],
|
||||
meta: [ "alchemy", "arcanum", "dreams", "lore", "navigation", ],
|
||||
presence: [ "animal_handling", "perception", "sneak", "speech", "vibes", ],
|
||||
hands: [ "accuracy", "crafting", "engineering", "explosives", "piloting", ]
|
||||
};
|
||||
|
||||
export default {
|
||||
statDice,
|
||||
trainingLevels,
|
||||
damageTypes,
|
||||
ammoTypes,
|
||||
skills,
|
||||
};
|
||||
|
|
@ -14,6 +14,11 @@ export class ActorHandler extends Actor {
|
|||
return this.actorTypes[this.type];
|
||||
};
|
||||
|
||||
updateEmbeddedDocument($event) {
|
||||
if (!this.fn?.updateEmbeddedDocument) return;
|
||||
this.fn.updateEmbeddedDocument.bind(this)($event);
|
||||
};
|
||||
|
||||
createCustomSpell() {
|
||||
if (!this.fn?.createCustomSpell) return;
|
||||
this.fn.createCustomSpell.bind(this)();
|
||||
|
|
|
|||
|
|
@ -7,4 +7,10 @@ export class PlayerActor {
|
|||
description: ``,
|
||||
};
|
||||
};
|
||||
|
||||
static async updateEmbeddedDocument($event) {
|
||||
let data = $event.target.dataset;
|
||||
let item = await fromUuid(data.embeddedId);
|
||||
item?.update({ [data.embeddedUpdate]: $event.target.value });
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,26 +1,27 @@
|
|||
// Data Models
|
||||
import { DescribedItemData } from "./module/models/Item/DescribedItemData.mjs";
|
||||
import { AspectItemData } from "./module/models/AspectItemData.mjs";
|
||||
import { PlayerData } from "./module/models/PlayerData.mjs";
|
||||
import { SyncData } from "./module/models/SyncData.mjs";
|
||||
import { AspectItemData } from "./models/AspectItemData.mjs";
|
||||
import { SpellItemData } from "./models/Item/Spell.mjs";
|
||||
import { PlayerData } from "./models/PlayerData.mjs";
|
||||
import { SyncData } from "./models/SyncData.mjs";
|
||||
|
||||
// Main Documents
|
||||
import { ActorHandler } from "./module/documents/Actor/Handler.mjs";
|
||||
import { ActorHandler } from "./documents/Actor/Handler.mjs";
|
||||
|
||||
// Character Sheets
|
||||
import { AspectSheet } from "./module/sheets/AspectSheet.mjs";
|
||||
import { PlayerSheet } from "./module/sheets/PlayerSheet.mjs";
|
||||
import { BasicSyncSheet } from "./module/sheets/SyncVariations/BasicSyncSheet.mjs";
|
||||
import { SpellSheet } from "./sheets/SpellSheet.mjs";
|
||||
import { AspectSheet } from "./sheets/AspectSheet.mjs";
|
||||
import { PlayerSheet } from "./sheets/PlayerSheet.mjs";
|
||||
import { BasicSyncSheet } from "./sheets/SyncVariations/BasicSyncSheet.mjs";
|
||||
|
||||
// Utility imports
|
||||
import * as hbs from "./module/handlebars.mjs";
|
||||
import * as hbs from "./handlebars.mjs";
|
||||
|
||||
// Non-Setup hooks
|
||||
import "./module/hooks/hotReload.mjs";
|
||||
import "./hooks/hotReload.mjs";
|
||||
|
||||
// Misc Imports
|
||||
import loadSettings from "./module/settings/index.mjs";
|
||||
import { DOTDUNGEON } from "./module/config.mjs";
|
||||
import loadSettings from "./settings/index.mjs";
|
||||
import DOTDUNGEON from "./config.mjs";
|
||||
|
||||
|
||||
Hooks.once(`init`, () => {
|
||||
|
|
@ -31,7 +32,7 @@ Hooks.once(`init`, () => {
|
|||
CONFIG.Actor.dataModels.player = PlayerData;
|
||||
CONFIG.Actor.dataModels.sync = SyncData;
|
||||
CONFIG.Item.dataModels.aspect = AspectItemData;
|
||||
CONFIG.Item.dataModels.spell = DescribedItemData;
|
||||
CONFIG.Item.dataModels.spell = SpellItemData;
|
||||
CONFIG.Actor.documentClass = ActorHandler;
|
||||
|
||||
CONFIG.DOTDUNGEON = DOTDUNGEON;
|
||||
|
|
@ -53,6 +54,11 @@ Hooks.once(`init`, () => {
|
|||
types: ["aspect"],
|
||||
label: "dotdungeon.sheet-names.AspectSheet"
|
||||
});
|
||||
Items.registerSheet("dotdungeon", SpellSheet, {
|
||||
makeDefault: true,
|
||||
types: ["spell"],
|
||||
label: "dotdungeon.sheet-names.SpellSheet"
|
||||
});
|
||||
|
||||
hbs.registerHandlebarsHelpers();
|
||||
hbs.preloadHandlebarsTemplates();
|
||||
|
|
@ -7,5 +7,6 @@
|
|||
* @returns {"open"|null} The HTML insertion indicating the details is expanded
|
||||
*/
|
||||
export function detailsExpanded(expanded, collapseId) {
|
||||
console.log(`.dungeon |`, collapseId, expanded)
|
||||
return expanded.has(collapseId) ? "open" : null;
|
||||
};
|
||||
|
|
@ -1 +1,10 @@
|
|||
export function schemaOptions() {};
|
||||
export function schemaOptions(document, schemaPath) {
|
||||
let splitPath = schemaPath.split(`.`);
|
||||
|
||||
let tempLocation = document.schema.fields.system;
|
||||
for (const part of splitPath) {
|
||||
tempLocation = tempLocation[part].fields
|
||||
}
|
||||
|
||||
return CONFIG.Actor.dataModels.player.schema.fields.weapon.fields.mainHand.fields.damage.options.options;
|
||||
};
|
||||
|
|
@ -2,11 +2,6 @@ export class CommonItemData extends foundry.abstract.DataModel {
|
|||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
return {
|
||||
name: new fields.StringField({
|
||||
initial: ``,
|
||||
blank: true,
|
||||
trim: true,
|
||||
}),
|
||||
cost: new fields.NumberField({
|
||||
initial: null,
|
||||
nullable: true,
|
||||
|
|
|
|||
22
module/models/Item/Spell.mjs
Normal file
22
module/models/Item/Spell.mjs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import { DescribedItemData } from "./DescribedItemData.mjs";
|
||||
import DOTDUNGEON from "../../config.mjs";
|
||||
|
||||
export class SpellItemData extends DescribedItemData {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
return mergeObject(super.defineSchema(), {
|
||||
skill: new fields.StringField({
|
||||
initial: ``,
|
||||
blank: true,
|
||||
trim: true,
|
||||
options() {
|
||||
let skills = [ `` ];
|
||||
for (const group in DOTDUNGEON.skills) {
|
||||
skills.push(...skills[group]);
|
||||
};
|
||||
return skills;
|
||||
},
|
||||
}),
|
||||
});
|
||||
};
|
||||
};
|
||||
|
|
@ -20,7 +20,7 @@ export class AspectSheet extends ItemSheet {
|
|||
console.debug(`.dungeon | Adding event listeners for Item: ${this.id}`);
|
||||
};
|
||||
|
||||
getData() {
|
||||
async getData() {
|
||||
const ctx = {};
|
||||
const item = this.item.toObject(false);
|
||||
|
||||
|
|
@ -29,10 +29,6 @@ export class AspectSheet extends ItemSheet {
|
|||
ctx.system = item.system;
|
||||
ctx.flags = item.flags;
|
||||
|
||||
console.groupCollapsed(`AspectSheet.getData`);
|
||||
console.log(`ctx`, ctx);
|
||||
console.log(`item`, item);
|
||||
console.groupEnd();
|
||||
return ctx;
|
||||
};
|
||||
};
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
import DOTDUNGEON from "../config.mjs";
|
||||
import { preloadIcons } from "../handlebars.mjs";
|
||||
|
||||
export class GenericActorSheet extends ActorSheet {
|
||||
_expanded = new Set();
|
||||
|
||||
|
|
@ -8,8 +11,8 @@ export class GenericActorSheet extends ActorSheet {
|
|||
`resourcesOrSupplies`,
|
||||
];
|
||||
|
||||
getData() {
|
||||
const ctx = super.getData();
|
||||
async getData() {
|
||||
const ctx = {};
|
||||
|
||||
// Send all of the settings that sheets need into their context
|
||||
ctx.settings = {};
|
||||
|
|
@ -24,6 +27,10 @@ export class GenericActorSheet extends ActorSheet {
|
|||
idp: this.actor.uuid,
|
||||
};
|
||||
|
||||
ctx.actor = this.actor;
|
||||
ctx.config = DOTDUNGEON;
|
||||
ctx.icons = await preloadIcons();
|
||||
|
||||
return ctx;
|
||||
};
|
||||
|
||||
|
|
|
|||
42
module/sheets/GenericItemSheet.mjs
Normal file
42
module/sheets/GenericItemSheet.mjs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
import { preloadIcons } from "../handlebars.mjs";
|
||||
|
||||
export class GenericItemSheet extends ItemSheet {
|
||||
_expanded = new Set();
|
||||
|
||||
#propogatedSettings = [
|
||||
`devMode`,
|
||||
`showAvatarOnSheet`,
|
||||
`playersCanChangeGroup`,
|
||||
`resourcesOrSupplies`,
|
||||
];
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
if (this.document.isEmbedded) return;
|
||||
if (!this.isEditable) return;
|
||||
console.debug(`.dungeon | Adding event listeners for Generic Item: ${this.id}`);
|
||||
};
|
||||
|
||||
async getData() {
|
||||
const ctx = {};
|
||||
const item = this.item.toObject(false);
|
||||
|
||||
// Send all of the settings that sheets need into their context
|
||||
ctx.settings = {};
|
||||
for (const setting of this.#propogatedSettings) {
|
||||
ctx.settings[setting] = game.settings.get(`dotdungeon`, setting);
|
||||
};
|
||||
|
||||
ctx.isGM = game.users.current.hasRole(CONST.USER_ROLES.ASSISTANT);
|
||||
|
||||
ctx.meta = {
|
||||
expanded: this._expanded,
|
||||
idp: this.actor.uuid,
|
||||
};
|
||||
|
||||
ctx.icons = await preloadIcons();
|
||||
|
||||
return ctx;
|
||||
};
|
||||
};
|
||||
|
|
@ -20,23 +20,23 @@ export class PlayerSheet extends GenericActorSheet {
|
|||
console.debug(`.dungeon | Adding event listeners for Actor: ${this.id}`);
|
||||
|
||||
html.find(`.add-spell`).on(`click`, this.actor.createCustomSpell.bind(this.actor));
|
||||
html.find(`[data-embedded-update]`)
|
||||
.on(`change`, this.actor.updateEmbeddedDocument.bind(this.actor));
|
||||
};
|
||||
|
||||
getData() {
|
||||
const ctx = super.getData();
|
||||
async getData() {
|
||||
const ctx = await super.getData();
|
||||
const actor = this.actor.toObject(false);
|
||||
|
||||
ctx.system = actor.system;
|
||||
ctx.flags = actor.flags;
|
||||
ctx.items = this.actor.itemTypes;
|
||||
|
||||
ctx.computed = {
|
||||
canChangeGroup: ctx.settings.playersCanChangeGroup || ctx.isGM,
|
||||
};
|
||||
|
||||
console.groupCollapsed(`PlayerSheet.getData`);
|
||||
console.log(`ctx`, ctx);
|
||||
console.log(`actor`, actor);
|
||||
console.groupEnd();
|
||||
console.log(ctx)
|
||||
return ctx;
|
||||
};
|
||||
};
|
||||
36
module/sheets/SpellSheet.mjs
Normal file
36
module/sheets/SpellSheet.mjs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import { GenericItemSheet } from "./GenericItemSheet.mjs";
|
||||
|
||||
export class SpellSheet extends GenericItemSheet {
|
||||
static get defaultOptions() {
|
||||
let opts = mergeObject(
|
||||
super.defaultOptions,
|
||||
{
|
||||
template: `systems/dotdungeon/templates/items/spell.hbs`,
|
||||
width: 280,
|
||||
height: 340,
|
||||
}
|
||||
);
|
||||
opts.classes.push(`dotdungeon`);
|
||||
return opts;
|
||||
};
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
if (this.document.isEmbedded) return;
|
||||
if (!this.isEditable) return;
|
||||
console.debug(`.dungeon | Adding event listeners for Generic Item: ${this.id}`);
|
||||
};
|
||||
|
||||
async getData() {
|
||||
const ctx = {};
|
||||
const item = this.item.toObject(false);
|
||||
|
||||
ctx.name = super.name;
|
||||
ctx.item = item;
|
||||
ctx.system = item.system;
|
||||
ctx.flags = item.flags;
|
||||
|
||||
return ctx;
|
||||
};
|
||||
};
|
||||
|
|
@ -16,8 +16,8 @@ export class AbstractSyncSheet extends GenericActorSheet {
|
|||
return opts;
|
||||
};
|
||||
|
||||
getData() {
|
||||
const ctx = super.getData();
|
||||
async getData() {
|
||||
const ctx = await super.getData();
|
||||
const actor = this.actor.toObject(false);
|
||||
|
||||
ctx.system = actor.system;
|
||||
|
|
|
|||
|
|
@ -25,3 +25,9 @@ $text-on-primary-d20: white;
|
|||
$text-on-primary-d40: white;
|
||||
$text-on-primary-d60: white;
|
||||
$text-on-primary-d80: white;
|
||||
|
||||
$colour-danger: red;
|
||||
$colour-danger-d20: color.scale($colour-danger, $lightness: -20%);
|
||||
|
||||
$text-on-danger: white;
|
||||
$text-on-danger-d20: white;
|
||||
|
|
@ -61,6 +61,7 @@
|
|||
.debug-data {
|
||||
opacity: 60%;
|
||||
font-family: $body-font;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
button {
|
||||
|
|
@ -69,12 +70,35 @@
|
|||
&.primary {
|
||||
background: $colour-primary;
|
||||
color: $text-on-primary;
|
||||
padding: 5px 7px;
|
||||
padding: 4px 8px;
|
||||
&:hover {
|
||||
background: $colour-primary-d20;
|
||||
color: $text-on-primary-d20;
|
||||
}
|
||||
}
|
||||
|
||||
&.danger {
|
||||
background: $colour-danger;
|
||||
color: $text-on-danger;
|
||||
padding: 4px 8px;
|
||||
&:hover {
|
||||
background: $colour-danger-d20;
|
||||
color: $text-on-danger-d20;
|
||||
}
|
||||
}
|
||||
|
||||
&.reduced-padding {
|
||||
padding: 2px 4px;
|
||||
}
|
||||
|
||||
|
||||
&.equal-padding {
|
||||
padding: 4px 4px;
|
||||
&.reduced-padding {
|
||||
padding: 2px 2px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
14
styles/icons.scss
Normal file
14
styles/icons.scss
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
$iconSizes: 12, 16, 20, 24, 28, 32, 36;
|
||||
|
||||
.dotdungeon.dotdungeon.dotdungeon.dotdungeon {
|
||||
.icon {
|
||||
|
||||
// The various icon sizes
|
||||
@each $size in $iconSizes {
|
||||
&--#{$size} {
|
||||
height: #{$size}px;
|
||||
width: #{$size}px;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@
|
|||
@use "./vars.scss" as *;
|
||||
|
||||
@use "./generic.scss";
|
||||
@use "./icons.scss";
|
||||
|
||||
@use "./sheets/partials/stat.scss";
|
||||
@use "./sheets/partials/skill.scss";
|
||||
|
|
@ -11,3 +12,4 @@
|
|||
@use "./sheets/actor/mvp.scss";
|
||||
@use "./sheets/actor/sync/basic.scss";
|
||||
@use "./sheets/items/aspect.scss";
|
||||
@use "./sheets/items/spell.scss";
|
||||
|
|
@ -21,6 +21,23 @@
|
|||
padding: 4px;
|
||||
gap: 4px;
|
||||
|
||||
details {
|
||||
border-radius: 4px;
|
||||
background-color: rgba(0,0,0, 0.2);
|
||||
padding: 4px;
|
||||
margin-bottom: 8px;
|
||||
|
||||
summary {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&[open] {
|
||||
.expanded-rotate {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.panel {
|
||||
&--profile {
|
||||
grid-area: profile;
|
||||
|
|
|
|||
16
styles/sheets/items/spell.scss
Normal file
16
styles/sheets/items/spell.scss
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
@use "../../vars" as *;
|
||||
|
||||
.dotdungeon .item--spell {
|
||||
padding: 4px;
|
||||
|
||||
input[type=text] {
|
||||
font-size: 1.5em;
|
||||
height: 1.5em;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 100%;
|
||||
resize: vertical;
|
||||
}
|
||||
}
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
],
|
||||
"url": "https://github.com/Oliver-Akins/foundry.dungeon",
|
||||
"esmodules": [
|
||||
"dotdungeon.mjs"
|
||||
"module/dotdungeon.mjs"
|
||||
],
|
||||
"styles": [
|
||||
".styles/root.css"
|
||||
|
|
|
|||
|
|
@ -1,35 +1,44 @@
|
|||
{{#> dotdungeon.panel class="spells" title="dotdungeon.actor.pc.panel.spells"}}
|
||||
{{#each system.spells as | spell |}}
|
||||
<details {{dd-expanded ../meta.expanded @key}}>
|
||||
<summary data-collapse-id="{{@key}}">
|
||||
{{spell.name}} (Cost: {{spell.cost}})
|
||||
{{#each items.spell as | spell |}}
|
||||
<details {{dd-expanded ../meta.expanded spell.uuid}}>
|
||||
<summary data-collapse-id="{{spell.uuid}}">
|
||||
<span class="flex-grow" style="flex-grow: 1">
|
||||
{{spell.name}}
|
||||
{{#if spell.system.cost }}
|
||||
(Cost: {{spell.system.cost}})
|
||||
{{/if}}
|
||||
</span>
|
||||
</summary>
|
||||
|
||||
|
||||
<div class="spell">
|
||||
<div class="spell__name">
|
||||
<label for="{{meta.idp}}-{{@key}}-name">Name</label>
|
||||
<label for="{{spell.uuid}}-name">Name</label>
|
||||
<input
|
||||
type="text"
|
||||
id="{{meta.idp}}-{{@key}}-name"
|
||||
name="system.spells.{{@key}}.name"
|
||||
id="{{spell.uuid}}-name"
|
||||
value="{{spell.name}}"
|
||||
data-embedded-update="name"
|
||||
data-embedded-id="{{spell.uuid}}"
|
||||
>
|
||||
</div>
|
||||
<div class="spell__cost">
|
||||
<label for="{{meta.idp}}-{{@key}}-cost"></label>
|
||||
<label for="{{spell.uuid}}-cost">Cost</label>
|
||||
<input
|
||||
type="text"
|
||||
id="{{meta.idp}}-{{@key}}-cost"
|
||||
name="system.spells.{{@key}}.cost"
|
||||
value="{{spell.cost}}"
|
||||
id="{{spell.uuid}}-cost"
|
||||
value="{{spell.system.cost}}"
|
||||
data-embedded-update="system.cost"
|
||||
data-embedded-id="{{spell.uuid}}"
|
||||
>
|
||||
</div>
|
||||
<div class="spell__description">
|
||||
{{spell.description}}
|
||||
</div>
|
||||
<div class="flex-row flex-end">
|
||||
<button>
|
||||
Delete
|
||||
</button>
|
||||
<label for="{{spell.uuid}}-description"></label>
|
||||
<textarea
|
||||
id="{{spell.uuid}}-description"
|
||||
data-embedded-update="system.description"
|
||||
data-embedded-id="{{spell.uuid}}"
|
||||
>{{spell.system.description}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
|
|
@ -37,10 +46,9 @@
|
|||
<p>
|
||||
You have no spells yet!
|
||||
</p>
|
||||
<div class="debug-data">
|
||||
{{dd-stringify system.spells}}
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
|
||||
<div class="flex-row">
|
||||
<button
|
||||
class="primary add-spell"
|
||||
|
|
|
|||
|
|
@ -55,6 +55,11 @@
|
|||
<pre><code>{{dd-stringify CONFIG}}</code></pre>
|
||||
</div>
|
||||
<hr>
|
||||
<div>
|
||||
Items:
|
||||
<pre><code>{{dd-stringify items}}</code></pre>
|
||||
</div>
|
||||
<hr>
|
||||
<div>
|
||||
System:
|
||||
<pre><code>{{dd-stringify system}}</code></pre>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
name="system.deactivateAfter"
|
||||
value="{{system.deactivateAfter}}"
|
||||
>
|
||||
{{dd-toFriendlyDuration system.deactivateAfter}}
|
||||
</label>
|
||||
<label>
|
||||
{{localize "dotdungeon.item.aspect.description"}}:
|
||||
|
|
|
|||
27
templates/items/spell.hbs
Normal file
27
templates/items/spell.hbs
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<form autocomplete="off" class="item--spell">
|
||||
<h2>
|
||||
<input
|
||||
type="text"
|
||||
placeholder="{{localize "dotdungeon.item.spell.name.placeholder"}}"
|
||||
name="name"
|
||||
value="{{item.name}}"
|
||||
aria-label="{{localize "dotdungeon.item.spell.aria.name"}}"
|
||||
>
|
||||
</h2>
|
||||
<label>
|
||||
{{localize "dotdungeon.item.spell.cost.label"}}
|
||||
<input
|
||||
type="number"
|
||||
name="system.cost"
|
||||
value="{{system.cost}}"
|
||||
aria-label="{{localize "dotdungeon.item.spell.aria.cost"}}"
|
||||
>
|
||||
</label>
|
||||
<label>
|
||||
{{localize "dotdungeon.item.spell.description.label"}}:
|
||||
<textarea
|
||||
name="system.description"
|
||||
aria-description="{{localize "dotdungeon.item.spell.aria.description"}}"
|
||||
>{{system.description}}</textarea>
|
||||
</label>
|
||||
</form>
|
||||
Loading…
Add table
Add a link
Reference in a new issue