diff --git a/client/homebrew/editor/snippets/magic.gen.js b/client/homebrew/editor/snippets/magic.gen.js new file mode 100644 index 0000000..82469cd --- /dev/null +++ b/client/homebrew/editor/snippets/magic.gen.js @@ -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 `
\n${content}\n
`; + }, + + 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'); + } +} \ No newline at end of file diff --git a/client/homebrew/editor/snippets/snippets.js b/client/homebrew/editor/snippets/snippets.js index 74e267a..c303a6d 100644 --- a/client/homebrew/editor/snippets/snippets.js +++ b/client/homebrew/editor/snippets/snippets.js @@ -1,175 +1,178 @@ -var SpellGen = require('./spell.gen.js'); -var ClassTableGen = require('./classtable.gen.js'); -var MonsterBlockGen = require('./monsterblock.gen.js'); -var ClassFeatureGen = require('./classfeature.gen.js'); -var FullClassGen = require('./fullclass.gen.js'); - - - -module.exports = [ - - { - groupName : 'Editor', - icon : 'fa-pencil', - snippets : [ - { - name : "Column Break", - icon : 'fa-columns', - gen : "```\n```\n\n" - }, - { - name : "New Page", - icon : 'fa-file-text', - gen : "\\page\n\n" - }, - { - name : "Vertical Spacing", - icon : 'fa-arrows-v', - gen : "
\n\n" - }, - { - name : "Image", - icon : 'fa-image', - gen : [ - "", - "Credit: Kyounghwan Kim" - ].join('\n') - }, - { - name : "Background Image", - icon : 'fa-tree', - gen : [ - "" - ].join('\n') - }, - - { - name : "Page Number", - icon : 'fa-bookmark', - gen : "
1
\n
PART 1 | FANCINESS
\n\n" - }, - - - ] - }, - - - /************************* PHB ********************/ - - { - groupName : 'PHB', - icon : 'fa-book', - snippets : [ - { - name : 'Spell', - icon : 'fa-magic', - gen : SpellGen, - }, - { - name : 'Class Feature', - icon : 'fa-trophy', - gen : ClassFeatureGen, - }, - { - name : 'Note', - icon : 'fa-sticky-note', - gen : function(){ - return [ - "> ##### Time to Drop Knowledge", - "> Use notes to point out some interesting information. ", - "> ", - "> **Tables and lists** both work within a note." - ].join('\n'); - }, - }, - { - name : 'Monster Stat Block', - icon : 'fa-bug', - gen : MonsterBlockGen.half, - }, - { - name : 'Wide Monster Stat Block', - icon : 'fa-paw', - gen : MonsterBlockGen.full, - } - ] - }, - - - - /********************* TABLES *********************/ - - { - groupName : 'Tables', - icon : 'fa-table', - snippets : [ - { - name : "Class Table", - icon : 'fa-table', - gen : ClassTableGen.full, - }, - { - name : "Half Class Table", - icon : 'fa-list-alt', - gen : ClassTableGen.half, - }, - { - name : 'Table', - icon : 'fa-th-list', - gen : function(){ - return [ - "##### Cookie Tastiness", - "| Tastiness | Cookie Type |", - "|:----:|:-------------|", - "| -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 : [ - { - name : "A4 PageSize", - icon : 'fa-file-o', - gen : ['' - ].join('\n') - }, - { - name : "Ink Friendly", - icon : 'fa-tint', - gen : ['', - '' - ].join('\n') - }, - ] - }, - -] - - +var MagicGen = require('./magic.gen.js'); +var ClassTableGen = require('./classtable.gen.js'); +var MonsterBlockGen = require('./monsterblock.gen.js'); +var ClassFeatureGen = require('./classfeature.gen.js'); +var FullClassGen = require('./fullclass.gen.js'); + + + +module.exports = [ + + { + groupName : 'Editor', + icon : 'fa-pencil', + snippets : [ + { + name : "Column Break", + icon : 'fa-columns', + gen : "```\n```\n\n" + }, + { + name : "New Page", + icon : 'fa-file-text', + gen : "\\page\n\n" + }, + { + name : "Vertical Spacing", + icon : 'fa-arrows-v', + gen : "
\n\n" + }, + { + name : "Image", + icon : 'fa-image', + gen : [ + "", + "Credit: Kyounghwan Kim" + ].join('\n') + }, + { + name : "Background Image", + icon : 'fa-tree', + gen : [ + "" + ].join('\n') + }, + + { + name : "Page Number", + icon : 'fa-bookmark', + gen : "
1
\n
PART 1 | FANCINESS
\n\n" + }, + + + ] + }, + + + /************************* PHB ********************/ + + { + groupName : 'PHB', + icon : 'fa-book', + snippets : [ + { + name : 'Spell', + icon : 'fa-magic', + gen : MagicGen.spell, + }, + { + name : 'Spell List', + icon : 'fa-list', + gen : MagicGen.spellList, + }, + { + name : 'Class Feature', + icon : 'fa-trophy', + gen : ClassFeatureGen, + }, + { + name : 'Note', + icon : 'fa-sticky-note', + gen : function(){ + return [ + "> ##### Time to Drop Knowledge", + "> Use notes to point out some interesting information. ", + "> ", + "> **Tables and lists** both work within a note." + ].join('\n'); + }, + }, + { + name : 'Monster Stat Block', + icon : 'fa-bug', + gen : MonsterBlockGen.half, + }, + { + name : 'Wide Monster Stat Block', + icon : 'fa-paw', + gen : MonsterBlockGen.full, + } + ] + }, + + + + /********************* TABLES *********************/ + + { + groupName : 'Tables', + icon : 'fa-table', + snippets : [ + { + name : "Class Table", + icon : 'fa-table', + gen : ClassTableGen.full, + }, + { + name : "Half Class Table", + icon : 'fa-list-alt', + gen : ClassTableGen.half, + }, + { + name : 'Table', + icon : 'fa-th-list', + gen : function(){ + return [ + "##### Cookie Tastiness", + "| Tastiness | Cookie Type |", + "|:----:|:-------------|", + "| -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 : [ + { + name : "A4 PageSize", + icon : 'fa-file-o', + gen : ['' + ].join('\n') + }, + { + name : "Ink Friendly", + icon : 'fa-tint', + gen : ['', + '' + ].join('\n') + }, + ] + }, + +]