RPG Event Generator - v5.0.0
    Preparing search index...

    Examples

    Copy-paste snippets by tier. The npm run demo script is a short smoke test only — this page is the feature tour.

    const { generateRPGEvent } = require('rpg-event-generator');

    const event = generateRPGEvent({
    level: 10,
    location: 'forest',
    weather: 'rainy',
    class: 'fighter',
    timeOfDay: 'night'
    });

    console.log(event.title, event.type, event.choices.length);
    const { RPGEventGenerator } = require('rpg-event-generator');
    const gen = new RPGEventGenerator();

    const events = gen.generateEvents({ level: 5, location: 'tavern' }, 5);
    events.forEach(e => console.log(e.title, e.type));
    const gen = new RPGEventGenerator();

    gen.addTrainingData({
    titles: { QUEST: ['The Lost Relic'] },
    descriptions: {
    QUEST: ['A hooded stranger offers a map to ruins none have returned from.']
    },
    choices: {
    QUEST: ['Accept the map', 'Demand payment upfront', 'Walk away']
    }
    }, 'default');

    const event = gen.generateEvent({ level: 8 });
    const event = gen.generateEvent({
    level: 15,
    gold: 2500,
    class: 'wizard',
    race: 'elf',
    location: 'ancient library',
    weather: 'stormy',
    timeOfDay: 'midnight'
    });
    const gen = new RPGEventGenerator({
    theme: 'fantasy',
    enableTemplates: false
    });
    const gen = new RPGEventGenerator({ enableTemplates: false });

    const event = gen.generateEvent({
    weather: 'rainy',
    timeOfDay: 'night',
    season: 'winter',
    location: 'mountain pass'
    });

    console.log(event.environmentalEffects?.appliedModifiers);
    // e.g. ['rain', 'night', 'winter']
    const gen = new RPGEventGenerator({ enableTemplates: true });

    gen.registerEventTemplate('rich_merchant', {
    title: 'Wealthy Merchant',
    narrative: 'A trader with laden packs blocks the road.',
    choices: [
    { text: 'Browse goods', effect: { gold: -50 } },
    { text: 'Pass by', effect: {} }
    ],
    conditional_choices: [{
    choice_index: 0,
    conditions: [{ type: 'stat_requirement', operator: 'gte', field: 'gold', value: 500 }],
    show_when: true
    }]
    });

    const event = gen.generateFromTemplate('rich_merchant', { gold: 1000, level: 5 });
    const gen = new RPGEventGenerator({
    enableRuleEngine: true,
    customRules: {
    hurt_player: {
    conditions: [{ type: 'stat_requirement', field: 'health', operator: 'lt', value: 25 }],
    effects: { difficulty: 'easy' }
    }
    }
    });
    const gen = new RPGEventGenerator({
    pureMarkovMode: true,
    trainingData: [
    'The party rests at a roadside inn.',
    'A wolf howls in the distance.'
    ]
    });
    const gen = new RPGEventGenerator();

    const world = gen.generateWorld({
    seed: 42,
    continentCount: 3
    });

    console.log(world.regions.length, world.factions.length, world.events.length);
    console.log(gen.getHistoricalEvents().length);
    gen.generateWorld(42);
    const kingdom = gen.getAllWorldRegions().find(r => r.type === 'kingdom');

    const lore = gen.getWorldLore(kingdom.name);
    const event = gen.generateEvent({ location: kingdom.name.split(' ')[0] });
    // Use lore in your UI; event generation is still independent unless you wire it
    gen.generateWorld(42);
    gen.simulateWorldYears(25);
    console.log(gen.getHistoricalEvents().length);
    gen.generateWorld(42);
    const factions = gen.getAllWorldFactions();
    const [a, b] = factions;

    console.log(gen.getFactionDiplomacyStatus(a.id, b.id));
    console.log(gen.getFactionPowerRanking().slice(0, 3));
    npm run export:godot
    npm run export:unity
    const events = await gen.generateEventsParallel(20, { level: 10 }, 2);
    

    After clone or install from source:

    npm run build
    npm run demo

    Prints a few Tier 1 events, modifier check, and world summary. Not a substitute for this page.