diff --git a/game/characters/tonks/body/breasts/normal.webp b/game/characters/tonks/body/breasts/normal.webp index df72fbd4..cadcd90b 100644 --- a/game/characters/tonks/body/breasts/normal.webp +++ b/game/characters/tonks/body/breasts/normal.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:878652ef87c99aff155571e07aff279d28b89c1fddd2ad7ced23ed708538e531 -size 14606 +oid sha256:b8d1b06ce10c1ddf3ce260070e170a3541b635babce63ba50a6c91699ae512d8 +size 15346 diff --git a/game/characters/tonks/clothes/bra/santa_bra/0.webp b/game/characters/tonks/clothes/bra/santa_bra/0.webp new file mode 100644 index 00000000..471e4ffb --- /dev/null +++ b/game/characters/tonks/clothes/bra/santa_bra/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34e4ee4f47eb88543614afca02e4887ee971fd90bb3a33625b119524dbff0a22 +size 6924 diff --git a/game/characters/tonks/clothes/bra/santa_bra/outline.webp b/game/characters/tonks/clothes/bra/santa_bra/outline.webp new file mode 100644 index 00000000..2cc91618 --- /dev/null +++ b/game/characters/tonks/clothes/bra/santa_bra/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01a73ea37f713af8af3ff4d67fa0c9a38cfbabd7ac31d94c7b0f805177983d37 +size 8642 diff --git a/game/characters/tonks/clothes/bra/santa_bra/skin.webp b/game/characters/tonks/clothes/bra/santa_bra/skin.webp new file mode 100644 index 00000000..0f1160fa --- /dev/null +++ b/game/characters/tonks/clothes/bra/santa_bra/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30b9e03de50ee7fac1dcc61f1d88c739b7eefe3f562039f2b54ee2d9967a7b58 +size 3994 diff --git a/game/characters/tonks/clothes/panties/santa_panties/0.webp b/game/characters/tonks/clothes/panties/santa_panties/0.webp new file mode 100644 index 00000000..0d9a79d7 --- /dev/null +++ b/game/characters/tonks/clothes/panties/santa_panties/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83d5d2430cdf6fad3738d4c96f95f53bfa517e9ef05755dd64d0ea5f54dd1bd6 +size 4994 diff --git a/game/characters/tonks/clothes/panties/santa_panties/outline.webp b/game/characters/tonks/clothes/panties/santa_panties/outline.webp new file mode 100644 index 00000000..242a6256 --- /dev/null +++ b/game/characters/tonks/clothes/panties/santa_panties/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c1de551df31148a9cb0decec0709ff6c89735c8018d6db5d3387e8e1ef592bb +size 6838 diff --git a/game/characters/tonks/clothes/panties/santa_panties/skin.webp b/game/characters/tonks/clothes/panties/santa_panties/skin.webp new file mode 100644 index 00000000..a1eac47b --- /dev/null +++ b/game/characters/tonks/clothes/panties/santa_panties/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1beae634409b2cd80027673969239bed99d5e12d2b2701e3ffa842decc020960 +size 5434 diff --git a/game/characters/tonks/clothes/top/santa_top/0.webp b/game/characters/tonks/clothes/top/santa_top/0.webp new file mode 100644 index 00000000..61b859ba --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:814c08685f69f22c0d976113a32ebb9e21c28e3d9831347c9e6d7b919541ac95 +size 13326 diff --git a/game/characters/tonks/clothes/top/santa_top/0_zorder_8.webp b/game/characters/tonks/clothes/top/santa_top/0_zorder_8.webp new file mode 100644 index 00000000..e67d172b --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/0_zorder_8.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f32cc39d2f01ed41045829ba0435a5f24626575404cd935e155a327b3885a06 +size 3228 diff --git a/game/characters/tonks/clothes/top/santa_top/1.webp b/game/characters/tonks/clothes/top/santa_top/1.webp new file mode 100644 index 00000000..5da9d9d2 --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5305e0897bd14d99c9b7d14a4eea3cf47525424647ae62fddf33a431afd1bea +size 13600 diff --git a/game/characters/tonks/clothes/top/santa_top/1_zorder_8.webp b/game/characters/tonks/clothes/top/santa_top/1_zorder_8.webp new file mode 100644 index 00000000..941c6b6d --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/1_zorder_8.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa399947db1b86ead6031e10373f33a8c0c91ed5395cffd89ec0a8daaba744ba +size 2934 diff --git a/game/characters/tonks/clothes/top/santa_top/outline.webp b/game/characters/tonks/clothes/top/santa_top/outline.webp new file mode 100644 index 00000000..dee10629 --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:271c889b1b01aed183b5610492a85d3fdd431a3fa3e3893f53d7b1173dd141b4 +size 18060 diff --git a/game/characters/tonks/clothes/top/santa_top/outline_zorder_8.webp b/game/characters/tonks/clothes/top/santa_top/outline_zorder_8.webp new file mode 100644 index 00000000..ec2cda1c --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/outline_zorder_8.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d70d6ba8beed130913d68d5bd5df06c7e404555caed37d64898ba8c127e189ec +size 4454 diff --git a/game/characters/tonks/clothes/top/santa_top/skin.webp b/game/characters/tonks/clothes/top/santa_top/skin.webp new file mode 100644 index 00000000..bea3dc76 --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26fc29a0b5e2af37d2f46f7020dea5e05331cec5290681c636eb09333322d695 +size 3216 diff --git a/game/scripts/characters/genie/wardrobe.rpy b/game/scripts/characters/genie/wardrobe.rpy index ebe200e5..b1a9faf8 100644 --- a/game/scripts/characters/genie/wardrobe.rpy +++ b/game/scripts/characters/genie/wardrobe.rpy @@ -10,25 +10,11 @@ init python: layeredimage genie_stats: anchor (0.0, 1.0) - group hair: - attribute nude "characters/genie/hair.webp" - - group fixes: - attribute robes "characters/genie/robes_fix.webp" - always "characters/genie/base.webp" + always "characters/genie/outfits/robes.webp" + always "characters/genie/outfits/robes_beard.webp" - group face: - attribute base Null() - attribute grin "characters/genie/grin.webp" - attribute angry "characters/genie/angry.webp" - attribute smile "characters/genie/smile.webp" - attribute open "characters/genie/open.webp" - - group outfit: - - attribute nude Null() - attribute robes default "characters/genie/robes.webp" + # TODO: Add outfit support; Low priority layeredimage genie: anchor (0.0, 1.0) diff --git a/game/scripts/characters/tonks/wardrobe.rpy b/game/scripts/characters/tonks/wardrobe.rpy index 0f24dab1..89adc8f9 100644 --- a/game/scripts/characters/tonks/wardrobe.rpy +++ b/game/scripts/characters/tonks/wardrobe.rpy @@ -240,6 +240,16 @@ default ton_outfit_elf = DollOutfit([ton_hair_base_new, ton_makeup3_elf_ears, to default ton_outfit_ribbon = DollOutfit([ton_hair_base_new, ton_neckwear_choker1, ton_bra_ribbon, ton_panties_ribbon]) default ton_outfit_xmas = DollOutfit([ton_hair_base_new, ton_hat_antlers, ton_earring_bells, ton_neckwear_bell1, ton_bra_pasties2, ton_bottom_xmas, ton_gloves_xmas, ton_stockings_xmas], addons=[ton_piercing1_nipple_bells, ton_bra_pasties2]) +################## +## Santa Outfit ## +################## + +default ton_bra_santa = DollCloth("tonks", ("upper undergarment", "bras"), "bra", "santa_bra", [[161, 55, 48, 255]]) +default ton_top_santa = DollCloth("tonks", ("upper body", "shirts"), "top", "santa_top", [[161, 55, 48, 255], [255, 255, 255, 255]]) +default ton_panties_santa = DollCloth("tonks", ("lower undergarment", "panties"), "panties", "santa_panties", [[161, 55, 48, 255]]) + +default ton_outfit_santa = DollOutfit([ton_hair_base_new, ton_panties_santa, ton_top_santa, ton_bra_santa]) + ################### ## Lady D Outfit ## ################### diff --git a/game/scripts/characters/tonks/wardrobe_reactions.rpy b/game/scripts/characters/tonks/wardrobe_reactions.rpy index 485acb3e..a074d586 100644 --- a/game/scripts/characters/tonks/wardrobe_reactions.rpy +++ b/game/scripts/characters/tonks/wardrobe_reactions.rpy @@ -484,14 +484,14 @@ label ton_reaction_equip_outfit(item): ton "You sure you'd want that?" ("soft", "base", "raised", "mid") gen "Of course!" ("base", xpos="far_left", ypos="head") ton "But what if you've been to naughty this year for you to unwrap me?" ("soft", "narrow", "raised", "mid") - gen "I'll just have you unwrap yourself in thas case." ("base", xpos="far_left", ypos="head") + gen "I'll just have you unwrap yourself in that case." ("base", xpos="far_left", ypos="head") ton "*Hmph*... That's cheating..." ("soft", "base", "base", "R") ################## ### Xmas Outfit ## ################## elif item == ton_outfit_xmas: - gen "Miss Tonks, you know what the best thing about christmas is?" ("base", xpos="far_left", ypos="head") + gen "Miss Tonks, you know what the best thing about Christmas is?" ("base", xpos="far_left", ypos="head") ton "The presents?" ("base", "base", "raised", "mid") gen "After that." ("base", xpos="far_left", ypos="head") ton "The food?" ("soft", "base", "base", "mid") @@ -502,6 +502,17 @@ label ton_reaction_equip_outfit(item): gen "Yes, put this on for me will you?" ("base", xpos="far_left", ypos="head") ton "Very well..." ("base", "base", "base", "mid") + ################## + ## Santa Outfit ## + ################## + elif item == ton_outfit_santa: + gen "Ho-Ho-Ho!" ("grin", xpos="far_left", ypos="head") + ton "Yes?" ("soft", "base", "base", "mid") + gen "No, I'm doing a Santa laugh!" ("base", xpos="far_left", ypos="head") + ton "Oh, I see!" ("grin", "base", "raised", "mid") + gen "Anyway, I've got this sexy Santa costume for you to wear." ("grin", xpos="far_left", ypos="head") + ton "*Mmm*... Say no more..." ("horny", "narrow", "base", "mid") + ################### ## Lady D Outfit ## ################### @@ -671,6 +682,11 @@ label ton_reaction_equip_outfit_fail(item): ################## # elif item == ton_outfit_xmas: + ################## + ## Santa Outfit ## + ################## + # elif item == ton_outfit_santa: + ################### ## Lady D Outfit ## ################### diff --git a/game/scripts/doll/clothes.rpy b/game/scripts/doll/clothes.rpy index 454ba113..b185f96b 100644 --- a/game/scripts/doll/clothes.rpy +++ b/game/scripts/doll/clothes.rpy @@ -48,8 +48,12 @@ init python: def set_layers(self): for x in self.layers_special: - path = "{}{}.webp".format(self.imagepath, x) - self.__dict__[x] = path if renpy.loadable(path) else None + + if x == "zorder": + self.__dict__["zlayers"] = [f for f in renpy.list_files() if f.startswith(self.imagepath.lstrip("/")) and "zorder" in f] + else: + path = "{}{}.webp".format(self.imagepath, x) + self.__dict__[x] = path if renpy.loadable(path) else None for x in self.layers_additional: self.__dict__[x] = [] @@ -86,6 +90,8 @@ init python: self.get_armfix(mannequin=True) ] + sprites.extend(self.get_zlayers()) + sprites.sort(key=itemgetter(1)) # Apply Alpha mask @@ -146,6 +152,24 @@ init python: # Defers rebuild until next time get_image is called self.cached_icon = False + def get_zlayers(self): + """Returns a list of zordered layers""" + zlayers = [] + + for i in self.zlayers: + path, filename = os.path.split(i) + filename = os.path.splitext(filename)[0] + + # I.e "0_zorder_35", we don't need the middle control + layertype, _, zorder = filename.split("_") + + if layertype.isdigit(): + zlayers.append((self.apply_color(i, int(layertype)), int(zorder))) + else: + zlayers.append((i, int(zorder))) + + return zlayers + def get_back(self): """Returns a list of layers displayed in the back of object/character""" back_outline = [self.back_outline] if self.back_outline else [] diff --git a/game/scripts/doll/common.rpy b/game/scripts/doll/common.rpy index 63693d1c..74c2bce2 100644 --- a/game/scripts/doll/common.rpy +++ b/game/scripts/doll/common.rpy @@ -76,7 +76,7 @@ init -1 python: icon_threadlock = False layers_extra = {"extra", "outline", "overlay"} - layers_special = {"skin", "mask", "wind_mask"} + layers_special = {"skin", "mask", "wind_mask", "zorder"} layers_additional = {"back", "front"} blacklist_toggles = ("hair", "glasses", "pubes", "piercing", "makeup", "tattoo", "earrings") diff --git a/game/scripts/doll/lipstick.rpy b/game/scripts/doll/lipstick.rpy index cd7ce07c..f6043684 100644 --- a/game/scripts/doll/lipstick.rpy +++ b/game/scripts/doll/lipstick.rpy @@ -6,7 +6,10 @@ init python: def set_layers(self): for x in self.layers_special: - self.__dict__[x] = None + if x == "zorder": + self.__dict__["zlayers"] = [f for f in renpy.list_files() if f.startswith(self.imagepath.lstrip("/")) and "zorder" in f] + else: + self.__dict__[x] = None for x in self.layers_additional: self.__dict__[x] = [] diff --git a/game/scripts/doll/main.rpy b/game/scripts/doll/main.rpy index 7649707c..e7d8f680 100644 --- a/game/scripts/doll/main.rpy +++ b/game/scripts/doll/main.rpy @@ -83,6 +83,8 @@ init python: clothing.get_armfix(), ]) + sprites.extend(clothing.get_zlayers()) + if clothing.mask: masks.append((clothing.mask, zorder-1)) diff --git a/game/scripts/doll/outfits.rpy b/game/scripts/doll/outfits.rpy index b7e6ec1e..449bd10b 100644 --- a/game/scripts/doll/outfits.rpy +++ b/game/scripts/doll/outfits.rpy @@ -56,6 +56,8 @@ init python: i.get_armfix(mannequin=True), ]) + sprites.extend(i.get_zlayers()) + if i.mask: masks.append((i.mask, i.zorder-1)) diff --git a/game/scripts/minigames/mirror/events/genies_christmas_wish.rpy b/game/scripts/minigames/mirror/events/genies_christmas_wish.rpy index 72cb0b81..38b89d07 100644 --- a/game/scripts/minigames/mirror/events/genies_christmas_wish.rpy +++ b/game/scripts/minigames/mirror/events/genies_christmas_wish.rpy @@ -4,6 +4,7 @@ label genies_christmas_wish_rewards: call unlock_clothing(text=">New clothing items for Hermione have been unlocked!", item=her_outfit_reindeer) call unlock_clothing(text=">New clothing items for Cho have been unlocked!", item=cho_outfit_reindeer) call unlock_clothing(text=">New clothing items for Luna have been unlocked!", item=lun_outfit_reindeer) + call unlock_clothing(text=">New clothing items for Tonks have been unlocked!", item=ton_outfit_santa) python: naughty_list_ITEM.owned = 1 @@ -27,6 +28,7 @@ label genies_christmas_wish: $ hermione.equip(her_outfit_reindeer) $ cho.equip(cho_outfit_reindeer) $ luna.equip(lun_outfit_reindeer) + $ tonks.equip(ton_outfit_santa) stop weather $ game.daytime = False @@ -226,6 +228,28 @@ label genies_christmas_wish: show screen blkfade with d4 + pause .8 + call hide_characters + + hide screen blkfade + + $ renpy.play("sounds/door_down.ogg") + with hpunch + + call play_music("stop") + + call ton_chibi("stand", 810, 440) + + ton "I've detected some foreign magic--" ("clench", "wide", "base", "mid", xpos="base", ypos="base", trans=d5) + ton "Oh, hello girls! Back already?" ("grin", "wide", "base", "L", hair="horny") + + gen "Wait, you were here the whole time?!" ("angry", xpos="far_left", ypos="head") + + show screen blkfade + with d4 + + nar "The end." + cho "Why was I even in this story? We don't even celebrate Christmas at my home." ("open", "base", "base", "mid") gen "*Err*..." ("open", xpos="far_left", ypos="head") diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index 8e200000..e66cfee5 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -30,7 +30,7 @@ define config.developer = "auto" define config.console = True # Game version and naming -define config.version = "1.44.1" +define config.version = "1.44.4" define compatible_version = 1.43 define config.name = "Witch Trainer Silver" diff --git a/game/scripts/shops/dress/chitchats.rpy b/game/scripts/shops/dress/chitchats.rpy index 6ff3a9f2..92fc8dcb 100644 --- a/game/scripts/shops/dress/chitchats.rpy +++ b/game/scripts/shops/dress/chitchats.rpy @@ -410,6 +410,7 @@ label purchase_outfit(item): gen "I want one of those sexy bunny outfits, the one you might see in a magazine." ("base", xpos="far_left", ypos="head") maf "I see." maf "Alright then, I'll see what I can do." + elif item == cho_outfit_virgin_killer: gen "Virgin killer?" ("base", xpos="far_left", ypos="head") maf "Not so much these days, but you should've seen me in my--" @@ -419,7 +420,6 @@ label purchase_outfit(item): gen "... Alright then." ("base", xpos="far_left", ypos="head") maf "I shall have your jumper ready as soon as possible." - # # Astoria Greengrass # diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 5e8aa8be..6ab9630b 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -123,6 +123,22 @@ init python: char.rebuild() + if current <= 1.441: + pass + + if current <= 1.442: + for i in CHARACTERS: + char = get_character_object(i) + + for j in char.wardrobe_list: + j.zlayers = [] + + for j in char.outfits: + for k in j.group: + k.zlayers = [] + + char.rebuild() + fix_return_stack() if current > latest: