# RPG Event Generator

[![npm version](https://badge.fury.io/js/rpg-event-generator.svg)](https://badge.fury.io/js/rpg-event-generator)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Offline procedural RPG events with context flavoured text and a built in content library. No API key required. **Zero runtime dependencies.**

```bash
npm install rpg-event-generator
```

Requires Node.js 16+.

## Quick start

```javascript
const { generateRPGEvent } = require('rpg-event-generator');

const event = generateRPGEvent({
  level: 10,
  location: 'forest',
  weather: 'rainy',
  class: 'fighter'
});

console.log(event.title);        // e.g. "Heroic Quest"
console.log(event.description);  // context prefixes: location, weather, time, class, race
console.log(event.choices);      // [{ text, effect }, ...]
console.log(event.type);         // e.g. "COMBAT"
```

Or with a configured instance:

```javascript
const { RPGEventGenerator } = require('rpg-event-generator');

const generator = new RPGEventGenerator({ theme: 'fantasy' });
const event = generator.generateEvent({ level: 15, class: 'wizard', location: 'tower' });
```

## Custom content

```javascript
generator.addTrainingData({
  titles: { COMBAT: ['Epic Duel'] },
  descriptions: { COMBAT: ['Two warriors circle each other...'] },
  choices: { COMBAT: ['Fight', 'Flee', 'Negotiate'] }
}, 'my_theme');
```

Use structured objects (`titles`, `descriptions`, `choices`). Raw string arrays are ignored in v4.

## Feature tiers

**Start with Tier 1.** Everything else is optional.

| Tier | What | Use when |
|------|------|----------|
| **1 — Core** | `generateRPGEvent()` / `generateEvent()`, built-in library, `addTrainingData()` | Game jams, first ship |
| **2 — Orchestrator** | Templates, rules, environmental modifiers, optional AI | Custom event logic |
| **3 — Toolkit** | World sim, DB adapters, engine export scripts | Lore JSON, tooling experiments |

Tier 3 (`generateWorld(seed)` or `{ seed, continentCount }`) produces seeded lore JSON — regions, factions, history. Use `getWorldLore(location)` for a one-line hook into player events. Not a live sim backbone.

## Documentation

Full guides ship with the repo — no wiki required.

| Guide | Topic |
|-------|--------|
| [Getting Started](https://contextweaver.github.io/context-weaver/documents/getting-started.html) | Install, quick start, context fields |
| [Examples](https://contextweaver.github.io/context-weaver/documents/examples.html) | Copy-paste snippets by tier |
| [Custom Content](https://contextweaver.github.io/context-weaver/documents/custom-content.html) | `addTrainingData()` |
| [Feature Tiers](https://contextweaver.github.io/context-weaver/documents/feature-tiers.html) | What to use when |
| [World Building](https://contextweaver.github.io/context-weaver/documents/world-building.html) | Seeded world lore |
| [Templates & Rules](https://contextweaver.github.io/context-weaver/documents/templates-and-rules.html) | Tier 2 orchestrator |
| [Configuration](https://contextweaver.github.io/context-weaver/documents/configuration.html) | Generator options |
| [Advanced Tooling](https://contextweaver.github.io/context-weaver/documents/advanced-tooling.html) | DB, export, AI |

Build locally: `npm run docs` → open `docs/index.html`

- **API reference:** [contextweaver.github.io/context-weaver](https://contextweaver.github.io/context-weaver/)
- **Migration (v3 → v4):** [MIGRATION.md](MIGRATION.md)
- **Smoke test (local):** `npm run build && npm run demo` — short CLI check, not a feature tour

## License

MIT — see [LICENSE](LICENSE).
