Encounter Generator
From KJD-IMC Wiki
In a recent thread in rec.games.frp.dnd, there was a discussion of how useful a collection of fully-realized monsters would be. The requirements seem fairly straightforward
- all creature information is determined, including
- skill point allocations
- treasure (and the treasure should be used by the creature if appropriate)
- spell lists
- outline of tactics provided
- full encounter (including battlefield map) not required (it may be ignored) but may be nice to have
A repository -- especially a searchable one -- of these things could be quite useful. I've been consider how such a beastie could be implemented. Right now I'm leaning toward a database to contain the various monsters, creatures (there's a difference, see below), templates, and encounter definitions.
I want to separate monster and encounter definitions. This will make it easier to reuse a monster in several encounters.
Expected Implementation
This is not intended to be a character generator or the like. I expect that much of the 'work' would be done outside the system (determining what bonuses apply where, that feats are chosen at the appropriate time, and so on). I do not expect the system to do anything to confirm legality; you can have undead with Constitution scores, humanoids without them, vermin (Int --) wizards, whatever.
It may be extended later to check prerequisites, calculate BAB and base saves, and so on... but initially, no.
Backend
Relational database containing all entities. I expect that much will be simple text storage, though some things may be broken out. A creature's skills might log the number of ranks and a final bonus value, but not all the modifiers in effect (tracking bonuses from feats, synergies, and so on is more trouble than I'm interested in... though I may include a field so the user can log what modifiers apply, to make it easier to confirm correctness).
I expect to use MySQL. I actually prefer PostgreSQL, but my web host provides only MySQL. Access is right out (Windows-only, and I want to be able to run this in Linux and/or via online interface).
Frontend
I've got a couple of ways to go here.
- GUI client (using wxWidgets, most likely); or
- web client (using Perl or PHP).
One of the beauties of having a clear split here is that it should even be possible to have both interfaces to it.
Database Design
Relational Structure
- Creature-Class
- a creature may have 0 or more class levels; log the classes and how many levels, don't bother logging class resource (skill points, feats, hit points) allocations
- Creature-Feat
- a creature usually has 1 or more feats; log the feats and any additional information (what weapon it has Weapon Focus with)
- Creature-Monster
- a creature (gnoll warrior) is an instance of a monster (gnoll)
- Creature-Skill
- a creature usually has 1 more skills; log the skills, the ranks, the final modifier, and include a field so additional modifiers may be described
- Creature-Template
- a creature may have 0 or more templates applied
- Encounter-Creature
- an encounter consists of 1 or more creatures
- Monster-Template
- a monster may have 0 or more templates applied
- this creates a new monster; a 'fiendish gnoll' is a 'gnoll' with 'fiendish' template applied
Data Dictionary
- creature
- instance of a monster, with incomplete information filled in or fields overridden. For instance, a goblin warrior with his treasure (a few coins and the like, probably, but potentially a masterwork weapon), a goblin sorcerer (replaces the default warrior information with sorcerer information, including spells known), half-dragon goblin fighter (template, class levels, and equipment), and so on.
- encounter
- one or more monsters, to be encountered and interacted with as a group. May or may not include battlefield information, will often include an outline of tactics (which may be as simple as 'charge madly into combat').
- monster
- monster stats, as provided by RSRD or other source
- template
- template, per RSRD. Half-dragon, celestial, whatever.
