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.