From 524e3555a3bcde6edbaad85859de326b7fe528d5 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Fri, 9 Aug 2024 19:17:48 +0100 Subject: [PATCH] Implement dual actions for inventory items, refactoring, bug fixes --- game/scripts/gui/credits.rpy | 2 +- game/scripts/interface/gifts.rpy | 2 +- game/scripts/interface/inventory.rpy | 5 +- game/scripts/inventory/books.rpy | 12 +-- game/scripts/inventory/classes.rpy | 108 ++++++++++++--------------- game/scripts/inventory/gifts.rpy | 44 +++++------ game/scripts/inventory/qitems.rpy | 16 ++-- game/scripts/inventory/scrolls.rpy | 60 +++++++-------- game/scripts/wardrobe/functions.rpy | 8 -- 9 files changed, 117 insertions(+), 140 deletions(-) diff --git a/game/scripts/gui/credits.rpy b/game/scripts/gui/credits.rpy index ca2e835a..0c945784 100644 --- a/game/scripts/gui/credits.rpy +++ b/game/scripts/gui/credits.rpy @@ -231,7 +231,7 @@ define credits = credits.convert(_(f"""{{image=game_logo}}{{vspace=10}} - [renpy.license!t] {{vspace=400}} {{image=studio_logo}} -# Thank you for playing!{{vspace=400}} +# Thank you for playing!{{vspace=200}} """)) style credits_header1: diff --git a/game/scripts/interface/gifts.rpy b/game/scripts/interface/gifts.rpy index 2e2c290f..707366fd 100644 --- a/game/scripts/interface/gifts.rpy +++ b/game/scripts/interface/gifts.rpy @@ -52,7 +52,7 @@ label gift_menu: python: enable_game_menu() inventory_mode = 0 - _return.give(states.active_girl) + _return.give() elif _return.type == "quest": if not states.active_girl in _return.usable_on: show screen blktone diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index 86f974a1..0047b719 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -71,18 +71,19 @@ screen inventory(): xalign 0.5 for item in menu_items: if item.owned > 0 or config.developer: + $ givable = (item.givable and states.active_girl in item.usable_on) button: xysize (48, 48) if selected_item == item: add "interface/achievements/glow.webp" align (0.5, 0.5) xysize (48, 48) alpha 0.7 at rotate_circular - add crop_image_zoom(item.get_image(), 48, 48, (item.owned <= 0 or (inventory_mode==1 and (not item.givable or not states.active_girl in item.usable_on)))) align (0.5, 0.5) + add crop_image_zoom(item.get_image(), 48, 48, item.owned <= 0 or (inventory_mode==1 and not givable)) align (0.5, 0.5) if item.used or (item.type=="decoration" and item.in_use): add "interface/topbar/icon_check.webp" xysize (16, 16) offset (8, -8) if item.owned > 1: text "x[item.owned]" offset (-8, 34) size 12 - if (inventory_mode==0 or (inventory_mode==1 and (item.givable and states.active_girl in item.usable_on))): + if not (inventory_mode==1 and not givable): action [SetScreenVariable("selected_item", item)] if selected_item: diff --git a/game/scripts/inventory/books.rpy b/game/scripts/inventory/books.rpy index 355db520..fbb29a04 100644 --- a/game/scripts/inventory/books.rpy +++ b/game/scripts/inventory/books.rpy @@ -1,10 +1,10 @@ -default galadriel1_ITEM = Item("galadriel1_book", "book", _("Tome 1: The Tale of Galadriel"), 100, _("This book tells the story of an elven princess who defies the traditions of her people and chooses to forge her own destiny.\nEffect: Improves imagination."), label="galadriel1_book", limit=1, caption=_("Read")) -default galadriel2_ITEM = Item("galadriel2_book", "book", _("Tome 2: The Tale of Galadriel"), 200, _("This is a continuation on the story of the elven princess who defies the tradition, with a twist.\nEffect: Improves imagination."), label="galadriel2_book", limit=1, caption=_("Read")) -default gameofchairs1_ITEM = Item("game_of_chairs1_book", "book", _("Tome 1: Game of Chairs"), 50, _("An epic tale of betrayal, murder and rape. Then some more murder, some more betrayal and some more rape."), label="game_of_chairs1_book", limit=1, caption=_("Read")) -default gameofchairs2_ITEM = Item("game_of_chairs2_book", "book", _("Tome 2: Game of Chairs"), 100, _("An epic tale of betrayal, murder and rape. Then some more murder, some more betrayal and some more rape."), label="game_of_chairs2_book", limit=1, caption=_("Read")) -default gameofchairs3_ITEM = Item("game_of_chairs3_book", "book", _("Tome 3: Game of Chairs"), 150, _("An epic tale of betrayal, murder and rape. Then some more murder, some more betrayal and some more rape."), label="game_of_chairs3_book", limit=1, caption=_("Read")) -default my_dear_waifu_ITEM = Item("my_dear_waifu_book", "book", _("My Dear Waifu"), 250, _("Relive the glory of your high school days and find your ultimate \"waifu\".{size=-3}\n\nEnding 01 {unicode}✘{/unicode}\nEnding 02 {unicode}✘{/unicode}\nEnding 03 {unicode}✘{/unicode}\nEnding 04 {unicode}✘{/unicode}\nEnding 05 {unicode}✘{/unicode}{/size}"), label="waifu_book", limit=1, caption=_("Read")) +default galadriel1_ITEM = Item("galadriel1_book", "book", _("Tome 1: The Tale of Galadriel"), 100, _("This book tells the story of an elven princess who defies the traditions of her people and chooses to forge her own destiny.\nEffect: Improves imagination."), use_label="galadriel1_book", limit=1, use_caption=_("Read")) +default galadriel2_ITEM = Item("galadriel2_book", "book", _("Tome 2: The Tale of Galadriel"), 200, _("This is a continuation on the story of the elven princess who defies the tradition, with a twist.\nEffect: Improves imagination."), use_label="galadriel2_book", limit=1, use_caption=_("Read")) +default gameofchairs1_ITEM = Item("game_of_chairs1_book", "book", _("Tome 1: Game of Chairs"), 50, _("An epic tale of betrayal, murder and rape. Then some more murder, some more betrayal and some more rape."), use_label="game_of_chairs1_book", limit=1, use_caption=_("Read")) +default gameofchairs2_ITEM = Item("game_of_chairs2_book", "book", _("Tome 2: Game of Chairs"), 100, _("An epic tale of betrayal, murder and rape. Then some more murder, some more betrayal and some more rape."), use_label="game_of_chairs2_book", limit=1, use_caption=_("Read")) +default gameofchairs3_ITEM = Item("game_of_chairs3_book", "book", _("Tome 3: Game of Chairs"), 150, _("An epic tale of betrayal, murder and rape. Then some more murder, some more betrayal and some more rape."), use_label="game_of_chairs3_book", limit=1, use_caption=_("Read")) +default my_dear_waifu_ITEM = Item("my_dear_waifu_book", "book", _("My Dear Waifu"), 250, _("Relive the glory of your high school days and find your ultimate \"waifu\".{size=-3}\n\nEnding 01 {unicode}✘{/unicode}\nEnding 02 {unicode}✘{/unicode}\nEnding 03 {unicode}✘{/unicode}\nEnding 04 {unicode}✘{/unicode}\nEnding 05 {unicode}✘{/unicode}{/size}"), use_label="waifu_book", limit=1, use_caption=_("Read")) label book_start: call weather_sound diff --git a/game/scripts/inventory/classes.rpy b/game/scripts/inventory/classes.rpy index 87d4c0fb..c8691f28 100644 --- a/game/scripts/inventory/classes.rpy +++ b/game/scripts/inventory/classes.rpy @@ -16,77 +16,63 @@ init python: return sorted([x for x in self.get_instances() if x.type == type], key=lambda y: natsort_key(y.name)) class Item(object): - def __init__(self, id, type, name, price=0, desc="", unlocked=True, func=None, label=None, limit=100, image="default", givable=False, currency="gold", caption="use", owned=0, infinite=False, give_label=None, usable_on=[]): + def __init__(self, id, type, name, price=0, desc="", unlocked=True, use_func=None, use_label=None, give_func=None, give_label=None, limit=100, image="default", givable=False, currency="gold", use_caption=_("Use"), give_caption=_("Give"), owned=0, infinite=False, usable_on=[]): self.id = id self.type = type self.name = name self.price = price self.desc = desc self.unlocked = unlocked - self.func = func - self.label = label - self.limit = limit - if image == "default": - image = f"interface/icons/{self.id}.webp" - self.image = image - self.currency = currency - self.caption = caption - - self.givable = givable - self.usable = bool(self.func or self.label) - self.used = False - self._owned = owned - self.infinite = infinite + self.use_func = use_func + self.use_label = use_label + self.use_caption = use_caption + self.give_func = give_func self.give_label = give_label + self.give_caption = give_caption + self.limit = limit + self.image = f"interface/icons/{self.id}.webp" if image == "default" else image + self.currency = currency + self.givable = bool(self.give_func or self.give_label) + self.usable = bool(self.use_func or self.use_label) + self.used = False + self.infinite = infinite self.usable_on = usable_on + self._owned = owned + inventory.add(self) + def _check_usable(self, func_name): + if not getattr(self, func_name): + raise Exception(f"Item {self.name!r} is not marked as {func_name}able.") + if self.owned == 0: + raise Exception(f"Item {self.name!r} owned count is equal to zero.") + + def _use_or_give(self, func_name): + self._check_usable(func_name) + if not self.type == "quest": + # Quest items require manual triggers, it's more convenient. + self.used = True + func = getattr(self, f"{func_name}_func") + label = getattr(self, f"{func_name}_label") + if func: + func() + if label: + enable_game_menu() + renpy.jump_out_of_context(label) if renpy.context_nesting_level() > 0 else renpy.jump(label) + def use(self): - if not self.usable: - raise Exception(f"Item {self.name!r} is not usable as it does not have any function or a label.") + self._use_or_give("use") - if self.owned == 0: - raise Exception(f"Item {self.name!r} owned count is equal to zero.") - - if not self.type == "quest": - # Quest items require manual triggers, it's more convenient. - self.used = True - - if self.func: - self.func() - - if self.label: - if renpy.context_nesting_level() > 0: - renpy.jump_out_of_context(self.label) - else: - renpy.jump(self.label) - - def give(self, who): - if not self.givable: - raise Exception(f"Item {self.name!r} is not marked as givable.") - - if self.owned == 0: - raise Exception(f"Item {self.name!r} owned count is equal to zero.") - - if not self.type == "quest": - # Quest items require manual triggers, it's more convenient. - self.used = True - - if self.func: - self.func() - - if self.give_label: - if renpy.context_nesting_level() > 0: - renpy.jump_out_of_context(self.give_label) - else: - renpy.jump(self.give_label) + def give(self): + self._use_or_give("give") def get_image(self): - if isinstance(self.image, str): - return self.image - else: - return self.image() + return self.image() if callable(self.image) else self.image + + @property + def caption(self): + return self.use_caption if inventory_mode==0 else self.give_caption # 'inventory_mode' is a global @property def owned(self): @@ -94,16 +80,14 @@ init python: @owned.setter def owned(self, value): - if not self.unlocked: - self.unlocked = True - + self.unlocked = True self._owned = max(min(value, self.limit), 0) class Decoration(Item): room_scale = 0.5 def __init__(self, id, type, name, placement, price=0, desc="", unlocked=True, image="default", room_image="default", room_image_hover=None, owned=0, replaces=False, use_action=None, replace_action=None, replace_anchor=None, replace_pos=None): - super(Decoration, self).__init__(id, type, name, price, desc, unlocked, None, None, 1, image, False, "tokens", "Apply", owned) + super(Decoration, self).__init__(id=id, type=type, name=name, price=price, desc=desc, unlocked=unlocked, limit=1, image=image, givable=False, currency="tokens", use_caption="Apply", owned=owned) if room_image == "default": room_image = f"images/rooms/main_room/decorations/{self.id}.webp" @@ -144,8 +128,8 @@ init python: self.in_use = False class Potion(Item): - def __init__(self, id, type, name, price=0, desc="", unlocked=True, label=None, limit=100, image="default", currency="gold", caption="give", owned=0, recipe=None, usable_on=[], levels={}): - super(Potion, self).__init__(id, type, name, price, desc, unlocked, None, label, limit, image, True, currency, caption, owned) + def __init__(self, id, type, name, price=0, desc="", unlocked=True, label=None, limit=100, image="default", currency="gold", use_caption=_("Use"), give_caption=_("Give"), owned=0, recipe=None, usable_on=[], levels={}): + super(Potion, self).__init__(id, type=type, name=name, price=price, desc=desc, unlocked=unlocked, give_label=label, limit=limit, image=image, givable=True, currency=currency, use_caption=use_caption, give_caption=give_caption, owned=owned) # self.givable = bool(self.give_label) self.label = label diff --git a/game/scripts/inventory/gifts.rpy b/game/scripts/inventory/gifts.rpy index b34653e9..d8b861af 100644 --- a/game/scripts/inventory/gifts.rpy +++ b/game/scripts/inventory/gifts.rpy @@ -1,24 +1,24 @@ -default lollipop_ITEM = Item("lollipop", "gift", _("Lollipop Candy"), 20, _("A lollipop candy. An adult candy for kids or kids candy for adults?"), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default chocolate_ITEM = Item("chocolate", "gift", _("Chocolate"), 40, _("The recipe for this delicious milk chocolate is kept a secret. (Rumoured to contain dried faeries)."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default plush_owl_ITEM = Item("plush_owl", "gift", _("Plush owl"), 35, _("A Toy owl stuffed with feathers of an actual owl. It's so cuddly!"), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default butterbeer_ITEM = Item("butterbeer", "gift", _("Butterbeer"), 50, _("Girls can't resist this beverage's buttery texture. Therefore it's always in high demand among the boys."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default science_mag_ITEM = Item("science_mag", "gift", _("Educational Magazines"), 30, _("Educational magazines.\nthe Trusty companions of every social outcast."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default girls_mag_ITEM = Item("girls_mag", "gift", _("Girly Magazines"), 45, _("Girly magazines.\nAll cool girls are reading these."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default adult_mag_ITEM = Item("adult_mag", "gift", _("Adult magazines"), 60, _("Your boyfriend is turning into a nice guy?\nYour husband won't abuse you anymore?\nAll you wanted to know about relationships, love and sex. Mostly about sex."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default porn_mag_ITEM = Item("porn_mag", "gift", _("Porn magazines"), 80, _("Give these to your girlfriend to test her, to your wife to shame her and to your daughter to avoid \"the talk\"."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default krum_poster_ITEM = Item("krum_poster", "gift", _("Viktor Krum Poster"), 25, _("A skilled Quidditch Seeker, Viktor has been selected to play for the Bulgarian National Quidditch team despite still going to school, and is widely regarded as one of the best players in the world."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default sexy_lingerie_ITEM = Item("sexy_lingerie", "gift", _("Sexy Lingerie"), 75, _("Sexy lingerie \"Fairy Godmother\". Charm your wizard in bed or empress your sisters at a Sabbath."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default sexy_stockings_ITEM = Item("sexy_stockings", "gift", _("Sexy Stockings"), 50, _("Somewhere between now and the dark-ages came the invention of stockings, when you want to show some skin but not too much."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default pink_condoms_ITEM = Item("condoms", "gift", _("A Pack Of Condoms"), 50, _("Unleash the one-horned beast!\n{size=-4}May contain traces of actual unicorn saliva.{/size}"), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default vibrator_ITEM = Item("vibrator", "gift", _("Vibrator"), 55, _("A magnificent, magically enhanced vibrator made of vine wood, with a dragon heartstring core."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default anal_lube_ITEM = Item("lube", "gift", _("Jar of lubricant"), 60, _("A Jar full of lube, Buy this for your loved one - show that you care."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default ballgag_and_cuffs_ITEM = Item("ballgag_and_cuffs", "gift", _("Ball gag and cuffs"), 70, _("Ball gag and cuffs, Turn your soulmate into your cellmate."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default anal_plugs_ITEM = Item("buttplugs", "gift", _("Anal plugs"), 85, _("Anal plugs decorated with actual tails. Sizes vary to satisfy expert practitioners and beginner alike."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default testral_strapon_ITEM = Item("strapon", "gift", _("Thestral Strap-on"), 200, _("Thestral strap-on.\nWhen you see it, you'll shit bricks."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default broom_2000_ITEM = Item("broom", "gift", _("Lady Speed Stick-2000"), 500, _("{size=-2}The \"Lady Speed Stick-2000\", an elegant way of transportation for passionate witches. The trademarked saddle guarantees full satisfaction. Get one for your witch and she won't use her boring old broom ever again!{/size}"), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default sexdoll_ITEM = Item("sexdoll", "gift", _("Sex doll \"Joanne\""), 350, _("It's so realistic. Almost looks like a real human under the influence of a spell of some sort."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default anal_beads_ITEM = Item("beads", "gift", _("Anal beads"), 65, _("Anal beads engraved with a strange inscription \"Property of L.C.\"."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) +default lollipop_ITEM = Item("lollipop", "gift", _("Lollipop Candy"), 20, _("A lollipop candy. An adult candy for kids or kids candy for adults?"), givable=True, usable_on=list(states.dolls)) +default chocolate_ITEM = Item("chocolate", "gift", _("Chocolate"), 40, _("The recipe for this delicious milk chocolate is kept a secret. (Rumoured to contain dried faeries)."), givable=True, usable_on=list(states.dolls)) +default plush_owl_ITEM = Item("plush_owl", "gift", _("Plush owl"), 35, _("A Toy owl stuffed with feathers of an actual owl. It's so cuddly!"), givable=True, usable_on=list(states.dolls)) +default butterbeer_ITEM = Item("butterbeer", "gift", _("Butterbeer"), 50, _("Girls can't resist this beverage's buttery texture. Therefore it's always in high demand among the boys."), givable=True, usable_on=list(states.dolls)) +default science_mag_ITEM = Item("science_mag", "gift", _("Educational Magazines"), 30, _("Educational magazines.\nthe Trusty companions of every social outcast."), givable=True, usable_on=list(states.dolls)) +default girls_mag_ITEM = Item("girls_mag", "gift", _("Girly Magazines"), 45, _("Girly magazines.\nAll cool girls are reading these."), givable=True, usable_on=list(states.dolls)) +default adult_mag_ITEM = Item("adult_mag", "gift", _("Adult magazines"), 60, _("Your boyfriend is turning into a nice guy?\nYour husband won't abuse you anymore?\nAll you wanted to know about relationships, love and sex. Mostly about sex."), givable=True, usable_on=list(states.dolls)) +default porn_mag_ITEM = Item("porn_mag", "gift", _("Porn magazines"), 80, _("Give these to your girlfriend to test her, to your wife to shame her and to your daughter to avoid \"the talk\"."), givable=True, usable_on=list(states.dolls)) +default krum_poster_ITEM = Item("krum_poster", "gift", _("Viktor Krum Poster"), 25, _("A skilled Quidditch Seeker, Viktor has been selected to play for the Bulgarian National Quidditch team despite still going to school, and is widely regarded as one of the best players in the world."), givable=True, usable_on=list(states.dolls)) +default sexy_lingerie_ITEM = Item("sexy_lingerie", "gift", _("Sexy Lingerie"), 75, _("Sexy lingerie \"Fairy Godmother\". Charm your wizard in bed or empress your sisters at a Sabbath."), givable=True, usable_on=list(states.dolls)) +default sexy_stockings_ITEM = Item("sexy_stockings", "gift", _("Sexy Stockings"), 50, _("Somewhere between now and the dark-ages came the invention of stockings, when you want to show some skin but not too much."), givable=True, usable_on=list(states.dolls)) +default pink_condoms_ITEM = Item("condoms", "gift", _("A Pack Of Condoms"), 50, _("Unleash the one-horned beast!\n{size=-4}May contain traces of actual unicorn saliva.{/size}"), givable=True, usable_on=list(states.dolls)) +default vibrator_ITEM = Item("vibrator", "gift", _("Vibrator"), 55, _("A magnificent, magically enhanced vibrator made of vine wood, with a dragon heartstring core."), givable=True, usable_on=list(states.dolls)) +default anal_lube_ITEM = Item("lube", "gift", _("Jar of lubricant"), 60, _("A Jar full of lube, Buy this for your loved one - show that you care."), givable=True, usable_on=list(states.dolls)) +default ballgag_and_cuffs_ITEM = Item("ballgag_and_cuffs", "gift", _("Ball gag and cuffs"), 70, _("Ball gag and cuffs, Turn your soulmate into your cellmate."), givable=True, usable_on=list(states.dolls)) +default anal_plugs_ITEM = Item("buttplugs", "gift", _("Anal plugs"), 85, _("Anal plugs decorated with actual tails. Sizes vary to satisfy expert practitioners and beginner alike."), givable=True, usable_on=list(states.dolls)) +default testral_strapon_ITEM = Item("strapon", "gift", _("Thestral Strap-on"), 200, _("Thestral strap-on.\nWhen you see it, you'll shit bricks."), givable=True, usable_on=list(states.dolls)) +default broom_2000_ITEM = Item("broom", "gift", _("Lady Speed Stick-2000"), 500, _("{size=-2}The \"Lady Speed Stick-2000\", an elegant way of transportation for passionate witches. The trademarked saddle guarantees full satisfaction. Get one for your witch and she won't use her boring old broom ever again!{/size}"), givable=True, usable_on=list(states.dolls)) +default sexdoll_ITEM = Item("sexdoll", "gift", _("Sex doll \"Joanne\""), 350, _("It's so realistic. Almost looks like a real human under the influence of a spell of some sort."), givable=True, usable_on=list(states.dolls)) +default anal_beads_ITEM = Item("beads", "gift", _("Anal beads"), 65, _("Anal beads engraved with a strange inscription \"Property of L.C.\"."), givable=True, usable_on=list(states.dolls)) -default wine_ITEM = Item("wine", "gift", _("Wine"), 60, _("For the more refined palate."), givable=True, caption=_("Give"), usable_on=list(states.dolls)) -default firewhisky_ITEM = Item("firewhisky", "gift", _("Firewhisky"), 80, _("Great taste with a fiery burn."), givable=True, caption=_("Give"), unlocked=False, usable_on=list(states.dolls)) +default wine_ITEM = Item("wine", "gift", _("Wine"), 60, _("For the more refined palate."), givable=True, usable_on=list(states.dolls)) +default firewhisky_ITEM = Item("firewhisky", "gift", _("Firewhisky"), 80, _("Great taste with a fiery burn."), givable=True, unlocked=False, usable_on=list(states.dolls)) diff --git a/game/scripts/inventory/qitems.rpy b/game/scripts/inventory/qitems.rpy index bc19d258..109a533a 100644 --- a/game/scripts/inventory/qitems.rpy +++ b/game/scripts/inventory/qitems.rpy @@ -1,13 +1,13 @@ -default puzzle_box_ITEM = Item("puzzle_box", "quest", _("Puzzle Box"), 0, _("A wooden box with a slide puzzle located on top of it. It was found hidden behind one of the loose bricks in the fireplace. Who knows what's inside."), limit=1, label="puzzle_minigame", unlocked=False, caption=_("Open")) -default collar_ITEM = Item("collar", "quest", _("Magic Collar"), 500, _("{size=-2}A collar made out of metal. It has an inscription on the back.\n\n{/size}{size=-2}{i}\"Transforms to show the wearers true self.\n WARNING: May cause harm to adjacent clothing during transformation.\"{/i}{/size}"), givable=True, give_label="hg_collars", usable_on=["hermione"], caption=_("Give")) -default buttplugs_ITEM = Item("buttplugs", "quest", _("Set of Butt Plugs"), 500, _("An assortment of butt plugs in various themes and sizes."), limit=1, infinite=True, givable=True, give_label="hg_butt_plugs", usable_on=["hermione"], caption=_("Give")) -default lootbox_ITEM = Item("cards", "quest", _("Pack of Cards"), 50, _("A pack of wizard cards. You won't know what's inside until you open it."), label="card_lootbox", unlocked=False, caption=_("Open")) -default sealed_scroll_ITEM = Item("sealed_scroll", "quest", _("Sealed Scroll"), 500, _("The scroll can be used to transmute one-self into.. something.\n{size=-4}Hint: The user can't be a virgin.{/size}"), limit=1, label="tentacle_scene_intro", caption=_("Read")) -default quidditchguide_ITEM = Item("quidditch_book", "quest", _("Quidditch Guide"), 100, _("This book contains the basic knowledge of Quidditch."), label="quidditch_guide_book", limit=1, image="interface/icons/generic_book.webp", unlocked=False, caption=_("Read")) -default thequibbler_ITEM = Item("quibbler", "quest", _("The Quibbler #NO. 24027"), 15, _("This tabloid includes conspiracy theories and discussions of imaginary creatures and other weirdness."), label="spectrespecs_E3", limit=1, image="interface/icons/the_quibbler.webp", unlocked=False, caption=_("Read")) +default puzzle_box_ITEM = Item("puzzle_box", "quest", _("Puzzle Box"), 0, _("A wooden box with a slide puzzle located on top of it. It was found hidden behind one of the loose bricks in the fireplace. Who knows what's inside."), limit=1, use_label="puzzle_minigame", unlocked=False, use_caption=_("Open")) +default collar_ITEM = Item("collar", "quest", _("Magic Collar"), 500, _("{size=-2}A collar made out of metal. It has an inscription on the back.\n\n{/size}{size=-2}{i}\"Transforms to show the wearers true self.\n WARNING: May cause harm to adjacent clothing during transformation.\"{/i}{/size}"), givable=True, give_label="hg_collars", usable_on=["hermione"], give_caption=_("Give")) +default buttplugs_ITEM = Item("buttplugs", "quest", _("Set of Butt Plugs"), 500, _("An assortment of butt plugs in various themes and sizes."), limit=1, infinite=True, givable=True, give_label="hg_butt_plugs", usable_on=["hermione"], give_caption=_("Give")) +default lootbox_ITEM = Item("cards", "quest", _("Pack of Cards"), 50, _("A pack of wizard cards. You won't know what's inside until you open it."), use_label="card_lootbox", unlocked=False, use_caption=_("Open")) +default sealed_scroll_ITEM = Item("sealed_scroll", "quest", _("Sealed Scroll"), 500, _("The scroll can be used to transmute one-self into.. something.\n{size=-4}Hint: The user can't be a virgin.{/size}"), limit=1, use_label="tentacle_scene_intro", use_caption=_("Read")) +default quidditchguide_ITEM = Item("quidditch_book", "quest", _("Quidditch Guide"), 100, _("This book contains the basic knowledge of Quidditch."), use_label="quidditch_guide_book", limit=1, image="interface/icons/generic_book.webp", unlocked=False, use_caption=_("Read")) +default thequibbler_ITEM = Item("quibbler", "quest", _("The Quibbler #NO. 24027"), 15, _("This tabloid includes conspiracy theories and discussions of imaginary creatures and other weirdness."), use_label="spectrespecs_E3", limit=1, image="interface/icons/the_quibbler.webp", unlocked=False, use_caption=_("Read")) default experimental_recipes_ITEM = Item("recipes", "quest", _("Experimental Potion Recipes"), 0, _("This piece of paper has Snape's handwriting all over it."), limit=1, image="interface/icons/generic_scroll.webp", unlocked=False) -default vibrators_ITEM = Item("vibrators", "quest", _("Box o' fun"), 1000, _("A box full of vibrating devices in different shapes and forms. Some of them remain turned on."), limit=1, image="interface/icons/box-o-fun.webp", infinite=True, givable=True, give_label="hg_vibrators", usable_on=["hermione"], caption=_("Give")) +default vibrators_ITEM = Item("vibrators", "quest", _("Box o' fun"), 1000, _("A box full of vibrating devices in different shapes and forms. Some of them remain turned on."), limit=1, image="interface/icons/box-o-fun.webp", infinite=True, givable=True, give_label="hg_vibrators", usable_on=["hermione"], give_caption=_("Give")) # Outfits related quest items default poker_outfit_ITEM = Item("her_outfit_poker", "quest", _("Poke-her-nips Outfit"), 15, _("An outfit that doesn't leave much for the mind's desire, perfect for a lewd card loving girl."), limit=1, image="interface/icons/icon_gambler_hat.webp", unlocked=False, currency="tokens") diff --git a/game/scripts/inventory/scrolls.rpy b/game/scripts/inventory/scrolls.rpy index f1b6e17e..51989c5a 100644 --- a/game/scripts/inventory/scrolls.rpy +++ b/game/scripts/inventory/scrolls.rpy @@ -1,35 +1,35 @@ # Legacy -default leg1_scroll_ITEM = Item("leg1_scroll", "scroll", _("Scroll 1: The room"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg1_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg2_scroll_ITEM = Item("leg2_scroll", "scroll", _("Scroll 2: The Callendar"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg2_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg3_scroll_ITEM = Item("leg3_scroll", "scroll", _("Scroll 3: The Girl"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg3_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg4_scroll_ITEM = Item("leg4_scroll", "scroll", _("Scroll 4: Deepthroating"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg4_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg5_scroll_ITEM = Item("leg5_scroll", "scroll", _("Scroll 5: Poster 1"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg5_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg6_scroll_ITEM = Item("leg6_scroll", "scroll", _("Scroll 6: Poster 2"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg6_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg7_scroll_ITEM = Item("leg7_scroll", "scroll", _("Scroll 7: Chibi Dancing"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg7_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg8_scroll_ITEM = Item("leg8_scroll", "scroll", _("Scroll 8: Game Items"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg8_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg9_scroll_ITEM = Item("leg9_scroll", "scroll", _("Scroll 9: Panties-no-Panties"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg9_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg10_scroll_ITEM = Item("leg10_scroll", "scroll", _("Scroll 10: A lot of pegs"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg10_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg11_scroll_ITEM = Item("leg11_scroll", "scroll", _("Scroll 11: House-Elf Brothel"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg11_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg12_scroll_ITEM = Item("leg12_scroll", "scroll", _("Scroll 12: Me and Lola"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg12_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg13_scroll_ITEM = Item("leg13_scroll", "scroll", _("Scroll 13: Hard Training"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg13_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg14_scroll_ITEM = Item("leg14_scroll", "scroll", _("Scroll 14: Wizard's Chess"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg14_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg15_scroll_ITEM = Item("leg15_scroll", "scroll", _("Scroll 15: Tutoring Books"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg15_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg16_scroll_ITEM = Item("leg16_scroll", "scroll", _("Scroll 16: Extra Gifts 1"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg16_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg17_scroll_ITEM = Item("leg17_scroll", "scroll", _("Scroll 17: Extra Gifts 2"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg17_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg18_scroll_ITEM = Item("leg18_scroll", "scroll", _("Scroll 18: Fiction Books"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg18_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg19_scroll_ITEM = Item("leg19_scroll", "scroll", _("Scroll 19: Singer Whore"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg19_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg20_scroll_ITEM = Item("leg20_scroll", "scroll", _("Scroll 20: Casting"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg20_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg21_scroll_ITEM = Item("leg21_scroll", "scroll", _("Scroll 21: Witch Robes 1"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg21_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg22_scroll_ITEM = Item("leg22_scroll", "scroll", _("Scroll 22: Witch Robes 2"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg22_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg23_scroll_ITEM = Item("leg23_scroll", "scroll", _("Scroll 23: Witch Robes 3"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg23_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg24_scroll_ITEM = Item("leg24_scroll", "scroll", _("Scroll 24: Witch Robes 4"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg24_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg25_scroll_ITEM = Item("leg25_scroll", "scroll", _("Scroll 25: The Walk"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg25_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg26_scroll_ITEM = Item("leg26_scroll", "scroll", _("Scroll 26: Durmstrang"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg26_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg27_scroll_ITEM = Item("leg27_scroll", "scroll", _("Scroll 27: Ball Gag"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg27_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg28_scroll_ITEM = Item("leg28_scroll", "scroll", _("Scroll 28: New Clothes 1"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg28_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg29_scroll_ITEM = Item("leg29_scroll", "scroll", _("Scroll 29: New Clothes 2"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg29_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) -default leg30_scroll_ITEM = Item("leg30_scroll", "scroll", _("Scroll 30: The Gang"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), label="leg30_scroll", limit=1, image="interface/icons/generic_scroll.webp", caption=_("Read")) +default leg1_scroll_ITEM = Item("leg1_scroll", "scroll", _("Scroll 1: The room"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg1_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg2_scroll_ITEM = Item("leg2_scroll", "scroll", _("Scroll 2: The Callendar"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg2_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg3_scroll_ITEM = Item("leg3_scroll", "scroll", _("Scroll 3: The Girl"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg3_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg4_scroll_ITEM = Item("leg4_scroll", "scroll", _("Scroll 4: Deepthroating"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg4_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg5_scroll_ITEM = Item("leg5_scroll", "scroll", _("Scroll 5: Poster 1"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg5_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg6_scroll_ITEM = Item("leg6_scroll", "scroll", _("Scroll 6: Poster 2"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg6_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg7_scroll_ITEM = Item("leg7_scroll", "scroll", _("Scroll 7: Chibi Dancing"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg7_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg8_scroll_ITEM = Item("leg8_scroll", "scroll", _("Scroll 8: Game Items"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg8_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg9_scroll_ITEM = Item("leg9_scroll", "scroll", _("Scroll 9: Panties-no-Panties"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg9_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg10_scroll_ITEM = Item("leg10_scroll", "scroll", _("Scroll 10: A lot of pegs"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg10_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg11_scroll_ITEM = Item("leg11_scroll", "scroll", _("Scroll 11: House-Elf Brothel"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg11_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg12_scroll_ITEM = Item("leg12_scroll", "scroll", _("Scroll 12: Me and Lola"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg12_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg13_scroll_ITEM = Item("leg13_scroll", "scroll", _("Scroll 13: Hard Training"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg13_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg14_scroll_ITEM = Item("leg14_scroll", "scroll", _("Scroll 14: Wizard's Chess"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg14_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg15_scroll_ITEM = Item("leg15_scroll", "scroll", _("Scroll 15: Tutoring Books"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg15_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg16_scroll_ITEM = Item("leg16_scroll", "scroll", _("Scroll 16: Extra Gifts 1"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg16_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg17_scroll_ITEM = Item("leg17_scroll", "scroll", _("Scroll 17: Extra Gifts 2"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg17_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg18_scroll_ITEM = Item("leg18_scroll", "scroll", _("Scroll 18: Fiction Books"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg18_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg19_scroll_ITEM = Item("leg19_scroll", "scroll", _("Scroll 19: Singer Whore"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg19_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg20_scroll_ITEM = Item("leg20_scroll", "scroll", _("Scroll 20: Casting"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg20_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg21_scroll_ITEM = Item("leg21_scroll", "scroll", _("Scroll 21: Witch Robes 1"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg21_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg22_scroll_ITEM = Item("leg22_scroll", "scroll", _("Scroll 22: Witch Robes 2"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg22_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg23_scroll_ITEM = Item("leg23_scroll", "scroll", _("Scroll 23: Witch Robes 3"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg23_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg24_scroll_ITEM = Item("leg24_scroll", "scroll", _("Scroll 24: Witch Robes 4"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg24_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg25_scroll_ITEM = Item("leg25_scroll", "scroll", _("Scroll 25: The Walk"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg25_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg26_scroll_ITEM = Item("leg26_scroll", "scroll", _("Scroll 26: Durmstrang"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg26_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg27_scroll_ITEM = Item("leg27_scroll", "scroll", _("Scroll 27: Ball Gag"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg27_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg28_scroll_ITEM = Item("leg28_scroll", "scroll", _("Scroll 28: New Clothes 1"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg28_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg29_scroll_ITEM = Item("leg29_scroll", "scroll", _("Scroll 29: New Clothes 2"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg29_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) +default leg30_scroll_ITEM = Item("leg30_scroll", "scroll", _("Scroll 30: The Gang"), 30, _("Scroll showcasing various development stages from the original version of the game and concept art."), use_label="leg30_scroll", limit=1, image="interface/icons/generic_scroll.webp", use_caption=_("Read")) label leg1_scroll: show screen blktone diff --git a/game/scripts/wardrobe/functions.rpy b/game/scripts/wardrobe/functions.rpy index 4133f87e..61a92c73 100644 --- a/game/scripts/wardrobe/functions.rpy +++ b/game/scripts/wardrobe/functions.rpy @@ -62,14 +62,6 @@ init -1 python: __check_exists(key) return f"give_{key[:3]}_gift" - def get_character_potion_check_label(key): - __check_exists(key) - return f"{key[:3]}_potion_check" - - def get_character_potion_check(key): - __check_exists(key) - return getattr(store, f"{key[:3]}_potion_check") - def get_character_unlock(key): __check_exists(key) return getattr(states, key[:3]).unlocked