From 5cc654a9080440dcd2203bb31c5c63a8ff9f1450 Mon Sep 17 00:00:00 2001 From: Victor Losada Hernandez Date: Tue, 31 Jan 2023 17:11:46 +0100 Subject: [PATCH 01/23] Part cover first draft --- themes/V3/5ePHB/snippets.js | 6 ++ themes/V3/5ePHB/snippets/partcoverpage.gen.js | 53 ++++++++++++++++++ themes/V3/5ePHB/style.less | 40 +++++++++++++ themes/assets/assets.less | 2 + themes/assets/partCoverHeader.png | Bin 0 -> 168456 bytes themes/assets/partCoverMask.png | Bin 0 -> 83617 bytes themes/fonts/5e/Martel Sans Black.woff2 | Bin 0 -> 55848 bytes themes/fonts/5e/fonts.less | 7 +++ 8 files changed, 108 insertions(+) create mode 100644 themes/V3/5ePHB/snippets/partcoverpage.gen.js create mode 100644 themes/assets/partCoverHeader.png create mode 100644 themes/assets/partCoverMask.png create mode 100644 themes/fonts/5e/Martel Sans Black.woff2 diff --git a/themes/V3/5ePHB/snippets.js b/themes/V3/5ePHB/snippets.js index bea2a1da3..afdbf1e49 100644 --- a/themes/V3/5ePHB/snippets.js +++ b/themes/V3/5ePHB/snippets.js @@ -5,6 +5,7 @@ const ClassTableGen = require('./snippets/classtable.gen.js'); const MonsterBlockGen = require('./snippets/monsterblock.gen.js'); const ClassFeatureGen = require('./snippets/classfeature.gen.js'); const CoverPageGen = require('./snippets/coverpage.gen.js'); +const PartCoverPageGen = require('./snippets/partcoverpage.gen.js'); const TableOfContentsGen = require('./snippets/tableOfContents.gen.js'); const dedent = require('dedent-tabs').default; @@ -173,6 +174,11 @@ module.exports = [ icon : 'fas fa-file-word', gen : CoverPageGen, }, + { + name : 'Part Cover Page', + icon : 'fas fa-file-alt', + gen : PartCoverPageGen, + }, { name : 'Magic Item', icon : 'fas fa-hat-wizard', diff --git a/themes/V3/5ePHB/snippets/partcoverpage.gen.js b/themes/V3/5ePHB/snippets/partcoverpage.gen.js new file mode 100644 index 000000000..f4720d219 --- /dev/null +++ b/themes/V3/5ePHB/snippets/partcoverpage.gen.js @@ -0,0 +1,53 @@ +const _ = require('lodash'); + +var titles = [ + 'Introduction to the World of DnD', + 'Creating Your Character', + 'The Rules of the Game', + 'Combat and Combat Strategies', + 'Magic and Spellcasting', + 'Adventuring and Exploration', + 'Dungeon Delving', + 'Campaign Building and World Building', + 'DM Techniques and Tips', + 'Appendix: Reference Material', + 'Monsters and Creatures', + 'Equipment and Treasure', + 'Non-Player Characters (NPCs)', + 'Experience and Leveling', + 'Races and Classes', + 'Skills and Abilities', + 'Alignment and Moral Choices', + 'Player-vs-Player Conflict', + 'Game Mastering 101', + 'Running a Successful Campaign', + 'Worldbuilding and Lore', + 'Designing Encounters and Adventures', + 'Managing Players and their Expectations', + 'Factions and Political Intrigue', + 'Adventure Hooks and Plot Ideas', + 'Building a Campaign Setting', + 'Handling Rules Disputes', + 'Running Large-Scale Battles', + 'Designing Unique Magic Systems', + 'Developing and Using NPCs', + 'Crafting Memorable Quests', + 'Improvising When Things Don\'t Go as Planned', + 'Managing Session Flow and Pacing', + 'Building a World That Feels Alive' +]; + +module.exports = ()=>{ + return ` +{{partCover +# PART X +## ${_.sample(titles)} + +![Background](https://i.imgur.com/dpg5qPT.png) +}} + +{{pageNumber,auto}} +{{footnote PART X | SECTION NAME}} + +\\page`; +}; \ No newline at end of file diff --git a/themes/V3/5ePHB/style.less b/themes/V3/5ePHB/style.less index 85dc566f4..16451e32c 100644 --- a/themes/V3/5ePHB/style.less +++ b/themes/V3/5ePHB/style.less @@ -795,4 +795,44 @@ .page h1 + *{ margin-top : 0; } + //***************************** + // * PART COVER + // *****************************/ + .page .partCover { + background-image: @partCoverHeader; + background-repeat: no-repeat; + position: absolute; + background-size: 100%; + inset: 0; + img { + position: absolute; + inset: 0; + height:100%; + mask-image: @partCoverMask; + mask-size: 816px; + -webkit-mask-image: @partCoverMask; + -webkit-mask-size: 816px; + } + h1 { + text-align: center; + text-transform: uppercase; + font-size: 80px; + font-family: NodestoCapsCondensed; + font-variant: small-caps; + max-width: 7ch; + text-overflow: clip; + white-space: nowrap; + overflow: hidden; + margin-inline: auto; + } + h2 { + text-align: center; + font-family: MartelSansBlack; + font-size: 18px; + position: relative; + max-width: 18ch; + margin-inline: auto; + margin-top: -5px; + } + } } diff --git a/themes/assets/assets.less b/themes/assets/assets.less index 7df5db0f6..3442b8c49 100644 --- a/themes/assets/assets.less +++ b/themes/assets/assets.less @@ -10,6 +10,8 @@ @monsterBorderImage : url('/assets/monsterBorderFancy.png'); @codeBorderImage : url('/assets/codeBorder.png'); @classTableDecoration : url('/assets/classTableDecoration.png'); +@partCoverHeader : url('/assets/partCoverHeader.png'); +@partCoverMask : url('/assets/partCoverMask.png'); // Watercolor Images @watercolor1 : url('/assets/watercolor/watercolor1.png'); diff --git a/themes/assets/partCoverHeader.png b/themes/assets/partCoverHeader.png new file mode 100644 index 0000000000000000000000000000000000000000..f359668bace9074fd0451fe246a24b799b08950c GIT binary patch literal 168456 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