fantasy-content-generator
    TypeScript icon, indicating that this package has built-in type declarations

    4.8.2 • Public • Published

    Fantasy Content Generator

    npm

    Like Faker.js, but for D&D 5E themed pieces of content. Need an NPC? A name? A magic item? You came to the right place.

    Top Features Include:

    • Interesting, flavoursome, and narrative-focused content, designed for roleplaying and inspiration for DMs
    • Easy to understand API
    • A single dependency (https://www.npmjs.com/package/seedrandom)
    • Can be used in both Node & browser
    • Optional seeding for deterministic generation
    • Ties-in to D&D 5E mechanics (weapon stats, magic effects, etc.)

    Using this library in a project? Please let me know!


    Installing

    Node/Webpack

    npm install --save fantasy-content-generator

    import FCG from "fantasy-content-generator";

    Browser/Direct <script> Include

    Download fantasy_content_generator.js direct from Github and include in a script tag.

    <script src="./fantasy_content_generator.js" type="text/javascript"></script>
    
    <script>
      // API available on window.FantasyContentGenerator
    </script>

    Usage

    import FCG from "fantasy-content-generator";
    
    FCG.Names.generate();
    /*
    {
      seed: <uuid>,
      name: 'Sutha Chernin',
      race: 'halfOrc',
      gender: 'female',
      formattedData: {
        name: 'Sutha Chernin',
        race: 'Half-Orc',
        gender: 'Female'
      }
    }
    */
    
    FCG.Storyhooks.npcActs();
    /*
    {
      seed: <uuid>,
      storyhook: 'An NPC takes a liking to a PC'
    }
    */
    
    FCG.NPCs.generate();
    /*
    {
      seed: <uuid>,
      name: 'Biri Drachedandion',
      gender: 'female',
      race: 'dragonborn',
      traits: [
        'I am unusually tall for my race.',
        'I\'m very clumsy.'
      ],
      desires: [
        'I want to prove myself in combat, so I\'m going to win a tournament.'
      ]
    }
    */
    
    FCG.Settlements.generate();
    /*
    {
      seed: <uuid>,
      type: 'large_city',
      population: '45,760'
    }
    */
    
    FCG.MagicItems.generate();
    /*
    {
      seed: <uuid>,
      type: 'weapon',
      subtype: 'Battleaxe',
      powerLevel: 'minor',
      schoolOfMagic: 'necromancy',
      effects: [
        'On a successful attack, target must make a DC 12 CON save or take an extra 1d2 of Necrotic damage. This effect occurs once per day.'
      ],
      formattedData: {
        title: 'Battleaxe of Minor Necromancy'
      }
    }
    */

    API

    API Reference

    There are a number of "sets" available. These are

    • Names - generates names based on race and gender
    • NPCs - generates full NPCs
    • Loots - generates loot and treasure
    • MagicItems - generates magic items
    • Storyhooks - generates storyhooks
    • Settlements - generates settlement information

    and can all be found on the base Fantasy Content Generator object.

    Most sets expose a generate() function, some expose others unique to that set.

    See our API Reference for full details of the API methods available.

    Many of the sets are currently WIP and quite limited. More content to come soon! Follow me on Twitter for release and update details.

    Tests

    npm test
    

    If you want to run a specific test file manually, ensure you set ENVIRONMENT=test

    Contributing

    Development

    If you're wanting to quickly test some changes, the best way is to

    • npm run build:node && node to get a Node build locally and run a node instance locally
    • const FCG = require('./dist/index.js'); to load FCG into memory
    • FCG.NPCs.generate(); you can then start running generators, and seeing the JSON output in your console

    Open Sourcery

    Open up a PR!

    Please make sure your PR includes;

    • a thorough description, including what you're changing and why
    • tests
      • if you're touching utils stuff, tests to ensure behaviour is correct
      • if you're adding/amending sets, tests to ensure that the final returned object doesn't contain any undefined's, etc.

    If you want to use content taken from other sources, please check with their licensing first. For example, D&D 5E content is OK, as long its from the SRD.

    Releasing

    With permission to release, simply run any one of;

    • npm run publish:patch
    • npm run publish:minor
    • npm run publish:major

    from your CLI and follow the steps. Requires NPM to be installed locally on your machine.

    Credits

    d100 Community - Endless Inspiration

    tmcgry - Code & Content

    SkyD1vingNun - Additional Content

    https://github.com/davidbau/seedrandom - Random seeding code, huge thank you

    Install

    npm i fantasy-content-generator

    DownloadsWeekly Downloads

    11

    Version

    4.8.2

    License

    MIT

    Unpacked Size

    146 kB

    Total Files

    71

    Last publish

    Collaborators

    • thunderchild15