Tomes and Transformations
This article demonstrates:
- Making new player transformations.
- Adding those transformations to tomes.
- Adding the tomes to locations or expeditions.
See also the bodies page for some conceptual grounding on what ShopItems and EquipmentDefinitions are.
Examples
Adding a transformation to an existing tome
import faust.ShopItem
from faust.Constant import get_constant, del_constant
from faust.Tome import Tome
from faust.ShopItem import MakeShopItem
from faust.Transformations import fundamental_tomes, midgame_tomes
def init():
sus_nipples = MakeShopItem('two', 'treacherous', 'suspicious nipples',
prototype=faust.ShopItem.nipples, cost=69, tomes=['breasts1'],
modifiers={'lust_bonus': 10, 'horror_cap_bonus': -10, },
desc="{subj.He} has two of the most dubious nipples anyone's ever seen. ")
tome = get_constant('tome.breasts3')
tome.shop.available_items.append(sus_nipples)
def deinit():
del_constant("equip.suspicious_nipples")
del_constant("shopitem.suspicious_nipples")
The prototype is an EquipmentDefinition from somewhere else that’s used as a default for all the settings.
Modifiers give passive bonuses (or penalties), and Verbs give the player special abilities during sex encounters. Modifiers include:
- min_lust
- lust_bonus (added each time you use the part with a verb)
- orgasm_bonus
- mana_cap_bonus
- horror_cap_bonus
- tease_count_bonus
There is currently a bug that if you add a ShopItem to tome volume 1, it won’t show up if the player has higher level tomes. At the moment the work around is to add your item to every single volume. Or, you could have your own tome, see below.
Dick transformations
very_normal_dick = MakeDickShopItem(
'a', 'respectable', 'very normal dick',
size=6, min_lust=6, cost=9001,
tomes=['cock3'], slot_prereqs=['glansf'],
desc="{subj.His} dick is very normal, I don't know why you're even bringing it up" + cock_desc)
Size is in inches. Parameters are similar to MakeShopItem, this just does a little extra processing to give it the standard fuck verb and sets things like volumes.
Transformation descriptions will often end in + cock_desc
or something similar. If you check Transformations.py you’ll see that variable’s value is “. {glansf}{shaftf}
”. Body part descriptions are responsible for describing the parts they contain as well, in this case, piercings that might go in the glansf or shaftf slot. The {slot}
syntax makes the equipment in a slot describe itself.
I’m doing this by adding a standard suffix with the parts, but you’re welcome to put them into different positions in the description if you like.
Pussy transformations
vaginal_tongue = MakeVadgeShopItem(
'a', 'slippery', 'vaginal tongue',
lust_bonus=2, cost=9001,
desc='A sinuous tongue flicks from {subj.his} pussy. ')
As above, but this adds the ride and trib verbs. The lust_bonus adds a certain number of extra lust points whenever you ride or trib.
Making a whole new tome
import faust.Body
import faust.BodySlots
import faust.MathUtil
import faust.ShopItem
from faust.Constant import get_constant, del_constant
from faust.Tome import Tome
from faust.ShopItem import MakeShopItem, MakeDickShopItem, MakeVadgeShopItem, MakeShopItem, Upgrade
from faust.Transformations import fundamental_tomes, midgame_tomes
def init():
sus_nipples = MakeShopItem('two', 'treacherous', 'suspicious nipples',
prototype=faust.ShopItem.nipples, min_lust=1, cost=69, tomes=['nipple1'],
desc="{subj.He} has the most dubious nipples anyone has ever seen. ")
nipple_tome = Tome(
'nipple1',
'Tome of Nipples, Volume 1',
desc="So many teats on this thang even pigs are jealous. ",
tf_items=[
sus_nipples
]
)
# Show up in the Suburbs
fundamental_tomes.append(nipple_tome)
# Show up in Downtown too
midgame_tomes.append(nipple_tome)
def deinit():
del_constant("equip.suspicious_nipples")
del_constant("shopitem.suspicious_nipples")
del_constant("tome.nipple1")
del_constant("shop.nipple1")
# Filter from tomes lists
global fundamental_tomes, midgame_tomes # Assign new list to global scope, not local
fundamental_tomes = list([tome for tome in fundamental_tomes if not tome.is_constant_missing()])
midgame_tomes = list([tome for tome in midgame_tomes if not tome.is_constant_missing()])
Adding your tome to expeditions
If you run the Get Expedition Drop cheat a few times, you should see this new nipple tome crop up.
from faust.Tome import Tome
from faust.PlotArcs import GrantTomeCard
from faust.Constant import del_constant, get_constant
from faust.Expeditions import txt_got_tome_desc
def init():
nipple_tome = Tome(
'nipple1',
'Tome of Nipples, Volume 1',
desc="So many teats on this thang even pigs are jealous. ",
tf_items=[
]
)
def always_enabled(player):
return True
# Find the deck of cards that expeditions use as the drop table
bazaar_tomes = get_constant("eventdeck.drop_underworld_journey_tome")
# Construct a GrantTomeCard and add it to the deck
bazaar_tomes.cards += [
GrantTomeCard('grant_nipple1', 'Tome of Nipples, Volume 1',
tome_id='tome.nipple1',
is_enabled_fn=always_enabled, # Always possible you get can dealt this, see function definition above
looping_cue="cue_bazaar", # Background music
description="They turn the carriage around for home, a new addition for the library resting on the seat cushions. ")
]
def deinit():
del_constant('tome.nipple1')
del_constant('shop.nipple1')
del_constant('eventcard.grant_nipple1')
# Filter expedition's list of event cards to take out the ones that no longer exist
bazaar_tomes = get_constant("eventdeck.drop_underworld_journey_tome")
bazaar_tomes.cards = list([card for card in bazaar_tomes.cards if not card.is_constant_missing()])