define fadeSlow = Fade(0.8, 1.0, 1) define repnotif = ("Replay Scene Unlocked!") default persistent.name = "Jack" default persistent.name2 = "Susan" default persistent.name3 = "Frank" default persistent.age = 18 default persistent.age2 = 18 default persistent.age3 = 18 default persistent.repSet = False default persistent.unlock = False default replayPage = 1 default KoGa3GalleryUnlocked = True #KoGa3 label notused: $ renpy.end_replay() init python: import math replayMenu = [] replayItems = [] replayItemsSS = [] replay_items_per_page = 15 class ReplayItems: numberScenes = 8 # Max number of scenes per page def __init__(self, caption, label, image, variableName, scope=None, censored=False): self.caption = caption self.label = label self.image = image self.variableName = variableName if scope is None: self.scope = {} else: self.scope = scope self.censored = censored self.uncensored = self.getCensored() self.unlocked = self.getUnlocked() replayItems.append(self) def getCensored(self): if self.censored: return (getattr(persistent, "patched")) return True def getUnlocked(self): if self.variableName: return (getattr(persistent, self.variableName)) return True class ReplayItemsSS: numberScenes = 8 # Max number of scenes per page def __init__(self, caption, label, image, variableName, scope=None, censored=False): self.caption = caption self.label = label self.image = image self.variableName = variableName if scope is None: self.scope = {} else: self.scope = scope self.censored = censored self.uncensored = self.getCensored() self.unlocked = self.getUnlocked() replayItemsSS.append(self) def getCensored(self): if self.censored: return (getattr(persistent, "patched")) return True def getUnlocked(self): if self.variableName: return (getattr(persistent, self.variableName)) return True def calculateRows( numPerRow, totalCount ): return int(math.ceil( totalCount / ( 1.0 * numPerRow ) )) ReplayItems("Krissy", "scene001","images/001/sex2.webp", "scene001", {}) ReplayItems("Tiffany", "scene002","images/001/trl21.webp", "scene002", {}) ReplayItems("Tiffany", "scene003","images/002/loft7.webp", "scene003", {}) ReplayItems("Cena", "scene004","images/002/gf1.webp", "scene004", {}) ReplayItems("Akeko", "scene005","images/002/class11.webp", "scene005", {}) ReplayItems("Tiffany", "scene006","images/002/loft21.webp", "scene006", {}) ReplayItems("Tiffany & Yuna", "scene007","images/002/rent8.webp", "scene007", {}) ReplayItems("Tiffany", "scene008","images/003/loft68.webp", "scene008", {}) ReplayItems("Sammy & Tammy", "scene009","images/003/tb1.webp", "scene009", {}) ReplayItems("Foursome", "scene010","images/003/loft73.webp", "scene010", {}) ReplayItems("Sammy & Tammy", "scene011","images/003/loft74.webp", "scene011", {}) ReplayItems("Sammy & Tammy", "scene012","images/004/tv2.webp", "scene012", {}) ReplayItems("Orgy", "scene013","images/004/loft131.webp", "scene013", {}) ReplayItems("Jessica", "scene014","images/004/office33.webp", "scene014", {}) ReplayItems("Mary", "scene015","images/004/mh3.webp", "scene015", {}) ReplayItems("Tiffany & Cena", "scene016","images/005/loft199.webp", "scene016", {}) ReplayItems("[persistent.name2] & Cena", "scene017","images/patch/005/loft226.webp", "scene017", {"cena_side":"young"}, censored=True) ReplayItems("Georgina", "scene018","images/005/gym1.webp", "scene018", {}) ReplayItems("Meehh", "scene019","images/patch/006/loft243.webp", "scene019", {}, censored=True) ReplayItems("Brandy & Janice", "scene020","images/patch/006/ss2.webp", "scene020", {}, censored=True) ReplayItems("Sheila", "scene021","images/006/loft265.webp", "scene021", {}) ReplayItems("Georgina", "scene022","images/007/loft346.webp", "scene022", {}) ReplayItems("Abere", "scene023","images/007/clothes7.webp", "scene023", {}) ReplayItems("Megan", "scene024","images/008/loft470.webp", "scene024", {}) ReplayItems("Meehh", "scene025","images/008/loft480.webp", "scene025", {}) ReplayItems("Evie & Randie", "scene026","images/008/mov3.webp", "scene026", {}) ReplayItems("Sammy", "scene027","images/008/bed1.webp", "scene027", {}) ReplayItems("Sandy", "scene028","images/008/plane21.webp", "scene028", {}) ReplayItems("Brandy", "scene029","images/008/ht9.webp", "scene029", {}) ReplayItems("Tiffany", "scene030","images/008/ht12.webp", "scene030", {}) ReplayItems("Abby", "scene031","images/009/loft504.webp", "scene031", {"grant_side":"android"}) ReplayItems("Georgina", "scene032","images/009/ga1.webp", "scene032", {}) ReplayItems("Aunt Shannon", "scene033","images/009/loft530.webp", "scene033", {}) ReplayItems("Beth", "scene034","images/009/loft550.webp", "scene034", {}) ReplayItems("Clementine", "scene035","images/009/air8.webp", "scene035", {}) ReplayItems("Kiki", "scene036","images/009/loft567.webp", "scene036", {}) ReplayItems("Charlie", "scene037","images/010/loft593.webp", "scene037", {}) ReplayItems("Angie", "scene038","images/010/loft591.webp", "scene038", {}) ReplayItems("Cena & Kiki", "scene039","images/010/dojo37.webp", "scene039", {"cena_side":"young"}) ReplayItems("Becky & Kathy", "scene040","images/010/loft601.webp", "scene040", {}) ReplayItems("Olivia", "scene041","images/011/loft672.webp", "scene041", {}) ReplayItems("Valentina", "scene042","images/011/loft670.webp", "scene042", {}) ReplayItems("Zina", "scene043","images/011/loft736.webp", "scene043", {}) ReplayItems("Brooke", "scene044","images/011/loft761.webp", "scene044", {}) ReplayItems("Arrey", "scene045","images/012/oo1.webp", "scene045", {}) ReplayItems("Mary-Cate & Zina", "scene046","images/012/mcbr1.webp", "scene046", {}) ReplayItems("Aisha & Zina", "scene047","images/012/hqh68.webp", "scene047", {}) ReplayItems("Grace", "scene048","images/012/thr76.webp", "scene048", {}) ReplayItems("Bao", "scene049","images/013/loft903.webp", "scene049", {}) ReplayItems("Brooke", "scene050","images/013/loft959.webp", "scene050", {}) ReplayItems("Ending Montage", "scene051","images/014/field52.webp", "scene051", {}) ReplayItemsSS("Meehh", "scene_ss01","images/ss/fld34.webp", "scene_ss01", {}) ReplayItemsSS("[persistent.name3] & Carrie", "scene_ss02","images/ss/ps2.webp", "scene_ss02", {}) ReplayItemsSS("Evie & Tiffany", "scene_ss03","images/ss/z15.webp", "scene_ss03", {}) ReplayItemsSS("[persistent.name3], Debbie & Lauren", "scene_ss04","images/ss/replay_t00.webp", "scene_ss04", {}) ReplayItemsSS("Evie", "scene_ss05","images/ss/cl68.webp", "scene_ss05", {}) ReplayItemsSS("Sammy & Tammy", "scene_ss06","images/ss2/tr7.webp", "scene_ss06", {}) ReplayItemsSS("Yuna", "scene_ss07","images/ss2/l1.webp", "scene_ss07", {}) ReplayItemsSS("Brooke", "scene_ss08","images/ss2/cl69.webp", "scene_ss08", {}) ReplayItemsSS("Bridget", "scene_ss09","images/ss2/cl84.webp", "scene_ss09", {}) ReplayItemsSS("Maya the Orc", "ss3","images/ss3/cl104.webp", "scene_ss10", {}) ReplayItemsSS("Mary", "scene_ss11","images/ss3/l16.webp", "scene_ss11", {}) ReplayItemsSS("Tammy", "scene_ss12","images/ss3/l37.webp", "scene_ss12", {}) screen sceneReplayMain: hbox: xcenter 0.5 ycenter 40 spacing 15 hbox: spacing -5 text "S" at delayed_blink(0.1, 2.0) outlines [(3, "#000")] style "replayHeader" text "c" at delayed_blink(0.2, 2.0) outlines [(3, "#000")] style "replayHeader" text "e" at delayed_blink(0.3, 2.0) outlines [(3, "#000")] style "replayHeader" text "n" at delayed_blink(0.4, 2.0) outlines [(3, "#000")] style "replayHeader" text "e" at delayed_blink(0.5, 2.0) outlines [(3, "#000")] style "replayHeader" hbox: spacing -5 text "R" at delayed_blink(0.6, 2.0) outlines [(3, "#000")] style "replayHeader" text "e" at delayed_blink(0.7, 2.0) outlines [(3, "#000")] style "replayHeader" text "p" at delayed_blink(0.8, 2.0) outlines [(3, "#000")] style "replayHeader" text "l" at delayed_blink(0.9, 2.0) outlines [(3, "#000")] style "replayHeader" text "a" at delayed_blink(1.0, 2.0) outlines [(3, "#000")] style "replayHeader" text "y" at delayed_blink(1.0, 2.0) outlines [(3, "#000")] style "replayHeader" vbox align(0.01,1.0) spacing -5: textbutton _("Names"): text_style "RepButton" action [ui.callsinnewcontext("set_names")] textbutton _("Ages"): text_style "RepButton" action [ui.callsinnewcontext("set_ages")] hbox align(0.5,0.9) spacing 10: textbutton _("Main Game Scenes"): text_style "RepButton" action Hide("sceneReplaySS"), ShowMenu("sceneReplay") textbutton _("SuperHero Scenes"): text_style "RepButton" action Hide("sceneReplay"), ShowMenu("sceneReplaySS") hbox align(0.99,0.99): text "Codded by {a=https://subscribestar.adult/shaddymodda}ShaddyModda{/a}" size 30 if renpy.loadable("unlock.rpyc") or renpy.loadable("ShaddyDev.rpyc") or KoGa3GalleryUnlocked is True: if not persistent.unlocked: textbutton _("Unlock All Scenes"): text_style "RepButton" align(0.99,0.01) action SetVariable("persistent.unlocked", True) else: textbutton _("Lock All Scenes"): text_style "RepButton" align(0.99,0.01) action SetVariable("persistent.unlocked", False) screen sceneReplay(): tag menu modal True add "#000" add renpy.random.choice(["gui/main_menu-Tiff.webp","gui/main_menu-Krissy.webp","gui/main_menu-Krissy&Tiff.webp","gui/main_menu-Akeko.webp","gui/main_menu-Twins.webp","gui/main_menu-Twins2.webp","gui/main_menu-Yuna&Tiff.webp", "gui/main_menu-bar.webp"]) xcenter 0.5 ycenter 0.5 alpha 0.65 $ ttl_items = len(replayItems) $ ttl_pages = calculateRows(replay_items_per_page, ttl_items) $ start_index = (replayPage -1) * replay_items_per_page $ end_index = start_index + replay_items_per_page $ page_items = replayItems[slice(start_index, end_index)] $ ttr = GetTooltip() vpgrid: spacing 20 cols 5 align(0.5,0.55) # xysize(1350,650) # scrollbars "vertical" # draggable True # mousewheel True for item in page_items: # if item.getCensored() and item.getUnlocked() and item.character == replayCharacter or (item.getCensored() and item.character == replayCharacter and persistent.unlocked): if item.getCensored() and item.getUnlocked() or (item.getCensored() and persistent.unlocked): if renpy.variant("pc"): $ scopeDict = {"quick_menu":False, "name":persistent.name, "name2":persistent.name2, "age":persistent.age, "age2":persistent.age2, "age3":persistent.age3} else: $ scopeDict = {"name":persistent.name, "name2":persistent.name2, "age":persistent.age, "age2":persistent.age2, "age3":persistent.age3} $ scopeDict.update(item.scope) fixed: # background Solid("#0ed6f97F") xysize(250,145) imagebutton: xcenter 0.5 ycenter 0.5 idle Transform(item.image, zoom=0.125) hover Transform(im.MatrixColor(item.image, im.matrix.brightness(0.2)), zoom=0.125) tooltip item.label action Replay(item.label, scope=scopeDict, locked = False) if ttr == item.label: text "{}".format(item.caption) xcenter 0.5 ycenter 0.5 style "tt_textr" elif item.getCensored(): fixed: # background Solid("#0ed6f97F") xysize(250,145) imagebutton: xcenter 0.5 ycenter 0.5 idle Transform(im.Blur(item.image, 50.0), zoom=0.125) action NullAction() if ttl_pages > 1: vbox: xcenter 0.5 ypos 100 hbox xcenter 0.5: spacing -5 text "P" at delayed_blink(0.0, 2.0) outlines [(2, "#000")] style "replayHeader" size 45 text "a" at delayed_blink(0.1, 2.0) outlines [(2, "#000")] style "replayHeader" size 45 text "g" at delayed_blink(0.2, 2.0) outlines [(2, "#000")] style "replayHeader" size 45 text "e" at delayed_blink(0.1, 2.0) outlines [(2, "#000")] style "replayHeader" size 45 text " [replayPage]" at delayed_blink(0.0, 2.0) outlines [(2, "#000")] style "replayHeader" size 45 vpgrid rows 1: if renpy.variant("mobile"): align(0.5, 0.95) else: align(0.5, 1.0) hbox: textbutton "First -": text_style "RepButton" action SetVariable("replayPage", 1) if replayPage > 2: sensitive True else: sensitive False textbutton "Previous -": text_style "RepButton" action SetVariable("replayPage", replayPage - 1) if replayPage > 1: sensitive True else: sensitive False textbutton "Return": text_style "RepButton" ycenter 0.5 action Hide("sceneReplayMain"), Hide("sceneReplay"), Hide("sceneReplaySS"), Return() textbutton "- Next": text_style "RepButton" action SetVariable("replayPage", replayPage + 1) if replayPage < ttl_pages: sensitive True else: sensitive False textbutton "- Last": text_style "RepButton" action SetVariable("replayPage", ttl_pages) if replayPage < (ttl_pages - 1) and ttl_pages > 2: sensitive True else: sensitive False use sceneReplayMain screen sceneReplaySS(): tag menu modal True add "#000" add "main_menu_default" xcenter 0.5 ycenter 0.5 alpha 0.65 hbox: xcenter 0.5 ycenter 40 spacing 15 hbox: spacing -5 text "S" at delayed_blink(0.1, 2.0) outlines [(3, "#000")] style "replayHeader" text "c" at delayed_blink(0.2, 2.0) outlines [(3, "#000")] style "replayHeader" text "e" at delayed_blink(0.3, 2.0) outlines [(3, "#000")] style "replayHeader" text "n" at delayed_blink(0.4, 2.0) outlines [(3, "#000")] style "replayHeader" text "e" at delayed_blink(0.5, 2.0) outlines [(3, "#000")] style "replayHeader" hbox: spacing -5 text "R" at delayed_blink(0.6, 2.0) outlines [(3, "#000")] style "replayHeader" text "e" at delayed_blink(0.7, 2.0) outlines [(3, "#000")] style "replayHeader" text "p" at delayed_blink(0.8, 2.0) outlines [(3, "#000")] style "replayHeader" text "l" at delayed_blink(0.9, 2.0) outlines [(3, "#000")] style "replayHeader" text "a" at delayed_blink(1.0, 2.0) outlines [(3, "#000")] style "replayHeader" text "y" at delayed_blink(1.0, 2.0) outlines [(3, "#000")] style "replayHeader" $ ttr = GetTooltip() vpgrid: xspacing 10 yspacing 10 cols 5 align(0.5,0.5) for item in replayItemsSS: # if item.getCensored() and item.getUnlocked() and item.character == replayCharacter or (item.getCensored() and item.character == replayCharacter and persistent.unlocked): if item.getCensored() and item.getUnlocked() or (item.getCensored() and persistent.unlocked): if renpy.variant("pc"): $ scopeDict = {"quick_menu":False, "name":persistent.name, "name2":persistent.name2, "age":persistent.age, "age2":persistent.age2, "age3":persistent.age3} else: $ scopeDict = {"name":persistent.name, "name2":persistent.name2, "name3":persistent.name3, "age":persistent.age, "age2":persistent.age2, "age3":persistent.age3} $ scopeDict.update(item.scope) fixed: # background Solid("#0ed6f97F") xysize(250,145) imagebutton: xcenter 0.5 ycenter 0.5 idle Transform(item.image, zoom=0.125) hover Transform(im.MatrixColor(item.image, im.matrix.brightness(0.2)), zoom=0.125) tooltip item.label action Replay(item.label, scope=scopeDict, locked = False) if ttr == item.label: text "{}".format(item.caption) xcenter 0.5 ycenter 0.5 style "tt_textr" elif item.getCensored(): fixed: # background Solid("#0ed6f97F") xysize(250,145) imagebutton: xcenter 0.5 ycenter 0.5 idle Transform(im.Blur(item.image, 50.0), zoom=0.125) action NullAction() use sceneReplayMain label Rep_End: scene black with fade $ renpy.end_replay() return label replayNames: if not persistent.repSet: call set_names from _call_set_names return style replayHeader is text: size 60 outlines [(3,"#000",1,1)] style tt_textr is text: size 25 outlines [(3,"#000",1,1)] style RepButton is button_text: outlines [(3,"#000",1,1)] idle_color "#fff" selected_color "#ffcb4f" ## 53 68 61 64 64 79 47 61 6D 65 73