Spaces:
Sleeping
Sleeping
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'); | |
} | |
}; | |