0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-09 02:52:38 +00:00

coverPage initial draft

This commit is contained in:
Victor Losada Hernandez
2023-01-28 00:43:43 +01:00
parent 1ebbd9c8ce
commit 78554603e8
8 changed files with 248 additions and 108 deletions

View File

@@ -1,124 +1,123 @@
const _ = require('lodash'); const _ = require("lodash");
const titles = [ const titles = [
'The Burning Gallows', "The Burning Gallows",
'The Ring of Nenlast', "The Ring of Nenlast",
'Below the Blind Tavern', "Below the Blind Tavern",
'Below the Hungering River', "Below the Hungering River",
'Before Bahamut\'s Land', "Before Bahamut's Land",
'The Cruel Grave from Within', "The Cruel Grave from Within",
'The Strength of Trade Road', "The Strength of Trade Road",
'Through The Raven Queen\'s Worlds', "Through The Raven Queen's Worlds",
'Within the Settlement', "Within the Settlement",
'The Crown from Within', "The Crown from Within",
'The Merchant Within the Battlefield', "The Merchant Within the Battlefield",
'Ioun\'s Fading Traveler', "Ioun's Fading Traveler",
'The Legion Ingredient', "The Legion Ingredient",
'The Explorer Lure', "The Explorer Lure",
'Before the Charming Badlands', "Before the Charming Badlands",
'The Living Dead Above the Fearful Cage', "The Living Dead Above the Fearful Cage",
'Vecna\'s Hidden Sage', "Vecna's Hidden Sage",
'Bahamut\'s Demonspawn', "Bahamut's Demonspawn",
'Across Gruumsh\'s Elemental Chaos', "Across Gruumsh's Elemental Chaos",
'The Blade of Orcus', "The Blade of Orcus",
'Beyond Revenge', "Beyond Revenge",
'Brain of Insanity', "Brain of Insanity",
'Breed Battle!, A New Beginning', "Breed Battle!, A New Beginning",
'Evil Lake, A New Beginning', "Evil Lake, A New Beginning",
'Invasion of the Gigantic Cat, Part II', "Invasion of the Gigantic Cat, Part II",
'Kraken War 2020', "Kraken War 2020",
'The Body Whisperers', "The Body Whisperers",
'The Diabolical Tales of the Ape-Women', "The Diabolical Tales of the Ape-Women",
'The Doctor Immortal', "The Doctor Immortal",
'The Doctor from Heaven', "The Doctor from Heaven",
'The Graveyard', "The Graveyard",
'Azure Core', "Azure Core",
'Core Battle', "Core Battle",
'Core of Heaven: The Guardian of Amazement', "Core of Heaven: The Guardian of Amazement",
'Deadly Amazement III', "Deadly Amazement III",
'Dry Chaos IX', "Dry Chaos IX",
'Gate Thunder', "Gate Thunder",
'Guardian: Skies of the Dark Wizard', "Guardian: Skies of the Dark Wizard",
'Lute of Eternity', "Lute of Eternity",
'Mercury\'s Planet: Brave Evolution', "Mercury's Planet: Brave Evolution",
'Ruby of Atlantis: The Quake of Peace', "Ruby of Atlantis: The Quake of Peace",
'Sky of Zelda: The Thunder of Force', "Sky of Zelda: The Thunder of Force",
'Vyse\'s Skies', "Vyse's Skies",
'White Greatness III', "White Greatness III",
'Yellow Divinity', "Yellow Divinity",
'Zidane\'s Ghost' "Zidane's Ghost",
]; ];
const subtitles = [ const subtitles = [
'In an ominous universe, a botanist opposes terrorism.', "In an ominous universe, a botanist opposes terrorism.",
'In a demon-haunted city, in an age of lies and hate, a physicist tries to find an ancient treasure and battles a mob of aliens.', "In a demon-haunted city, in an age of lies and hate, a physicist tries to find an ancient treasure and battles a mob of aliens.",
'In a land of corruption, two cyberneticists and a dungeon delver search for freedom.', "In a land of corruption, two cyberneticists and a dungeon delver search for freedom.",
'In an evil empire of horror, two rangers battle the forces of hell.', "In an evil empire of horror, two rangers battle the forces of hell.",
'In a lost city, in an age of sorcery, a librarian quests for revenge.', "In a lost city, in an age of sorcery, a librarian quests for revenge.",
'In a universe of illusions and danger, three time travellers and an adventurer search for justice.', "In a universe of illusions and danger, three time travellers and an adventurer search for justice.",
'In a forgotten universe of barbarism, in an era of terror and mysticism, a virtual reality programmer and a spy try to find vengance and battle crime.', "In a forgotten universe of barbarism, in an era of terror and mysticism, a virtual reality programmer and a spy try to find vengance and battle crime.",
'In a universe of demons, in an era of insanity and ghosts, three bodyguards and a bodyguard try to find vengance.', "In a universe of demons, in an era of insanity and ghosts, three bodyguards and a bodyguard try to find vengance.",
'In a kingdom of corruption and battle, seven artificial intelligences try to save the last living fertile woman.', "In a kingdom of corruption and battle, seven artificial intelligences try to save the last living fertile woman.",
'In a universe of virutal reality and agony, in an age of ghosts and ghosts, a fortune-teller and a wanderer try to avert the apocalypse.', "In a universe of virutal reality and agony, in an age of ghosts and ghosts, a fortune-teller and a wanderer try to avert the apocalypse.",
'In a crime-infested kingdom, three martial artists quest for the truth and oppose evil.', "In a crime-infested kingdom, three martial artists quest for the truth and oppose evil.",
'In a terrifying universe of lost souls, in an era of lost souls, eight dancers fight evil.', "In a terrifying universe of lost souls, in an era of lost souls, eight dancers fight evil.",
'In a galaxy of confusion and insanity, three martial artists and a duke battle a mob of psychics.', "In a galaxy of confusion and insanity, three martial artists and a duke battle a mob of psychics.",
'In an amazing kingdom, a wizard and a secretary hope to prevent the destruction of mankind.', "In an amazing kingdom, a wizard and a secretary hope to prevent the destruction of mankind.",
'In a kingdom of deception, a reporter searches for fame.', "In a kingdom of deception, a reporter searches for fame.",
'In a hellish empire, a swordswoman and a duke try to find the ultimate weapon and battle a conspiracy.', "In a hellish empire, a swordswoman and a duke try to find the ultimate weapon and battle a conspiracy.",
'In an evil galaxy of illusion, in a time of technology and misery, seven psychiatrists battle crime.', "In an evil galaxy of illusion, in a time of technology and misery, seven psychiatrists battle crime.",
'In a dark city of confusion, three swordswomen and a singer battle lawlessness.', "In a dark city of confusion, three swordswomen and a singer battle lawlessness.",
'In an ominous empire, in an age of hate, two philosophers and a student try to find justice and battle a mob of mages intent on stealing the souls of the innocent.', "In an ominous empire, in an age of hate, two philosophers and a student try to find justice and battle a mob of mages intent on stealing the souls of the innocent.",
'In a kingdom of panic, six adventurers oppose lawlessness.', "In a kingdom of panic, six adventurers oppose lawlessness.",
'In a land of dreams and hopelessness, three hackers and a cyborg search for justice.', "In a land of dreams and hopelessness, three hackers and a cyborg search for justice.",
'On a planet of mysticism, three travelers and a fire fighter quest for the ultimate weapon and oppose evil.', "On a planet of mysticism, three travelers and a fire fighter quest for the ultimate weapon and oppose evil.",
'In a wicked universe, five seers fight lawlessness.', "In a wicked universe, five seers fight lawlessness.",
'In a kingdom of death, in an era of illusion and blood, four colonists search for fame.', "In a kingdom of death, in an era of illusion and blood, four colonists search for fame.",
'In an amazing kingdom, in an age of sorcery and lost souls, eight space pirates quest for freedom.', "In an amazing kingdom, in an age of sorcery and lost souls, eight space pirates quest for freedom.",
'In a cursed empire, five inventors oppose terrorism.', "In a cursed empire, five inventors oppose terrorism.",
'On a crime-ridden planet of conspiracy, a watchman and an artificial intelligence try to find love and oppose lawlessness.', "On a crime-ridden planet of conspiracy, a watchman and an artificial intelligence try to find love and oppose lawlessness.",
'In a forgotten land, a reporter and a spy try to stop the apocalypse.', "In a forgotten land, a reporter and a spy try to stop the apocalypse.",
'In a forbidden land of prophecy, a scientist and an archivist oppose a cabal of barbarians intent on stealing the souls of the innocent.', "In a forbidden land of prophecy, a scientist and an archivist oppose a cabal of barbarians intent on stealing the souls of the innocent.",
'On an infernal world of illusion, a grave robber and a watchman try to find revenge and combat a syndicate of mages intent on stealing the source of all magic.', "On an infernal world of illusion, a grave robber and a watchman try to find revenge and combat a syndicate of mages intent on stealing the source of all magic.",
'In a galaxy of dark magic, four fighters seek freedom.', "In a galaxy of dark magic, four fighters seek freedom.",
'In an empire of deception, six tomb-robbers quest for the ultimate weapon and combat an army of raiders.', "In an empire of deception, six tomb-robbers quest for the ultimate weapon and combat an army of raiders.",
'In a kingdom of corruption and lost souls, in an age of panic, eight planetologists oppose evil.', "In a kingdom of corruption and lost souls, in an age of panic, eight planetologists oppose evil.",
'In a galaxy of misery and hopelessness, in a time of agony and pain, five planetologists search for vengance.', "In a galaxy of misery and hopelessness, in a time of agony and pain, five planetologists search for vengance.",
'In a universe of technology and insanity, in a time of sorcery, a computer techician quests for hope.', "In a universe of technology and insanity, in a time of sorcery, a computer techician quests for hope.",
'On a planet of dark magic and barbarism, in an age of horror and blasphemy, seven librarians search for fame.', "On a planet of dark magic and barbarism, in an age of horror and blasphemy, seven librarians search for fame.",
'In an empire of dark magic, in a time of blood and illusions, four monks try to find the ultimate weapon and combat terrorism.', "In an empire of dark magic, in a time of blood and illusions, four monks try to find the ultimate weapon and combat terrorism.",
'In a forgotten empire of dark magic, six kings try to prevent the destruction of mankind.', "In a forgotten empire of dark magic, six kings try to prevent the destruction of mankind.",
'In a galaxy of dark magic and horror, in an age of hopelessness, four marines and an outlaw combat evil.', "In a galaxy of dark magic and horror, in an age of hopelessness, four marines and an outlaw combat evil.",
'In a mysterious city of illusion, in an age of computerization, a witch-hunter tries to find the ultimate weapon and opposes an evil corporation.', "In a mysterious city of illusion, in an age of computerization, a witch-hunter tries to find the ultimate weapon and opposes an evil corporation.",
'In a damned kingdom of technology, a virtual reality programmer and a fighter seek fame.', "In a damned kingdom of technology, a virtual reality programmer and a fighter seek fame.",
'In a hellish kingdom, in an age of blasphemy and blasphemy, an astrologer searches for fame.', "In a hellish kingdom, in an age of blasphemy and blasphemy, an astrologer searches for fame.",
'In a damned world of devils, an alien and a ranger quest for love and oppose a syndicate of demons.', "In a damned world of devils, an alien and a ranger quest for love and oppose a syndicate of demons.",
'In a cursed galaxy, in a time of pain, seven librarians hope to avert the apocalypse.', "In a cursed galaxy, in a time of pain, seven librarians hope to avert the apocalypse.",
'In a crime-infested galaxy, in an era of hopelessness and panic, three champions and a grave robber try to solve the ultimate crime.' "In a crime-infested galaxy, in an era of hopelessness and panic, three champions and a grave robber try to solve the ultimate crime.",
]; ];
module.exports = () => {
return `
module.exports = ()=>{ {{coverPage
return `<style>
.page#p1{ text-align:center; counter-increment: none; }
.page#p1:after{ display:none; }
.page:nth-child(2n) .pageNumber { left: inherit !important; right: 2px !important; }
.page:nth-child(2n+1) .pageNumber { right: inherit !important; left: 2px !important; }
.page:nth-child(2n)::after { transform: scaleX(1); }
.page:nth-child(2n+1)::after { transform: scaleX(-1); }
.page:nth-child(2n) .footnote { left: inherit; text-align: right; }
.page:nth-child(2n+1) .footnote { left: 80px; text-align: left; }
</style>
{{margin-top:225px}} ![image](https://i.imgur.com/Mqx8Vf7.png) {left:0px}
# ${_.sample(titles)} # ${_.sample(titles)}
{{margin-top:25px}} ## ${_.sample(subtitles)}
___
{{banner
5e HOMEBREW
}}
{{footnote
Everything a Homebrew needs to create a pretty document <br> for the world's greatest roleplaying game
}}
{{wide
##### ${_.sample(subtitles)}
}} }}
\\page`; \\page`;
}; };

View File

@@ -677,6 +677,137 @@ body {
margin-top : 0.2cm; margin-top : 0.2cm;
} }
} }
//*****************************
// * COVER PAGE
// *****************************/
.page {
&:has(.coverPage):after {
display: none;
}
.coverPage {
position: absolute;
inset: 0;
padding: 90px 0px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
p {
color: white;
font-size: 20px;
}
> p > img {
position: absolute;
inset: 0;
height: 100%;
min-width: 100%;
}
&:before {
background-image: @coverPageLogo;
background-position: center;
background-size: 60px;
background-repeat: no-repeat;
position: absolute;
top: 15px;
content: '';
display: block;
height: 70px;
width: 100%;
filter: drop-shadow(0 0 10px black);
}
h1 {
--shadow-x0: #000 0px 0px 3.5px;
--shadow-x1: var(--shadow-x0), var(--shadow-x0), var(--shadow-x0);
--shadow-x2: var(--shadow-x1), var(--shadow-x1), var(--shadow-x1);
--shadow-x3: var(--shadow-x2), var(--shadow-x2), var(--shadow-x2);
text-shadow: var(--shadow-x3), var(--shadow-x3), var(--shadow-x3);
text-transform: uppercase;
max-width: 18ch;
margin-top: 3px;
color: white;
font-family: NodestoCapsCondensed;
font-size: 6.6em;
font-weight: normal;
line-height: 72px;
word-break: break-word;
transform: scaleX(0.94);
}
hr {
position: relative;
top: -16px;
background-image: @coverPageHorizontalRule;
background-size: 100% 100%;
visibility: visible;
height: 64px;
width: 450px;
border: none;
margin: 2px auto -24px;
}
h2 {
--shadow-x0: #000 0px 0px 2.5px;
--shadow-x1: var(--shadow-x0), var(--shadow-x0), var(--shadow-x0);
--shadow-x2: var(--shadow-x1), var(--shadow-x1), var(--shadow-x1);
--shadow-x3: var(--shadow-x2), var(--shadow-x2), var(--shadow-x2);
text-shadow: var(--shadow-x3), var(--shadow-x3), var(--shadow-x3);
font-family: NodestoCapsCondensed;
font-weight: normal;
font-size: 2.5em;
letter-spacing: 0.5px;
max-width: 46ch;
color: white;
}
.banner {
filter: drop-shadow(2px 1px 5px #000);
position: absolute;
left: 0;
bottom: 157px;
background-image: @coverPageBanner;
background-position: left;
background-repeat: no-repeat;
background-size: 400px;
content: '';
display: block;
height: 67px;
width: 50%;
p {
position: absolute;
top: 60%;
left: 0;
translate: 0 -50%;
width: 100%;
text-align: left;
padding-left: 50px;
font-family: NodestoCapsCondensed;
font-weight: normal;
font-size: 40px;
font-stretch: 200%;
letter-spacing: 0.5px;
transform: scaleY(0.7);
}
}
.footnote {
--shadow-x0: #000 0px 0px 1.8px;
--shadow-x1: var(--shadow-x0), var(--shadow-x0), var(--shadow-x0);
--shadow-x2: var(--shadow-x1), var(--shadow-x1), var(--shadow-x1);
text-shadow: var(--shadow-x2), var(--shadow-x2), var(--shadow-x2);
text-transform: none;
position: absolute;
bottom: 3.5em;
left: 0;
width: 100%;
font-family: VeraCruzBold;
text-align: center;
letter-spacing: 0.6px;
transform: scaleX(90%);
}
}
}
//***************************** //*****************************
// * TABLE OF CONTENTS // * TABLE OF CONTENTS
// *****************************/ // *****************************/

View File

@@ -10,6 +10,9 @@
@monsterBorderImage : url('/assets/monsterBorderFancy.png'); @monsterBorderImage : url('/assets/monsterBorderFancy.png');
@codeBorderImage : url('/assets/codeBorder.png'); @codeBorderImage : url('/assets/codeBorder.png');
@classTableDecoration : url('/assets/classTableDecoration.png'); @classTableDecoration : url('/assets/classTableDecoration.png');
@coverPageLogo : url('/assets/coverPageLogo.png');
@coverPageBanner : url('/assets/coverPageBanner.png');
@coverPageHorizontalRule : url('/assets/coverPageHorizontalRule.png');
// Watercolor Images // Watercolor Images
@watercolor1 : url('/assets/watercolor/watercolor1.png'); @watercolor1 : url('/assets/watercolor/watercolor1.png');

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

View File

@@ -106,3 +106,10 @@
font-weight: bold; font-weight: bold;
font-style: italic; font-style: italic;
} }
@font-face {
font-family: VeraCruzBold;
src: url('../../../fonts/5e/VeracruzBold.woff2');
font-weight: bold;
font-style: normal;
}