default stats_show_locked = False define her_whoring_word_list = (_("Pure"), _("Naive"), _("Curious"), _("Naughty"), _("Perverse"), _("Immoral"), _("Slutty"), _("Shameless"), _("Cumslut"), _("Total Cumslut"), _("Shameless Cumslut")) define her_reputation_word_list = (_("Teacher's Pet"), _("School Star"), _("Good girl"), _("Minx"), _("Slutty Schoolgirl"), _("Easy Lay"), _("Whore"), _("Slut for sex"), _("Gryffindor Whore"), _("School Cumdump"), _("Mudblood Cumdump")) #$ slutWords = ["Teacher's pet", "School Star", "Good Girl", "Headmaster's Pet", "Slutty Schoolgirl", "Slut", "Headmaster's Slut", "Daddy's Girl", "Gryffindor Slut", "Dumbledore's Whore", "Dumbledore's Cumdump"] define her_tutoring_word_list = (_("Not Started"), _("Naive"), _("Tempted"), _("Curious"), _("Tainted"), _("Eager"), _("Sinful"), _("Perverted"), _("Corrupted"), _("Depraved"), _("Shattered")) define her_mood_word_list = (_("Cheerful"), _("Reluctant"), _("Gloomy"), _("Stern"), _("Slightly Annoyed"), _("Annoyed"), _("Upset"), _("Outraged"), _("Mad"), _("Angry"), _("Very Angry")) #$ ast_cuteness_word_list = ["Ugly Duckling", "Swot", "", "", "", "", "", "Cutypie", "", "", ""] define ast_mood_word_list = (_("Cheerful"), _("Reluctant"), _("Gloomy"), _("Stern"), _("Slightly Annoyed"), _("Annoyed"), _("Upset"), _("Outraged"), _("Mad"), _("Angry"), _("Very Angry")) define cho_whoring_word_list = (_("Incorruptible"), _("Focused"), _("Resilient"), _("Bi-Curious"), _("Naughty"), _("Immoral"), _("Perverse"), _("Slutty"), _("Shameless"), _("Cumslut"), _("Shameless Cumslut")) define cho_reputation_word_list = (_("Tomboy"), _("Team Player"), _("Quidditch Star"), _("Flying Ace"), _("Minx"), _("Manipulative"), _("Exploiting"), _("Cheater"), _("Team's Cumdump"), _("Quidditch Whore"), _("Cheating Slut")) define cho_mood_word_list = (_("Cheerful"), _("Reluctant"), _("Gloomy"), _("Stern"), _("Slightly Annoyed"), _("Annoyed"), _("Upset"), _("Outraged"), _("Mad"), _("Angry"), _("Very Angry")) # $ sna_support_word_list = ["Tight-Arse", "Miser", "Stingy", "Sparing", "Adequate", "Loose", "Easy", "Generous", "Frivolous", "Excessive", "Exorbitant"] define sna_friendship_word_list = (_("Unknown"), _("Colleague"), _("Confidant"), _("Trusted"), _("Acquaintance"), _("Friend"), _("Good friend"), _("Homie"), _("If I had to pick a dude..."), _("BFF"), _("Bros")) define ton_reputation_word_list = (_("Teacher"), _("Bore"), _("Weirdo"), _("A Bit Nutty"), _("Easy Going"), _("Tart"), _("Naughty Teacher"), _("Slutty Teacher"), _("Slag"), _("Shameful"), _("Disgrace")) # $ ton_support_word_list = ["Undecided", "Modest", "Candid", "Unbiased", "Positive", "Fair", "Neutral", "Biased", "Scummy", "Cruel", "Heartless"] define ton_friendship_word_list = (_("Unknown"), _("Inferior"), _("Employee"), _("Advisor"), _("Trusted advisor"), _("Acquaintance"), _("Friend"), _("Girlfriend"), _("Partner in crime"), _("Bonnie & Clyde"), _("Master & Slave")) #$ ton_sluttiness_word_list = ["Masochist", "Disgrace", "Street Whore", "Harlot", "Tart", "Sexually open", "Naughty Teacher", "Easy Going", "Professor", "Bore", "Nun"] label stats: $ gui.in_context("stats_menu") jump main_room_menu define stats_categories_sorted = ("Genie", "Snape", "Tonks", "Hermione", "Cho", "Luna", "Astoria", "Susan") #"Ginny", "Daphne", "Padma", "Patil", "Myrtle", "Mafkin" # Stats dictionary define stats_dict = { "Genie": {"ico": "genie", "name": _("Genie"), "sex": _("Yes"), "height": _("6.2ft"), "weight": _("200lb"), "job": _("Headmaster"), "hates": _("Lamps"), "likes": _("Tits")}, "Snape": {"ico": "snape", "name": _("Severus Snape"), "sex": _("Male"), "height": _("5.9ft"), "weight": _("155lb"), "job": _("Teacher"), "hates": _("Everyone"), "likes": _("Rain")}, "Tonks": {"ico": "tonks", "name": _("Nymphadora Tonks"), "sex": _("Fluid"), "height": _("5.6ft"), "weight": _("130lb"), "job": _("Teacher"), "hates": _("Pineapple Pizza"), "likes": _("Girls")}, "Hermione": {"ico": "hermione", "name": _("Hermione Granger"), "sex": _("Female"), "height": _("5.2ft"), "weight": _("126lb"), "job": _("Student"), "hates": _("Slytherin"), "likes": _("Books")}, "Cho": {"ico": "cho", "name": _("Cho Chang"), "sex": _("Female"), "height": _("5.1ft"), "weight": _("122lb"), "job": _("Student"), "hates": _("Hermione"), "likes": _("Winning")}, "Luna": {"ico": "luna", "name": _("Luna Lovegood"), "sex": _("Female"), "height": _("5.2ft"), "weight": _("117lb"), "job": _("Student"), "hates": _("Wrackspurts"), "likes": _("{size=-2}Magical creatures{/size}")}, "Astoria": {"ico": "astoria", "name": _("Astoria Greengrass"), "sex": _("Female"), "height": _("5.0ft"), "weight": _("102lb"), "job": _("Student"), "hates": _("Rules"), "likes": _("Breaking them")}, "Susan": {"ico": "susan", "name": _("Susan Bones"), "sex": _("Female"), "height": _("5.1ft"), "weight": _("135lb"), "job": _("Student"), "hates": _("Chores"), "likes": _("You {size=-4}Secretly..{/size}")} } label stats_menu(xx=150, yy=90): $ renpy.dynamic( ### Hermione ### # Whoring her_whoring_word = her_whoring_word_list[int(min(states.her.level, 24)/2.4)], # Reputation her_reputation_word = her_reputation_word_list[int(min(states.her.public_level, 24)/2.4)], # Tutoring her_tutoring_word = her_tutoring_word_list[int(states.her.ev.tutoring.stage/1.5)], # Mood her_mood_word = her_mood_word_list[int(min(states.her.mood, 10)/1.0)], ### Astoria ### #call astoria_clothing_level #ast_cuteness_word = ast_cuteness_word_list[int(ast_clothing_level/10)], # Mood ast_mood_word = ast_mood_word_list[int(min(states.ast.mood, 10)/1.0)], ### Cho ### # Whoring cho_whoring_word = cho_whoring_word_list[int(min(states.cho.level, 24)/2.4)], # Reputation cho_reputation_word= cho_reputation_word_list[int(min(states.cho.public_level, 24)/2.4)], # Mood cho_mood_word = cho_mood_word_list[int(min(states.cho.mood, 10)/1.0)], ### Snape ### # # Support # sna_support_word = sna_support_word_list[int(min(sna_support, 15)/1.5)], # Friendship sna_friendship_word = sna_friendship_word_list[int(min(states.sna.level, 100)/10)], ### Tonks ### # Reputation ton_reputation_word = ton_reputation_word_list[int(min(states.ton.public_level, 24)/2.4)], # Support # ton_support_word = ton_support_word_list[int(min(ton_support, 12)/1.2)], # Friendship ton_friendship_word = ton_friendship_word_list[int(min(states.ton.level, 100)/10)], #ton_sluttiness_word = ton_sluttiness_word_list[int(ton_clothing_level/10)], ) call screen stats(xx, yy) return screen stats(xx, yy): tag stats zorder 30 modal True default stats_flags = { "Genie": True, "Snape": states.sna.unlocked, "Tonks": states.ton.unlocked, "Hermione": states.her.unlocked, "Cho": states.cho.unlocked, "Luna": states.lun.unlocked, "Astoria": states.ast.unlocked, "Susan": states.sus.unlocked, } default current_category = states.last_girl.capitalize() if states.last_girl else stats_categories_sorted[0] default current_item = stats_dict[current_category] add "gui_fade" if renpy.mobile: use close_button_background use close_button(key=["stats", "game_menu"]) fixed: pos (xx, yy) if settings.get("animations"): at gui_animation use stats_menu(current_category, stats_flags) use stats_menuitem(current_category, current_item, stats_flags) screen stats_menu(current_category, stats_flags): tag stats_menu zorder 30 modal True window: style "empty" style_prefix gui.theme('achievements') xysize (207, 454) use invisible_button() add gui.format("interface/achievements/{}/panel_left.webp") vbox: style_prefix gui.theme('achievements_filters') pos (6, 384) button action NullAction() style "empty" xsize 195 ysize 32 frame: style "empty" textbutton _("Show locked:") action ToggleVariable("stats_show_locked", True, False) add gui.theme("check_{}").format(str(stats_show_locked).lower()) xalign 0.8 ypos 4 vbox: pos (6, 6) for category in stats_categories_sorted: if not stats_show_locked and not stats_flags[category]: pass else: frame: style "empty" xysize (195, 50) vbox: textbutton (category if stats_flags[category] else "???"): style "empty" xysize (195, 46) text_align (0.6, 0.5) text_xanchor 0.5 text_size 20 if current_category == category: background gui.format("interface/achievements/{}/highlight_left_b.webp") else: hover_background gui.format("interface/achievements/{}/highlight_left_b.webp") action [ SelectedIf(SetScreenVariable("current_category", category)), SetScreenVariable("current_item", stats_dict[category]), ] add gui.format("interface/achievements/{}/spacer_left.webp") button: style gui.theme("overlay_button") background gui.format("interface/achievements/{}/iconbox.webp") foreground "interface/achievements/glass_iconbox.webp" xysize (48, 48) add crop_image_zoom("interface/icons/head/"+stats_dict.get(category).get("ico")+("" if stats_flags[category] else "_locked")+".webp", 42, 42) align (0.5, 0.5) screen stats_menuitem(current_category, current_item, stats_flags): tag stats_menuitem zorder 30 default current_subcategory = "overview" window: style "empty" style_prefix gui.theme() pos (217, -53) xysize (560, 507) use invisible_button() add gui.format("interface/achievements/{}/panel.webp") add "interface/achievements/markup.webp" text _("Characters") size 22 xalign 0.5 ypos 65 hbox: style_prefix gui.theme("tab") pos (15, 52) yanchor 0.5 textbutton _("Overview"): action SetLocalVariable("current_subcategory", "overview") textbutton _("Details"): action SetLocalVariable("current_subcategory", "details") # Character sprites frame: style "empty" xysize (200, 406) align (1.0, 1.0) offset (-10, -4) if current_category == "Genie": add "genie_stats" zoom 0.175 align (1.0, 1.0) xzoom -1 elif current_category == "Snape": if stats_flags[current_category]: add "characters/snape/main/snape_09.webp" zoom 0.35 align (0.9, 1.0) xzoom 1 else: add "interface/characters/snape_locked.webp" zoom 0.35 align (0.9, 1.0) xzoom 1 elif current_category == "Tonks": if stats_flags[current_category]: add tonks.image zoom 0.41 align (0.7, 1.0) xzoom 1 else: add "interface/characters/tonks_locked.webp" zoom 0.41 align (0.7, 1.0) xzoom 1 elif current_category == "Hermione": if stats_flags[current_category]: add hermione.image zoom 0.39 align (0.7, 1.0) xzoom 1 else: add "interface/characters/hermione_locked.webp" zoom 0.39 align (0.65, 1.0) xzoom 1 elif current_category == "Cho": if stats_flags[current_category]: add cho.image zoom 0.42 align (0.65, 1.0) xzoom 1 else: add "interface/characters/cho_locked.webp" zoom 0.42 align (0.65, 1.0) xzoom 1 elif current_category == "Luna": if stats_flags[current_category]: add luna.image zoom 0.39 align (0.75, 1.0) xzoom 1 else: add "interface/characters/luna_locked.webp" zoom 0.39 align (0.75, 1.0) xzoom 1 elif current_category == "Astoria": if stats_flags[current_category]: add astoria.image zoom 0.4 align (0.7, 1.0) xzoom 1 else: add "interface/characters/astoria_locked.webp" zoom 0.4 align (0.7, 1.0) xzoom 1 elif current_category == "Susan": if stats_flags[current_category]: add susan.image zoom 0.4 align (0.65, 1.0) xzoom 1 else: add "interface/characters/susan_locked.webp" zoom 0.4 align (0.65, 1.0) xzoom 1 frame: style "empty" xysize (360, 406) yalign 1.0 xoffset 6 if current_subcategory == "overview": if stats_flags[current_category]: text current_item["name"] size 20 xalign 0.5 ypos 5 else: text "???" size 20 xalign 0.5 ypos 5 vbox: xoffset 10 hbox: spacing 20 pos (10, 36) vbox: text _("Sex:") size 15 text _("Height:") size 15 text _("Weight:") size 15 vbox: spacing 3 if stats_flags[current_category]: text current_item["sex"] size 12 text current_item["height"] size 12 text current_item["weight"] size 12 else: text _("unknown") size 12 text _("unknown") size 12 text _("unknown") size 12 vbox: text _("Job:") size 15 text _("Hates:") size 15 text _("Likes:") size 15 vbox: spacing 3 if stats_flags[current_category]: text current_item["job"] size 12 text current_item["hates"] size 12 text current_item["likes"] size 12 else: text _("unknown") size 12 text _("unknown") size 12 text _("unknown") size 12 if stats_flags[current_category]: vbox: yoffset 35 xoffset 50 at transform: zoom 0.62 if current_category == "Genie": use stat_bar(int(100/10), _("-Lust-"), "", 100) use stat_bar(int(0/10), _("-Sanity-"), "", 0) #use stat_bar(int(speed_writing/0.25), "-Speed Writing-", "", speed_writing) #text "Jerked off -"+str(states.bird_fed_times)+"- times" elif current_category == "Snape": use stat_bar(int(3/1.0), _("-Mood-") , _("Grumpy"), 3) #use stat_bar(int(sna_support/1.5), "-Support-", sna_support_word, sna_support) # sna_support between 0 and 15. use stat_bar(int(states.sna.level/10), _("-Friendship-"), sna_friendship_word, states.sna.level) elif current_category == "Tonks": use stat_bar(int(10/1.0), _("-Mood-") , _("Content"), 10) use stat_bar(int(states.ton.tier/0.2), _("-Favour Tier-"), "", states.ton.tier) # 4 will be max. use stat_bar(int(states.ton.public_level/2.4), _("-Reputation-"), ton_reputation_word, states.ton.public_level) # Current max is 9. #use stat_bar(int(ton_support/1.2), "-Support-", ton_support_word, ton_support) # ton_support between 0 and 12. use stat_bar(int(states.ton.level/10), _("-Relationship-"), ton_friendship_word, states.ton.level) elif current_category == "Hermione": use stat_bar(int(10-states.her.mood/1.0), _("-Mood-") , her_mood_word, states.her.mood) use stat_bar(int(states.her.tier/0.6), _("-Favour Tier-"), "", states.her.tier) # 6 will be max. use stat_bar(int(states.her.level/2.4), _("-Whoring-"), her_whoring_word, states.her.level) use stat_bar(int(states.her.public_level/2.4), _("-Reputation-"), her_reputation_word, states.her.public_level) use stat_bar(int(states.her.ev.tutoring.stage/1.5), _("-Tutoring-"), her_tutoring_word, states.her.ev.tutoring.stage) elif current_category == "Cho": use stat_bar(int(10-states.cho.mood/1.0), _("-Mood-") , cho_mood_word, states.cho.mood) use stat_bar(int(states.cho.tier/0.3), _("-Favour Tier-"), "", states.cho.tier) # 4 will be max. use stat_bar(int(states.cho.level/0.9), _("-Recklessness-"), cho_whoring_word, states.cho.level) use stat_bar(int(states.cho.public_level/0.9), _("-Reputation-"), cho_reputation_word, states.cho.public_level) # TODO: Re-enable after Quidditch fixes #use stat_bar(int((cc_ht.win_counter+cc_st.win_counter)/0.6), "{size=-10}-Quidditch Training-{/size}" , "Not started", cc_ht.win_counter+cc_st.win_counter) # TODO: Add word list # TODO: Add cc_gt.match_counter & cc_gt.win_counter elif current_category == "Luna": use stat_bar(int(10-states.lun.mood/1.0), _("-Mood-"), _("Cheerful"), states.lun.mood) # TODO: Add word list use stat_bar(int(states.lun.tier/0.4), _("-Favour Tier-"), "", states.lun.tier) # 4 is max. use stat_bar(int(states.lun.level/0.9), _("-Corruption-"), _("Naive"), states.lun.level) # TODO: Add word list use stat_bar(int(10/0.9), _("-Reputation-"), _("Total Weirdo"), 10) # Joke stat #use stat_bar(int(0), "{size=-10}-Wrackspurts Therapy-{/size}" , "Not started", 0) # TODO: Add word list and variable elif current_category == "Astoria": use stat_bar(int(10-states.ast.mood/1.0), _("-Mood-") , ast_mood_word, states.ast.mood) use stat_bar(int(1/1), _("-Favour Tier-"), "", 1) use stat_bar(int(states.ast.level/0.8), _("-Affection-"), "", states.ast.level) # TODO: Add word list use stat_bar(int(3/0.9), _("-Reputation-"), _("Mischievous"), 4) # TODO: Add word list and variable, starts at level 4 #use stat_bar(int(ast_training_counter/0.9), "-Spell training-" , "Not started", ast_training_counter) # TODO: Add word list elif current_category == "Susan": use stat_bar(int(10-states.sus.mood/1.0), _("-Mood-") , _("Cheerful"), states.sus.mood) # TODO: Add word list use stat_bar(int(1/0.9), _("-Favour Tier-"), "", 1) # TODO: Add Susan tier use stat_bar(int(states.sus.level/0.9), _("-Confidence-"), _("Non-existent"), states.sus.level) # TODO: Add word list use stat_bar(int(0/0.9), _("-Reputation-"), _("Invisible"), 0) # TODO: Add word list and variable use stat_bar(int(0), _("{size=-10}-Assertiveness Training-{/size}") , _("Not started"), 0) # TODO: Add word list else: if stats_flags[current_category]: vbox: if current_category == "Genie": use text_stat(_("Bird fed:")) use text_stat("- ", _(" times -"), states.bird_fed_times) use text_stat(_("Bird petted:")) use text_stat("- ", _(" times -"), states.bird_petted_times) use text_stat(_("You missed feeding your bird for:")) use text_stat("- ", _(" days..."), (states.env.day - states.bird_fed_times) ) use text_stat(_("If you were a Quidditch player, you'd be a:")) use text_stat("- \"", "\" -", states.gen.stats.quidditch_position) # elif current_category == "Snape": # use text_stat("Hung out with Snape:") # use text_stat("- ", " times -", ss_he_drink.counter) # elif current_category == "Tonks": # use text_stat("Hung out with Tonks:") # use text_stat("- ", " times -", nt_he_drink.counter) # elif current_category == "Hermione": # # Tier 1 # use text_stat("You Jerked off in front of her:") # use text_stat("- ", " times -", states.gen.stats.masturbated_to_hermione) # use text_stat("You saw her panties:") # use text_stat("- ", " times -", hg_pf_admire_panties.counter) # use text_stat("You admired her tits:") # use text_stat("- ", " times -", hg_pf_admire_breasts.counter) # # Tier 2 # use text_stat("You groped her:") # use text_stat("- ", " times -", hg_pf_grope.counter) # # Tier 3 # use text_stat("Hermione has \"danced\" for you:") # use text_stat("- ", " times -", hg_pf_strip.counter) # # Tier 4 # use text_stat("Hermione has given you:") # use text_stat("- ", " Handjobs -", hg_pf_handjob.counter) # # Tier 5 # use text_stat("Hermione has given you:") # use text_stat("- ", " Blowjobs -", hg_pf_blowjob.counter) # use text_stat("Hermione has given you:") # use text_stat("- ", " Tit jobs -", hg_pf_titjob.counter) # # Tier 6 # use text_stat("You've had sex with her:") # use text_stat("- ", " times -", hg_pf_sex.counter) elif current_category == "Cho": use text_stat(_("You Jerked off in front of her:")) use text_stat("- ", _(" times -"), states.gen.stats.masturbated_to_cho) elif current_category == "Luna": pass elif current_category == "Astoria": pass # elif current_category == "Susan": # use text_stat("Cursed with Imperio:") # use text_stat("- ", " times -", ag_se_imperio_sb.counter) screen stat_bar(steps, top_text, bottom_text, stat_number, top_padding=20): sensitive False frame: background "#0000" ysize top_padding text top_text xalign 0.5 size 30 frame: background "#0000" xalign 0.5 ysize 30 xsize 360 add Crop((0, 0, steps*36, 600), gui.format("interface/stats/{}/bar_full.webp")) add gui.format("interface/stats/{}/bar_empty.webp") text "[bottom_text] (lvl [stat_number])" xalign 0.5 size 20 screen text_stat(startText="", endText="", amount="", top_padding = 20): sensitive False text "[startText][amount][endText]" xpos 20 size 14