diff --git a/.styles/root.css b/.styles/root.css index a6b8c96..c900a2d 100644 --- a/.styles/root.css +++ b/.styles/root.css @@ -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 */ diff --git a/.styles/sheets/actor/mvp.css b/.styles/sheets/actor/mvp.css index 6106310..0eedafc 100644 --- a/.styles/sheets/actor/mvp.css +++ b/.styles/sheets/actor/mvp.css @@ -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 */ diff --git a/.styles/sheets/items/pet.css b/.styles/sheets/items/pet.css new file mode 100644 index 0000000..6b0b96c --- /dev/null +++ b/.styles/sheets/items/pet.css @@ -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 */ diff --git a/langs/en-ca.json b/langs/en-ca.json index a4bd896..04b7575 100644 --- a/langs/en-ca.json +++ b/langs/en-ca.json @@ -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}

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}

This action cannot be undone." + } } }, "keyword": { @@ -298,6 +313,9 @@ }, "aspect": { "name": "(Unnamed Aspect)" + }, + "pet": { + "name": "(Unnamed Pet)" } } }, diff --git a/module/documents/Actor/Player.mjs b/module/documents/Actor/Player.mjs index beb46f2..a1282c9 100644 --- a/module/documents/Actor/Player.mjs +++ b/module/documents/Actor/Player.mjs @@ -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, }; \ No newline at end of file diff --git a/module/dotdungeon.mjs b/module/dotdungeon.mjs index ee5522f..7cc1741 100644 --- a/module/dotdungeon.mjs +++ b/module/dotdungeon.mjs @@ -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(); diff --git a/module/handlebars.mjs b/module/handlebars.mjs index d448b2d..8cec531 100644 --- a/module/handlebars.mjs +++ b/module/handlebars.mjs @@ -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`, ]; diff --git a/module/sheets/PetSheet.mjs b/module/sheets/PetSheet.mjs new file mode 100644 index 0000000..f3955af --- /dev/null +++ b/module/sheets/PetSheet.mjs @@ -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; + }; +}; diff --git a/module/sheets/SpellSheet.mjs b/module/sheets/SpellSheet.mjs index 488f159..281408a 100644 --- a/module/sheets/SpellSheet.mjs +++ b/module/sheets/SpellSheet.mjs @@ -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; }; }; diff --git a/styles/root.scss b/styles/root.scss index 14ec691..a01d539 100644 --- a/styles/root.scss +++ b/styles/root.scss @@ -14,4 +14,5 @@ @use "./sheets/actor/mvp.scss"; @use "./sheets/actor/sync/basic.scss"; @use "./sheets/items/aspect.scss"; -@use "./sheets/items/spell.scss"; \ No newline at end of file +@use "./sheets/items/spell.scss"; +@use "./sheets/items/pet.scss"; \ No newline at end of file diff --git a/styles/sheets/actor/mvp.scss b/styles/sheets/actor/mvp.scss index ecc42f5..ba9d43b 100644 --- a/styles/sheets/actor/mvp.scss +++ b/styles/sheets/actor/mvp.scss @@ -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 { diff --git a/styles/sheets/items/pet.scss b/styles/sheets/items/pet.scss new file mode 100644 index 0000000..8cfc8e5 --- /dev/null +++ b/styles/sheets/items/pet.scss @@ -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; + } +} \ No newline at end of file diff --git a/templates/actors/char-sheet-mvp/panels/summons.pc.hbs b/templates/actors/char-sheet-mvp/panels/pets.pc.hbs similarity index 62% rename from templates/actors/char-sheet-mvp/panels/summons.pc.hbs rename to templates/actors/char-sheet-mvp/panels/pets.pc.hbs index 18255ec..34eb9a8 100644 --- a/templates/actors/char-sheet-mvp/panels/summons.pc.hbs +++ b/templates/actors/char-sheet-mvp/panels/pets.pc.hbs @@ -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 |}}
{{ pet.name }} {{#if (defined pet.system.upkeep)}} - {{localize "dotdungeon.actor.summons.upkeep" upkeep=(pet.system.upkeep)}} + {{localize "dotdungeon.actor.pets.upkeep" upkeep=(pet.system.upkeep)}} {{/if}} -
+
{{#if pet.system.description}} -

+

{{pet.system.description}}

{{/if}} @@ -23,6 +23,7 @@ > Edit +
+ {{else}} +

+ You have no pets, add one using the button below or drag one onto your sheet +

{{/each}} + {{/ dotdungeon.panel}} \ No newline at end of file diff --git a/templates/actors/char-sheet-mvp/sheet.hbs b/templates/actors/char-sheet-mvp/sheet.hbs index a006c03..318729c 100644 --- a/templates/actors/char-sheet-mvp/sheet.hbs +++ b/templates/actors/char-sheet-mvp/sheet.hbs @@ -35,7 +35,7 @@ {{> dotdungeon.pc.mounts}} - {{> dotdungeon.pc.summons }} + {{> dotdungeon.pc.pets }} {{> dotdungeon.pc.storage}} diff --git a/templates/items/pet.hbs b/templates/items/pet.hbs new file mode 100644 index 0000000..9eaa96b --- /dev/null +++ b/templates/items/pet.hbs @@ -0,0 +1,47 @@ +
+

+ +

+ + + + {{#if item.isEmbedded}} + + + {{/if}} +
\ No newline at end of file