mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-23 07:11:30 +00:00
Split the spell gen into a spell and spell list gen
This commit is contained in:
91
client/homebrew/editor/snippets/magic.gen.js
Normal file
91
client/homebrew/editor/snippets/magic.gen.js
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
var _ = require('lodash');
|
||||||
|
|
||||||
|
var 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",
|
||||||
|
];
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
spellList : function(){
|
||||||
|
var levels = ['Cantrips (0 Level)', '2nd Level', '3rd Level', '4th Level', '5th Level', '6th Level', '7th Level', '8th Level', '9th Level'];
|
||||||
|
|
||||||
|
var content = _.map(levels, (level)=>{
|
||||||
|
var spells = _.map(_.sampleSize(spellNames, _.random(5, 15)), (spell)=>{
|
||||||
|
return `- ${spell}`;
|
||||||
|
}).join('\n');
|
||||||
|
return `##### ${level} \n${spells} \n`;
|
||||||
|
}).join('\n');
|
||||||
|
|
||||||
|
return `<div class='spellList'>\n${content}\n</div>`;
|
||||||
|
},
|
||||||
|
|
||||||
|
spell : function(){
|
||||||
|
var level = ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th"];
|
||||||
|
var spellSchools = ["abjuration", "conjuration", "divination", "enchantment", "evocation", "illusion", "necromancy", "transmutation"];
|
||||||
|
|
||||||
|
|
||||||
|
var 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 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');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,175 +1,178 @@
|
|||||||
var SpellGen = require('./spell.gen.js');
|
var MagicGen = require('./magic.gen.js');
|
||||||
var ClassTableGen = require('./classtable.gen.js');
|
var ClassTableGen = require('./classtable.gen.js');
|
||||||
var MonsterBlockGen = require('./monsterblock.gen.js');
|
var MonsterBlockGen = require('./monsterblock.gen.js');
|
||||||
var ClassFeatureGen = require('./classfeature.gen.js');
|
var ClassFeatureGen = require('./classfeature.gen.js');
|
||||||
var FullClassGen = require('./fullclass.gen.js');
|
var FullClassGen = require('./fullclass.gen.js');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = [
|
module.exports = [
|
||||||
|
|
||||||
{
|
{
|
||||||
groupName : 'Editor',
|
groupName : 'Editor',
|
||||||
icon : 'fa-pencil',
|
icon : 'fa-pencil',
|
||||||
snippets : [
|
snippets : [
|
||||||
{
|
{
|
||||||
name : "Column Break",
|
name : "Column Break",
|
||||||
icon : 'fa-columns',
|
icon : 'fa-columns',
|
||||||
gen : "```\n```\n\n"
|
gen : "```\n```\n\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : "New Page",
|
name : "New Page",
|
||||||
icon : 'fa-file-text',
|
icon : 'fa-file-text',
|
||||||
gen : "\\page\n\n"
|
gen : "\\page\n\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : "Vertical Spacing",
|
name : "Vertical Spacing",
|
||||||
icon : 'fa-arrows-v',
|
icon : 'fa-arrows-v',
|
||||||
gen : "<div style='margin-top:140px'></div>\n\n"
|
gen : "<div style='margin-top:140px'></div>\n\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : "Image",
|
name : "Image",
|
||||||
icon : 'fa-image',
|
icon : 'fa-image',
|
||||||
gen : [
|
gen : [
|
||||||
"<img ",
|
"<img ",
|
||||||
" src='https://s-media-cache-ak0.pinimg.com/736x/4a/81/79/4a8179462cfdf39054a418efd4cb743e.jpg' ",
|
" src='https://s-media-cache-ak0.pinimg.com/736x/4a/81/79/4a8179462cfdf39054a418efd4cb743e.jpg' ",
|
||||||
" style='width:325px' />",
|
" style='width:325px' />",
|
||||||
"Credit: Kyounghwan Kim"
|
"Credit: Kyounghwan Kim"
|
||||||
].join('\n')
|
].join('\n')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : "Background Image",
|
name : "Background Image",
|
||||||
icon : 'fa-tree',
|
icon : 'fa-tree',
|
||||||
gen : [
|
gen : [
|
||||||
"<img ",
|
"<img ",
|
||||||
" src='http://i.imgur.com/hMna6G0.png' ",
|
" src='http://i.imgur.com/hMna6G0.png' ",
|
||||||
" style='position:absolute; top:50px; right:30px; width:280px' />"
|
" style='position:absolute; top:50px; right:30px; width:280px' />"
|
||||||
].join('\n')
|
].join('\n')
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
name : "Page Number",
|
name : "Page Number",
|
||||||
icon : 'fa-bookmark',
|
icon : 'fa-bookmark',
|
||||||
gen : "<div class='pageNumber'>1</div>\n<div class='footnote'>PART 1 | FANCINESS</div>\n\n"
|
gen : "<div class='pageNumber'>1</div>\n<div class='footnote'>PART 1 | FANCINESS</div>\n\n"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
/************************* PHB ********************/
|
/************************* PHB ********************/
|
||||||
|
|
||||||
{
|
{
|
||||||
groupName : 'PHB',
|
groupName : 'PHB',
|
||||||
icon : 'fa-book',
|
icon : 'fa-book',
|
||||||
snippets : [
|
snippets : [
|
||||||
{
|
{
|
||||||
name : 'Spell',
|
name : 'Spell',
|
||||||
icon : 'fa-magic',
|
icon : 'fa-magic',
|
||||||
gen : SpellGen,
|
gen : MagicGen.spell,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : 'Class Feature',
|
name : 'Spell List',
|
||||||
icon : 'fa-trophy',
|
icon : 'fa-list',
|
||||||
gen : ClassFeatureGen,
|
gen : MagicGen.spellList,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : 'Note',
|
name : 'Class Feature',
|
||||||
icon : 'fa-sticky-note',
|
icon : 'fa-trophy',
|
||||||
gen : function(){
|
gen : ClassFeatureGen,
|
||||||
return [
|
},
|
||||||
"> ##### Time to Drop Knowledge",
|
{
|
||||||
"> Use notes to point out some interesting information. ",
|
name : 'Note',
|
||||||
"> ",
|
icon : 'fa-sticky-note',
|
||||||
"> **Tables and lists** both work within a note."
|
gen : function(){
|
||||||
].join('\n');
|
return [
|
||||||
},
|
"> ##### Time to Drop Knowledge",
|
||||||
},
|
"> Use notes to point out some interesting information. ",
|
||||||
{
|
"> ",
|
||||||
name : 'Monster Stat Block',
|
"> **Tables and lists** both work within a note."
|
||||||
icon : 'fa-bug',
|
].join('\n');
|
||||||
gen : MonsterBlockGen.half,
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : 'Wide Monster Stat Block',
|
name : 'Monster Stat Block',
|
||||||
icon : 'fa-paw',
|
icon : 'fa-bug',
|
||||||
gen : MonsterBlockGen.full,
|
gen : MonsterBlockGen.half,
|
||||||
}
|
},
|
||||||
]
|
{
|
||||||
},
|
name : 'Wide Monster Stat Block',
|
||||||
|
icon : 'fa-paw',
|
||||||
|
gen : MonsterBlockGen.full,
|
||||||
|
}
|
||||||
/********************* TABLES *********************/
|
]
|
||||||
|
},
|
||||||
{
|
|
||||||
groupName : 'Tables',
|
|
||||||
icon : 'fa-table',
|
|
||||||
snippets : [
|
/********************* TABLES *********************/
|
||||||
{
|
|
||||||
name : "Class Table",
|
{
|
||||||
icon : 'fa-table',
|
groupName : 'Tables',
|
||||||
gen : ClassTableGen.full,
|
icon : 'fa-table',
|
||||||
},
|
snippets : [
|
||||||
{
|
{
|
||||||
name : "Half Class Table",
|
name : "Class Table",
|
||||||
icon : 'fa-list-alt',
|
icon : 'fa-table',
|
||||||
gen : ClassTableGen.half,
|
gen : ClassTableGen.full,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : 'Table',
|
name : "Half Class Table",
|
||||||
icon : 'fa-th-list',
|
icon : 'fa-list-alt',
|
||||||
gen : function(){
|
gen : ClassTableGen.half,
|
||||||
return [
|
},
|
||||||
"##### Cookie Tastiness",
|
{
|
||||||
"| Tastiness | Cookie Type |",
|
name : 'Table',
|
||||||
"|:----:|:-------------|",
|
icon : 'fa-th-list',
|
||||||
"| -5 | Raisin |",
|
gen : function(){
|
||||||
"| 8th | Chocolate Chip |",
|
return [
|
||||||
"| 11th | 2 or lower |",
|
"##### Cookie Tastiness",
|
||||||
"| 14th | 3 or lower |",
|
"| Tastiness | Cookie Type |",
|
||||||
"| 17th | 4 or lower |\n\n",
|
"|:----:|:-------------|",
|
||||||
].join('\n');
|
"| -5 | Raisin |",
|
||||||
},
|
"| 8th | Chocolate Chip |",
|
||||||
}
|
"| 11th | 2 or lower |",
|
||||||
]
|
"| 14th | 3 or lower |",
|
||||||
},
|
"| 17th | 4 or lower |\n\n",
|
||||||
|
].join('\n');
|
||||||
|
},
|
||||||
|
}
|
||||||
|
]
|
||||||
/**************** PRINT *************/
|
},
|
||||||
|
|
||||||
{
|
|
||||||
groupName : 'Print',
|
|
||||||
icon : 'fa-print',
|
|
||||||
snippets : [
|
/**************** PRINT *************/
|
||||||
{
|
|
||||||
name : "A4 PageSize",
|
{
|
||||||
icon : 'fa-file-o',
|
groupName : 'Print',
|
||||||
gen : ['<style>',
|
icon : 'fa-print',
|
||||||
' .phb{',
|
snippets : [
|
||||||
' width : 210mm;',
|
{
|
||||||
' height : 296.8mm;',
|
name : "A4 PageSize",
|
||||||
' }',
|
icon : 'fa-file-o',
|
||||||
'</style>'
|
gen : ['<style>',
|
||||||
].join('\n')
|
' .phb{',
|
||||||
},
|
' width : 210mm;',
|
||||||
{
|
' height : 296.8mm;',
|
||||||
name : "Ink Friendly",
|
' }',
|
||||||
icon : 'fa-tint',
|
'</style>'
|
||||||
gen : ['<style>',
|
].join('\n')
|
||||||
' .phb{ background : white;}',
|
},
|
||||||
' .phb img{ display : none;}',
|
{
|
||||||
' .phb hr+blockquote{background : white;}',
|
name : "Ink Friendly",
|
||||||
'</style>',
|
icon : 'fa-tint',
|
||||||
''
|
gen : ['<style>',
|
||||||
].join('\n')
|
' .phb{ background : white;}',
|
||||||
},
|
' .phb img{ display : none;}',
|
||||||
]
|
' .phb hr+blockquote{background : white;}',
|
||||||
},
|
'</style>',
|
||||||
|
''
|
||||||
]
|
].join('\n')
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user