GeneratorCore.selectEventType() picks uniformly from:
| Type | Typical flavour |
|---|---|
ADVENTURE |
Quests, exploration, discovery |
COMBAT |
Fights, battles, tactical choices |
ECONOMIC |
Trade, gold, merchants |
EXPLORATION |
Mapping, ruins, travel |
GUILD |
Factions, guild politics |
MAGIC |
Arcane events, spells |
MYSTERY |
Clues, investigation |
POLITICAL |
Intrigue, diplomacy |
QUEST |
Missions, objectives |
SOCIAL |
NPC interaction, reputation |
SPELLCASTING |
Rituals, casting |
SUPERNATURAL |
Ghosts, curses, omens |
TECHNOLOGICAL |
Devices, inventions |
UNDERWORLD |
Crime, thieves, smuggling |
Event type selection is not context-smart — a wizard can roll UNDERWORLD as easily as MAGIC. Use custom templates or addTrainingData() to bias content toward your game.
Derived from player power level (level, gold, influence, health):
| Power level | Difficulty |
|---|---|
| 0–25 | easy |
| 26–50 | normal |
| 51–75 | hard |
| 76+ | legendary |
Choice effects scale with difficulty when the rule engine is active.
The source library also contains buckets for FIGHTER, MAGE, CLERIC, NECROMANCER, etc., but those types are not in the random roll list — they only appear if you select them via custom training data and force the type externally (templates/rules).
generator.addTrainingData({
titles: { MAGIC: ['Arcane Surge'] },
descriptions: { MAGIC: ['Runes flare along the tower walls.'] },
choices: { MAGIC: ['Channel energy', 'Dispel', 'Study'] }
}, 'default');