mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2025-12-24 20:42:43 +00:00
coverPage initial draft
This commit is contained in:
@@ -1,124 +1,123 @@
|
||||
const _ = require('lodash');
|
||||
const _ = require("lodash");
|
||||
|
||||
const titles = [
|
||||
'The Burning Gallows',
|
||||
'The Ring of Nenlast',
|
||||
'Below the Blind Tavern',
|
||||
'Below the Hungering River',
|
||||
'Before Bahamut\'s Land',
|
||||
'The Cruel Grave from Within',
|
||||
'The Strength of Trade Road',
|
||||
'Through The Raven Queen\'s Worlds',
|
||||
'Within the Settlement',
|
||||
'The Crown from Within',
|
||||
'The Merchant Within the Battlefield',
|
||||
'Ioun\'s Fading Traveler',
|
||||
'The Legion Ingredient',
|
||||
'The Explorer Lure',
|
||||
'Before the Charming Badlands',
|
||||
'The Living Dead Above the Fearful Cage',
|
||||
'Vecna\'s Hidden Sage',
|
||||
'Bahamut\'s Demonspawn',
|
||||
'Across Gruumsh\'s Elemental Chaos',
|
||||
'The Blade of Orcus',
|
||||
'Beyond Revenge',
|
||||
'Brain of Insanity',
|
||||
'Breed Battle!, A New Beginning',
|
||||
'Evil Lake, A New Beginning',
|
||||
'Invasion of the Gigantic Cat, Part II',
|
||||
'Kraken War 2020',
|
||||
'The Body Whisperers',
|
||||
'The Diabolical Tales of the Ape-Women',
|
||||
'The Doctor Immortal',
|
||||
'The Doctor from Heaven',
|
||||
'The Graveyard',
|
||||
'Azure Core',
|
||||
'Core Battle',
|
||||
'Core of Heaven: The Guardian of Amazement',
|
||||
'Deadly Amazement III',
|
||||
'Dry Chaos IX',
|
||||
'Gate Thunder',
|
||||
'Guardian: Skies of the Dark Wizard',
|
||||
'Lute of Eternity',
|
||||
'Mercury\'s Planet: Brave Evolution',
|
||||
'Ruby of Atlantis: The Quake of Peace',
|
||||
'Sky of Zelda: The Thunder of Force',
|
||||
'Vyse\'s Skies',
|
||||
'White Greatness III',
|
||||
'Yellow Divinity',
|
||||
'Zidane\'s Ghost'
|
||||
"The Burning Gallows",
|
||||
"The Ring of Nenlast",
|
||||
"Below the Blind Tavern",
|
||||
"Below the Hungering River",
|
||||
"Before Bahamut's Land",
|
||||
"The Cruel Grave from Within",
|
||||
"The Strength of Trade Road",
|
||||
"Through The Raven Queen's Worlds",
|
||||
"Within the Settlement",
|
||||
"The Crown from Within",
|
||||
"The Merchant Within the Battlefield",
|
||||
"Ioun's Fading Traveler",
|
||||
"The Legion Ingredient",
|
||||
"The Explorer Lure",
|
||||
"Before the Charming Badlands",
|
||||
"The Living Dead Above the Fearful Cage",
|
||||
"Vecna's Hidden Sage",
|
||||
"Bahamut's Demonspawn",
|
||||
"Across Gruumsh's Elemental Chaos",
|
||||
"The Blade of Orcus",
|
||||
"Beyond Revenge",
|
||||
"Brain of Insanity",
|
||||
"Breed Battle!, A New Beginning",
|
||||
"Evil Lake, A New Beginning",
|
||||
"Invasion of the Gigantic Cat, Part II",
|
||||
"Kraken War 2020",
|
||||
"The Body Whisperers",
|
||||
"The Diabolical Tales of the Ape-Women",
|
||||
"The Doctor Immortal",
|
||||
"The Doctor from Heaven",
|
||||
"The Graveyard",
|
||||
"Azure Core",
|
||||
"Core Battle",
|
||||
"Core of Heaven: The Guardian of Amazement",
|
||||
"Deadly Amazement III",
|
||||
"Dry Chaos IX",
|
||||
"Gate Thunder",
|
||||
"Guardian: Skies of the Dark Wizard",
|
||||
"Lute of Eternity",
|
||||
"Mercury's Planet: Brave Evolution",
|
||||
"Ruby of Atlantis: The Quake of Peace",
|
||||
"Sky of Zelda: The Thunder of Force",
|
||||
"Vyse's Skies",
|
||||
"White Greatness III",
|
||||
"Yellow Divinity",
|
||||
"Zidane's Ghost",
|
||||
];
|
||||
|
||||
const subtitles = [
|
||||
'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 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 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 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 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 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 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 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 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 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 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.',
|
||||
'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 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.',
|
||||
'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 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.',
|
||||
'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 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 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.',
|
||||
'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 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 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 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 crime-infested galaxy, in an era of hopelessness and panic, three champions and a grave robber try to solve the ultimate crime.'
|
||||
"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 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 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 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 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 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 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 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 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 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 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.",
|
||||
"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 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.",
|
||||
"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 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.",
|
||||
"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 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 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.",
|
||||
"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 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 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 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 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 = ()=>{
|
||||
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>
|
||||
{{coverPage
|
||||
|
||||
{{margin-top:225px}}
|
||||
 {left:0px}
|
||||
|
||||
# ${_.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`;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -677,6 +677,137 @@ body {
|
||||
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
|
||||
// *****************************/
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
@monsterBorderImage : url('/assets/monsterBorderFancy.png');
|
||||
@codeBorderImage : url('/assets/codeBorder.png');
|
||||
@classTableDecoration : url('/assets/classTableDecoration.png');
|
||||
@coverPageLogo : url('/assets/coverPageLogo.png');
|
||||
@coverPageBanner : url('/assets/coverPageBanner.png');
|
||||
@coverPageHorizontalRule : url('/assets/coverPageHorizontalRule.png');
|
||||
|
||||
// Watercolor Images
|
||||
@watercolor1 : url('/assets/watercolor/watercolor1.png');
|
||||
|
||||
BIN
themes/assets/coverPageBanner.png
Normal file
BIN
themes/assets/coverPageBanner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
BIN
themes/assets/coverPageHorizonalRule.png
Normal file
BIN
themes/assets/coverPageHorizonalRule.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
BIN
themes/assets/coverPageLogo.png
Normal file
BIN
themes/assets/coverPageLogo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
BIN
themes/fonts/5e/VeracruzBold.woff2
Normal file
BIN
themes/fonts/5e/VeracruzBold.woff2
Normal file
Binary file not shown.
@@ -106,3 +106,10 @@
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: VeraCruzBold;
|
||||
src: url('../../../fonts/5e/VeracruzBold.woff2');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user