Generating characters¶
This section will have a look at character generation and related actions.
Character generator¶
Characters can be created with generate-creature
function:
(generate-creature config model item-generator rng "rat")
Supplying creature configuration, model instance, item generator and random
number generator every time is tedious. For that reason, application
configuration pyherc.config.Configuration
has attribute
creature_generator
that holds reference to function with a simpler
interface, that is configured when system starts:
(creature-generator "rat")
Only name is required, all other parameters are automatically using the values supplied when the system started. This is also the function that is usually passed around in the system to places where creatures might be generated (level generators mainly).
Character selector¶
When a specific part of the system requires ability to generate characters, there are two options. First option is to pass a full fledged creature generator and use that as explained in the previous paragraph. Another, much simpler option is to use character selector. This is just a function, that takes no parameters and will return a list of generated creatures. Advantage of using them over creature generator is simplified usage:
(defn skeletons [empty-pct character-generator rng]
"create character selector for skeletons"
(fn []
(if (> (.randint rng 1 100) empty-pct)
(character-generator "skeleton warrior")
[])))
(setv character-selector (skeletons 50
creature-generator
random))
(setv monster (character-selector))
Usually character selector are given a descriptive name, like skeletons
or common-critters
. For example pyherc.data.features.new_cache()
uses selectors to configure what kind of creatures or items might reside inside
of the cache.