Pets and misc changes

This commit is contained in:
Oliver-Akins 2024-01-26 21:40:27 -07:00
parent 4a3523d6cf
commit b30aa18a27
15 changed files with 244 additions and 32 deletions

View file

@ -217,7 +217,7 @@
}
.dotdungeon .actor--pc {
display: grid;
grid-template-areas: "profile stats stats" "profile skills skills" "sync skills skills" "spells weapons aspect" "spells weapons aspect" "backpack roles mounts" "backpack roles mounts" "summons storage storage" "summons storage storage";
grid-template-areas: "profile stats stats" "profile skills skills" "sync skills skills" "spells weapons aspect" "spells weapons aspect" "backpack roles mounts" "backpack roles mounts" "pets storage storage" "pets storage storage";
grid-template-columns: repeat(3, minmax(0, 1fr));
grid-template-rows: min-content 1fr repeat(7, min-content);
padding: 4px;
@ -401,8 +401,16 @@
.dotdungeon .actor--pc .panel--mounts {
grid-area: mounts;
}
.dotdungeon .actor--pc .panel--summons {
grid-area: summons;
.dotdungeon .actor--pc .panel--pets {
grid-area: pets;
}
.dotdungeon .actor--pc .panel--pets .panel__content {
display: grid;
grid-template-rows: min-content min-content;
gap: 4px;
}
.dotdungeon .actor--pc .panel--pets .panel__content textarea {
resize: vertical;
}
.dotdungeon .actor--pc .panel--storage {
grid-area: storage;
@ -421,7 +429,7 @@
.dotdungeon .actor--pc {
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: repeat(15, min-content);
grid-template-areas: "profile stats" "profile skills" "sync skills" "weapons skills" "weapons skills" "backpack aspect" "backpack aspect" "backpack roles" "backpack roles" "backpack roles" "backpack spells" "summons spells" "summons storage" "mounts storage" "mounts storage";
grid-template-areas: "profile stats" "profile skills" "sync skills" "weapons skills" "weapons skills" "backpack aspect" "backpack aspect" "backpack roles" "backpack roles" "backpack roles" "backpack spells" "pets spells" "pets storage" "mounts storage" "mounts storage";
}
.dotdungeon .actor--pc .panel--stats .panel__content {
flex-wrap: wrap;
@ -435,7 +443,7 @@
.dotdungeon .actor--pc {
grid-template-columns: 1fr;
grid-template-rows: repeat(12, min-content);
grid-template-areas: "profile" "stats" "sync" "skills" "aspect" "roles" "backpack" "weapons" "spells" "mounts" "summons" "storage";
grid-template-areas: "profile" "stats" "sync" "skills" "aspect" "roles" "backpack" "weapons" "spells" "mounts" "pets" "storage";
}
.dotdungeon .actor--pc .panel--skills .skill {
flex-direction: column;
@ -498,4 +506,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/global/icons.scss%22,%22../styles/global/buttons.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;;AAGD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YEzDW;;AF2DX;EACC;EACA,aE/DS;EFgET;;;AIhEF;EACC;EACA;EACA;;AAIC;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;;ACTH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,YHXc;EGYd,OHXe;;AGYf;EACC;EACA,OHfa;EGgBb,cHhBa;;AGoBf;EACC,YHlBc;EGmBd,OHlBe;;AGmBf;EACC;EACA,OHtBa;EGuBb,cHvBa;;AG2Bf;EACC,YHzBa;EG0Bb,OHzBc;;AG0Bd;EACC;EACA,OH7BY;EG8BZ,cH9BY;;AGkCd;EACC;;AAID;EACC;;AACA;EACC;;;ACvDJ;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;EPlBD;EACA;EACA;EOkBE;EACA;EACA,aNrBU;EMsBV;;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;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAKJ;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;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGF;EACC;;AAED;EACC;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAIA;EACC;;;ADpPF;EC4PC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;ADpRL;EC8RC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;ACtTL;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 */
.dotdungeon .item--pet {
padding: 4px;
}
.dotdungeon .item--pet input[type=text] {
font-size: 1.5em;
height: 1.5em;
width: 100%;
}
.dotdungeon .item--pet 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/global/icons.scss%22,%22../styles/global/buttons.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,%22../styles/sheets/items/pet.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;;AAGD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YEzDW;;AF2DX;EACC;EACA,aE/DS;EFgET;;;AIhEF;EACC;EACA;EACA;;AAIC;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;;ACTH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,YHXc;EGYd,OHXe;;AGYf;EACC;EACA,OHfa;EGgBb,cHhBa;;AGoBf;EACC,YHlBc;EGmBd,OHlBe;;AGmBf;EACC;EACA,OHtBa;EGuBb,cHvBa;;AG2Bf;EACC,YHzBa;EG0Bb,OHzBc;;AG0Bd;EACC;EACA,OH7BY;EG8BZ,cH9BY;;AGkCd;EACC;;AAID;EACC;;AACA;EACC;;;ACvDJ;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;EPlBD;EACA;EACA;EOkBE;EACA;EACA,aNrBU;EMsBV;;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;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAKJ;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;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGF;EACC;;AAED;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAIA;EACC;;;AD9PF;ECsQC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AD9RL;ECwSC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AChUL;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;;;ACXF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */

View file

@ -1,6 +1,6 @@
.dotdungeon .actor--pc {
display: grid;
grid-template-areas: "profile stats stats" "profile skills skills" "sync skills skills" "spells weapons aspect" "spells weapons aspect" "backpack roles mounts" "backpack roles mounts" "summons storage storage" "summons storage storage";
grid-template-areas: "profile stats stats" "profile skills skills" "sync skills skills" "spells weapons aspect" "spells weapons aspect" "backpack roles mounts" "backpack roles mounts" "pets storage storage" "pets storage storage";
grid-template-columns: repeat(3, minmax(0, 1fr));
grid-template-rows: min-content 1fr repeat(7, min-content);
padding: 4px;
@ -184,8 +184,16 @@
.dotdungeon .actor--pc .panel--mounts {
grid-area: mounts;
}
.dotdungeon .actor--pc .panel--summons {
grid-area: summons;
.dotdungeon .actor--pc .panel--pets {
grid-area: pets;
}
.dotdungeon .actor--pc .panel--pets .panel__content {
display: grid;
grid-template-rows: min-content min-content;
gap: 4px;
}
.dotdungeon .actor--pc .panel--pets .panel__content textarea {
resize: vertical;
}
.dotdungeon .actor--pc .panel--storage {
grid-area: storage;
@ -204,7 +212,7 @@
.dotdungeon .actor--pc {
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: repeat(15, min-content);
grid-template-areas: "profile stats" "profile skills" "sync skills" "weapons skills" "weapons skills" "backpack aspect" "backpack aspect" "backpack roles" "backpack roles" "backpack roles" "backpack spells" "summons spells" "summons storage" "mounts storage" "mounts storage";
grid-template-areas: "profile stats" "profile skills" "sync skills" "weapons skills" "weapons skills" "backpack aspect" "backpack aspect" "backpack roles" "backpack roles" "backpack roles" "backpack spells" "pets spells" "pets storage" "mounts storage" "mounts storage";
}
.dotdungeon .actor--pc .panel--stats .panel__content {
flex-wrap: wrap;
@ -218,11 +226,11 @@
.dotdungeon .actor--pc {
grid-template-columns: 1fr;
grid-template-rows: repeat(12, min-content);
grid-template-areas: "profile" "stats" "sync" "skills" "aspect" "roles" "backpack" "weapons" "spells" "mounts" "summons" "storage";
grid-template-areas: "profile" "stats" "sync" "skills" "aspect" "roles" "backpack" "weapons" "spells" "mounts" "pets" "storage";
}
.dotdungeon .actor--pc .panel--skills .skill {
flex-direction: column;
}
}
/*# 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;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAKJ;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;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGF;EACC;;AAED;EACC;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAIA;EACC;;;ACpPF;ED4PC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;ACpRL;ED8RC;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;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAKJ;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;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGF;EACC;;AAED;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAIA;EACC;;;AC9PF;EDsQC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AC9RL;EDwSC;IACC;IACA;IACA,qBACC;;EAeC;IACC%22,%22file%22:%22mvp.css%22%7D */

View file

@ -0,0 +1,14 @@
.dotdungeon .item--pet {
padding: 4px;
}
.dotdungeon .item--pet input[type=text] {
font-size: 1.5em;
height: 1.5em;
width: 100%;
}
.dotdungeon .item--pet 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/pet.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEA;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22pet.css%22%7D */

View file

@ -83,7 +83,8 @@
"basic": "Theme: Basic"
},
"AspectSheet": "Aspect Sheet",
"SpellSheet": "Spell Sheet"
"SpellSheet": "Spell Sheet",
"PetSheet": "Pet Sheet"
},
"actor": {
"pc": {
@ -98,7 +99,7 @@
"roles": "Roles",
"spells": "Spells",
"mounts": "Transportation",
"summons": "Pets",
"pets": "Pets",
"storage": "Storage"
},
"stat": {
@ -201,8 +202,9 @@
"chat": "Send spell information to chat"
}
},
"summons": {
"upkeep": "(Upkeep: {upkeep})"
"pets": {
"upkeep": "(Upkeep: {upkeep})",
"add": "Add a Pet"
}
},
"sync": {
@ -232,6 +234,13 @@
"cost": "The amount of bytes it takes to cast the spell",
"description": "The details of the spell"
}
},
"pet": {
"cost.label": "Purchase Cost",
"name.placeholder": "Name...",
"pokeballd": "In Jar?",
"upkeep.label": "Pet Upkeep",
"description": "Description:"
}
},
"notification": {
@ -258,6 +267,12 @@
"title": "Confirm Aspect Deletion",
"content": "Are you sure you would like to delete the aspect: {name}<br /><br />This action cannot be undone."
}
},
"pet": {
"delete": {
"title": "You want to kill your pet?!",
"content": "Are you sure you would like to kill the pet: {name}<br /><br />This action cannot be undone."
}
}
},
"keyword": {
@ -298,6 +313,9 @@
},
"aspect": {
"name": "(Unnamed Aspect)"
},
"pet": {
"name": "(Unnamed Pet)"
}
}
},

View file

@ -62,6 +62,26 @@ async function createCustomSpell() {
}]);
};
/** @this {Actor} */
async function createCustomPet() {
const body = new URLSearchParams({
number: 1,
animal: `Cat`,
"X-Requested-With": "fetch"
})
const r = await fetch(
`https://randommer.io/pet-names`,
{
method: "POST",
body
}
);
await createCustomItem.bind(this)([{
type: `pet`,
name: (await r.json())[0] ?? game.i18n.localize(`dotdungeon.defaults.pet.name`),
}]);
};
/** @this {Actor} */
async function atAspectLimit() {
let limit = game.settings.get(`dotdungeon`, `aspectLimit`);
@ -90,6 +110,7 @@ export default {
createCustomItem,
createCustomAspect,
createCustomSpell,
createCustomPet,
genericEmbeddedDelete,
preAspectEmbed,
};

View file

@ -2,6 +2,7 @@
import { AspectItemData } from "./models/Item/Aspect.mjs";
import { SpellItemData } from "./models/Item/Spell.mjs";
import { PlayerData } from "./models/Actor/Player.mjs";
import { PetItemData } from "./models/Item/Pet.mjs";
import { SyncData } from "./models/Actor/Sync.mjs";
// Main Documents
@ -13,6 +14,7 @@ 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";
import { PetSheet } from "./sheets/PetSheet.mjs";
// Utility imports
import * as hbs from "./handlebars.mjs";
@ -34,6 +36,7 @@ Hooks.once(`init`, () => {
CONFIG.Actor.dataModels.sync = SyncData;
CONFIG.Item.dataModels.aspect = AspectItemData;
CONFIG.Item.dataModels.spell = SpellItemData;
CONFIG.Item.dataModels.pet = PetItemData;
CONFIG.Actor.documentClass = ActorHandler;
CONFIG.Item.documentClass = ItemHandler;
@ -61,6 +64,11 @@ Hooks.once(`init`, () => {
types: ["spell"],
label: "dotdungeon.sheet-names.SpellSheet"
});
Items.registerSheet("dotdungeon", PetSheet, {
makeDefault: true,
types: ["pet"],
lable: "dotdungeon.sheet-names.PetSheet"
})
hbs.registerHandlebarsHelpers();
hbs.preloadHandlebarsTemplates();

View file

@ -15,7 +15,7 @@ export const partials = [
`actors/char-sheet-mvp/panels/roles.pc.hbs`,
`actors/char-sheet-mvp/panels/spells.pc.hbs`,
`actors/char-sheet-mvp/panels/storage.pc.hbs`,
`actors/char-sheet-mvp/panels/summons.pc.hbs`,
`actors/char-sheet-mvp/panels/pets.pc.hbs`,
`actors/char-sheet-mvp/panels/sync.pc.hbs`,
`actors/char-sheet-mvp/panels/weapons.pc.hbs`,
];

View file

@ -0,0 +1,32 @@
import { GenericItemSheet } from "./GenericItemSheet.mjs";
export class PetSheet extends GenericItemSheet {
static get defaultOptions() {
let opts = mergeObject(
super.defaultOptions,
{
template: `systems/dotdungeon/templates/items/pet.hbs`,
width: 280,
height: 340,
}
);
opts.classes.push(`dotdungeon`);
return opts;
};
activateListeners(html) {
super.activateListeners(html);
if (!this.isEditable) return;
console.debug(`.dungeon | Adding event listeners for Pet Item: ${this.id}`);
};
async getData() {
const ctx = await super.getData();
ctx.item = this.item;
ctx.system = this.item.system;
ctx.flags = this.item.flags;
return ctx;
};
};

View file

@ -27,7 +27,6 @@ export class SpellSheet extends GenericItemSheet {
ctx.item = this.item;
ctx.system = this.item.system;
ctx.flags = this.item.flags;
console.log(ctx)
return ctx;
};
};

View file

@ -15,3 +15,4 @@
@use "./sheets/actor/sync/basic.scss";
@use "./sheets/items/aspect.scss";
@use "./sheets/items/spell.scss";
@use "./sheets/items/pet.scss";

View file

@ -11,8 +11,8 @@
"spells weapons aspect"
"backpack roles mounts"
"backpack roles mounts"
"summons storage storage"
"summons storage storage";
"pets storage storage"
"pets storage storage";
grid-template-columns: repeat(3, minmax(0, 1fr));
grid-template-rows:
min-content
@ -226,8 +226,18 @@
&--mounts {
grid-area: mounts;
}
&--summons {
grid-area: summons;
&--pets {
grid-area: pets;
.panel__content {
display: grid;
grid-template-rows: min-content min-content;
gap: 4px;
textarea {
resize: vertical;
}
}
}
&--storage {
grid-area: storage;
@ -266,8 +276,8 @@
"backpack roles"
"backpack roles"
"backpack spells"
"summons spells"
"summons storage"
"pets spells"
"pets storage"
"mounts storage"
"mounts storage";
@ -305,7 +315,7 @@
"weapons"
"spells"
"mounts"
"summons"
"pets"
"storage";
.panel {

View file

@ -0,0 +1,16 @@
@use "../../vars" as *;
.dotdungeon .item--pet {
padding: 4px;
input[type=text] {
font-size: 1.5em;
height: 1.5em;
width: 100%;
}
textarea {
width: 100%;
resize: vertical;
}
}

View file

@ -1,18 +1,18 @@
{{#> dotdungeon.panel class="summons" title="dotdungeon.actor.pc.panel.summons"}}
{{#> dotdungeon.panel class="pets" title="dotdungeon.actor.pc.panel.pets"}}
{{#each items.pet as | pet |}}
<details {{dd-expanded ../meta.expanded pet.uuid}}>
<summary data-collapse-id="{{pet.uuid}}">
{{ pet.name }}
{{#if (defined pet.system.upkeep)}}
<span>
{{localize "dotdungeon.actor.summons.upkeep" upkeep=(pet.system.upkeep)}}
{{localize "dotdungeon.actor.pets.upkeep" upkeep=(pet.system.upkeep)}}
</span>
{{/if}}
</summary>
<div class="summon">
<div class="pet">
{{#if pet.system.description}}
<p class="summon_description">
<p class="pet_description">
{{pet.system.description}}
</p>
{{/if}}
@ -23,6 +23,7 @@
>
Edit
</button>
<!--
<button
class="neutral equal-padding"
data-embedded-chat
@ -32,9 +33,10 @@
{{{ ../icons.chat-bubble }}}
</div>
</button>
-->
<button
class="danger equal-padding"
aria-label="{{localize "dotdungeon.actor.pc.summons.aria.delete"}}"
aria-label="{{localize "dotdungeon.actor.pc.pets.aria.delete"}}"
data-embedded-delete
data-embedded-id="{{pet.uuid}}"
>
@ -45,5 +47,20 @@
</div>
</div>
</details>
{{else}}
<p>
You have no pets, add one using the button below or drag one onto your sheet
</p>
{{/each}}
<button
class="confirm"
data-embedded-create="Pet"
>
<div aria-hidden="true" class="icon icon--20">
{{{ icons.create }}}
</div>
<span>
{{localize "dotdungeon.actor.pc.pets.add"}}
</span>
</button>
{{/ dotdungeon.panel}}

View file

@ -35,7 +35,7 @@
{{> dotdungeon.pc.mounts}}
{{> dotdungeon.pc.summons }}
{{> dotdungeon.pc.pets }}
{{> dotdungeon.pc.storage}}

47
templates/items/pet.hbs Normal file
View file

@ -0,0 +1,47 @@
<form autocomplete="off" class="item--pet">
<h2>
<input
type="text"
placeholder="{{localize "dotdungeon.item.pet.name.placeholder"}}"
name="name"
value="{{item.name}}"
aria-label="{{localize "dotdungeon.item.pet.aria.name"}}"
>
</h2>
<label>
{{localize "dotdungeon.item.pet.cost.label"}}
<input
type="number"
name="system.buy"
value="{{system.buy}}"
aria-label="{{localize "dotdungeon.item.pet.aria.cost"}}"
>
</label>
<label>
{{localize "dotdungeon.item.pet.upkeep.label"}}
<input
type="number"
name="system.upkeep"
value="{{system.upkeep}}"
aria-label="{{localize "dotdungeon.item.pet.aria.upkeep"}}"
>
</label>
<label>
{{localize "dotdungeon.item.pet.description"}}
<textarea
name="system.description"
aria-description="{{localize "dotdungeon.aria.pet-description"}}"
>{{system.description}}</textarea>
</label>
{{#if item.isEmbedded}}
<input
type="checkbox"
id="{{meta.idp}}-pokeballd"
name="system.pokeballd"
{{checked system.pokeballd}}
>
<label for="{{meta.idp}}-pokeballd">
{{localize "dotdungeon.item.pet.pokeballd"}}
</label>
{{/if}}
</form>