#---------------------adds/enhancements for screens.rpy---------------------# #---------------------dialog/choice options---------------------# define gui.name_xpos = 310 #360 define gui.dialogue_xpos = 352 #402 define gui.dialogue_width = 1216 #1116 screen say(who, what): style_prefix "say" window: id "window" $ persistent.pref_text_size2 = persistent.pref_text_size + 10 $ KoGa3xpos2 = 520 - (6 * persistent.pref_text_size) - persistent.KoGa3xposOffset $ KoGa3xpos1 = 562 - (6 * persistent.pref_text_size) - persistent.KoGa3xposOffset $ KoGa3xsize1 = 844 + (12 * persistent.pref_text_size) + (2 * persistent.KoGa3xposOffset) if persistent.pref_text_size > 20: $ KoGa3ypos1 = 195 - (6 * persistent.pref_text_size + persistent.KoGa3yposOffset) $ KoGa3ypos2 = 210 - (6 * persistent.pref_text_size + persistent.KoGa3yposOffset) $ KoGa3ypos3 = 240 - (5 * persistent.pref_text_size + persistent.KoGa3yposOffset) $ KoGa3ypos4 = 240 - (5 * persistent.pref_text_size + persistent.KoGa3yposOffset) else: $ KoGa3ypos1 = 195 - (6 * 20 + persistent.KoGa3yposOffset) $ KoGa3ypos2 = 210 - (6 * 20 + persistent.KoGa3yposOffset) $ KoGa3ypos3 = 240 - (5 * 20 + persistent.KoGa3yposOffset) $ KoGa3ypos4 = 240 - (5 * 20 + persistent.KoGa3yposOffset) if who is not None: if KoGa3xpos1 >= 320: window background Transform(Image("textboxHigh.png",xalign=0.5, ypos=KoGa3ypos1), alpha=persistent.KoGa3TextboxOpacity) else: window background Transform(Image("textboxHighWide.png",xalign=0.5, ypos=KoGa3ypos1), alpha=persistent.KoGa3TextboxOpacity) window: id "namebox" style "namebox" xpos KoGa3xpos2 ypos KoGa3ypos2 text who id "who" size persistent.pref_text_size2 outlines [ (absolute(persistent.KoGa3TextOutline1), "#000", absolute(persistent.KoGa3TextOutline2), absolute(persistent.KoGa3TextOutline3)) ] text what id "what" xpos KoGa3xpos1 xsize KoGa3xsize1 ypos KoGa3ypos3 size persistent.pref_text_size outlines [ (absolute(persistent.KoGa3TextOutline1), "#000", absolute(persistent.KoGa3TextOutline2), absolute(persistent.KoGa3TextOutline3)) ] else: if KoGa3xpos1 >= 320: window background Transform(Image("textboxHigh.png",xalign=0.5, ypos=KoGa3ypos1), alpha=persistent.KoGa3TextboxOpacity) else: window background Transform(Image("textboxHighWide.png",xalign=0.5, ypos=KoGa3ypos1), alpha=persistent.KoGa3TextboxOpacity) text what id "what" xpos KoGa3xpos1 xsize KoGa3xsize1 ypos KoGa3ypos4 size persistent.pref_text_size outlines [ (absolute(persistent.KoGa3TextOutline1), "#000", absolute(persistent.KoGa3TextOutline2), absolute(persistent.KoGa3TextOutline3)) ] #deactivated when centered text # text what id "what" size persistent.pref_text_size outlines [ (absolute(persistent.KoGa3TextOutline1), "#000", absolute(persistent.KoGa3TextOutline2), absolute(persistent.KoGa3TextOutline3)) ] ## If there's a side image, display it above the text. Do not display on the ## phone variant - there's no room. if persistent.KoGa3SideImage is True and KoGa3xpos1 >= 320: add SideImage() xalign 0.0 yalign 1.00 define KoGa3TextboxOpacitydefault = 0.0 define KoGa3TextOutline1default = 3 define KoGa3TextOutline2default = 0 define KoGa3TextOutline3default = 0 define pref_text_sizedefault = 32 define KoGa3xposOffsetdefault = 0 define KoGa3yposOffsetdefault = 0 define persistent.KoGa3TextboxOpacity = KoGa3TextboxOpacitydefault define persistent.KoGa3TextOutline1 = KoGa3TextOutline1default define persistent.KoGa3TextOutline2 = KoGa3TextOutline2default define persistent.KoGa3TextOutline3 = KoGa3TextOutline3default define persistent.pref_text_size = pref_text_sizedefault define persistent.KoGa3xposOffset = KoGa3xposOffsetdefault define persistent.KoGa3yposOffset = KoGa3yposOffsetdefault define persistent.KoGa3SideImage = True define persistent.KoGa3OriginalInfoScreen = True style window: xalign 0.5 xfill True yalign gui.textbox_yalign ysize gui.textbox_height background (None) style say_label: properties gui.text_properties("name", accent=True) xalign 0.0 xpos 0 yalign 1.0 style say_dialogue: properties gui.text_properties("dialogue") xalign 0.0 xpos gui.dialogue_xpos xsize gui.dialogue_width yalign 0.0 ypos gui.dialogue_ypos style input_prompt: xalign gui.dialogue_text_xalign properties gui.text_properties("input_prompt") outlines [ (absolute(2), "#000", absolute(0), absolute(0)) ] style input: xalign gui.dialogue_text_xalign xmaximum gui.dialogue_width properties gui.text_properties("input") outlines [ (absolute(2), "#000", absolute(0), absolute(0)) ] style choice_vbox: xalign 0.5 yalign 0.5 yanchor 0.5 spacing gui.choice_spacing style choice_button_text is default: properties gui.button_text_properties("choice_button") outlines [(2, "#000", 0, 0)] #---------------------Quick menu---------------------# define persistent.KoGa3QuickMenuButton = 1 define persistent.KoGa3QuickMenuShow = 1 define persistent.KoGa3_QuickMenu1_button_font = "KoGa3_QuickMenu1_button_text" define KoGa3QuickMenuTextSizedefault = 20 define KoGa3TextOutline4default = 2 define KoGa3TextOutline5default = 0 define KoGa3TextOutline6default = 0 define persistent.KoGa3QuickMenuTextSize = KoGa3QuickMenuTextSizedefault define persistent.KoGa3TextOutline4 = KoGa3TextOutline4default define persistent.KoGa3TextOutline5 = KoGa3TextOutline5default define persistent.KoGa3TextOutline6 = KoGa3TextOutline6default define persistent.KoGa3QuickMenuItemBack = True define persistent.KoGa3QuickMenuItemHist = False define persistent.KoGa3QuickMenuItemHide = False define persistent.KoGa3QuickMenuItemSkip = True define persistent.KoGa3QuickMenuItemAuto = True define persistent.KoGa3QuickMenuItemSave = True define persistent.KoGa3QuickMenuItemLoad = True define persistent.KoGa3QuickMenuItemQSave = True define persistent.KoGa3QuickMenuItemQLoad = True define persistent.KoGa3QuickMenuItemPrefs = True define persistent.KoGa3QuickMenuItemModmenu = True define quick_menu = True init 999: screen quick_menu(): ## Ensure this appears on top of other screens. zorder 100 if persistent.KoGa3QuickMenuButton == 2: if persistent.KoGa3QuickMenuTextSize >= 28: mousearea: area (0, 1000, 1920, 80) hovered SetVariable("persistent.KoGa3QuickMenuShow", 1) unhovered SetVariable("persistent.KoGa3QuickMenuShow", 0) else: mousearea: area (0, 1040, 1920, 40) hovered SetVariable("persistent.KoGa3QuickMenuShow", 1) unhovered SetVariable("persistent.KoGa3QuickMenuShow", 0) if persistent.KoGa3QuickMenuShow == 1: hbox: style_prefix "quick" $ persistent.KoGa3_QuickMenu1_button_font = "KoGa3_QuickMenu1_button_text" $ persistent.KoGa3_QuickMenu2_button_font = "KoGa3_QuickMenu2_button_text" xalign 0.5 yalign 1.0 if persistent.KoGa3QuickMenuItemBack: textbutton _("Back"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action Rollback() if persistent.KoGa3QuickMenuItemHist: textbutton _("Hist"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action ShowMenu('history') if persistent.KoGa3QuickMenuItemHide: textbutton _("Hide"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action HideInterface() if persistent.KoGa3QuickMenuItemSkip: textbutton _("Skip"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action Skip() alternate Skip(fast=True, confirm=True) if persistent.KoGa3QuickMenuItemAuto: textbutton _("Auto"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action Preference("auto-forward", "toggle") if persistent.KoGa3QuickMenuItemSave: textbutton _("Save"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action ShowMenu('save') if persistent.KoGa3QuickMenuItemLoad: textbutton _("Load"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action ShowMenu('load') if persistent.KoGa3QuickMenuItemQSave: textbutton _("Q.Save"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action QuickSave() if persistent.KoGa3QuickMenuItemQLoad: textbutton _("Q.Load"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action QuickLoad() if persistent.KoGa3QuickMenuItemPrefs: textbutton _("Prefs"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] action ShowMenu('preferences') if persistent.KoGa3QuickMenuItemModmenu: hbox: spacing 10 if KoGa3ModMenuButtonPressed == False: textbutton _("Mod menu"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] selected False action [ SetVariable ("KoGa3ModMenuButtonPressed", True), Show("KoGa3GameSettings") ] if KoGa3ModMenuButtonPressed == True: textbutton _("Close Mod menu"): text_style persistent.KoGa3_QuickMenu1_button_font text_size persistent.KoGa3QuickMenuTextSize text_outlines [ (absolute(persistent.KoGa3TextOutline4), "#000", absolute(persistent.KoGa3TextOutline5), absolute(persistent.KoGa3TextOutline6)) ] selected False action [ SetVariable ("KoGa3ModMenuButtonPressed", False), Hide("KoGa3ScreenCheat"), Hide("KoGa3ScreenModMenu"), Hide("KoGa3ScreenCheatMore1"), Hide("KoGa3ScreenJukebox"), Hide("KoGa3QuickMusicMenu"), Hide("KoGa3ScreenBlank"), Hide("KoGa3ScreenAudioMenu"), Hide("KoGa3GameSettingsQuickMenu"), Hide("KoGa3GameSettings") ] #---------------------Named saves---------------------# define persistent.KoGa3NamedSaves = 1 #(0 or 2 for Android) define KoGa3Saveyoffset = -285 image KoGa3MenuBack_save = "KoGa3MenuBack_save.png" label KoGa3NamedSaveInput: show KoGa3MenuBack_save $ save_name = renpy.input("Save name: ", default=save_name) hide KoGa3MenuBack_save return screen file_slots(title): default page_name_value = FilePageNameInputValue(pattern=_("Page {}"), auto=_("Automatic saves"), quick=_("Quick saves")) use game_menu(title): fixed: order_reverse True button: style "page_label" key_events True xalign 0.5 ypos -175 action page_name_value.Toggle() input: style "page_label_text" value page_name_value ## The grid of file slots. grid gui.file_slot_cols gui.file_slot_rows: style_prefix "slot" xalign 0.5 yalign 0.5 spacing gui.slot_spacing for i in range(gui.file_slot_cols * gui.file_slot_rows): $ slot = i + 1 if persistent.KoGa3NamedSaves == 2 and title == "Save": button: action [ ui.callsinnewcontext("KoGa3NamedSaveInput"), FileAction(slot) ] has vbox add FileScreenshot(slot) xalign 0.5 text FileTime(slot, format=_("{#file_time}%a, %B %d %Y, %H:%M"), empty=_("empty slot")): style "slot_time_text" size 24 text FileSaveName(slot): style "slot_name_text" size 24 if FileLoadable(slot): imagebutton: idle "button_delete_idle.png" hover "button_delete_hover.png" action FileDelete(slot) xalign 1.0 xoffset 10 #yalign 1.0 yoffset KoGa3Saveyoffset key "save_delete" action FileDelete(slot) else: button: action [ #ui.callsinnewcontext("KoGa3NamedSaveInput"), FileAction(slot) ] has vbox add FileScreenshot(slot) xalign 0.5 text FileTime(slot, format=_("{#file_time}%a, %B %d %Y, %H:%M"), empty=_("empty slot")): style "slot_time_text" size 24 text FileSaveName(slot): style "slot_name_text" size 24 if FileLoadable(slot): imagebutton: idle "button_delete_idle.png" hover "button_delete_hover.png" action FileDelete(slot) xalign 1.0 xoffset 10 #yalign 1.0 yoffset KoGa3Saveyoffset key "save_delete" action FileDelete(slot) if title == "Save": vbox: ypos -25 hbox: textbutton _("Named saves: "): xpos 50 text_size 30 text_font "KoGa3.ttf" #style "mute_all_button" sensitive False action NullAction() if persistent.KoGa3NamedSaves == 1: textbutton _("ON - input field (best for PC)"): xpos 50 text_size 30 text_font "KoGa3.ttf" #style "mute_all_button" selected False action [ SetVariable("persistent.KoGa3NamedSaves", 2) ] if persistent.KoGa3NamedSaves == 2: textbutton _("ON - get asked (best for Android)"): xpos 50 text_size 30 text_font "KoGa3.ttf" #style "mute_all_button" selected False action [ SetVariable("persistent.KoGa3NamedSaves", 0), SetVariable("save_name","") ] if persistent.KoGa3NamedSaves == 0: textbutton _("OFF"): xpos 50 text_size 30 text_font "KoGa3.ttf" #style "mute_all_button" selected False action [ SetVariable("persistent.KoGa3NamedSaves", 1)] if persistent.KoGa3NamedSaves > 0: hbox: textbutton _("current: "): xpos 50 ypos 0 text_size 30 text_font "KoGa3.ttf" #style "mute_all_button" sensitive False action NullAction() if persistent.KoGa3NamedSaves == 1: button: #style "page_label" key_events True xpos 50 ypos -2 input: font "KoGa3.ttf" size 30 value VariableInputValue('save_name') color "#8e6439" if persistent.KoGa3NamedSaves == 2: textbutton _("[save_name]"): xpos 50 text_size 30 text_font "KoGa3.ttf" #style "mute_all_button" sensitive False action NullAction() ## Buttons to access other pages. hbox: style_prefix "page" xalign 0.5 yalign 1.0 spacing gui.page_spacing textbutton _("<") action FilePagePrevious() if config.has_autosave: textbutton _("{#auto_page}A") action FilePage("auto") if config.has_quicksave: textbutton _("{#quick_page}Q") action FilePage("quick") ## range(1, 10) gives the numbers from 1 to 9. for page in range(1, 10): textbutton "[page]" action FilePage(page) textbutton _(">") action FilePageNext() #---------------------Preferences adds---------------------# screen preferences(): tag menu use game_menu(_("Preferences"), scroll="viewport"): vbox: hbox: box_wrap True if renpy.variant("pc") or renpy.variant("web"): vbox: style_prefix "radio" label _("Display") textbutton _("Window") action Preference("display", "window") textbutton _("Fullscreen") action Preference("display", "fullscreen") else: vbox: style_prefix "radio" label _("Rollback Side") textbutton _("Disable") action Preference("rollback side", "disable") textbutton _("Left") action Preference("rollback side", "left") textbutton _("Right") action Preference("rollback side", "right") vbox: style_prefix "check" label _("Skip") textbutton _("Unseen Text") action Preference("skip", "toggle") textbutton _("After Choices") action Preference("after choices", "toggle") textbutton _("Transitions") action InvertSelected(Preference("transitions", "toggle")) vbox: style_prefix "check" label _("Languages") textbutton _("English") action Language(None) textbutton _("Spanish") action Language("es") textbutton _("Portuguese") action Language("portuguese") ## Additional vboxes of type "radio_pref" or "check_pref" can be ## added here, to add additional creator-defined preferences. null height (4 * gui.pref_spacing) hbox: style_prefix "slider" box_wrap True vbox: label _("Text Speed") bar value Preference("text speed") label _("Auto-Forward Time") bar value Preference("auto-forward time") #=====================================KoGa3 additions====================================# null height (4 * gui.pref_spacing) label _("Mod KoGa3") textbutton _("Settings..."): sensitive True action [ Show("KoGa3ScreenBlank"), Show("KoGa3GameSettings") ] #=====================================KoGa3 additions====================================# vbox: if config.has_music: label _("Music Volume") hbox: bar value Preference("music volume") if config.has_sound: label _("Sound Volume") hbox: bar value Preference("sound volume") if config.sample_sound: textbutton _("Test") action Play("sound", config.sample_sound) if config.has_voice: label _("Voice Volume") hbox: bar value Preference("voice volume") if config.sample_voice: textbutton _("Test") action Play("voice", config.sample_voice) if config.has_music or config.has_sound or config.has_voice: null height gui.pref_spacing textbutton _("Mute All"): action Preference("all mute", "toggle") style "mute_all_button" #---------------------Gallery / Replay unlock---------------------# default persistent.KoGa3GalleryUnlock = True init 1001: screen gallery(): tag menu add "gray" $start = gallery_page * maxperpage $end = min(start + maxperpage - 1, len(gallery_items) - 1) #grid for images grid maxnumx maxnumy: xfill True yfill True for i in range(start, end + 1): $gallery_items[i].refresh_lock() if gallery_items[i].is_locked and persistent.KoGa3GalleryUnlock is False: add gallery_items[i].locked: xalign 0.5 yalign 0.5 else: imagebutton idle gallery_items[i].thumb: style "gallery_button" #delete this line to remove hover action Show("gallery_closeup", dissolve, gallery_items[i].images) xalign 0.5 yalign 0.5 #required to fill in empty grid items for i in range(end - start + 1, maxperpage): null #grid for info grid maxnumx maxnumy: xfill True yfill True for i in range(start, end + 1): hbox: spacing maxthumbx - 20 xalign 0.5 yalign 0.1 text gallery_items[i].name #required to fill in empty grid items for i in range(end - start + 1, maxperpage): null #previous/next buttons if gallery_page > 0: textbutton "{color=#000}Previous{/color}": action SetVariable("gallery_page", gallery_page - 1) xalign 0.1 yalign 0.98 background "#fff8" if (gallery_page + 1) * maxperpage < len(gallery_items): textbutton "{color=#000}Next{/color}": action SetVariable("gallery_page", gallery_page + 1) xalign 0.9 yalign 0.98 background "#fff8" #return button textbutton "{color=#000}Return{/color}": action Return() xalign 0.5 yalign 0.98 background "#fff8" hbox: xalign 0.5 yalign 0.0 if persistent.KoGa3GalleryUnlock is True: textbutton ("Mod: Unlock is ON "): text_outlines [ (absolute(5), "#002e63", absolute(0), absolute(0)) ] text_size 30 action SetVariable("persistent.KoGa3GalleryUnlock", False) if persistent.KoGa3GalleryUnlock is False: textbutton ("Mod: Unlock is OFF"): text_outlines [ (absolute(5), "#002e63", absolute(0), absolute(0)) ] text_size 30 action SetVariable("persistent.KoGa3GalleryUnlock", True) init 1001: screen replay_gallery(): tag menu add "black" $start = replay_page * 9 $end = min(start + 9 - 1, len(Replay_items) - 1) #grid for images grid 3 3: xfill True yfill True for i in range(start, end + 1): if renpy.seen_label(Replay_items[i].replay) or persistent.KoGa3GalleryUnlock is True: imagebutton idle Replay_items[i].thumbs: style "replay_button" #delete this line to remove hover action Replay(Replay_items[i].replay, locked=False) xalign 0.5 yalign 0.5 else: vbox xalign 0.5 yalign 0.5: image "replay_locked" #image "lockedthumb" #if you're using the gallery use the same image (optional) #required to fill in empty grid items (do not change) for i in range(end - start + 1, 9): null #grid for info grid 3 3: xfill True yfill True for i in range(start, end + 1): if renpy.seen_label(Replay_items[i].replay) or persistent.KoGa3GalleryUnlock is True: hbox: spacing maxthumbx - 20 xalign 0.5 yalign 0.1 text Replay_items[i].name else: null #required to fill in empty grid items (do not change) for i in range(end - start + 1, 9): null #previous/next buttons if replay_page > 0: textbutton "{color=#fff}Previous{/color}": action SetVariable("replay_page", replay_page - 1) xalign 0.1 yalign 0.98 background "#000" if (replay_page + 1) * 9 < len(Replay_items): textbutton "{color=#fff}Next{/color}": action SetVariable("replay_page", replay_page + 1) xalign 0.9 yalign 0.98 background "#000" #return button textbutton "{color=#fff}Return{/color}": action Return() xalign 0.5 yalign 0.98 background "#000" hbox: xalign 0.5 yalign 0.0 if persistent.KoGa3GalleryUnlock is True: textbutton ("Mod: Unlock is ON "): text_outlines [ (absolute(5), "#002e63", absolute(0), absolute(0)) ] text_size 30 action SetVariable("persistent.KoGa3GalleryUnlock", False) if persistent.KoGa3GalleryUnlock is False: textbutton ("Mod: Unlock is OFF"): text_outlines [ (absolute(5), "#002e63", absolute(0), absolute(0)) ] text_size 30 action SetVariable("persistent.KoGa3GalleryUnlock", True) init 1001: screen story_mode(): tag menu add "black" $start = story_page * 9 $end = min(start + 9 - 1, len(Story_items) - 1) #grid for images grid 3 3: xfill True yfill True for i in range(start, end + 1): if renpy.seen_label(Story_items[i].story) or persistent.KoGa3GalleryUnlock is True: imagebutton idle Story_items[i].thumbs: style "replay_button" #delete this line to remove hover action Replay(Story_items[i].story, locked=False) xalign 0.5 yalign 0.5 else: vbox xalign 0.5 yalign 0.5: image "replay_locked" #image "lockedthumb" #if you're using the gallery use the same image (optional) #required to fill in empty grid items (do not change) for i in range(end - start + 1, 9): null #grid for info grid 3 3: xfill True yfill True for i in range(start, end + 1): if renpy.seen_label(Story_items[i].story) or persistent.KoGa3GalleryUnlock is True: hbox: spacing maxthumbx - 20 xalign 0.5 yalign 0.1 text Story_items[i].name else: null #required to fill in empty grid items (do not change) for i in range(end - start + 1, 9): null #previous/next buttons if story_page > 0: textbutton "{color=#fff}Previous{/color}": action SetVariable("story_page", story_page - 1) xalign 0.1 yalign 0.98 background "#000" if (story_page + 1) * 9 < len(Story_items): textbutton "{color=#fff}Next{/color}": action SetVariable("story_page", story_page + 1) xalign 0.9 yalign 0.98 background "#000" #return button textbutton "{color=#fff}Return{/color}": action Return() xalign 0.5 yalign 0.98 background "#000" hbox: xalign 0.5 yalign 0.0 if persistent.KoGa3GalleryUnlock is True: textbutton ("Mod: Unlock is ON "): text_outlines [ (absolute(5), "#002e63", absolute(0), absolute(0)) ] text_size 30 action SetVariable("persistent.KoGa3GalleryUnlock", False) if persistent.KoGa3GalleryUnlock is False: textbutton ("Mod: Unlock is OFF"): text_outlines [ (absolute(5), "#002e63", absolute(0), absolute(0)) ] text_size 30 action SetVariable("persistent.KoGa3GalleryUnlock", True)