Goal: Make different areas of the game *highly* themed with regards to
what monsters appear in them, and do this flexibly enough so that it
isn't merely like the two-level 'bleeding' approach used in angband.
- Proposed solution: Completely seperate indices of creatures for each
type of place. Places then specify a 'hook' into which list they want.
- Alternative solution:One complete list with a keyword for
what placetype(s) the creature shows up in
The first solution initially seems to me to be the right solution -- it easily
handles the creation of completely seperate realms, and prevents work on these
realms from colliding with each other (In the Angband family tree, monsters
are indexed by a single number, which means that new sets of monsters are at
least mildly difficult to coordinate adding to the game by massive numbers of
seperate contributors). It could easily be implemented by having the object
holding the map also having a pointer to the monster list for the current map.
The second solution seems almost as good, and does have the advantage that it
is only loaded once, presumably at initialization. On reflection, it has another
important advantage over the first, in that a given named monster is always
available. This may prove useful should some means be acquired to always summon
certain creatures. This would be not quite as pretty in the first solution. It
also may save space if creatures are used for multiple realms, and makes
coordination of changes on such monsters easy.
I decided to go with the first solution. The runtime loading penalty is
something I'm willing to pay. As for summonable monsters, I'm willing to deal
with the code ugliness involved in accessing other monster lists when it occurs,
and the difficulty involved will prove a good incentive to keep dungeons well
themed. Also, the seperate realms of MoLD might have monsters named the same
that act differently, and that might grow complex to implement/understand in a
single-file monster list. Summoning creatures from another realm should probably
fail anyhow. The coordination of changes is a bit of an issue, but I'll cope.