2022-05-16 23:48:22 +00:00
###############
## Character ##
###############
IO Overhaul, Refactoring, and more
* Refactored DollFace
* Refactored DollBody
* Refactored DollCum
* Refactored DollCloth
* Refactored Doll
* Refactored clothing item zorders
* Refactored implementation of body, face, cum, clothing layers
* Refactored function calls
* Removed DollLipstick
* Added DollMakeup class, allowing adding dynamic clothes tracking face states
* Added DollClothDynamic, allowing dynamic clothes tracking other cloth states with bangs support
* Added cache to frequently called functions, drastically reducing the overhead
* Added hash system, reducing clone redundancy
* Added layer modifiers support for all types (face, body, cum, clothes etc.)
* Added support for an arbitrary number of equipped multislot clothing items (makeup, tattoos, piercings, etc.)
* Simplified initialization for clothing items and dolls
* Simplified class function calls
* Reduced the number of image creation calls
* Added hue support for additional skin layers
* Added displayable support to image cropping function
* Replaced store cache with built-in functools cache for _list_files function
* Refactored all character files
* and more...
2023-01-14 23:04:54 +00:00
default susan = Doll(name="susan")
2022-05-16 23:48:22 +00:00
2023-02-07 19:22:05 +00:00
default sus_frame_default = DollBodypart("susan", ("hidden", "frame"), "frame", "default")
default sus_body_default = DollOutfit([sus_frame_default], hidden=True)
2023-02-07 16:13:30 +00:00
##########
## Hair ##
##########
2022-05-16 23:48:22 +00:00
2022-06-11 21:20:29 +00:00
default sus_hair_base = DollCloth("susan", ("head", "hair"), "hair", "base", [[213, 85, 35, 255], [231, 109, 61, 255]], unlocked=True)
2022-06-09 21:02:38 +00:00
2023-02-07 16:13:30 +00:00
#######################
## Schoolgirl Outfit ##
#######################
2022-06-09 21:02:38 +00:00
2022-06-14 18:47:53 +00:00
default sus_top_school1 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_1", [[185,184,184,255], [114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True)
default sus_top_school2 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_2", [[185,184,184,255], [114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True)
default sus_top_school3 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_3", [[185,184,184,255], [231,219,219,255], [114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True)
default sus_top_school4 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_4", [[185,184,184,255], [231,219,219,255], [51,43,54,255], [212,161,14,255]], unlocked=True)
default sus_top_school5 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_5", [[185,184,184,255], [51,43,54,255], [212,161,14,255], [231,219,219,255]], unlocked=True)
#TODO open collar variant default sus_top_school6 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_6", [[185,184,184,255], [114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True)
default sus_top_school7 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_7", [[114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True)
2022-06-15 14:27:34 +00:00
default sus_bottom_school1 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_1", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True)
default sus_bottom_school2 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_2", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True)
default sus_bottom_school3 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_3", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True)
default sus_bottom_school4 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_4", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True)
2022-06-14 18:47:53 +00:00
2022-06-09 21:02:38 +00:00
default sus_bra_base1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "basic_bra_1", [[255, 238, 237, 255], [236, 191, 191, 255], [249, 135, 135, 255]], unlocked=True)
default sus_panties_base1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "basic_panties_1", [[255, 238, 237, 255], [236, 191, 191, 255], [249, 135, 135, 255]], unlocked=True)
2022-06-14 18:47:53 +00:00
2022-06-15 14:27:34 +00:00
default sus_stockings_school1 = DollCloth("susan", ("legwear", "stockings"), "stockings", "short_school_1", [[212,161,14,255], [51,43,54,255]], unlocked=True)
default sus_stockings_school2 = DollCloth("susan", ("legwear", "stockings"), "stockings", "short_school_2", [[51,43,54,255]], unlocked=True)
2023-02-07 16:13:30 +00:00
default sus_robe_school_1 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_1", [[96, 96, 96, 255], [212, 161, 14, 255]], unlocked=True, level=0)
default sus_robe_school_2 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_2", [[96, 96, 96, 255], [212, 161, 14, 255]], unlocked=True, level=4)
default sus_robe_school_3 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_3", [[96, 96, 96, 255], [212, 161, 14, 255]], unlocked=True, level=10)
default sus_robe_school_4 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_4", [[96, 96, 96, 255], [212, 161, 14, 255]], unlocked=True, level=13)
2022-06-09 21:02:38 +00:00
2022-06-15 14:27:34 +00:00
default sus_outfit_default = DollOutfit([sus_hair_base, sus_top_school1, sus_bottom_school1, sus_bra_base1, sus_panties_base1, sus_stockings_school1], unlocked=True)
2022-05-16 23:48:22 +00:00
default sus_outfit_last = DollOutfit([sus_hair_base], hidden=True)
2022-06-09 21:02:38 +00:00
##########################
## Muggle Casual Outfit ##
##########################
default sus_top_muggle_casual1 = DollCloth("susan", ("upper body", "sweaters"), "top", "muggle_casual_top_1", [[157, 105, 68, 255]])
2022-06-11 21:20:29 +00:00
default sus_bottom_jeans1 = DollCloth("susan", ("lower body", "trousers"), "bottom", "jeans_1", [[78, 65, 127, 255], [242, 114, 35, 255]])
2022-06-09 21:02:38 +00:00
default sus_bra_muggle1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "muggle_bra_1", [[225, 201, 161, 255], [255, 251, 219, 255]])
default sus_panties_muggle1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "muggle_panties_1", [[225, 201, 161, 255], [255, 251, 219, 255]])
default sus_outfit_muggle_casual1 = DollOutfit([sus_hair_base, sus_top_muggle_casual1, sus_bottom_jeans1, sus_bra_muggle1, sus_panties_muggle1], unlocked=True)
2023-02-07 16:13:30 +00:00
######################
2022-11-09 20:29:52 +00:00
## Priestess Outfit ##
2023-02-07 16:13:30 +00:00
######################
2022-06-09 21:02:38 +00:00
2023-02-07 16:47:29 +00:00
default sus_headgear_priestess = DollClothDynamic("susan", ("head", "headgear"), "headgear", "priestess_headdress", [[39, 56, 67, 255], [228, 235, 240, 255]], tracking="?hair")
2022-11-09 20:29:52 +00:00
default sus_top_priestess = DollCloth("susan", ("upper body", "dresses"), "top", "priestess_dress", [[39, 56, 67, 255], [228, 235, 240, 255]])
default sus_lace_stockings1 = DollCloth("susan", ("legwear", "stockings"), "stockings", "lace_stockings_1", [[0, 0, 0, 255]])
2023-01-20 16:52:09 +00:00
default sus_hat_necklace =DollCloth("susan", ("head", "neckwear"), "neckwear", "hat_necklace", [[240, 190, 120, 255]], zorder=213)
2022-11-09 20:29:52 +00:00
2023-02-07 16:47:29 +00:00
default sus_outfit_priestess = DollOutfit([sus_hair_base, sus_headgear_priestess, sus_top_priestess, sus_lace_stockings1, sus_hat_necklace, sus_bra_base1, sus_panties_base1,], price=400, name="Priestess Outfit", desc="This outfit radiates innocence.")
2022-06-09 21:02:38 +00:00
2023-02-07 16:13:30 +00:00
##################
## Latex Outfit ##
##################
2022-06-09 21:02:38 +00:00
2023-02-07 16:13:30 +00:00
default sus_bra_latex1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "latex_bra_1", [[250, 139, 241, 255]])
default sus_panties_latex1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "latex_panties_1", [[250, 139, 241, 255]])
default sus_outfit_latex1 = DollOutfit([sus_hair_base, sus_bra_latex1, sus_panties_latex1], price=200, name="Latex Underwear", desc="Enchanted to prevent chafing.")
###########################
2023-02-07 22:05:15 +00:00
## Lace Lingerie Outfit ##
2023-02-07 16:13:30 +00:00
###########################
2022-06-09 21:02:38 +00:00
default sus_panties_lace1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "lace_panties_1", [[246, 243, 216, 255], [206, 123, 231, 100], [163, 180, 216, 255]])
default sus_stockings_striped_1 = DollCloth("susan", ("legwear", "stockings"), "stockings", "striped_stockings_1", [[246, 243, 216, 255], [206, 123, 231, 170]])
default sus_garterbelt_1 = DollCloth("susan", ("legwear", "garterbelts"), "garterbelt", "garter_belt_1", [[206, 131, 231, 255]])
2023-02-07 16:13:30 +00:00
default sus_bra_lace1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "lace_bra_1", [[246, 243, 216, 255], [206, 123, 231, 100]])
2022-06-09 21:02:38 +00:00
default sus_outfit_lace1 = DollOutfit([sus_hair_base, sus_bra_lace1, sus_panties_lace1, sus_stockings_striped_1, sus_garterbelt_1], price=250, name="Lace Lingerie", desc="Perfect for making a girl look even more presentable.")
2023-02-07 16:13:30 +00:00
###############
## Underwear ##
###############
2022-06-09 21:02:38 +00:00
# Sport
default sus_bra_sport1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "sport_bra_1", [[107, 107, 139, 255], [219, 205, 79, 255]], unlocked=True)
default sus_panties_sport1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "sport_panties_1", [[107, 107, 139, 255], [219, 205, 79, 255]], unlocked=True)