Characters and Archetypes
What’s an Archetype?
Archetypes are the templates for making new characters. Housewife and househusband are both archetypes. The archetype sets up special character-specific abilities and body parts, and how well they perform in the lair at different tasks.
There is also a Character class in the codebase, but that’s so minions, the protagonist, and invading demons can all have shared pronoun handling. It’s not particularly interesting. If you’re looking for the specific instances of people produced by Archetypes - say if you wanted to see the bookkeeping for their seduction state or something - those are instances of the SubCharacter class.
Examples
Making a Simple Archetype
See class Archetype in Archetypes.py for a full list of parameters.
from faust.Archetypes import Archetype, sub_factory
from faust.Constant import del_constant
def init():
arch = Archetype(archetype_name='Sailor', # As shown in UI
archetype_id='sailor', # Internal
level=8, # Difficulty level
max_upgrades=10, # Optional: Max number of concubine upgrades
milkmaid_bonus=0, # Optional: Beast multiplier boost
apprentice_bonus=0, # Optional
bgm_name='bgm_glam') # Background music
sub_factory.add_unisex_archetype(arch, level=8)
def deinit():
del_constant('arch.sailor')
del_constant('arch.sailorf')
del_constant('arch.sailorm')
There are typically two difficulty levels per location. 0-2 is the suburbs, 3-4 downtown, 5-6 Old Town, and 7-8 is the Pit. This determines how high their lust needs to be in order for seduction to work. Our sailor will appear in the pit.
Writing an intro
Archetypes have a unique introduction at the start of a sex encounter, so you’re probably wondering why Sailors only have the generic one at this point. To give them an intro you’ll need to open up the dialogue editor. If you scroll down to the “on_encounter_start” rules, you’ll see all the intros for the characters. You’ll need to make two: one for sailorf and one for sailorm. See the instructions in the dialogue editor page for how to clone one of these and save it out.
Extra SubVerbs and special body parts
Here’s a more complicated example. The Sailor has two special abilities: the porn star’s ability to arouse the protag and raver’s SubVerb for reducing their own max lust every so often. Thirdly we’re giving them a body with tattoos. The definition for the tattoos comes from Narcissus mutations in MonsterParts.py.
import faust.SubVerbs
from faust.Archetypes import Archetype, sub_factory
from faust.ShopItem import body_with, default_male, default_female
from faust.Constant import get_constant, del_constant
def init():
def raver_revive():
return faust.SubVerbs.ChangeSubLustCapVerb('Revive', lust_cap_change=-10, cooldown=13, event_name='on_sub_item')
arch = Archetype(archetype_name='Sailor',
archetype_id='sailor',
level=8,
max_upgrades=10,
bgm_name='bgm_glam',
extra_verb_constructors=[
faust.SubVerbs.multi_arouse_dom_verb,
raver_revive
])
male_sailor_body = body_with('male_sailor_body', default_male, [
get_constant('equip.tattooed')
])
female_sailor_body = body_with('female_sailor_body', default_female, [
get_constant('equip.tattooed')
])
sub_factory.add_unisex_archetype(arch, level=8,
male_body=male_sailor_body,
female_body=female_sailor_body)
def deinit():
del_constant('arch.sailor')
del_constant('arch.sailorf')
del_constant('arch.sailorm')
Add a SubVerb to an already existing Archetype
You can also alter the game’s standard archetypes from your mod.
sailorf = get_constant("arch.sailorf")
sailorm = get_constant("arch.sailorm")
sailorf.verb_constructors = default_verb_constructors + [my_verb_constructor]
sailorm.verb_constructors = default_verb_constructors + [my_verb_constructor]