mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-13 14:15:56 +00:00
Finished the monster stat block, using hr's as element modifiers, kinda weird.
This commit is contained in:
@@ -36,6 +36,22 @@ var Icons = [
|
|||||||
snippet : Snippets.statBlock,
|
snippet : Snippets.statBlock,
|
||||||
tooltip : 'Monster Stat Block'
|
tooltip : 'Monster Stat Block'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
icon : 'fa-table',
|
||||||
|
snippet : "",
|
||||||
|
tooltip : "Class Table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon : 'fa-code',
|
||||||
|
snippet : "```\n```",
|
||||||
|
tooltip : "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon : 'fa-file-o',
|
||||||
|
snippet : "\\page",
|
||||||
|
tooltip : "New Page"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -18,16 +18,19 @@ module.exports = {
|
|||||||
"As a paladin, you gain the following class features.",
|
"As a paladin, you gain the following class features.",
|
||||||
"",
|
"",
|
||||||
"#### Hit Points",
|
"#### Hit Points",
|
||||||
"**Hit Dice:** 1d10 per paladin level <br>",
|
"___",
|
||||||
"**Hit Points at 1st Level:** 10 + your Constitution modifier <br>",
|
"- **Hit Dice:** 1d10 per paladin level",
|
||||||
"**Hit Points at Higher Levels:** 1d10 (or 6) + your Constituion modifier per paladin level after 1st",
|
"- **Hit Points at 1st Level:** 10 + your Constitution modifier",
|
||||||
|
"- **Hit Points at Higher Levels:** 1d10 (or 6) + your Constituion modifier per paladin level after 1st",
|
||||||
"",
|
"",
|
||||||
"#### Proficiencies",
|
"#### Proficiencies",
|
||||||
"**Armor:** All armor, Shields <br>",
|
"___",
|
||||||
"**Weapons:** Simple Weapons, martial weapons <br>",
|
"- **Armor:** All armor, Shields",
|
||||||
"**Tools:** None <br><br>",
|
"- **Weapons:** Simple Weapons, martial weapons",
|
||||||
"**Saving Throws:** Wisdom, Charisma <br>",
|
"- **Tools:** None <br>",
|
||||||
"**Skills:** Choose two from Athletics, Insight, Intimidation, Medicine, Persuasion, and Religion",
|
"___",
|
||||||
|
"- **Saving Throws:** Wisdom, Charisma",
|
||||||
|
"- **Skills:** Choose two from Athletics, Insight, Intimidation, Medicine, Persuasion, and Religion",
|
||||||
"",
|
"",
|
||||||
"#### Equipment",
|
"#### Equipment",
|
||||||
"You start with the following equipment, in addition to the equipment granted by your background:",
|
"You start with the following equipment, in addition to the equipment granted by your background:",
|
||||||
@@ -39,11 +42,13 @@ module.exports = {
|
|||||||
|
|
||||||
spell : [
|
spell : [
|
||||||
"#### Continual Flame",
|
"#### Continual Flame",
|
||||||
"*2nd-level evocation* <br>",
|
"*2nd-level evocation*",
|
||||||
"**Casting Time:** 1 action <br>",
|
"___",
|
||||||
"**Range:** Touch <br>",
|
"- **Casting Time:** 1 action",
|
||||||
"**Components:** V, S, M (ruby dust worth 50gp, which the spell consumes) <br>",
|
"- **Range:** Touch",
|
||||||
"**Duration:** Until dispelled <br><br>",
|
"- **Components:** V, S, M (ruby dust worth 50gp, which the spell consumes)",
|
||||||
|
"- **Duration:** Until dispelled",
|
||||||
|
"",
|
||||||
"A flame, equivalent in brightness to a torch, springs from from an object that you touch. ",
|
"A flame, equivalent in brightness to a torch, springs from from an object that you touch. ",
|
||||||
"The effect look like a regular flame, but it creates no heat and doesn't use oxygen. ",
|
"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."
|
"A *continual flame* can be covered or hidden but not smothered or quenched."
|
||||||
@@ -75,16 +80,30 @@ module.exports = {
|
|||||||
].join('\n'),
|
].join('\n'),
|
||||||
|
|
||||||
statBlock :[
|
statBlock :[
|
||||||
"## Warhorse",
|
"___",
|
||||||
"*Large beast, unaligned*",
|
"> ## Warhorse",
|
||||||
"",
|
">*Large beast, unaligned*",
|
||||||
"---",
|
"> ___",
|
||||||
"|STR|DEX|CON|INT|WIS|CHA|",
|
"> - **Armor Class** 18 (natural armor)",
|
||||||
"|:---:|:---:|:---:|:---:|:---:|:---:|:---:|",
|
"> - **Hit Points** 33 (6d8 + 6)",
|
||||||
"|18 (+4)|18 (+4)|18 (+4)|18 (+4)|18 (+4)|18 (+4)|",
|
"> - **Speed** 25ft",
|
||||||
"---",
|
">___",
|
||||||
"***Trampling Charge*** Does a thing yo",
|
">|STR|DEX|CON|INT|WIS|CHA|",
|
||||||
|
">|:---:|:---:|:---:|:---:|:---:|:---:|:---:|",
|
||||||
|
">|18 (+4)|18 (+4)|18 (+4)|18 (+4)|18 (+4)|18 (+4)|",
|
||||||
|
">___",
|
||||||
|
"> - **Damage Immunities** poison, psychic",
|
||||||
|
"> - **Condition Immunities** blinded, charmed, deafened, exhaustion, frightened, paralyzed, petrified, poisoned",
|
||||||
|
"> - **Languages** None",
|
||||||
|
"> - **Challenge** 1 (200 XP)",
|
||||||
|
"> ___",
|
||||||
|
"> ***Pack Tactics.*** These guys work together. Like super well, you don't even know.",
|
||||||
|
">",
|
||||||
|
"> ***False Appearance. *** While the armor reamin motionless, it is indistinguishable from a normal suit of armor.",
|
||||||
|
"> ### Actions",
|
||||||
|
"> ***Multiattack.*** The armor makes two two melee attacks.",
|
||||||
|
">",
|
||||||
|
"> ***Slam.*** *Melee Weapon Attack:* +4 to hit, reach 5ft., one target. *Hit* 5 (1d6 + 2) ",
|
||||||
].join('\n')
|
].join('\n')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ var Phb = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
renderPages : function(){
|
renderPages : function(){
|
||||||
return _.map(this.props.text.split('\page'), (pageText, index) => {
|
return _.map(this.props.text.split('\\page'), (pageText, index) => {
|
||||||
return <div className='phb' dangerouslySetInnerHTML={{__html:Markdown(this.props.text)}} key={index} />
|
return <div className='phb' dangerouslySetInnerHTML={{__html:Markdown(pageText)}} key={index} />
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -25,10 +25,12 @@
|
|||||||
font-family : ScalaSans;
|
font-family : ScalaSans;
|
||||||
src : url('/assets/naturalCrit/homebrew/assets/Scaly Sans.otf');
|
src : url('/assets/naturalCrit/homebrew/assets/Scaly Sans.otf');
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family : ScalaSansBold;
|
font-family : ScalaSansBold;
|
||||||
src : url('/assets/naturalCrit/homebrew/assets/Scala Sans Bold.ttf');
|
src : url('/assets/naturalCrit/homebrew/assets/Scala Sans Bold.ttf');
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family : ScalaSansSmallCaps;
|
font-family : ScalaSansSmallCaps;
|
||||||
src : url('/assets/naturalCrit/homebrew/assets/Scala Sans SmallCaps.ttf');
|
src : url('/assets/naturalCrit/homebrew/assets/Scala Sans SmallCaps.ttf');
|
||||||
@@ -54,21 +56,26 @@
|
|||||||
padding : 1.0cm 1.7cm;
|
padding : 1.0cm 1.7cm;
|
||||||
column-count : 2;
|
column-count : 2;
|
||||||
column-fill : auto;
|
column-fill : auto;
|
||||||
|
column-gap : 1cm;
|
||||||
column-width : 8cm;
|
column-width : 8cm;
|
||||||
background-image : url('/assets/naturalCrit/homebrew/assets/PHB-background.png');
|
background-image : url('/assets/naturalCrit/homebrew/assets/PHB-background.png');
|
||||||
-webkit-column-count : 2;
|
-webkit-column-count : 2;
|
||||||
-moz-column-count : 2;
|
-moz-column-count : 2;
|
||||||
-webkit-column-width : 8cm;
|
-webkit-column-width : 8cm;
|
||||||
-moz-column-width : 8cm;
|
-moz-column-width : 8cm;
|
||||||
column-gap : 1cm;
|
-webkit-column-gap : 1cm;
|
||||||
-webkit-column-gap : 1cm;
|
|
||||||
text-rendering : optimizeLegibility;
|
text-rendering : optimizeLegibility;
|
||||||
p,ul{
|
|
||||||
|
|
||||||
|
p,ul,blockquote{
|
||||||
-webkit-column-break-inside : avoid;
|
-webkit-column-break-inside : avoid;
|
||||||
-moz-column-break-inside : avoid;
|
-moz-column-break-inside : avoid;
|
||||||
-o-column-break-inside : avoid;
|
-o-column-break-inside : avoid;
|
||||||
-ms-column-break-inside : avoid;
|
-ms-column-break-inside : avoid;
|
||||||
column-break-inside : avoid;
|
column-break-inside : avoid;
|
||||||
|
}
|
||||||
|
|
||||||
|
p,ul{
|
||||||
strong{
|
strong{
|
||||||
font-family : BookInsanityBold;
|
font-family : BookInsanityBold;
|
||||||
em{
|
em{
|
||||||
@@ -97,6 +104,12 @@
|
|||||||
list-style-position : inside;
|
list-style-position : inside;
|
||||||
list-style-type : disc;
|
list-style-type : disc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
hr+table{
|
||||||
|
-webkit-column-span : all;
|
||||||
|
column-span : all;
|
||||||
|
}
|
||||||
table{
|
table{
|
||||||
width : 100%;
|
width : 100%;
|
||||||
margin-bottom : 1em;
|
margin-bottom : 1em;
|
||||||
@@ -117,38 +130,152 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
blockquote{
|
hr{
|
||||||
background-color : @green;
|
visibility: hidden;
|
||||||
font-family : ScalaSans;
|
//border : none;
|
||||||
box-sizing: border-box;
|
margin: 0px;
|
||||||
padding : 5px 10px;
|
}
|
||||||
border-top : 2px black solid;
|
|
||||||
border-bottom : 2px black solid;
|
//Fancy List of things
|
||||||
box-shadow: 1px 4px 14px #888;
|
hr+ul{
|
||||||
margin-bottom: 1em;
|
list-style-type: none;
|
||||||
p{
|
text-indent: -1em;
|
||||||
font-family : ScalaSans;
|
padding-left: 1em;
|
||||||
font-size: 10pt;
|
|
||||||
line-height: 1.1em;
|
//margin-top: -0.5em;
|
||||||
em{
|
margin-bottom: 0.5em;
|
||||||
font-family : ScalaSans;
|
}
|
||||||
font-style: italic;
|
|
||||||
|
//Column Break
|
||||||
|
pre{
|
||||||
|
visibility: hidden;
|
||||||
|
-webkit-column-break-after: always;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Monster Stat block
|
||||||
|
hr+blockquote{
|
||||||
|
position : relative;
|
||||||
|
background-color: #FDF1DC;
|
||||||
|
border : none;
|
||||||
|
|
||||||
|
h2{
|
||||||
|
margin-bottom: 0px;
|
||||||
|
&+p{
|
||||||
|
padding-bottom: 0px;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
h3{
|
||||||
|
font-family: ScalaSans;
|
||||||
|
font-weight: 400;
|
||||||
|
border-bottom: 1px solid @header;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul{
|
||||||
|
list-style-type: none;
|
||||||
|
font-family: ScalaSans;
|
||||||
|
color : @header;
|
||||||
|
font-size: 10pt;
|
||||||
|
text-indent: -1em;
|
||||||
|
padding-left: 1em;
|
||||||
strong{
|
strong{
|
||||||
|
font-family: ScalaSans;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
em{
|
}
|
||||||
font-weight: 800;
|
}
|
||||||
font-style: italic;
|
|
||||||
}
|
hr+table{
|
||||||
|
-webkit-column-span : 1;
|
||||||
|
column-span : 1;
|
||||||
|
}
|
||||||
|
table{
|
||||||
|
color : @header;
|
||||||
|
}
|
||||||
|
|
||||||
|
p+p{
|
||||||
|
margin-top : 0em;
|
||||||
|
text-indent : 0em;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Maybe move this to be built in
|
||||||
|
hr{
|
||||||
|
visibility: visible;
|
||||||
|
margin: 8px 0px;
|
||||||
|
|
||||||
|
border-color : transparent;
|
||||||
|
position: relative;
|
||||||
|
@height : 3px;
|
||||||
|
&:after, &:before{
|
||||||
|
content : "";
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: @height;
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
&:before{
|
||||||
|
top : -@height;
|
||||||
|
background: linear-gradient(to right top, @horizontalRule 40%, transparent 50%)
|
||||||
|
}
|
||||||
|
&:after{
|
||||||
|
top: 0px;
|
||||||
|
background: linear-gradient(to right bottom, @horizontalRule 40%, transparent 50%)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Borders
|
||||||
|
&:after, &:before{
|
||||||
|
content : "";
|
||||||
|
position: absolute;
|
||||||
|
background-color : #E69A28;
|
||||||
|
border: 1px solid black;
|
||||||
|
height : 4px;
|
||||||
|
width : 100%;
|
||||||
|
padding : 0px 3px;
|
||||||
|
}
|
||||||
|
&:before{
|
||||||
|
top : 0px;
|
||||||
|
left : -3px;
|
||||||
|
}
|
||||||
|
&:after{
|
||||||
|
bottom : 0px;
|
||||||
|
left : -3px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Note
|
||||||
|
blockquote{
|
||||||
|
box-sizing : border-box;
|
||||||
|
margin-bottom : 1em;
|
||||||
|
padding : 5px 10px;
|
||||||
|
background-color : @green;
|
||||||
|
font-family : ScalaSans;
|
||||||
|
border-top : 2px black solid;
|
||||||
|
border-bottom : 2px black solid;
|
||||||
|
box-shadow : 1px 4px 14px #888;
|
||||||
|
p{
|
||||||
|
font-family : ScalaSans;
|
||||||
|
font-size : 10pt;
|
||||||
|
line-height : 1.1em;
|
||||||
|
em{
|
||||||
|
font-family : ScalaSans;
|
||||||
|
font-style : italic;
|
||||||
|
}
|
||||||
|
strong{
|
||||||
|
font-weight : 800;
|
||||||
|
font-family : ScalaSans;
|
||||||
|
em{
|
||||||
|
font-style : italic;
|
||||||
|
font-weight : 800;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
pre{
|
pre{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
h1,h2,h3,h4{
|
h1,h2,h3,h4{
|
||||||
margin-top : 0.2em;
|
margin-top : 0.2em;
|
||||||
margin-bottom : 0.2em;
|
margin-bottom : 0.2em;
|
||||||
@@ -166,7 +293,7 @@
|
|||||||
margin-top : 20px;
|
margin-top : 20px;
|
||||||
margin-bottom : 10px;
|
margin-bottom : 10px;
|
||||||
font-family : Solbera;
|
font-family : Solbera;
|
||||||
font-size : 5em;
|
font-size : 4.5em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -178,8 +305,8 @@
|
|||||||
border-bottom : 2px solid @headerUnderline;
|
border-bottom : 2px solid @headerUnderline;
|
||||||
}
|
}
|
||||||
h4{
|
h4{
|
||||||
font-size : 12pt;
|
margin-bottom : 0.00em;
|
||||||
margin-bottom: 0.00em;
|
font-size : 12pt;
|
||||||
}
|
}
|
||||||
h5{
|
h5{
|
||||||
margin-bottom : 0.2em;
|
margin-bottom : 0.2em;
|
||||||
|
|||||||
@@ -16,10 +16,12 @@
|
|||||||
"jsoneditor": "^4.2.1",
|
"jsoneditor": "^4.2.1",
|
||||||
"lodash": "^3.10.1",
|
"lodash": "^3.10.1",
|
||||||
"marked": "^0.3.5",
|
"marked": "^0.3.5",
|
||||||
|
"mongoose": "^4.3.3",
|
||||||
"pico-flux": "^1.1.0",
|
"pico-flux": "^1.1.0",
|
||||||
"pico-router": "^1.0.0",
|
"pico-router": "^1.0.0",
|
||||||
"react": "^0.14.2",
|
"react": "^0.14.2",
|
||||||
"react-dom": "^0.14.2",
|
"react-dom": "^0.14.2",
|
||||||
|
"shortid": "^2.2.4",
|
||||||
"vitreum": "^3.1.1"
|
"vitreum": "^3.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
0
server/homebrew.api.js
Normal file
0
server/homebrew.api.js
Normal file
18
server/homebrew.model.js
Normal file
18
server/homebrew.model.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
var mongoose = require('mongoose');
|
||||||
|
var shortid = require('shortid');
|
||||||
|
|
||||||
|
var HomebrewSchema = mongoose.Schema({
|
||||||
|
shareId : {type : String, default: shortid.generate},
|
||||||
|
editId : {type : String, default: shortid.generate},
|
||||||
|
text : {type : String, default : ""},
|
||||||
|
|
||||||
|
created : { type: Date, default: Date.now },
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
var Homebrew = mongoose.model('Homebrew', HomebrewSchema);
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
schema : HomebrewSchema,
|
||||||
|
model : Homebrew,
|
||||||
|
}
|
||||||
3375
shared/naturalCrit/html2canvas.js
Normal file
3375
shared/naturalCrit/html2canvas.js
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user