Convert Hermione's Public Requests

* Converted Hermione's public requests into the queue system.
* Replaced event checks with status checks for the affected events.
* Ignore local labels in event completion tracking
* Improved readability for debug outputs
* Skip Luna intro on dev
This commit is contained in:
LoafyLemon 2023-06-27 19:02:35 +01:00
parent cb389e7ca9
commit 3ce6198359
18 changed files with 317 additions and 309 deletions

View File

@ -1045,7 +1045,7 @@ label flasher_scene:
her @ cheeks blush "You... You want me to say that I..." ("open", "happy", "base", "R") her @ cheeks blush "You... You want me to say that I..." ("open", "happy", "base", "R")
gen "Enjoy showing off your body..." ("base", xpos="far_left", ypos="head") gen "Enjoy showing off your body..." ("base", xpos="far_left", ypos="head")
if hg_pr_flash.counter > 0: if states.her.status.public_stripping:
gen "That you like when people are watching you, especially when you're naked." ("base", xpos="far_left", ypos="head") gen "That you like when people are watching you, especially when you're naked." ("base", xpos="far_left", ypos="head")
else: else:
gen "That you like showing yourself off to me..." ("base", xpos="far_left", ypos="head") gen "That you like showing yourself off to me..." ("base", xpos="far_left", ypos="head")

View File

@ -148,7 +148,7 @@ label her_potion_ass_give:
else: #Drank but failed public variant before else: #Drank but failed public variant before
gen "I'd like you to go to class this time..." ("base", xpos="far_left", ypos="head") gen "I'd like you to go to class this time..." ("base", xpos="far_left", ypos="head")
if hg_pr_flash.counter > 0: ## Triggers public return event ## if states.her.status.public_stripping: ## Triggers public return event ##
if not states.her.ev.potions.ass_expand_drank: if not states.her.ev.potions.ass_expand_drank:
her "Alright..." ("angry", "squint", "base", "R") her "Alright..." ("angry", "squint", "base", "R")
@ -1034,7 +1034,7 @@ label her_potion_ass_give:
#End section #End section
gen "Well you best be off to class." ("base", xpos="far_left", ypos="head") gen "Well you best be off to class." ("base", xpos="far_left", ypos="head")
if hg_pr_flash.counter > 0: if states.her.status.public_stripping:
her @ cheeks blush "Alright..." ("open", "narrow", "base", "down") #surprised her @ cheeks blush "Alright..." ("open", "narrow", "base", "down") #surprised
else: else:
her @ cheeks blush "... With my butt looking like this?" ("soft", "narrow", "base", "down") her @ cheeks blush "... With my butt looking like this?" ("soft", "narrow", "base", "down")

View File

@ -219,7 +219,7 @@ label her_potion_breasts_give:
call her_walk("door") call her_walk("door")
if hg_pr_flash.counter > 0: ## Triggers public return event ## if states.her.status.public_stripping: ## Triggers public return event ##
# Variant where she's used to flashing people. # Variant where she's used to flashing people.
if not states.her.ev.potions.breast_expand_drank: if not states.her.ev.potions.breast_expand_drank:
@ -837,7 +837,7 @@ label her_potion_breasts_give:
else: else:
her @ cheeks blush "I'll head out as soon as the effects wear off." ("open", "closed", "base", "mid") her @ cheeks blush "I'll head out as soon as the effects wear off." ("open", "closed", "base", "mid")
if hg_pr_flash.counter > 0: if states.her.status.public_stripping:
gen "It's not like you haven't gone topless in public before, have you?" ("base", xpos="far_left", ypos="head") gen "It's not like you haven't gone topless in public before, have you?" ("base", xpos="far_left", ypos="head")
her @ cheeks blush "Yes but--" ("angry", "narrow", "base", "mid", flip=False, trans=dissolve) her @ cheeks blush "Yes but--" ("angry", "narrow", "base", "mid", flip=False, trans=dissolve)

View File

@ -1,23 +1,29 @@
### Flash A Classmate ### ### Flash A Classmate ###
label hg_pr_flash: label start_hg_pr_flash:
# Setup # Setup
$ current_payout = 25 $ current_payout = 25
if hg_pr_flash.counter == 0: if not _events_completed_any:
gen "{size=-4}(Tell her to flash her tits to one of her classmates?){/size}" ("base", xpos="far_left", ypos="head") gen "{size=-4}(Tell her to flash her tits to one of her classmates?){/size}" ("base", xpos="far_left", ypos="head")
menu: menu:
"\"(Yes, let's do it!)\"": "\"(Yes, let's do it!)\"":
pass pass
"\"(Not right now.)\"": "\"(Not right now.)\"":
$ _event.cancel()
jump hermione_favor_menu jump hermione_favor_menu
return
label hg_pr_flash:
call start_hg_pr_flash
her "" (xpos="mid", ypos="base", trans=fade) her "" (xpos="mid", ypos="base", trans=fade)
#Intro. #Intro.
if hg_pr_flash.counter == 0: if not _events_completed_any:
gen "[name_hermione_genie]..." ("base", xpos="far_left", ypos="head") gen "[name_hermione_genie]..." ("base", xpos="far_left", ypos="head")
gen "I would like to award Gryffindor with twenty-five house points today." ("base", xpos="far_left", ypos="head") gen "I would like to award Gryffindor with twenty-five house points today." ("base", xpos="far_left", ypos="head")
her "Really?" ("grin", "base", "base", "mid") her "Really?" ("grin", "base", "base", "mid")
@ -33,6 +39,7 @@ label hg_pr_flash:
her "?!!" ("shock", "wide", "base", "stare") her "?!!" ("shock", "wide", "base", "stare")
if states.her.public_level < 6: if states.her.public_level < 6:
$ _event.cancel()
jump too_much_public jump too_much_public
play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed
@ -99,11 +106,16 @@ label hg_pr_flash:
call her_walk(action="leave") call her_walk(action="leave")
$ hg_pr_flash.inProgress = True
jump end_hermione_event jump end_hermione_event
label hg_pr_flash_fail:
call start_hg_pr_flash
jump too_much
label end_hg_pr_flash: label end_hg_pr_flash:
$ gryffindor += current_payout $ gryffindor += current_payout
$ states.her.status.public_stripping = True
gen "The Gryffindor house gets {number=current_payout} points!" ("base", xpos="far_left", ypos="head") gen "The Gryffindor house gets {number=current_payout} points!" ("base", xpos="far_left", ypos="head")
her "Thank you, [name_genie_hermione]." her "Thank you, [name_genie_hermione]."
@ -114,7 +126,7 @@ label end_hg_pr_flash:
pause.2 pause.2
# Inner monologue # Inner monologue
if hg_pr_flash.counter == 1: if not _events_completed_any:
her "(Stupid Slytherins...)" ("angry", "narrow", "angry", "mid", xpos="far_right", flip=True, trans=d3) her "(Stupid Slytherins...)" ("angry", "narrow", "angry", "mid", xpos="far_right", flip=True, trans=d3)
her "(I {b}HATE{/b} them!)" ("angry", "closed", "worried", "mid") her "(I {b}HATE{/b} them!)" ("angry", "closed", "worried", "mid")
@ -136,10 +148,9 @@ label end_hg_pr_flash:
label .quick_end: label .quick_end:
# Increase Points # Increase Points
if not hg_pr_flash.is_tier_complete(): if not _events_filtered_completed_all:
$ states.her.public_level += 1 $ states.her.public_level += 1
$ hg_pr_flash.inProgress = False
jump end_hermione_event jump end_hermione_event
label hg_pr_flash_intro: label hg_pr_flash_intro:
@ -149,7 +160,7 @@ label hg_pr_flash_intro:
gen "Did you complete your task?" ("base", xpos="far_left", ypos="head") gen "Did you complete your task?" ("base", xpos="far_left", ypos="head")
her "I did as you asked, [name_genie_hermione]..." ("open", "base", "base", "R") her "I did as you asked, [name_genie_hermione]..." ("open", "base", "base", "R")
if hg_pr_flash.is_tier_complete(): if _events_filtered_completed_all:
menu: menu:
"\"Great. Here are your points.\"": "\"Great. Here are your points.\"":
jump end_hg_pr_flash jump end_hg_pr_flash
@ -159,7 +170,7 @@ label hg_pr_flash_intro:
stop music fadeout 3.0 stop music fadeout 3.0
if hg_pr_flash.counter == 1: if not _events_completed_any:
her "......" ("annoyed", "narrow", "angry", "R") her "......" ("annoyed", "narrow", "angry", "R")
her "Well... *Ehm*..." ("soft", "base", "base", "R") her "Well... *Ehm*..." ("soft", "base", "base", "R")
gen "Speak up, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") gen "Speak up, [name_hermione_genie]." ("base", xpos="far_left", ypos="head")

View File

@ -6,13 +6,14 @@ label hg_pr_flirt:
# Setup # Setup
$ current_payout = 5 $ current_payout = 5
if hg_pr_flirt.counter == 0: if not _events_completed_any:
gen "{size=-4}(Ask her to go flirt with some boys from Slytherin?){/size}" ("base", xpos="far_left", ypos="head") gen "{size=-4}(Ask her to go flirt with some boys from Slytherin?){/size}" ("base", xpos="far_left", ypos="head")
menu: menu:
"\"(Yes, let's do it!)\"": "\"(Yes, let's do it!)\"":
pass pass
"\"(Not right now.)\"": "\"(Not right now.)\"":
$ _event.cancel()
jump hermione_favor_menu jump hermione_favor_menu
her "" (xpos="mid", ypos="base", trans=fade) her "" (xpos="mid", ypos="base", trans=fade)
@ -20,7 +21,7 @@ label hg_pr_flirt:
her "Yes?" ("soft", "base", "base", "mid") her "Yes?" ("soft", "base", "base", "mid")
#Intro. #Intro.
if hg_pr_flirt.counter == 0: if not _events_completed_any:
gen "What is your opinion on the boys of the Slytherin house?" ("base", xpos="far_left", ypos="head") gen "What is your opinion on the boys of the Slytherin house?" ("base", xpos="far_left", ypos="head")
her "I detest them, [name_genie_hermione]." ("angry", "base", "angry", "mid") her "I detest them, [name_genie_hermione]." ("angry", "base", "angry", "mid")
gen "Well, too bad. Because I want you to get really friendly with a few of them today." ("base", xpos="far_left", ypos="head") gen "Well, too bad. Because I want you to get really friendly with a few of them today." ("base", xpos="far_left", ypos="head")
@ -56,7 +57,7 @@ label hg_pr_flirt:
her "Fine." ("upset", "base", "angry", "R") her "Fine." ("upset", "base", "angry", "R")
her "If I have to, [name_genie_hermione]..." ("normal", "squint", "angry", "mid") her "If I have to, [name_genie_hermione]..." ("normal", "squint", "angry", "mid")
else: else:
if hg_pr_flirt.counter == 1: if _events_filtered_completed_any:
gen "I need you to go make some new friends at the Slytherin house." ("base", xpos="far_left", ypos="head") gen "I need you to go make some new friends at the Slytherin house." ("base", xpos="far_left", ypos="head")
her "You mean you need me to flirt with the Slytherin boys again [name_genie_hermione]?" her "You mean you need me to flirt with the Slytherin boys again [name_genie_hermione]?"
gen "That's exactly what I need you to do today, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") gen "That's exactly what I need you to do today, [name_hermione_genie]." ("base", xpos="far_left", ypos="head")
@ -80,11 +81,13 @@ label hg_pr_flirt:
her "Well, I'd better go now. Classes are about to start..." her "Well, I'd better go now. Classes are about to start..."
call her_walk(action="leave") call her_walk(action="leave")
$ hg_pr_flirt.inProgress = True
jump end_hermione_event jump end_hermione_event
# End Event # End Event
label end_hg_pr_flirt: label end_hg_pr_flirt:
$ states.her.ev.flirt_with_students.done_before = True
$ gryffindor += current_payout $ gryffindor += current_payout
gen "The Gryffindor house gets {number=current_payout} points!" ("base", xpos="far_left", ypos="head") gen "The Gryffindor house gets {number=current_payout} points!" ("base", xpos="far_left", ypos="head")
@ -96,7 +99,7 @@ label end_hg_pr_flirt:
pause.2 pause.2
# Inner monologue # Inner monologue
if hg_pr_flirt.counter == 1: if not _events_completed_any:
her "(........)" ("disgust", "base", "worried", "down", ypos="base", xpos="base", flip=True, trans=d3) her "(........)" ("disgust", "base", "worried", "down", ypos="base", xpos="base", flip=True, trans=d3)
her "(I'll need to read about this whole \"flirting\" thing...)" ("annoyed", "base", "angry", "L") her "(I'll need to read about this whole \"flirting\" thing...)" ("annoyed", "base", "angry", "L")
@ -106,10 +109,9 @@ label end_hg_pr_flirt:
label .quick_end: label .quick_end:
# Increase Points # Increase Points
if not hg_pr_flirt.is_tier_complete(): if not _events_filtered_completed_all:
$ states.her.public_level += 1 $ states.her.public_level += 1
$ hg_pr_flirt.inProgress = False
jump end_hermione_event jump end_hermione_event
label hg_pr_flirt_intro: label hg_pr_flirt_intro:
@ -121,7 +123,7 @@ label hg_pr_flirt_intro:
her "I did as you asked, [name_genie_hermione]..." ("open", "base", "base", "R") her "I did as you asked, [name_genie_hermione]..." ("open", "base", "base", "R")
her "" ("normal", "base", "base", "R") her "" ("normal", "base", "base", "R")
if hg_pr_flirt.is_tier_complete(): if _events_filtered_completed_all:
menu: menu:
"\"Great. You earned your points.\"": "\"Great. You earned your points.\"":
jump end_hg_pr_flirt jump end_hg_pr_flirt
@ -131,7 +133,7 @@ label hg_pr_flirt_intro:
stop music fadeout 3.0 stop music fadeout 3.0
if hg_pr_flirt.counter == 1: if not _events_completed_any:
her "......" ("annoyed", "narrow", "angry", "R") her "......" ("annoyed", "narrow", "angry", "R")
her "So...{w=0.4} *Ehm*." ("soft", "base", "base", "R") her "So...{w=0.4} *Ehm*." ("soft", "base", "base", "R")
@ -270,8 +272,6 @@ label hg_pr_flirt_T1_E3:
gen "Dismissed!" ("base", xpos="far_left", ypos="head") gen "Dismissed!" ("base", xpos="far_left", ypos="head")
call her_walk(action="leave") call her_walk(action="leave")
$ hg_pr_flirt.inProgress = False
jump end_hermione_event jump end_hermione_event
### Tier 2 - LVL 3-6 ### ### Tier 2 - LVL 3-6 ###
@ -423,7 +423,7 @@ label hg_pr_flirt_T3_E2:
play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed # Music play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed # Music
her "I had two dates, and seven quite pleasant conversations..." ("smile", "happyCl", "base", "mid") her "I had two dates, and seven quite pleasant conversations..." ("smile", "happyCl", "base", "mid")
if hg_pr_kiss.counter >= 1: if states.her.status.public_kissing:
her @ cheeks blush "I even let this one guy kiss me on the lips..." ("soft", "base", "base", "R") her @ cheeks blush "I even let this one guy kiss me on the lips..." ("soft", "base", "base", "R")
else: else:
her "I even let this one guy kiss me on the cheek..." ("grin", "base", "base", "R") her "I even let this one guy kiss me on the cheek..." ("grin", "base", "base", "R")

View File

@ -7,21 +7,22 @@ label hg_pr_flirt_teacher:
# Setup # Setup
$ current_payout = 15 $ current_payout = 15
if hg_pr_flirt_teacher.counter == 0: if not _events_completed_any:
gen "{size=-4}(Tell her to be flirtatious with her teachers today?){/size}" ("base", xpos="far_left", ypos="head") gen "{size=-4}(Tell her to be flirtatious with her teachers today?){/size}" ("base", xpos="far_left", ypos="head")
menu: menu:
"\"(Yes, let's do it!)\"": "\"(Yes, let's do it!)\"":
pass pass
"\"(Not right now.)\"": "\"(Not right now.)\"":
$ _event.cancel()
jump hermione_favor_menu jump hermione_favor_menu
her "" (xpos="right", ypos="base", trans=fade) her "" (xpos="right", ypos="base", trans=fade)
gen "[name_hermione_genie], I want you to be especially flirtatious with your teachers today." ("base", xpos="far_left", ypos="head") gen "[name_hermione_genie], I want you to be especially flirtatious with your teachers today." ("base", xpos="far_left", ypos="head")
#Intro #Intro
if hg_pr_flirt_teacher.counter == 0: if not _events_completed_any:
if hg_pr_flirt.counter > 0: if states.her.ev.flirt_with_students.done_before:
her "I will do my best, [name_genie_hermione]!" ("base", "base", "base", "mid") her "I will do my best, [name_genie_hermione]!" ("base", "base", "base", "mid")
her "Now I understand why you asked me to flirt with these pesky Slytherin boys." ("open", "closed", "angry", "mid") her "Now I understand why you asked me to flirt with these pesky Slytherin boys." ("open", "closed", "angry", "mid")
her "I am glad you finally decided to act, [name_genie_hermione]!" ("open", "base", "base", "mid") her "I am glad you finally decided to act, [name_genie_hermione]!" ("open", "base", "base", "mid")
@ -48,7 +49,6 @@ label hg_pr_flirt_teacher:
call her_walk(action="leave") call her_walk(action="leave")
$ hg_pr_flirt_teacher.inProgress = True
jump end_hermione_event jump end_hermione_event
@ -69,10 +69,9 @@ label end_hg_pr_flirt_teacher:
label .quick_end: label .quick_end:
# Increase Points # Increase Points
if not hg_pr_flirt_teacher.is_tier_complete(): if not _events_filtered_completed_all:
$ states.her.public_level += 1 $ states.her.public_level += 1
$ hg_pr_flirt_teacher.inProgress = False
jump end_hermione_event jump end_hermione_event
label hg_pr_flirt_teacher_intro: label hg_pr_flirt_teacher_intro:
@ -84,7 +83,7 @@ label hg_pr_flirt_teacher_intro:
gen "Did you complete your task?" ("base", xpos="far_left", ypos="head") gen "Did you complete your task?" ("base", xpos="far_left", ypos="head")
her "I did as you asked [name_genie_hermione]..." her "I did as you asked [name_genie_hermione]..."
if hg_pr_flirt_teacher.is_tier_complete(): # If you have seen all events in this tier once, you get the choice to skip it. if _events_completed_all: # If you have seen all events in this tier once, you get the choice to skip it.
menu: menu:
"\"Great. Here are your points.\"": "\"Great. Here are your points.\"":
jump end_hg_pr_flirt_teacher jump end_hg_pr_flirt_teacher
@ -94,7 +93,7 @@ label hg_pr_flirt_teacher_intro:
gen "Tell me, [name_hermione_genie], which teachers did you flirt with?" ("base", xpos="far_left", ypos="head") gen "Tell me, [name_hermione_genie], which teachers did you flirt with?" ("base", xpos="far_left", ypos="head")
if hg_pr_flirt_teacher.counter == 1: if not _events_completed_any:
her "*Ehm*... Okay..." ("soft", "base", "base", "R") her "*Ehm*... Okay..." ("soft", "base", "base", "R")
return return

View File

@ -1,23 +1,29 @@
### Give Classmate A Blowjob ### ### Give Classmate A Blowjob ###
label hg_pr_blowjob: label start_hg_pr_blowjob:
# Setup # Setup
$ current_payout = 65 $ current_payout = 65
if hg_pr_blowjob.counter == 0: if not _events_completed_any:
gen "{size=-4}(Tell her to go give a blowjob to one of her classmates?){/size}" ("base", xpos="far_left", ypos="head") gen "{size=-4}(Tell her to go give a blowjob to one of her classmates?){/size}" ("base", xpos="far_left", ypos="head")
menu: menu:
"\"(Yes, let's do it!)\"": "\"(Yes, let's do it!)\"":
pass pass
"\"(Not right now.)\"": "\"(Not right now.)\"":
$ _event.cancel()
jump hermione_favor_menu jump hermione_favor_menu
label hg_pr_blowjob:
call start_hg_pr_blowjob
her "" (xpos="mid", ypos="base", trans=fade) her "" (xpos="mid", ypos="base", trans=fade)
#Intro. #Intro.
if hg_pr_blowjob.counter == 0: if not _events_completed_any:
gen "[name_hermione_genie], I will be buying another favour from you today." ("base", xpos="far_left", ypos="head") gen "[name_hermione_genie], I will be buying another favour from you today." ("base", xpos="far_left", ypos="head")
her "Thank you, [name_genie_hermione]... I really appreciate it." ("open", "closed", "base", "mid") her "Thank you, [name_genie_hermione]... I really appreciate it." ("open", "closed", "base", "mid")
gen "Happy to help, as always." ("base", xpos="far_left", ypos="head") gen "Happy to help, as always." ("base", xpos="far_left", ypos="head")
@ -45,6 +51,7 @@ label hg_pr_blowjob:
jump end_hermione_event jump end_hermione_event
if states.her.public_level < 15: if states.her.public_level < 15:
$ _event.cancel()
jump too_much_public jump too_much_public
play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed # Music play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed # Music
@ -94,9 +101,13 @@ label hg_pr_blowjob:
call her_walk(action="leave") call her_walk(action="leave")
$ hg_pr_blowjob.inProgress = True
jump end_hermione_event jump end_hermione_event
label hg_pr_blowjob_fail:
call start_hg_pr_blowjob
jump too_much
label end_hg_pr_blowjob: label end_hg_pr_blowjob:
$ gryffindor += current_payout $ gryffindor += current_payout
@ -109,7 +120,7 @@ label end_hg_pr_blowjob:
pause.2 pause.2
# Inner monologue # Inner monologue
if hg_pr_blowjob.counter == 1: if not _events_completed_any:
her "(I did it...)" ("base", "narrow", "base", "dead", xpos="base", ypos="base", flip=True, trans=d3) her "(I did it...)" ("base", "narrow", "base", "dead", xpos="base", ypos="base", flip=True, trans=d3)
her "(I sucked off one of my classmates...)" ("angry", "narrow", "base", "dead") her "(I sucked off one of my classmates...)" ("angry", "narrow", "base", "dead")
@ -121,10 +132,9 @@ label end_hg_pr_blowjob:
$ hermione.set_cum(None) $ hermione.set_cum(None)
# Increase Points # Increase Points
if not hg_pr_blowjob.is_tier_complete(): if _events_filtered_completed_all:
$ states.her.public_level += 1 $ states.her.public_level += 1
$ hg_pr_blowjob.inProgress = False
jump end_hermione_event jump end_hermione_event
label hg_pr_blowjob_intro: label hg_pr_blowjob_intro:
@ -133,7 +143,7 @@ label hg_pr_blowjob_intro:
gen "[name_hermione_genie]..." ("base", xpos="far_left", ypos="head") gen "[name_hermione_genie]..." ("base", xpos="far_left", ypos="head")
gen "Did you complete your assignment?" ("base", xpos="far_left", ypos="head") gen "Did you complete your assignment?" ("base", xpos="far_left", ypos="head")
if hg_pr_blowjob.is_tier_complete(): if _events_filtered_completed_all:
her "Yes, [name_genie_hermione]." her "Yes, [name_genie_hermione]."
menu: menu:
@ -145,7 +155,7 @@ label hg_pr_blowjob_intro:
stop music fadeout 3.0 stop music fadeout 3.0
if hg_pr_blowjob.counter == 1: if not _events_completed_any:
her "......" ("annoyed", "narrow", "angry", "R") her "......" ("annoyed", "narrow", "angry", "R")
gen ".............." ("base", xpos="far_left", ypos="head") gen ".............." ("base", xpos="far_left", ypos="head")

View File

@ -1,29 +1,36 @@
### Give Classmate A Handjob ### ### Give Classmate A Handjob ###
label hg_pr_handjob: label start_hg_pr_handjob:
# Setup # Setup
$ current_payout = 55 $ current_payout = 55
if hg_pr_handjob.counter == 0: if not _events_completed_any:
gen "{size=-4}(Tell her to give a handjob to one of her classmates?){/size}" ("base", xpos="far_left", ypos="head") gen "{size=-4}(Tell her to give a handjob to one of her classmates?){/size}" ("base", xpos="far_left", ypos="head")
menu: menu:
"\"(Yes, let's do it!)\"": "\"(Yes, let's do it!)\"":
pass pass
"\"(Not right now.)\"": "\"(Not right now.)\"":
$ _event.cancel()
jump hermione_favor_menu jump hermione_favor_menu
return
label hg_pr_handjob:
call start_hg_pr_handjob
her "" (xpos="mid", ypos="base", trans=fade) her "" (xpos="mid", ypos="base", trans=fade)
#Intro #Intro
if hg_pr_handjob.counter == 0: if not _events_completed_any:
if states.her.public_level < 12: if states.her.public_level < 12:
gen "[name_hermione_genie], I want you to do something different today..." ("base", xpos="far_left", ypos="head") gen "[name_hermione_genie], I want you to do something different today..." ("base", xpos="far_left", ypos="head")
her "...?" ("normal", "squint", "angry", "mid") her "...?" ("normal", "squint", "angry", "mid")
gen "I want you to give a handjob to one of your classmates." ("base", xpos="far_left", ypos="head") gen "I want you to give a handjob to one of your classmates." ("base", xpos="far_left", ypos="head")
$ _event.cancel()
jump too_much_public jump too_much_public
gen "[name_hermione_genie], I want you to do something different today..." ("base", xpos="far_left", ypos="head") gen "[name_hermione_genie], I want you to do something different today..." ("base", xpos="far_left", ypos="head")
@ -103,9 +110,13 @@ label hg_pr_handjob:
call her_walk(action="leave") call her_walk(action="leave")
$ hg_pr_handjob.inProgress = True
jump end_hermione_event jump end_hermione_event
label hg_pr_handjob_fail:
call start_hg_pr_handjob
jump too_much
label end_hg_pr_handjob: label end_hg_pr_handjob:
$ gryffindor += current_payout #55 $ gryffindor += current_payout #55
gen "The Gryffindor house gets {number=current_payout} points!" ("base", xpos="far_left", ypos="head") gen "The Gryffindor house gets {number=current_payout} points!" ("base", xpos="far_left", ypos="head")
@ -117,7 +128,7 @@ label end_hg_pr_handjob:
pause.2 pause.2
# Inner monologue # Inner monologue
if hg_pr_handjob.counter == 1: if not _events_completed_any:
her ".........." ("upset", "narrow", "angry", "R", ypos="base", xpos="base", flip=True, trans=d3) her ".........." ("upset", "narrow", "angry", "R", ypos="base", xpos="base", flip=True, trans=d3)
her "(Do I really have to do this?)" ("upset", "closed", "angry", "mid") her "(Do I really have to do this?)" ("upset", "closed", "angry", "mid")
@ -129,10 +140,9 @@ label end_hg_pr_handjob:
label .quick_end: label .quick_end:
# Increase Points # Increase Points
if not hg_pr_handjob.is_tier_complete(): if not _events_filtered_completed_all:
$ states.her.public_level += 1 $ states.her.public_level += 1
$ hg_pr_handjob.inProgress = False
jump end_hermione_event jump end_hermione_event
label hg_pr_handjob_intro: label hg_pr_handjob_intro:
@ -142,7 +152,7 @@ label hg_pr_handjob_intro:
gen "Did you lend a hand to the needy?" ("base", xpos="far_left", ypos="head") gen "Did you lend a hand to the needy?" ("base", xpos="far_left", ypos="head")
her "Yes, [name_genie_hermione]..." her "Yes, [name_genie_hermione]..."
if hg_pr_handjob.is_tier_complete(): if _events_filtered_completed_all:
menu: menu:
"\"Great. Here are your points.\"": "\"Great. Here are your points.\"":
jump end_hg_pr_handjob jump end_hg_pr_handjob
@ -152,7 +162,7 @@ label hg_pr_handjob_intro:
stop music fadeout 3.0 stop music fadeout 3.0
if hg_pr_handjob.counter == 1: if not _events_completed_any:
her "......" ("annoyed", "narrow", "angry", "R") her "......" ("annoyed", "narrow", "angry", "R")
gen ".............." ("base", xpos="far_left", ypos="head") gen ".............." ("base", xpos="far_left", ypos="head")
@ -174,9 +184,9 @@ label hg_pr_handjob_T4_E1:
gen "..." ("base", xpos="far_left", ypos="head") gen "..." ("base", xpos="far_left", ypos="head")
her ".........." ("annoyed", "base", "worried", "R") her ".........." ("annoyed", "base", "worried", "R")
her "I don't want to talk about it..." ("annoyed", "narrow", "angry", "R") her "I don't want to talk about it..." ("annoyed", "narrow", "angry", "R")
her "You told me to go and touch a boy's penis, and I did just that, [name_genie_hermione]." her "You told me to go and touch a student's penis, and I did just that, [name_genie_hermione]."
her "Please, just let me have my points now, [name_genie_hermione]..." ("open", "base", "base", "mid") her "Please, just let me have my points now, [name_genie_hermione]..." ("open", "base", "base", "mid")
gen "I did not tell you to \"go and touch a boy's penis\", [name_hermione_genie]." ("base", xpos="far_left", ypos="head") gen "I did not tell you to \"go and touch a student's penis\", [name_hermione_genie]." ("base", xpos="far_left", ypos="head")
gen "I told you to give one of your classmates a handjob." ("base", xpos="far_left", ypos="head") gen "I told you to give one of your classmates a handjob." ("base", xpos="far_left", ypos="head")
her "Well, yes... That's what I meant, of course..." ("annoyed", "narrow", "annoyed", "mid") her "Well, yes... That's what I meant, of course..." ("annoyed", "narrow", "annoyed", "mid")
gen "Did you make him cum, then?" ("base", xpos="far_left", ypos="head") gen "Did you make him cum, then?" ("base", xpos="far_left", ypos="head")

View File

@ -1,29 +1,36 @@
### Make Out With A Girl ### ### Make Out With A Girl ###
label hg_pr_kiss: label start_hg_pr_kiss:
# Setup # Setup
$ current_payout = 45 $ current_payout = 45
if hg_pr_kiss.counter == 0: if not _events_completed_any:
gen "{size=-4}(Tell her to go make out with one of her female classmates?){/size}" ("base", xpos="far_left", ypos="head") gen "{size=-4}(Tell her to go make out with one of her female classmates?){/size}" ("base", xpos="far_left", ypos="head")
menu: menu:
"\"(Yes, let's do it!)\"": "\"(Yes, let's do it!)\"":
pass pass
"\"(Not right now.)\"": "\"(Not right now.)\"":
$ _event.cancel()
jump hermione_favor_menu jump hermione_favor_menu
return
label hg_pr_kiss:
call start_hg_pr_kiss
her "" (xpos="mid", ypos="base", trans=fade) her "" (xpos="mid", ypos="base", trans=fade)
#Intro. #Intro.
if hg_pr_kiss.counter == 0: if not _events_completed_any:
gen "Have You ever kissed another girl, [name_hermione_genie]?" ("base", xpos="far_left", ypos="head") gen "Have You ever kissed another girl, [name_hermione_genie]?" ("base", xpos="far_left", ypos="head")
her "?!" ("normal", "squint", "angry", "mid")
if states.her.public_level < 9: if states.her.public_level < 9:
$_event.cancel()
jump too_much_public jump too_much_public
her "?!" ("normal", "squint", "angry", "mid")
her "I am not a... Lesbian, [name_genie_hermione]." ("open", "base", "base", "mid") her "I am not a... Lesbian, [name_genie_hermione]." ("open", "base", "base", "mid")
gen "Silly girl... You don't need to be a lesbian to kiss girls." ("base", xpos="far_left", ypos="head") gen "Silly girl... You don't need to be a lesbian to kiss girls." ("base", xpos="far_left", ypos="head")
gen "I mean, I do it, and that doesn't make me a lesbian." ("base", xpos="far_left", ypos="head") gen "I mean, I do it, and that doesn't make me a lesbian." ("base", xpos="far_left", ypos="head")
@ -74,9 +81,13 @@ label hg_pr_kiss:
call her_walk(action="leave") call her_walk(action="leave")
$ hg_pr_kiss.inProgress = True
jump end_hermione_event jump end_hermione_event
label hg_pr_kiss_fail:
call start_hg_pr_kiss
jump too_much
label end_hg_pr_kiss: label end_hg_pr_kiss:
$ gryffindor += current_payout $ gryffindor += current_payout
@ -89,7 +100,7 @@ label end_hg_pr_kiss:
pause.2 pause.2
# Inner monologue # Inner monologue
if hg_pr_kiss.counter == 1: if not _events_completed_any:
her "(*Tsk*)" ("mad", "base", "angry", "R", ypos="base", xpos="base", flip=True, trans=d3) her "(*Tsk*)" ("mad", "base", "angry", "R", ypos="base", xpos="base", flip=True, trans=d3)
@ -98,10 +109,9 @@ label end_hg_pr_kiss:
label .quick_end: label .quick_end:
# Increase Points # Increase Points
if not hg_pr_kiss.is_tier_complete(): if not _events_filtered_completed_all:
$ states.her.public_level += 1 $ states.her.public_level += 1
$ hg_pr_kiss.inProgress = False
jump end_hermione_event jump end_hermione_event
label hg_pr_kiss_intro: label hg_pr_kiss_intro:
@ -111,7 +121,7 @@ label hg_pr_kiss_intro:
gen "Did you succeed in completing your task?" ("base", xpos="far_left", ypos="head") gen "Did you succeed in completing your task?" ("base", xpos="far_left", ypos="head")
her "*Ehm*..." her "*Ehm*..."
if hg_pr_kiss.is_tier_complete(): if _events_filtered_completed_all:
menu: menu:
"\"Great. Here are your points.\"": "\"Great. Here are your points.\"":
jump end_hg_pr_kiss jump end_hg_pr_kiss
@ -121,7 +131,7 @@ label hg_pr_kiss_intro:
stop music fadeout 3.0 stop music fadeout 3.0
if hg_pr_kiss.counter == 1: if not _events_completed_any:
her "......" ("soft", "squint", "base", "R") her "......" ("soft", "squint", "base", "R")
her "Well... I..." ("soft", "base", "base", "R") her "Well... I..." ("soft", "base", "base", "R")
gen "Don't be shy, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") gen "Don't be shy, [name_hermione_genie]." ("base", xpos="far_left", ypos="head")
@ -163,6 +173,8 @@ label hg_pr_kiss_T3_E1:
gen "You are not getting paid, you know that, right?" ("base", xpos="far_left", ypos="head") gen "You are not getting paid, you know that, right?" ("base", xpos="far_left", ypos="head")
her "I don't care..." ("scream", "closed", "angry", "mid") her "I don't care..." ("scream", "closed", "angry", "mid")
$ states.her.mood += 5
jump end_hg_pr_kiss.no_points jump end_hg_pr_kiss.no_points
label hg_pr_kiss_T3_E2: label hg_pr_kiss_T3_E2:

View File

@ -1,26 +1,33 @@
### Let Classmate Molest Her ### ### Let Classmate Molest Her ###
label hg_pr_grope: label start_hg_pr_grope:
# Setup # Setup
$ current_payout = 25 $ current_payout = 25
if hg_pr_grope.counter == 0: if not _events_completed_any:
gen "{size=-4}(Tell her to go get groped by one of her classmates?){/size}" ("base", xpos="far_left", ypos="head") gen "{size=-4}(Tell her to go get groped by one of her classmates?){/size}" ("base", xpos="far_left", ypos="head")
menu: menu:
"\"(Yes, let's do it!)\"": "\"(Yes, let's do it!)\"":
pass pass
"\"(Not right now.)\"": "\"(Not right now.)\"":
$ _event.cancel()
jump hermione_favor_menu jump hermione_favor_menu
return
label hg_pr_grope:
call start_hg_pr_grope
her "" (xpos="mid", ypos="base", trans=fade) her "" (xpos="mid", ypos="base", trans=fade)
gen "[name_hermione_genie]?" ("base", xpos="far_left", ypos="head") gen "[name_hermione_genie]?" ("base", xpos="far_left", ypos="head")
her "[name_genie_hermione]?" ("base", "base", "base", "mid") her "[name_genie_hermione]?" ("base", "base", "base", "mid")
#Intro. #Intro.
if hg_pr_grope.counter == 0: if not _events_completed_any:
gen "You do like boys your age, don't you?" ("base", xpos="far_left", ypos="head") gen "You do like boys your age, don't you?" ("base", xpos="far_left", ypos="head")
her "...?" ("normal", "base", "base", "mid") her "...?" ("normal", "base", "base", "mid")
gen "One of your classmates maybe?" ("base", xpos="far_left", ypos="head") gen "One of your classmates maybe?" ("base", xpos="far_left", ypos="head")
@ -34,6 +41,7 @@ label hg_pr_grope:
gen "And let them touch you..." ("base", xpos="far_left", ypos="head") gen "And let them touch you..." ("base", xpos="far_left", ypos="head")
if states.her.public_level < 3: if states.her.public_level < 3:
$ _event.cancel()
jump too_much_public jump too_much_public
her "Let them... Touch me, [name_genie_hermione]?" ("open", "base", "base", "mid") her "Let them... Touch me, [name_genie_hermione]?" ("open", "base", "base", "mid")
@ -92,9 +100,13 @@ label hg_pr_grope:
call her_walk(action="leave") call her_walk(action="leave")
$ hg_pr_grope.inProgress = True
jump end_hermione_event jump end_hermione_event
label hg_pr_grope_fail:
call start_hg_pr_grope
jump too_much
label end_hg_pr_grope: label end_hg_pr_grope:
$ gryffindor += current_payout $ gryffindor += current_payout
@ -107,7 +119,7 @@ label end_hg_pr_grope:
pause.2 pause.2
# Inner monologue # Inner monologue
if hg_pr_grope.counter == 1: if not _events_completed_any:
her "(Why did I agree to this...)" ("disgust", "base", "worried", "down", ypos="base", xpos="base", flip=True, trans=d3) her "(Why did I agree to this...)" ("disgust", "base", "worried", "down", ypos="base", xpos="base", flip=True, trans=d3)
@ -118,10 +130,9 @@ label end_hg_pr_grope:
$ states.her.status.public_groping = True $ states.her.status.public_groping = True
# Increase Points # Increase Points
if not hg_pr_grope.is_tier_complete(): if not _events_filtered_completed_all:
$ states.her.public_level += 1 $ states.her.public_level += 1
$ hg_pr_grope.inProgress = False
jump end_hermione_event jump end_hermione_event
label hg_pr_grope_intro: label hg_pr_grope_intro:
@ -131,7 +142,7 @@ label hg_pr_grope_intro:
gen "Did you finish your task?" ("base", xpos="far_left", ypos="head") gen "Did you finish your task?" ("base", xpos="far_left", ypos="head")
her "I did, just as you asked [name_genie_hermione]..." ("open", "base", "base", "mid", xpos="mid", ypos="base", trans=fade) her "I did, just as you asked [name_genie_hermione]..." ("open", "base", "base", "mid", xpos="mid", ypos="base", trans=fade)
if hg_pr_grope.is_tier_complete(): if _events_filtered_completed_all:
menu: menu:
"\"Great. Here are your points.\"": "\"Great. Here are your points.\"":
jump end_hg_pr_grope jump end_hg_pr_grope
@ -141,7 +152,7 @@ label hg_pr_grope_intro:
stop music fadeout 3.0 stop music fadeout 3.0
if hg_pr_grope.counter == 1: if not _events_completed_any:
her "......" ("annoyed", "narrow", "angry", "R") her "......" ("annoyed", "narrow", "angry", "R")
her "I... *Uhh*..." ("soft", "base", "base", "R") her "I... *Uhh*..." ("soft", "base", "base", "R")

File diff suppressed because it is too large Load Diff

View File

@ -148,7 +148,6 @@ label hermione_level_up(tier=None):
return return
label hermione_favor_menu: label hermione_favor_menu:
call update_her_requests
if not is_in_lead(gryffindor): if not is_in_lead(gryffindor):
@ -189,30 +188,10 @@ label hermione_favor_menu:
$ renpy.music.set_volume(1.0, 1.0) $ renpy.music.set_volume(1.0, 1.0)
jump silver_requests_root jump silver_requests_root
label .public: $ result = show_events_menu(hermione_requests)
python: $ result.start()
menu_choices = []
for i in hg_requests_list:
if i in []: # Not in the game yet.
menu_choices.append(gui.menu_item("-Not available-", "na", style="disabled"))
elif i.start_tier > states.her.tier:
menu_choices.append(gui.menu_item("-Not Ready-", "vague", style="disabled"))
else:
menu_choices.append(i.get_menu_item())
menu_choices.append(("-Never mind-", "nvm")) jump hermione_favor_menu
result = renpy.display_menu(menu_choices)
if result == "nvm":
jump silver_requests_root
elif result == "vague":
call favor_not_ready
jump .public
elif result == "na":
call not_available
jump .public
else:
$ renpy.jump(result)
"-Public Shaming-" (icon="interface/icons/small/star_pink.webp", style="disabled") if not game.daytime: "-Public Shaming-" (icon="interface/icons/small/star_pink.webp", style="disabled") if not game.daytime:
nar "Public Shaming events are available during the day only." nar "Public Shaming events are available during the day only."
@ -324,13 +303,6 @@ label hermione_favor_menu:
gen "(I guess another hangout with Snape is in order.)" ("base", xpos="far_left", ypos="head") gen "(I guess another hangout with Snape is in order.)" ("base", xpos="far_left", ypos="head")
jump hermione_requests jump hermione_requests
label update_her_requests:
python:
for i in hg_requests_list:
i.tier = states.her.tier
return
label update_her_tier: label update_her_tier:
python: python:
if states.her.tier == 1 and states.her.level >= 3: if states.her.tier == 1 and states.her.level >= 3:

View File

@ -122,6 +122,7 @@ default states.her.ev.potions.polyjuice_luna_drank = False
default states.her.ev.potions.polyjuice_luna_nude = False default states.her.ev.potions.polyjuice_luna_nude = False
default states.her.ev.maid.intro_complete = False default states.her.ev.maid.intro_complete = False
default states.her.ev.talk_to_me.caught_masturbating = False default states.her.ev.talk_to_me.caught_masturbating = False
default states.her.ev.flirt_with_students.done_before = False
default her_level_up = None # TODO: This var is used in an overly complicated manner, it should be removed once the issues are resolved. default her_level_up = None # TODO: This var is used in an overly complicated manner, it should be removed once the issues are resolved.
default current_job = None # TODO: Jobs should be using event class with enqueue feature instead. default current_job = None # TODO: Jobs should be using event class with enqueue feature instead.

View File

@ -293,10 +293,6 @@ label quests:
if states.her.level >= 18 and states.her.ev.yule_ball.e3_complete and not states.her.ev.yule_ball.e4_complete: if states.her.level >= 18 and states.her.ev.yule_ball.e3_complete and not states.her.ev.yule_ball.e4_complete:
# Hermione apologizes for the day (event) before. # Hermione apologizes for the day (event) before.
jump ball_quest_E4 jump ball_quest_E4
if hg_pr_sex.is_event_complete(6, 1) and not hg_pr_sex.is_event_complete(6, 2):
# Hermione missed the debriefing
$ hg_pr_sex.start()
else: else:
if current_job == "maid": if current_job == "maid":
jump maid_responses jump maid_responses
@ -310,10 +306,6 @@ label quests:
jump hermione_helping_selling_cards jump hermione_helping_selling_cards
python: python:
for i in hg_requests_list:
if i.inProgress:
i.start()
for i in hg_ps_list: #Call any public shaming event if it's in progress for i in hg_ps_list: #Call any public shaming event if it's in progress
if i.inProgress: if i.inProgress:
renpy.jump(i.complete_label) renpy.jump(i.complete_label)

View File

@ -157,7 +157,7 @@ init -1 python:
if not "/00start.rpy" in caller_id[0]: if not "/00start.rpy" in caller_id[0]:
# Ignore init # Ignore init
print(f"{rollback}Setting '{stdcol.GREEN}{id}{stdcol.END}' attribute '{stdcol.RED}{attr}{stdcol.END}' to '{stdcol.YELLOW}{value}{stdcol.END}' caller '{stdcol.BLUE}{caller_id}{stdcol.END}'...") print(f"{rollback}Setting '{stdcol.GREEN}{id}{stdcol.END}.{stdcol.RED}{attr}{stdcol.END}={stdcol.YELLOW}{value}{stdcol.END}' caller '{stdcol.BLUE}{caller_id}{stdcol.END}'...")
super().__setattr__(attr, value) super().__setattr__(attr, value)
@ -250,7 +250,11 @@ init -1 python:
return return
if label in self.ignore_labels: if label in self.ignore_labels:
# Postpone completing the event until end label returns # Postpone completing the event until end label returns.
return
if "." in label:
# Ignore local labels
return return
# if _last_label_call == label: # if _last_label_call == label:

View File

@ -80,6 +80,9 @@ label start_dev:
states.paperwork_unlocked = True states.paperwork_unlocked = True
store.states.lun.ev.intro.e1_complete = True
store.states.lun.ev.intro.e2_complete = True
for i in mirror.items: for i in mirror.items:
i.unlocked = True i.unlocked = True

View File

@ -14,6 +14,18 @@ init -999 python early:
def get_renderer(): def get_renderer():
return "DirectX" if preferences.renderer == "angle2" else "OpenGL" return "DirectX" if preferences.renderer == "angle2" else "OpenGL"
class stdcol:
PURPLE = '\033[1;35;48m'
CYAN = '\033[1;36;48m'
BOLD = '\033[1;37;48m'
BLUE = '\033[1;34;48m'
GREEN = '\033[1;32;48m'
YELLOW = '\033[1;33;48m'
RED = '\033[1;31;48m'
BLACK = '\033[1;30;48m'
UNDERLINE = '\033[4;37;48m'
END = '\033[1;37;0m'
if config.developer: if config.developer:
# Debug # Debug
@ -125,18 +137,6 @@ init -2 python:
print("\rCalculating whitespace... Done!") print("\rCalculating whitespace... Done!")
return False return False
class stdcol:
PURPLE = '\033[1;35;48m'
CYAN = '\033[1;36;48m'
BOLD = '\033[1;37;48m'
BLUE = '\033[1;34;48m'
GREEN = '\033[1;32;48m'
YELLOW = '\033[1;33;48m'
RED = '\033[1;31;48m'
BLACK = '\033[1;30;48m'
UNDERLINE = '\033[4;37;48m'
END = '\033[1;37;0m'
label missing_label(): label missing_label():
$ renpy.choice_for_skipping() $ renpy.choice_for_skipping()
$ err_msg1 = systemerror[0] $ err_msg1 = systemerror[0]