mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-10 04:52:40 +00:00
Start adding Journal theme, Add "snippetBase" property
This commit is contained in:
@@ -12,6 +12,7 @@ const ThemeSnippets = {};
|
|||||||
ThemeSnippets['Legacy_5ePHB'] = require('themes/Legacy/5ePHB/snippets.js');
|
ThemeSnippets['Legacy_5ePHB'] = require('themes/Legacy/5ePHB/snippets.js');
|
||||||
ThemeSnippets['V3_5ePHB'] = require('themes/V3/5ePHB/snippets.js');
|
ThemeSnippets['V3_5ePHB'] = require('themes/V3/5ePHB/snippets.js');
|
||||||
ThemeSnippets['V3_5eDMG'] = require('themes/V3/5eDMG/snippets.js');
|
ThemeSnippets['V3_5eDMG'] = require('themes/V3/5eDMG/snippets.js');
|
||||||
|
ThemeSnippets['V3_Journal'] = require('themes/V3/Journal/snippets.js');
|
||||||
|
|
||||||
const execute = function(val, brew){
|
const execute = function(val, brew){
|
||||||
if(_.isFunction(val)) return val(brew);
|
if(_.isFunction(val)) return val(brew);
|
||||||
@@ -74,14 +75,14 @@ const Snippetbar = createClass({
|
|||||||
|
|
||||||
compileSnippets : function(rendererPath, themePath, snippets) {
|
compileSnippets : function(rendererPath, themePath, snippets) {
|
||||||
let compiledSnippets = snippets;
|
let compiledSnippets = snippets;
|
||||||
const baseThemePath = Themes[rendererPath][themePath].baseTheme;
|
const baseSnippetsPath = Themes[rendererPath][themePath].baseSnippets;
|
||||||
console.log({ baseSnippets: ThemeSnippets[`${rendererPath}_${baseThemePath}`] });
|
//console.log({ baseSnippets: ThemeSnippets[`${rendererPath}_${baseSnippetsPath}`] });
|
||||||
console.log({ themeSnippets: compiledSnippets });
|
//console.log({ themeSnippets: compiledSnippets });
|
||||||
|
|
||||||
if(baseThemePath) {
|
if(baseSnippetsPath) {
|
||||||
compiledSnippets = _.mergeWith([], ThemeSnippets[`${rendererPath}_${baseThemePath}`], compiledSnippets, this.mergeCustomizer);
|
compiledSnippets = _.mergeWith([], ThemeSnippets[`${rendererPath}_${baseSnippetsPath}`], compiledSnippets, this.mergeCustomizer);
|
||||||
console.log({ compiledSnippets: compiledSnippets });
|
console.log({ compiledSnippets: compiledSnippets });
|
||||||
//this.compileSnippets(rendererPath, themePath, compiledSnippets); (for nested baseThemes)
|
//this.compileSnippets(rendererPath, themePath, compiledSnippets); (for nested baseSnippets)
|
||||||
}
|
}
|
||||||
return compiledSnippets;
|
return compiledSnippets;
|
||||||
},
|
},
|
||||||
|
|||||||
44518
package-lock.json
generated
44518
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -60,7 +60,7 @@ fs.emptyDirSync('./build');
|
|||||||
less.render(fs.readFileSync(src).toString(), {
|
less.render(fs.readFileSync(src).toString(), {
|
||||||
compress : !isDev
|
compress : !isDev
|
||||||
}, function(e, output) {
|
}, function(e, output) {
|
||||||
fs.outputFile(`./build/themes/Legacy/${dir}/style.css`, output.css);
|
fs.outputFile(outputDirectory, output.css);
|
||||||
});
|
});
|
||||||
})(`./build/themes/Legacy/${dir}/style.css`);
|
})(`./build/themes/Legacy/${dir}/style.css`);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name" : "5e DMG",
|
"name" : "5e DMG",
|
||||||
"renderer" : "V3",
|
"renderer" : "V3",
|
||||||
"baseTheme" : "5ePHB"
|
"baseTheme" : "5ePHB",
|
||||||
|
"baseSnippets" : "5ePHB"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name" : "5e PHB",
|
"name" : "5e PHB",
|
||||||
"renderer" : "V3",
|
"renderer" : "V3",
|
||||||
"baseTheme" : false
|
"baseTheme" : false,
|
||||||
|
"baseSnippets" : false
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
themes/V3/Journal/dropdownTexture.png
Normal file
BIN
themes/V3/Journal/dropdownTexture.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
6
themes/V3/Journal/settings.json
Normal file
6
themes/V3/Journal/settings.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name" : "Journal",
|
||||||
|
"renderer" : "V3",
|
||||||
|
"baseTheme" : false,
|
||||||
|
"baseSnippets" : "5ePHB"
|
||||||
|
}
|
||||||
408
themes/V3/Journal/snippets.js
Normal file
408
themes/V3/Journal/snippets.js
Normal file
@@ -0,0 +1,408 @@
|
|||||||
|
/* eslint-disable max-lines */
|
||||||
|
|
||||||
|
const MagicGen = require('./snippets/magic.gen.js');
|
||||||
|
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 TableOfContentsGen = require('./snippets/tableOfContents.gen.js');
|
||||||
|
const WatercolorGen = require('./snippets/watercolor.gen.js');
|
||||||
|
const dedent = require('dedent-tabs').default;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = [
|
||||||
|
|
||||||
|
{
|
||||||
|
groupName : 'Text Editor',
|
||||||
|
icon : 'fas fa-pencil-alt',
|
||||||
|
view : 'text',
|
||||||
|
snippets : [
|
||||||
|
{
|
||||||
|
name : 'Column Break',
|
||||||
|
icon : 'fas fa-columns',
|
||||||
|
gen : '\n\\column\n'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'New Page',
|
||||||
|
icon : 'fas fa-file-alt',
|
||||||
|
gen : '\n\\page\n'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Vertical Spacing',
|
||||||
|
icon : 'fas fa-arrows-alt-v',
|
||||||
|
gen : '\n::::\n'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Horizontal Spacing',
|
||||||
|
icon : 'fas fa-arrows-alt-h',
|
||||||
|
gen : ' {{width:100px}} '
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Wide Block',
|
||||||
|
icon : 'fas fa-window-maximize',
|
||||||
|
gen : dedent`\n
|
||||||
|
{{wide
|
||||||
|
Everything in here will be extra wide. Tables, text, everything!
|
||||||
|
Beware though, CSS columns can behave a bit weird sometimes. You may
|
||||||
|
have to manually place column breaks with \`\column\` to make the
|
||||||
|
surrounding text flow with this wide block the way you want.
|
||||||
|
}}
|
||||||
|
\n`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'QR Code',
|
||||||
|
icon : 'fas fa-qrcode',
|
||||||
|
gen : (brew)=>{
|
||||||
|
return `![]` +
|
||||||
|
`(https://api.qrserver.com/v1/create-qr-code/?data=` +
|
||||||
|
`https://homebrewery.naturalcrit.com${brew.shareId ? `/share/${brew.shareId}` : ''}` +
|
||||||
|
`&size=100x100) {width:100px;mix-blend-mode:multiply}`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Page Number',
|
||||||
|
icon : 'fas fa-bookmark',
|
||||||
|
gen : '{{pageNumber 1}}\n{{footnote PART 1 | SECTION NAME}}\n\n'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Auto-incrementing Page Number',
|
||||||
|
icon : 'fas fa-sort-numeric-down',
|
||||||
|
gen : '{{pageNumber,auto}}\n{{footnote PART 1 | SECTION NAME}}\n\n'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Link to page',
|
||||||
|
icon : 'fas fa-link',
|
||||||
|
gen : '[Click here](#p3) to go to page 3\n'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Table of Contents',
|
||||||
|
icon : 'fas fa-book',
|
||||||
|
gen : TableOfContentsGen
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Add Comment',
|
||||||
|
icon : 'fas fa-code',
|
||||||
|
gen : '<!-- This is a comment that will not be rendered into your brew. Hotkey (Ctrl/Cmd + /). -->'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
groupName : 'Style Editor',
|
||||||
|
icon : 'fas fa-pencil-alt',
|
||||||
|
view : 'style',
|
||||||
|
snippets : [
|
||||||
|
{
|
||||||
|
name : 'Remove Drop Cap',
|
||||||
|
icon : 'fas fa-remove-format',
|
||||||
|
gen : dedent`/* Removes Drop Caps */
|
||||||
|
.page h1+p:first-letter {
|
||||||
|
all: unset;
|
||||||
|
}\n\n
|
||||||
|
/* Removes Small-Caps in first line */
|
||||||
|
.page h1+p:first-line {
|
||||||
|
all: unset;
|
||||||
|
}`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Tweak Drop Cap',
|
||||||
|
icon : 'fas fa-sliders-h',
|
||||||
|
gen : dedent`/* Drop Cap settings */
|
||||||
|
.page h1 + p::first-letter {
|
||||||
|
font-family: SolberaImitationRemake;
|
||||||
|
font-size: 3.5cm;
|
||||||
|
background-image: linear-gradient(-45deg, #322814, #998250, #322814);
|
||||||
|
line-height: 1em;
|
||||||
|
}\n\n`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Add Comment',
|
||||||
|
icon : 'fas fa-code',
|
||||||
|
gen : '/* This is a comment that will not be rendered into your brew. */'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
/*********************** IMAGES *******************/
|
||||||
|
{
|
||||||
|
groupName : 'Images',
|
||||||
|
icon : 'fas fa-images',
|
||||||
|
view : 'text',
|
||||||
|
snippets : [
|
||||||
|
{
|
||||||
|
name : 'Image',
|
||||||
|
icon : 'fas fa-image',
|
||||||
|
gen : dedent`
|
||||||
|
 {width:325px,mix-blend-mode:multiply}
|
||||||
|
|
||||||
|
{{artist,position:relative,top:-230px,left:10px,margin-bottom:-30px
|
||||||
|
##### Cat Warrior
|
||||||
|
[Kyoung Hwan Kim](https://www.artstation.com/tahra)
|
||||||
|
}}`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Background Image',
|
||||||
|
icon : 'fas fa-tree',
|
||||||
|
gen : dedent`
|
||||||
|
 {position:absolute,top:50px,right:30px,width:280px}
|
||||||
|
|
||||||
|
{{artist,top:80px,right:30px
|
||||||
|
##### Homebrew Mug
|
||||||
|
[naturalcrit](https://homebrew.naturalcrit.com)
|
||||||
|
}}`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Watercolor Splatter',
|
||||||
|
icon : 'fas fa-fill-drip',
|
||||||
|
gen : WatercolorGen,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Watermark',
|
||||||
|
icon : 'fas fa-id-card',
|
||||||
|
gen : dedent`
|
||||||
|
{{watermark Homebrewery}}\n`
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/************************* PHB ********************/
|
||||||
|
|
||||||
|
{
|
||||||
|
groupName : 'PHB',
|
||||||
|
icon : 'fas fa-book',
|
||||||
|
view : 'text',
|
||||||
|
snippets : [
|
||||||
|
{
|
||||||
|
name : 'Spell',
|
||||||
|
icon : 'fas fa-magic',
|
||||||
|
gen : MagicGen.spell,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Spell List',
|
||||||
|
icon : 'fas fa-scroll',
|
||||||
|
gen : MagicGen.spellList,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Class Feature',
|
||||||
|
icon : 'fas fa-mask',
|
||||||
|
gen : ClassFeatureGen,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Note',
|
||||||
|
icon : 'fas fa-sticky-note',
|
||||||
|
gen : function(){
|
||||||
|
return dedent`
|
||||||
|
{{note
|
||||||
|
##### Time to Drop Knowledge
|
||||||
|
Use notes to point out some interesting information.
|
||||||
|
|
||||||
|
**Tables and lists** both work within a note.
|
||||||
|
}}
|
||||||
|
\n`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Descriptive Text Box',
|
||||||
|
icon : 'fas fa-comment-alt',
|
||||||
|
gen : function(){
|
||||||
|
return dedent`
|
||||||
|
{{descriptive
|
||||||
|
##### Time to Drop Knowledge
|
||||||
|
Use descriptive boxes to highlight text that should be read aloud.
|
||||||
|
|
||||||
|
**Tables and lists** both work within a descriptive box.
|
||||||
|
}}
|
||||||
|
\n`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Monster Stat Block (unframed)',
|
||||||
|
icon : 'fas fa-paw',
|
||||||
|
gen : MonsterBlockGen.monster('monster', 2),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Monster Stat Block',
|
||||||
|
icon : 'fas fa-spider',
|
||||||
|
gen : MonsterBlockGen.monster('monster,frame', 2),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Wide Monster Stat Block',
|
||||||
|
icon : 'fas fa-dragon',
|
||||||
|
gen : MonsterBlockGen.monster('monster,frame,wide', 4),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Cover Page',
|
||||||
|
icon : 'fas fa-file-word',
|
||||||
|
gen : CoverPageGen,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Magic Item',
|
||||||
|
icon : 'fas fa-hat-wizard',
|
||||||
|
gen : MagicGen.item,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Artist Credit',
|
||||||
|
icon : 'fas fa-signature',
|
||||||
|
gen : function(){
|
||||||
|
return dedent`
|
||||||
|
{{artist,top:90px,right:30px
|
||||||
|
##### Starry Night
|
||||||
|
[Van Gogh](https://www.vangoghmuseum.nl/en)
|
||||||
|
}}
|
||||||
|
\n`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************* TABLES *********************/
|
||||||
|
|
||||||
|
{
|
||||||
|
groupName : 'Tables',
|
||||||
|
icon : 'fas fa-table',
|
||||||
|
view : 'text',
|
||||||
|
snippets : [
|
||||||
|
{
|
||||||
|
name : 'Table',
|
||||||
|
icon : 'fas fa-th-list',
|
||||||
|
gen : function(){
|
||||||
|
return dedent`
|
||||||
|
##### Character Advancement
|
||||||
|
| Experience Points | Level | Proficiency Bonus |
|
||||||
|
|:------------------|:-----:|:-----------------:|
|
||||||
|
| 0 | 1 | +2 |
|
||||||
|
| 300 | 2 | +2 |
|
||||||
|
| 900 | 3 | +2 |
|
||||||
|
| 2,700 | 4 | +2 |
|
||||||
|
| 6,500 | 5 | +3 |
|
||||||
|
| 14,000 | 6 | +3 |
|
||||||
|
\n`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Wide Table',
|
||||||
|
icon : 'fas fa-list',
|
||||||
|
gen : function(){
|
||||||
|
return dedent`
|
||||||
|
{{wide
|
||||||
|
##### Weapons
|
||||||
|
| Name | Cost | Damage | Weight | Properties |
|
||||||
|
|:------------------------|:-----:|:----------------|--------:|:-----------|
|
||||||
|
| *Simple Melee Weapons* | | | | |
|
||||||
|
|   Club | 1 sp | 1d4 bludgeoning | 2 lb. | Light |
|
||||||
|
|   Dagger | 2 gp | 1d4 piercing | 1 lb. | Finesse |
|
||||||
|
|   Spear | 1 gp | 1d6 piercing | 3 lb. | Thrown |
|
||||||
|
| *Simple Ranged Weapons* | | | | |
|
||||||
|
|   Dart | 5 cp | 1d4 piercig | 1/4 lb. | Finesse |
|
||||||
|
|   Shortbow | 25 gp | 1d6 piercing | 2 lb. | Ammunition |
|
||||||
|
|   Sling | 1 sp | 1d4 bludgeoning | — | Ammunition |
|
||||||
|
}}
|
||||||
|
\n`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Split Table',
|
||||||
|
icon : 'fas fa-th-large',
|
||||||
|
gen : function(){
|
||||||
|
return dedent`
|
||||||
|
##### Typical Difficulty Classes
|
||||||
|
{{column-count:2
|
||||||
|
| Task Difficulty | DC |
|
||||||
|
|:----------------|:--:|
|
||||||
|
| Very easy | 5 |
|
||||||
|
| Easy | 10 |
|
||||||
|
| Medium | 15 |
|
||||||
|
|
||||||
|
| Task Difficulty | DC |
|
||||||
|
|:------------------|:--:|
|
||||||
|
| Hard | 20 |
|
||||||
|
| Very hard | 25 |
|
||||||
|
| Nearly impossible | 30 |
|
||||||
|
}}
|
||||||
|
\n`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Class Table',
|
||||||
|
icon : 'fas fa-table',
|
||||||
|
gen : ClassTableGen.full('classTable,frame,decoration,wide'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Class Table (unframed)',
|
||||||
|
icon : 'fas fa-border-none',
|
||||||
|
gen : ClassTableGen.full('classTable,wide'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : '1/2 Class Table',
|
||||||
|
icon : 'fas fa-list-alt',
|
||||||
|
gen : ClassTableGen.half('classTable,decoration,frame'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : '1/2 Class Table (unframed)',
|
||||||
|
icon : 'fas fa-border-none',
|
||||||
|
gen : ClassTableGen.half('classTable'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : '1/3 Class Table',
|
||||||
|
icon : 'fas fa-border-all',
|
||||||
|
gen : ClassTableGen.third('classTable,frame'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : '1/3 Class Table (unframed)',
|
||||||
|
icon : 'fas fa-border-none',
|
||||||
|
gen : ClassTableGen.third('classTable'),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**************** PAGE *************/
|
||||||
|
|
||||||
|
{
|
||||||
|
groupName : 'Print',
|
||||||
|
icon : 'fas fa-print',
|
||||||
|
view : 'style',
|
||||||
|
snippets : [
|
||||||
|
{
|
||||||
|
name : 'A4 Page Size',
|
||||||
|
icon : 'far fa-file',
|
||||||
|
gen : dedent`/* A4 Page Size */
|
||||||
|
.page{
|
||||||
|
width : 210mm;
|
||||||
|
height : 296.8mm;
|
||||||
|
}\n\n`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Square Page Size',
|
||||||
|
icon : 'far fa-file',
|
||||||
|
gen : dedent`/* Square Page Size */
|
||||||
|
.page {
|
||||||
|
width : 125mm;
|
||||||
|
height : 125mm;
|
||||||
|
padding : 12.5mm;
|
||||||
|
columns : unset;
|
||||||
|
}\n\n`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name : 'Ink Friendly',
|
||||||
|
icon : 'fas fa-tint',
|
||||||
|
gen : dedent`
|
||||||
|
/* Ink Friendly */
|
||||||
|
*:is(.page,.monster,.note,.descriptive) {
|
||||||
|
background : white !important;
|
||||||
|
filter : drop-shadow(0px 0px 3px #888) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page img {
|
||||||
|
visibility : hidden;
|
||||||
|
}\n\n`
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
];
|
||||||
109
themes/V3/Journal/snippets/magic.gen.js
Normal file
109
themes/V3/Journal/snippets/magic.gen.js
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
const _ = require('lodash');
|
||||||
|
|
||||||
|
const spellNames = [
|
||||||
|
'Astral Rite of Acne',
|
||||||
|
'Create Acne',
|
||||||
|
'Cursed Ramen Erruption',
|
||||||
|
'Dark Chant of the Dentists',
|
||||||
|
'Erruption of Immaturity',
|
||||||
|
'Flaming Disc of Inconvenience',
|
||||||
|
'Heal Bad Hygene',
|
||||||
|
'Heavenly Transfiguration of the Cream Devil',
|
||||||
|
'Hellish Cage of Mucus',
|
||||||
|
'Irritate Peanut Butter Fairy',
|
||||||
|
'Luminous Erruption of Tea',
|
||||||
|
'Mystic Spell of the Poser',
|
||||||
|
'Sorcerous Enchantment of the Chimneysweep',
|
||||||
|
'Steak Sauce Ray',
|
||||||
|
'Talk to Groupie',
|
||||||
|
'Astonishing Chant of Chocolate',
|
||||||
|
'Astounding Pasta Puddle',
|
||||||
|
'Ball of Annoyance',
|
||||||
|
'Cage of Yarn',
|
||||||
|
'Control Noodles Elemental',
|
||||||
|
'Create Nervousness',
|
||||||
|
'Cure Baldness',
|
||||||
|
'Cursed Ritual of Bad Hair',
|
||||||
|
'Dispell Piles in Dentist',
|
||||||
|
'Eliminate Florists',
|
||||||
|
'Illusionary Transfiguration of the Babysitter',
|
||||||
|
'Necromantic Armor of Salad Dressing',
|
||||||
|
'Occult Transfiguration of Foot Fetish',
|
||||||
|
'Protection from Mucus Giant',
|
||||||
|
'Tinsel Blast',
|
||||||
|
'Alchemical Evocation of the Goths',
|
||||||
|
'Call Fangirl',
|
||||||
|
'Divine Spell of Crossdressing',
|
||||||
|
'Dominate Ramen Giant',
|
||||||
|
'Eliminate Vindictiveness in Gym Teacher',
|
||||||
|
'Extra-Planar Spell of Irritation',
|
||||||
|
'Induce Whining in Babysitter',
|
||||||
|
'Invoke Complaining',
|
||||||
|
'Magical Enchantment of Arrogance',
|
||||||
|
'Occult Globe of Salad Dressing',
|
||||||
|
'Overwhelming Enchantment of the Chocolate Fairy',
|
||||||
|
'Sorcerous Dandruff Globe',
|
||||||
|
'Spiritual Invocation of the Costumers',
|
||||||
|
'Ultimate Rite of the Confetti Angel',
|
||||||
|
'Ultimate Ritual of Mouthwash',
|
||||||
|
];
|
||||||
|
const itemNames = [
|
||||||
|
'Doorknob of Niceness',
|
||||||
|
'Paper Armor of Folding',
|
||||||
|
'Mixtape of Sadness',
|
||||||
|
'Staff of Endless Confetti',
|
||||||
|
];
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
spellList : function(){
|
||||||
|
const levels = ['Cantrips (0 Level)', '1st Level', '2nd Level', '3rd Level', '4th Level', '5th Level', '6th Level', '7th Level', '8th Level', '9th Level'];
|
||||||
|
|
||||||
|
const content = _.map(levels, (level)=>{
|
||||||
|
const spells = _.map(_.sampleSize(spellNames, _.random(4, 10)), (spell)=>{
|
||||||
|
return `- ${spell}`;
|
||||||
|
}).join('\n');
|
||||||
|
return `##### ${level} \n${spells} \n`;
|
||||||
|
}).join('\n');
|
||||||
|
|
||||||
|
return `{{spellList,wide\n${content}\n}}`;
|
||||||
|
},
|
||||||
|
|
||||||
|
spell : function(){
|
||||||
|
const level = ['1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th'];
|
||||||
|
const spellSchools = ['abjuration', 'conjuration', 'divination', 'enchantment', 'evocation', 'illusion', 'necromancy', 'transmutation'];
|
||||||
|
|
||||||
|
|
||||||
|
let components = _.sampleSize(['V', 'S', 'M'], _.random(1, 3)).join(', ');
|
||||||
|
if(components.indexOf('M') !== -1){
|
||||||
|
components += ` (${_.sampleSize(['a small doll', 'a crushed button worth at least 1cp', 'discarded gum wrapper'], _.random(1, 3)).join(', ')})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
`#### ${_.sample(spellNames)}`,
|
||||||
|
`*${_.sample(level)}-level ${_.sample(spellSchools)}*`,
|
||||||
|
'',
|
||||||
|
'**Casting Time:** :: 1 action',
|
||||||
|
`**Range:** :: ${_.sample(['Self', 'Touch', '30 feet', '60 feet'])}`,
|
||||||
|
`**Components:** :: ${components}`,
|
||||||
|
`**Duration:** :: ${_.sample(['Until dispelled', '1 round', 'Instantaneous', 'Concentration, up to 10 minutes', '1 hour'])}`,
|
||||||
|
'',
|
||||||
|
'A flame, equivalent in brightness to a torch, springs from an object that you touch. ',
|
||||||
|
'The effect look like a regular flame, but it creates no heat and doesn\'t use oxygen. ',
|
||||||
|
'A *continual flame* can be covered or hidden but not smothered or quenched.',
|
||||||
|
'\n\n\n'
|
||||||
|
].join('\n');
|
||||||
|
},
|
||||||
|
|
||||||
|
item : function() {
|
||||||
|
return [
|
||||||
|
`#### ${_.sample(itemNames)}`,
|
||||||
|
`*${_.sample(['Wondrous item', 'Armor', 'Weapon'])}, ${_.sample(['Common', 'Uncommon', 'Rare', 'Very Rare', 'Legendary', 'Artifact'])} (requires attunement)*`,
|
||||||
|
`:`,
|
||||||
|
`This knob is pretty nice. When attached to a door, it allows a user to`,
|
||||||
|
`open that door with the strength of the nearest animal. For example, if`,
|
||||||
|
`there is a cow nearby, the user will have the "strength of a cow" while`,
|
||||||
|
`opening this door.`
|
||||||
|
].join('\n');
|
||||||
|
}
|
||||||
|
};
|
||||||
797
themes/V3/Journal/style.less
Normal file
797
themes/V3/Journal/style.less
Normal file
@@ -0,0 +1,797 @@
|
|||||||
|
@import (less) './themes/fonts/5e/fonts.less';
|
||||||
|
@import (less) './themes/assets/assets.less';
|
||||||
|
|
||||||
|
:root {
|
||||||
|
//Colors
|
||||||
|
--HB_Color_Background : #EEE5CE; // Light parchment
|
||||||
|
--HB_Color_Accent : #E0E5C1; // Pastel green
|
||||||
|
--HB_Color_HeaderUnderline : #C0AD6A; // Gold
|
||||||
|
--HB_Color_HorizontalRule : #9C2B1B; // Maroon
|
||||||
|
--HB_Color_HeaderText : #58180D; // Dark Maroon
|
||||||
|
--HB_Color_MonsterStatBackground : #EEDBAB; // Light orange parchment
|
||||||
|
--HB_Color_CaptionText : #766649; // Brown
|
||||||
|
--HB_Color_WatercolorStain : #BBAD82; // Light brown
|
||||||
|
--HB_Color_Footnotes : #C9AD6A; // Gold
|
||||||
|
}
|
||||||
|
|
||||||
|
@page { margin: 0; }
|
||||||
|
body {
|
||||||
|
counter-reset : phb-page-numbers;
|
||||||
|
}
|
||||||
|
*{
|
||||||
|
-webkit-print-color-adjust : exact;
|
||||||
|
}
|
||||||
|
.useSansSerif(){
|
||||||
|
font-family : ScalySansRemake;
|
||||||
|
font-size : 0.318cm;
|
||||||
|
line-height : 1.2em;
|
||||||
|
p,dl,ul,ol {
|
||||||
|
line-height : 1.2em;
|
||||||
|
}
|
||||||
|
ul, ol {
|
||||||
|
padding-left : 1em;
|
||||||
|
}
|
||||||
|
em{
|
||||||
|
font-style : italic;
|
||||||
|
}
|
||||||
|
strong{
|
||||||
|
font-weight : 800;
|
||||||
|
letter-spacing : -0.02em;
|
||||||
|
}
|
||||||
|
h5 + * {
|
||||||
|
margin-top : 0.1cm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.useColumns(@multiplier : 1, @fillMode: balance){
|
||||||
|
column-count : 2;
|
||||||
|
column-fill : @fillMode;
|
||||||
|
column-gap : 0.9cm;
|
||||||
|
column-width : 8cm * @multiplier;
|
||||||
|
-webkit-column-count : 2;
|
||||||
|
-moz-column-count : 2;
|
||||||
|
-webkit-column-width : 8cm * @multiplier;
|
||||||
|
-moz-column-width : 8cm * @multiplier;
|
||||||
|
-webkit-column-gap : 0.9cm;
|
||||||
|
-moz-column-gap : 0.9cm;
|
||||||
|
}
|
||||||
|
.columnWrapper{
|
||||||
|
max-height : 100%;
|
||||||
|
column-span : all;
|
||||||
|
columns : inherit;
|
||||||
|
column-gap : inherit;
|
||||||
|
}
|
||||||
|
.page{
|
||||||
|
.useColumns();
|
||||||
|
counter-increment : phb-page-numbers;
|
||||||
|
position : relative;
|
||||||
|
z-index : 15;
|
||||||
|
box-sizing : border-box;
|
||||||
|
overflow : hidden;
|
||||||
|
height : 279.4mm;
|
||||||
|
width : 215.9mm;
|
||||||
|
background-color : var(--HB_Color_Background);
|
||||||
|
background-image : @backgroundImage;
|
||||||
|
padding : 1.4cm 1.9cm 1.7cm;
|
||||||
|
font-family : BookInsanityRemake;
|
||||||
|
font-size : 0.34cm;
|
||||||
|
text-rendering : optimizeLegibility;
|
||||||
|
page-break-before : always;
|
||||||
|
page-break-after : always;
|
||||||
|
//*****************************
|
||||||
|
// * BASE
|
||||||
|
// *****************************/
|
||||||
|
p{
|
||||||
|
overflow-wrap : break-word; //TODO: MAKE ALL MARGINS TOP-ONLY. USE * + * STYLE SELECTORS
|
||||||
|
display : block;
|
||||||
|
line-height : 1.25em;
|
||||||
|
&+* {
|
||||||
|
margin-top : 0.325cm;
|
||||||
|
}
|
||||||
|
&+p{
|
||||||
|
margin-top : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ul{
|
||||||
|
margin-bottom : 0.8em;
|
||||||
|
padding-left : 1.4em;
|
||||||
|
line-height : 1.25em;
|
||||||
|
list-style-position : outside;
|
||||||
|
list-style-type : disc;
|
||||||
|
}
|
||||||
|
ol{
|
||||||
|
margin-bottom : 0.8em;
|
||||||
|
padding-left : 1.4em;
|
||||||
|
line-height : 1.25em;
|
||||||
|
list-style-position : outside;
|
||||||
|
list-style-type : decimal;
|
||||||
|
}
|
||||||
|
//Indents after p or lists
|
||||||
|
p+p, ul+p, ol+p{
|
||||||
|
text-indent : 1em;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
z-index : -1;
|
||||||
|
}
|
||||||
|
strong{
|
||||||
|
font-weight : bold;
|
||||||
|
letter-spacing : -0.02em;
|
||||||
|
}
|
||||||
|
em{
|
||||||
|
font-style : italic;
|
||||||
|
}
|
||||||
|
sup{
|
||||||
|
vertical-align : super;
|
||||||
|
font-size : smaller;
|
||||||
|
line-height : 0;
|
||||||
|
}
|
||||||
|
sub{
|
||||||
|
vertical-align : sub;
|
||||||
|
font-size : smaller;
|
||||||
|
line-height : 0;
|
||||||
|
}
|
||||||
|
//*****************************
|
||||||
|
// * HEADERS
|
||||||
|
// *****************************/
|
||||||
|
h1,h2,h3,h4{
|
||||||
|
font-family : MrEavesRemake;
|
||||||
|
font-weight : 800;
|
||||||
|
color : var(--HB_Color_HeaderText);
|
||||||
|
}
|
||||||
|
h1{
|
||||||
|
margin-bottom : 0.18cm; //Margin-bottom only because this is WIDE
|
||||||
|
column-span : all;
|
||||||
|
font-size : 0.89cm;
|
||||||
|
-webkit-column-span : all;
|
||||||
|
-moz-column-span : all;
|
||||||
|
&+p::first-letter{
|
||||||
|
float : left;
|
||||||
|
font-family : SolberaImitationRemake;
|
||||||
|
line-height : 1em;
|
||||||
|
font-size : 3.5cm;
|
||||||
|
padding-left : 40px; //Allow background color to extend into margins
|
||||||
|
margin-left : -40px;
|
||||||
|
margin-top : -0.3cm;
|
||||||
|
padding-bottom : 2px;
|
||||||
|
margin-bottom : -20px;
|
||||||
|
background-image : linear-gradient(-45deg, #322814, #998250, #322814);
|
||||||
|
background-clip : text;
|
||||||
|
-webkit-background-clip : text;
|
||||||
|
color : rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
&+p::first-line{
|
||||||
|
font-variant : small-caps;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h2{
|
||||||
|
//margin-top : 0px; //Font is misaligned. Shift up slightly
|
||||||
|
//margin-bottom : 0.05cm;
|
||||||
|
font-size : 0.75cm;
|
||||||
|
line-height : 0.988em; //Font is misaligned. Shift up slightly
|
||||||
|
}
|
||||||
|
h3{
|
||||||
|
//margin-top : -0.1cm; //Font is misaligned. Shift up slightly
|
||||||
|
//margin-bottom : 0.1cm;
|
||||||
|
font-size : 0.575cm;
|
||||||
|
border-bottom : 2px solid var(--HB_Color_HeaderUnderline);;
|
||||||
|
line-height : 0.995em; //Font is misaligned. Shift up slightly
|
||||||
|
}
|
||||||
|
h4{
|
||||||
|
//margin-top : -0.02cm; //Font is misaligned. Shift up slightly
|
||||||
|
//margin-bottom : 0.02cm;
|
||||||
|
font-size : 0.458cm;
|
||||||
|
line-height : 0.971em; //Font is misaligned. Shift up slightly
|
||||||
|
}
|
||||||
|
h5{
|
||||||
|
//margin-top : -0.02cm; //Font is misaligned. Shift up slightly
|
||||||
|
//margin-bottom : 0.02cm;
|
||||||
|
font-family : ScalySansSmallCapsRemake;
|
||||||
|
font-size : 0.423cm;
|
||||||
|
font-weight : 900;
|
||||||
|
line-height : 0.951em; //Font is misaligned. Shift up slightly
|
||||||
|
& + * {
|
||||||
|
margin-top : 0.2cm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*****************************
|
||||||
|
// * TABLE
|
||||||
|
// *****************************/
|
||||||
|
table{
|
||||||
|
.useSansSerif();
|
||||||
|
width : 100%;
|
||||||
|
& + * {
|
||||||
|
margin-top : 0.325cm;
|
||||||
|
}
|
||||||
|
thead{
|
||||||
|
display: table-row-group;
|
||||||
|
font-weight : 800;
|
||||||
|
th{
|
||||||
|
vertical-align : bottom;
|
||||||
|
padding : 0.14em 0.4em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tbody{
|
||||||
|
tr{
|
||||||
|
td{
|
||||||
|
padding : 0.14em 0.4em;
|
||||||
|
}
|
||||||
|
&:nth-child(odd){
|
||||||
|
background-color : var(--HB_Color_Accent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*****************************
|
||||||
|
// * NOTE
|
||||||
|
// *****************************/
|
||||||
|
.note{
|
||||||
|
.useSansSerif();
|
||||||
|
background-color : var(--HB_Color_Accent);
|
||||||
|
border-style : solid;
|
||||||
|
border-width : 1px;
|
||||||
|
border-image : @noteBorderImage 12 stretch;
|
||||||
|
border-image-outset : 9px 0px;
|
||||||
|
border-image-width : 11px;
|
||||||
|
padding : 0.13cm 0.16cm;
|
||||||
|
filter : drop-shadow(1px 4px 6px #888);
|
||||||
|
.page :where(&) {
|
||||||
|
margin-top : 9px; //Prevent top border getting cut off on colbreak
|
||||||
|
}
|
||||||
|
& + * {
|
||||||
|
margin-top : 0.45cm;
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
font-size : 0.375cm;
|
||||||
|
}
|
||||||
|
p{
|
||||||
|
display : block;
|
||||||
|
padding-bottom : 0px;
|
||||||
|
}
|
||||||
|
:last-child {
|
||||||
|
margin-bottom : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//************************************
|
||||||
|
// * DESCRIPTIVE TEXT BOX
|
||||||
|
// ************************************/
|
||||||
|
.descriptive{
|
||||||
|
.useSansSerif();
|
||||||
|
background-color : #faf7ea;
|
||||||
|
border-style : solid;
|
||||||
|
border-width : 7px;
|
||||||
|
border-image : @descriptiveBoxImage 12 stretch;
|
||||||
|
border-image-outset : 4px;
|
||||||
|
padding : 0.1em;
|
||||||
|
filter : drop-shadow(0 0 3px #faf7ea);
|
||||||
|
.page :where(&) {
|
||||||
|
margin-top : 4px; //Prevent top border getting cut off on colbreak
|
||||||
|
}
|
||||||
|
& + * {
|
||||||
|
margin-top : 0.45cm;
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
font-size : 0.375cm;
|
||||||
|
}
|
||||||
|
p{
|
||||||
|
display : block;
|
||||||
|
padding-bottom : 0px;
|
||||||
|
line-height : 1.5em;
|
||||||
|
}
|
||||||
|
:last-child {
|
||||||
|
margin-bottom : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*****************************
|
||||||
|
// * Images Snippets
|
||||||
|
// *****************************/
|
||||||
|
|
||||||
|
/* Arist Credit */
|
||||||
|
.artist {
|
||||||
|
position : absolute;
|
||||||
|
width : auto;
|
||||||
|
text-align : center;
|
||||||
|
font-family : WalterTurncoat;
|
||||||
|
font-size : 0.27cm;
|
||||||
|
color : var(--HB_Color_CaptionText);
|
||||||
|
p, p + p {
|
||||||
|
margin : unset;
|
||||||
|
text-indent : unset;
|
||||||
|
line-height : 1em;
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
font-size : 1.3em;
|
||||||
|
font-family : WalterTurncoat;
|
||||||
|
}
|
||||||
|
a{
|
||||||
|
color : inherit;
|
||||||
|
text-decoration : unset;
|
||||||
|
&:hover {
|
||||||
|
text-decoration : underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Watermark */
|
||||||
|
.watermark {
|
||||||
|
display : grid !important;
|
||||||
|
place-items : center;
|
||||||
|
justify-content : center;
|
||||||
|
position : absolute;
|
||||||
|
top : 0;
|
||||||
|
left : 0;
|
||||||
|
width : 100%;
|
||||||
|
height : 100%;
|
||||||
|
font-size : 120px;
|
||||||
|
text-transform : uppercase;
|
||||||
|
color : black;
|
||||||
|
mix-blend-mode : overlay;
|
||||||
|
opacity : 30%;
|
||||||
|
transform : rotate(-45deg);
|
||||||
|
z-index : 500;
|
||||||
|
p {
|
||||||
|
margin-bottom : none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Watercolor */
|
||||||
|
[class*="watercolor"] {
|
||||||
|
position : absolute;
|
||||||
|
width : 2000px; /* dimensions need to be real big so the user can set */
|
||||||
|
height : 2000px; /* height or width and the image will maintain aspect ratio */
|
||||||
|
-webkit-mask-image : var(--wc);
|
||||||
|
-webkit-mask-size : contain;
|
||||||
|
-webkit-mask-repeat : no-repeat;
|
||||||
|
mask-image : var(--wc);
|
||||||
|
mask-size : contain;
|
||||||
|
mask-repeat : no-repeat;
|
||||||
|
background-size : cover;
|
||||||
|
background-color : var(--HB_Color_WatercolorStain); /*default color*/
|
||||||
|
--wc : @watercolor1; /*default image*/
|
||||||
|
z-index : -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.watercolor1 { --wc : @watercolor1; }
|
||||||
|
.watercolor2 { --wc : @watercolor2; }
|
||||||
|
.watercolor3 { --wc : @watercolor3; }
|
||||||
|
.watercolor4 { --wc : @watercolor4; }
|
||||||
|
.watercolor5 { --wc : @watercolor5; }
|
||||||
|
.watercolor6 { --wc : @watercolor6; }
|
||||||
|
.watercolor7 { --wc : @watercolor7; }
|
||||||
|
.watercolor8 { --wc : @watercolor8; }
|
||||||
|
.watercolor9 { --wc : @watercolor9; }
|
||||||
|
.watercolor10 { --wc : @watercolor10; }
|
||||||
|
.watercolor11 { --wc : @watercolor11; }
|
||||||
|
.watercolor12 { --wc : @watercolor12; }
|
||||||
|
|
||||||
|
//*****************************
|
||||||
|
// * MONSTER STAT BLOCK
|
||||||
|
// *****************************/
|
||||||
|
.monster {
|
||||||
|
.useSansSerif();
|
||||||
|
&.frame {
|
||||||
|
border-style : solid;
|
||||||
|
border-width : 7px 6px;
|
||||||
|
background-color : var(--HB_Color_MonsterStatBackground);
|
||||||
|
background-image : @monsterBlockBackground;
|
||||||
|
border-image : @monsterBorderImage 14 round;
|
||||||
|
border-image-outset : 0px 2px;
|
||||||
|
background-blend-mode : overlay;
|
||||||
|
background-attachment : fixed;
|
||||||
|
filter : drop-shadow(1px 4px 6px #888);
|
||||||
|
padding : 4px 2px;
|
||||||
|
margin-left : -0.16cm;
|
||||||
|
margin-right : -0.16cm;
|
||||||
|
width : calc(100% + 0.32cm);
|
||||||
|
}
|
||||||
|
|
||||||
|
position : relative;
|
||||||
|
padding : 0px;
|
||||||
|
margin-bottom : 0.325cm;
|
||||||
|
|
||||||
|
//Headers
|
||||||
|
h2{
|
||||||
|
font-size : 0.62cm;
|
||||||
|
line-height : 1em;
|
||||||
|
margin : 0;
|
||||||
|
&+p {
|
||||||
|
font-size : 0.304cm; //Monster size and type subtext
|
||||||
|
margin-bottom : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h3{
|
||||||
|
font-family : ScalySansRemake;
|
||||||
|
font-weight : 800;
|
||||||
|
font-variant : small-caps;
|
||||||
|
border-bottom : 2px solid var(--HB_Color_HeaderText);
|
||||||
|
// margin-top : 0.05cm; //Font is misaligned. Shift up slightly
|
||||||
|
padding-bottom : 0.05cm;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Triangle dividers
|
||||||
|
hr{
|
||||||
|
visibility : visible;
|
||||||
|
height : 6px;
|
||||||
|
margin : 0.12cm 0cm;
|
||||||
|
background-image : @redTriangleImage;
|
||||||
|
background-size : 100% 100%;
|
||||||
|
border : none;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Attribute Lists - All text between HRs is red
|
||||||
|
hr ~ :is(dl,p) {
|
||||||
|
color : var(--HB_Color_HeaderText);
|
||||||
|
}
|
||||||
|
hr:last-of-type {
|
||||||
|
& ~ :is(dl,p) {
|
||||||
|
color : inherit; // After the HRs, reset text to black
|
||||||
|
}
|
||||||
|
& + * {
|
||||||
|
margin-top : 0.325cm; // Space after last HR
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Monster Ability table
|
||||||
|
hr + table:first-of-type{
|
||||||
|
margin : 0;
|
||||||
|
column-span : none;
|
||||||
|
color : var(--HB_Color_HeaderText);
|
||||||
|
background-color : transparent;
|
||||||
|
border-style : none;
|
||||||
|
border-image : none;
|
||||||
|
-webkit-column-span : none;
|
||||||
|
tr {
|
||||||
|
background-color : transparent;
|
||||||
|
}
|
||||||
|
td,th {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:last-child {
|
||||||
|
margin-bottom : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Full Width
|
||||||
|
.monster.wide{
|
||||||
|
.useColumns(0.96, @fillMode: balance);
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************************
|
||||||
|
// * FOOTER
|
||||||
|
// *****************************/
|
||||||
|
&:after{
|
||||||
|
content : "";
|
||||||
|
position : absolute;
|
||||||
|
bottom : 0px;
|
||||||
|
left : 0px;
|
||||||
|
z-index : 100;
|
||||||
|
height : 50px;
|
||||||
|
width : 100%;
|
||||||
|
background-image : @footerAccentImage;
|
||||||
|
background-size : cover;
|
||||||
|
}
|
||||||
|
&:nth-child(even){
|
||||||
|
&:after{
|
||||||
|
transform : scaleX(-1);
|
||||||
|
}
|
||||||
|
.pageNumber{
|
||||||
|
left : 2px;
|
||||||
|
}
|
||||||
|
.footnote{
|
||||||
|
left : 80px;
|
||||||
|
text-align : left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.pageNumber{
|
||||||
|
position : absolute;
|
||||||
|
right : 2px;
|
||||||
|
bottom : 22px;
|
||||||
|
width : 50px;
|
||||||
|
font-size : 0.9em;
|
||||||
|
color : var(--HB_Color_Footnotes);
|
||||||
|
text-align : center;
|
||||||
|
text-indent : 0;
|
||||||
|
&.auto::after {
|
||||||
|
content : counter(phb-page-numbers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.footnote{
|
||||||
|
position : absolute;
|
||||||
|
right : 80px;
|
||||||
|
bottom : 32px;
|
||||||
|
z-index : 150;
|
||||||
|
width : 200px;
|
||||||
|
font-size : 0.8em;
|
||||||
|
color : var(--HB_Color_Footnotes);
|
||||||
|
text-align : right;
|
||||||
|
}
|
||||||
|
//************************************
|
||||||
|
// * CODE BLOCKS
|
||||||
|
// ************************************/
|
||||||
|
code{
|
||||||
|
font-family : "Courier New", Courier, monospace;
|
||||||
|
font-size : 0.325;
|
||||||
|
padding : 0px 4px;
|
||||||
|
color : #58180d;
|
||||||
|
background-color : #faf7ea;
|
||||||
|
border-radius : 4px;
|
||||||
|
white-space : pre-wrap;
|
||||||
|
overflow-wrap : break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre code{
|
||||||
|
width : 100%;
|
||||||
|
display : inline-block;
|
||||||
|
border-style : solid;
|
||||||
|
border-width : 1px;
|
||||||
|
border-image : @codeBorderImage 26 stretch;
|
||||||
|
border-image-width : 10px;
|
||||||
|
border-image-outset : 2px;
|
||||||
|
border-radius : 12px;
|
||||||
|
margin-bottom : 2px;
|
||||||
|
padding : 0.15cm;
|
||||||
|
.page :where(&) {
|
||||||
|
margin-top : 2px; //Prevent top border getting cut off on colbreak
|
||||||
|
}
|
||||||
|
& + * {
|
||||||
|
margin-top : 0.325cm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*****************************
|
||||||
|
// * EXTRAS
|
||||||
|
// *****************************/
|
||||||
|
hr{
|
||||||
|
visibility : hidden;
|
||||||
|
margin : 0px;
|
||||||
|
}
|
||||||
|
.columnSplit {
|
||||||
|
visibility : hidden;
|
||||||
|
-webkit-column-break-after : always;
|
||||||
|
break-after : always;
|
||||||
|
-moz-column-break-after : always;
|
||||||
|
}
|
||||||
|
//Avoid breaking up
|
||||||
|
blockquote,table{
|
||||||
|
z-index : 15;
|
||||||
|
-webkit-column-break-inside : avoid;
|
||||||
|
page-break-inside : avoid;
|
||||||
|
break-inside : avoid;
|
||||||
|
}
|
||||||
|
//Text indent right after table
|
||||||
|
table+p{
|
||||||
|
text-indent : 1em;
|
||||||
|
}
|
||||||
|
// Nested lists
|
||||||
|
ul ul,ol ol,ul ol,ol ul{
|
||||||
|
margin-bottom : 0px;
|
||||||
|
margin-left : 1.5em;
|
||||||
|
}
|
||||||
|
li{
|
||||||
|
-webkit-column-break-inside : avoid;
|
||||||
|
page-break-inside : avoid;
|
||||||
|
break-inside : avoid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*****************************
|
||||||
|
// * SPELL LIST
|
||||||
|
// *****************************/
|
||||||
|
.page .spellList{
|
||||||
|
.useSansSerif();
|
||||||
|
column-count : 2;
|
||||||
|
ul+h5{
|
||||||
|
margin-top : 15px;
|
||||||
|
}
|
||||||
|
p, ul{
|
||||||
|
font-size : 0.352cm;
|
||||||
|
line-height : 1.265em;
|
||||||
|
}
|
||||||
|
ul{
|
||||||
|
margin-bottom : 0.5em;
|
||||||
|
padding-left : 1em;
|
||||||
|
text-indent : -1em;
|
||||||
|
list-style-type : none;
|
||||||
|
-webkit-column-break-inside : auto;
|
||||||
|
page-break-inside : auto;
|
||||||
|
break-inside : auto;
|
||||||
|
}
|
||||||
|
&.wide{
|
||||||
|
column-count : 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************************
|
||||||
|
// * CLASS TABLE
|
||||||
|
// *****************************/
|
||||||
|
.page .classTable{
|
||||||
|
th[colspan]:not([rowspan]) {
|
||||||
|
white-space : nowrap;
|
||||||
|
}
|
||||||
|
&.frame {
|
||||||
|
margin-top : 0.7cm;
|
||||||
|
margin-bottom : 0.9cm;
|
||||||
|
margin-left : -0.1cm;
|
||||||
|
margin-right : -0.1cm;
|
||||||
|
width : calc(100% + 0.2cm);
|
||||||
|
border-collapse : separate;
|
||||||
|
background-color : white;
|
||||||
|
border : initial;
|
||||||
|
border-style : solid;
|
||||||
|
border-image-outset : 0.4cm 0.3cm;
|
||||||
|
border-image-repeat : stretch;
|
||||||
|
border-image-slice : 200;
|
||||||
|
border-image-source : @frameBorderImage;
|
||||||
|
border-image-width : 47px;
|
||||||
|
&.wide:first-child {
|
||||||
|
margin-top: 0.12cm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.decoration {
|
||||||
|
position:relative;
|
||||||
|
}
|
||||||
|
&.decoration::before {
|
||||||
|
content :'';
|
||||||
|
position : absolute;
|
||||||
|
background-image : @classTableDecoration,
|
||||||
|
@classTableDecoration;
|
||||||
|
background-size : contain, contain;
|
||||||
|
background-repeat : no-repeat, no-repeat;
|
||||||
|
background-position : top, bottom;
|
||||||
|
width : 7.75cm;
|
||||||
|
height : calc(100% + 3.3cm);
|
||||||
|
top : 50%;
|
||||||
|
left : 50%;
|
||||||
|
transform : translateY(-50%) translateX(-50%);
|
||||||
|
filter : drop-shadow(0px 0px 1px #C8C5C080);
|
||||||
|
z-index : -1;
|
||||||
|
}
|
||||||
|
&.decoration.wide::before {
|
||||||
|
width : calc(100% + 3.3cm);
|
||||||
|
height : 7.75cm;
|
||||||
|
background-position : left, right;
|
||||||
|
}
|
||||||
|
h5 + table{
|
||||||
|
margin-top : 0.2cm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*****************************
|
||||||
|
// * TABLE OF CONTENTS
|
||||||
|
// *****************************/
|
||||||
|
.page .toc{
|
||||||
|
-webkit-column-break-inside : avoid;
|
||||||
|
page-break-inside : avoid;
|
||||||
|
break-inside : avoid;
|
||||||
|
h1 {
|
||||||
|
text-align : center;
|
||||||
|
margin-bottom : 0.3cm;
|
||||||
|
}
|
||||||
|
a{
|
||||||
|
display : inline;
|
||||||
|
color : inherit;
|
||||||
|
text-decoration : none;
|
||||||
|
&:hover{
|
||||||
|
text-decoration : underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
margin-top : 0.2cm;
|
||||||
|
line-height : 0.4cm;
|
||||||
|
& + ul li {
|
||||||
|
line-height: 1.2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ul{
|
||||||
|
padding-left : 0;
|
||||||
|
list-style-type : none;
|
||||||
|
li + li h3 {
|
||||||
|
margin-top : 0.26cm;
|
||||||
|
line-height : 1em
|
||||||
|
}
|
||||||
|
h3 span:first-child::after {
|
||||||
|
border : none;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
display : table-cell;
|
||||||
|
&:first-child {
|
||||||
|
position : relative;
|
||||||
|
overflow : hidden;
|
||||||
|
&::after {
|
||||||
|
content : "";
|
||||||
|
position : absolute;
|
||||||
|
bottom : 0.08cm;
|
||||||
|
margin-left : 0.06cm; /* Spacing before dot leaders */
|
||||||
|
width : 100%;
|
||||||
|
border-bottom : 0.05cm dotted #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:last-child {
|
||||||
|
font-family : BookInsanityRemake;
|
||||||
|
font-size : 0.34cm;
|
||||||
|
font-weight : normal;
|
||||||
|
color : black;
|
||||||
|
text-align : right;
|
||||||
|
vertical-align : bottom; /* Keep page number bottom-aligned */
|
||||||
|
width : 1%;
|
||||||
|
padding-left : 0.06cm; /* Spacing after dot leaders */
|
||||||
|
/*white-space : nowrap; /* Uncomment if needed */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ul { /*List indent*/
|
||||||
|
margin-left : 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.wide{
|
||||||
|
.useColumns(0.96, @fillMode: balance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************************
|
||||||
|
// * MUSTACHE DIVS/SPANS
|
||||||
|
// *****************************/
|
||||||
|
.page {
|
||||||
|
.block {
|
||||||
|
break-inside : avoid;
|
||||||
|
display : inline-block;
|
||||||
|
.page :where(&) {
|
||||||
|
width : 100%;
|
||||||
|
}
|
||||||
|
//-webkit-transform : translateZ(0); //Prevents shadows from breaking across columns
|
||||||
|
}
|
||||||
|
.inline-block {
|
||||||
|
display : inline-block;
|
||||||
|
text-indent : initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************************
|
||||||
|
// * DEFINITION LISTS
|
||||||
|
// *****************************/
|
||||||
|
.page {
|
||||||
|
dl {
|
||||||
|
line-height : 1.25em;
|
||||||
|
padding-left : 1em;
|
||||||
|
white-space : pre-line;
|
||||||
|
& + * {
|
||||||
|
margin-top : 0.28cm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dl + * {
|
||||||
|
margin-top : 0.17cm;
|
||||||
|
}
|
||||||
|
p + dl {
|
||||||
|
margin-top: 0.17cm;
|
||||||
|
}
|
||||||
|
dt {
|
||||||
|
display : inline;
|
||||||
|
margin-right : 5px;
|
||||||
|
margin-left : -1em;
|
||||||
|
}
|
||||||
|
dd {
|
||||||
|
display : inline;
|
||||||
|
margin-left : 0px;
|
||||||
|
text-indent : 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************************
|
||||||
|
// * BLANK LINE
|
||||||
|
// *****************************/
|
||||||
|
.page {
|
||||||
|
.blank {
|
||||||
|
height : 1em;
|
||||||
|
margin-top : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************************
|
||||||
|
// * WIDE
|
||||||
|
// *****************************/
|
||||||
|
.page .wide{
|
||||||
|
column-span : all;
|
||||||
|
-webkit-column-span : all;
|
||||||
|
-moz-column-span : all;
|
||||||
|
display : block;
|
||||||
|
margin-bottom : 0.34cm;
|
||||||
|
&+* {
|
||||||
|
margin-top : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,13 +12,22 @@
|
|||||||
"name": "5e DMG",
|
"name": "5e DMG",
|
||||||
"renderer": "V3",
|
"renderer": "V3",
|
||||||
"baseTheme": "5ePHB",
|
"baseTheme": "5ePHB",
|
||||||
|
"baseSnippets": "5ePHB",
|
||||||
"path": "5eDMG"
|
"path": "5eDMG"
|
||||||
},
|
},
|
||||||
"5ePHB": {
|
"5ePHB": {
|
||||||
"name": "5e PHB",
|
"name": "5e PHB",
|
||||||
"renderer": "V3",
|
"renderer": "V3",
|
||||||
"baseTheme": false,
|
"baseTheme": false,
|
||||||
|
"baseSnippets": false,
|
||||||
"path": "5ePHB"
|
"path": "5ePHB"
|
||||||
|
},
|
||||||
|
"Journal": {
|
||||||
|
"name": "Journal",
|
||||||
|
"renderer": "V3",
|
||||||
|
"baseTheme": false,
|
||||||
|
"baseSnippets": "5ePHB",
|
||||||
|
"path": "Journal"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user