From 0f3502de5e205416842704e5c101d976e62a1e2a Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 28 Jun 2023 00:54:14 +0100 Subject: [PATCH] Bug fixes * Fixed cancellation method for events utilising subevents * Fixed callstack when cancel method is called and the next node is a jump (odd) * Fixed missing 'ask her to do x' blurbs for fail event variants * Fixed 'grope her' fail variant repeat dialogue flag * Removed 'hermione_favor_menu' from ignore labels (superseded) --- .../hermione/events/favors/dance_for_me.rpy | 2 + .../events/favors/give_me_a_handy.rpy | 2 + .../events/favors/give_me_a_tittyjob.rpy | 2 + .../hermione/events/favors/grope_her.rpy | 6 +- .../hermione/events/favors/lets_have_sex.rpy | 2 + .../events/favors/show_me_your_tits.rpy | 3 - game/scripts/characters/hermione/favors.rpy | 142 +++++++++--------- game/scripts/events/queue.rpy | 30 ++-- game/scripts/utility/engine.rpy | 115 ++++++++++++-- 9 files changed, 202 insertions(+), 102 deletions(-) diff --git a/game/scripts/characters/hermione/events/favors/dance_for_me.rpy b/game/scripts/characters/hermione/events/favors/dance_for_me.rpy index 88130470..fc9df0cf 100644 --- a/game/scripts/characters/hermione/events/favors/dance_for_me.rpy +++ b/game/scripts/characters/hermione/events/favors/dance_for_me.rpy @@ -60,6 +60,8 @@ label end_hg_pf_strip: ### Fail Events ### label hg_pf_strip_fail: + call start_hg_pf_strip + $ states.her.ev.dance_for_me.strip_asked = True gen "[name_hermione_genie], I need you to dance for me a little." ("base", xpos="far_left", ypos="head") her "You want me to..." ("soft", "wide", "base", "stare") diff --git a/game/scripts/characters/hermione/events/favors/give_me_a_handy.rpy b/game/scripts/characters/hermione/events/favors/give_me_a_handy.rpy index ffe50e21..b29e4308 100644 --- a/game/scripts/characters/hermione/events/favors/give_me_a_handy.rpy +++ b/game/scripts/characters/hermione/events/favors/give_me_a_handy.rpy @@ -63,6 +63,8 @@ label end_hg_pf_handjob: ### Fail Events ### label hg_pf_handjob_fail: + call start_hg_pf_handjob + her "" ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=fade) gen "[name_hermione_genie]." ("base", xpos="far_left", ypos="head") her "Yes, [name_genie_hermione]?" ("base", "base", "base", "mid") diff --git a/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy b/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy index 7a3c23b2..af1b9030 100644 --- a/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy +++ b/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy @@ -75,6 +75,8 @@ label end_hg_pf_titjob: ### Fail Events ### label hg_pf_titjob_fail: + call start_hg_pf_titjob + her "" ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=fade) gen "[name_hermione_genie]..." ("base", xpos="far_left", ypos="head") her "Yes, [name_genie_hermione]?" ("base", "base", "base", "mid") diff --git a/game/scripts/characters/hermione/events/favors/grope_her.rpy b/game/scripts/characters/hermione/events/favors/grope_her.rpy index 7d5eb19c..fe1452b5 100644 --- a/game/scripts/characters/hermione/events/favors/grope_her.rpy +++ b/game/scripts/characters/hermione/events/favors/grope_her.rpy @@ -99,9 +99,11 @@ label end_hg_pf_grope: # Those events still prgress, but Hermione will run off and get mad. # The heart icons for these events are 'black' -label hg_pf_grope_T1_fail: +label hg_pf_grope_T1_E1: - if not _events_filtered_completed_any: + call start_hg_pf_grope + + if not _event_completed_failed: gen "[name_hermione_genie], would you mind if I play with your tits a little?" ("base", xpos="far_left", ypos="head") her "Play with...?" ("shock", "wide", "base", "stare") her "My tits?!" ("angry", "wide", "base", "mid") diff --git a/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy b/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy index c2557862..95a19c51 100644 --- a/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy +++ b/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy @@ -77,6 +77,8 @@ label end_hg_pf_sex: ### Fail Events ### label hg_pf_sex_fail: + call start_hg_pf_sex + gen "[name_hermione_genie]..." ("base", xpos="far_left", ypos="head") gen "Why don't you come over here, and then I pound your pussy for a bit..." ("base", xpos="far_left", ypos="head") gen "With my cock!" ("grin", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/hermione/events/favors/show_me_your_tits.rpy b/game/scripts/characters/hermione/events/favors/show_me_your_tits.rpy index 3a6cae28..22c8933f 100644 --- a/game/scripts/characters/hermione/events/favors/show_me_your_tits.rpy +++ b/game/scripts/characters/hermione/events/favors/show_me_your_tits.rpy @@ -16,9 +16,6 @@ label start_hg_pf_admire_breasts: $ current_payout = 10 return -label hg_pf_admire_breasts_fail: - jump end_hermione_event - label end_hg_pf_admire_breasts: # Setup diff --git a/game/scripts/characters/hermione/favors.rpy b/game/scripts/characters/hermione/favors.rpy index 3429f100..9b4b7622 100644 --- a/game/scripts/characters/hermione/favors.rpy +++ b/game/scripts/characters/hermione/favors.rpy @@ -1,86 +1,86 @@ -default her_ev_talk_to_me_t1_e1 = Event(id="talk_to_me_t1_e1", label="hg_pf_talk_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk", "hermione_favor_menu"]) -default her_ev_talk_to_me_t1_e2 = Event(id="talk_to_me_t1_e2", label="hg_pf_talk_T1_E1", priority=6, req="states.her.tier == 1", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk", "hermione_favor_menu"]) -default her_ev_talk_to_me_t2_e1 = Event(id="talk_to_me_t2_e1", label="hg_pf_talk_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk", "hermione_favor_menu"]) -default her_ev_talk_to_me_t2_e2 = Event(id="talk_to_me_t2_e2", label="hg_pf_talk_T2_E1", priority=6, req="states.her.tier == 2", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk", "hermione_favor_menu"]) -default her_ev_talk_to_me_t3_e1 = Event(id="talk_to_me_t3_e1", label="hg_pf_talk_T3_intro_E1", priority=5, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1", "hermione_favor_menu"]) -default her_ev_talk_to_me_t3_e2 = Event(id="talk_to_me_t3_e2", label="hg_pf_talk_T3_intro_E2", priority=6, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1", "hermione_favor_menu"]) -default her_ev_talk_to_me_t3_e3 = Event(id="talk_to_me_t3_e3", label="hg_pf_talk_T3_repeat", priority=7, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1", "hermione_favor_menu"]) +default her_ev_talk_to_me_t1_e1 = Event(id="talk_to_me_t1_e1", label="hg_pf_talk_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk"]) +default her_ev_talk_to_me_t1_e2 = Event(id="talk_to_me_t1_e2", label="hg_pf_talk_T1_E1", priority=6, req="states.her.tier == 1", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk"]) +default her_ev_talk_to_me_t2_e1 = Event(id="talk_to_me_t2_e1", label="hg_pf_talk_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk"]) +default her_ev_talk_to_me_t2_e2 = Event(id="talk_to_me_t2_e2", label="hg_pf_talk_T2_E1", priority=6, req="states.her.tier == 2", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk"]) +default her_ev_talk_to_me_t3_e1 = Event(id="talk_to_me_t3_e1", label="hg_pf_talk_T3_intro_E1", priority=5, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1"]) +default her_ev_talk_to_me_t3_e2 = Event(id="talk_to_me_t3_e2", label="hg_pf_talk_T3_intro_E2", priority=6, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1"]) +default her_ev_talk_to_me_t3_e3 = Event(id="talk_to_me_t3_e3", label="hg_pf_talk_T3_repeat", priority=7, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1"]) default her_ev_talk_to_me_tonks_t3_e1 = Event(id="talk_to_me_tonks_t3_e1", label="hg_pf_talk_tonks_T3_intro_E1", priority=5, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me_tonks", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_talk_to_me_tonks_t3_e2 = Event(id="talk_to_me_tonks_t3_e2", label="hg_pf_talk_tonks_T3_E1", priority=6, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me_tonks", autoenqueue=True, autodequeue=False) -default her_ev_admire_panties_t1_e1 = Event(id="admire_panties_t1_e1", label="hg_pf_admire_panties_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties", "hermione_favor_menu"]) -default her_ev_admire_panties_t1_e2 = Event(id="admire_panties_t1_e2", label="hg_pf_admire_panties_T1_E1", priority=6, req="states.her.tier == 1", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties", "hermione_favor_menu"]) -default her_ev_admire_panties_t2_e1 = Event(id="admire_panties_t2_e1", label="hg_pf_admire_panties_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties", "hermione_favor_menu"]) -default her_ev_admire_panties_t2_e2 = Event(id="admire_panties_t2_e2", label="hg_pf_admire_panties_T2_E1", priority=6, req="states.her.tier == 2", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties", "hermione_favor_menu"]) -default her_ev_admire_panties_t3_e1 = Event(id="admire_panties_t3_e1", label="hg_pf_admire_panties_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties", "hermione_favor_menu"]) -default her_ev_admire_panties_t3_e2 = Event(id="admire_panties_t3_e2", label="hg_pf_admire_panties_T3_E1", priority=6, req="states.her.tier == 3", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties", "hermione_favor_menu"]) -default her_ev_admire_panties_t4_e1 = Event(id="admire_panties_t4_e1", label="hg_pf_admire_panties_T4_intro_E1", priority=5, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties", "hermione_favor_menu"]) -default her_ev_admire_panties_t4_e2 = Event(id="admire_panties_t4_e2", label="hg_pf_admire_panties_T4_E1", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties", "hermione_favor_menu"]) -default her_ev_admire_panties_t4_e3 = Event(id="admire_panties_t4_e3", label="hg_pf_admire_panties_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties", "hermione_favor_menu"]) +default her_ev_admire_panties_t1_e1 = Event(id="admire_panties_t1_e1", label="hg_pf_admire_panties_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties"]) +default her_ev_admire_panties_t1_e2 = Event(id="admire_panties_t1_e2", label="hg_pf_admire_panties_T1_E1", priority=6, req="states.her.tier == 1", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) +default her_ev_admire_panties_t2_e1 = Event(id="admire_panties_t2_e1", label="hg_pf_admire_panties_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties"]) +default her_ev_admire_panties_t2_e2 = Event(id="admire_panties_t2_e2", label="hg_pf_admire_panties_T2_E1", priority=6, req="states.her.tier == 2", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) +default her_ev_admire_panties_t3_e1 = Event(id="admire_panties_t3_e1", label="hg_pf_admire_panties_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties"]) +default her_ev_admire_panties_t3_e2 = Event(id="admire_panties_t3_e2", label="hg_pf_admire_panties_T3_E1", priority=6, req="states.her.tier == 3", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) +default her_ev_admire_panties_t4_e1 = Event(id="admire_panties_t4_e1", label="hg_pf_admire_panties_T4_intro_E1", priority=5, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties"]) +default her_ev_admire_panties_t4_e2 = Event(id="admire_panties_t4_e2", label="hg_pf_admire_panties_T4_E1", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) +default her_ev_admire_panties_t4_e3 = Event(id="admire_panties_t4_e3", label="hg_pf_admire_panties_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) -default her_ev_admire_breasts_t1_e1 = Event(id="admire_breasts_t1_e1", label="hg_pf_admire_breasts_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu"]) -default her_ev_admire_breasts_t1_e2 = Event(id="admire_breasts_t1_e2", label="hg_pf_admire_breasts_T1_intro_E2", priority=6, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu"]) -default her_ev_admire_breasts_t1_e3 = Event(id="admire_breasts_t1_e3", label="hg_pf_admire_breasts_T1_E2", priority=7, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu"]) -default her_ev_admire_breasts_t2_e1 = Event(id="admire_breasts_t2_e1", label="hg_pf_admire_breasts_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu", "hg_pf_admire_breasts_T2", "hg_pf_admire_breasts_T2_masturbate"]) -default her_ev_admire_breasts_t2_e2 = Event(id="admire_breasts_t2_e2", label="hg_pf_admire_breasts_T2_intro_E2", priority=6, req="states.her.tier == 2", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu", "hg_pf_admire_breasts_T2", "hg_pf_admire_breasts_T2_masturbate"]) -default her_ev_admire_breasts_t2_e3 = Event(id="admire_breasts_t2_e3", label="hg_pf_admire_breasts_T2_E2", priority=7, req="states.her.tier == 2", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu", "hg_pf_admire_breasts_T2", "hg_pf_admire_breasts_T2_masturbate"]) -default her_ev_admire_breasts_t3_e1 = Event(id="admire_breasts_t3_e1", label="hg_pf_admire_breasts_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu", "hg_pf_admire_breasts_T3"]) -default her_ev_admire_breasts_t3_e2 = Event(id="admire_breasts_t3_e2", label="hg_pf_admire_breasts_T3_E1", priority=6, req="states.her.tier == 3", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu", "hg_pf_admire_breasts_T3"]) -default her_ev_admire_breasts_t4_e1 = Event(id="admire_breasts_t4_e1", label="hg_pf_admire_breasts_T4_intro_E1", priority=5, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu", "hg_pf_admire_breasts_T4"]) -default her_ev_admire_breasts_t4_e2 = Event(id="admire_breasts_t4_e2", label="hg_pf_admire_breasts_T4_E1", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu", "hg_pf_admire_breasts_T4"]) -default her_ev_admire_breasts_t4_e3 = Event(id="admire_breasts_t4_e3", label="hg_pf_admire_breasts_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hermione_favor_menu", "hg_pf_admire_breasts_T4"]) +default her_ev_admire_breasts_t1_e1 = Event(id="admire_breasts_t1_e1", label="hg_pf_admire_breasts_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts"]) +default her_ev_admire_breasts_t1_e2 = Event(id="admire_breasts_t1_e2", label="hg_pf_admire_breasts_T1_intro_E2", priority=6, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts"]) +default her_ev_admire_breasts_t1_e3 = Event(id="admire_breasts_t1_e3", label="hg_pf_admire_breasts_T1_E2", priority=7, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts"]) +default her_ev_admire_breasts_t2_e1 = Event(id="admire_breasts_t2_e1", label="hg_pf_admire_breasts_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T2", "hg_pf_admire_breasts_T2_masturbate"]) +default her_ev_admire_breasts_t2_e2 = Event(id="admire_breasts_t2_e2", label="hg_pf_admire_breasts_T2_intro_E2", priority=6, req="states.her.tier == 2", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T2", "hg_pf_admire_breasts_T2_masturbate"]) +default her_ev_admire_breasts_t2_e3 = Event(id="admire_breasts_t2_e3", label="hg_pf_admire_breasts_T2_E2", priority=7, req="states.her.tier == 2", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T2", "hg_pf_admire_breasts_T2_masturbate"]) +default her_ev_admire_breasts_t3_e1 = Event(id="admire_breasts_t3_e1", label="hg_pf_admire_breasts_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T3"]) +default her_ev_admire_breasts_t3_e2 = Event(id="admire_breasts_t3_e2", label="hg_pf_admire_breasts_T3_E1", priority=6, req="states.her.tier == 3", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T3"]) +default her_ev_admire_breasts_t4_e1 = Event(id="admire_breasts_t4_e1", label="hg_pf_admire_breasts_T4_intro_E1", priority=5, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T4"]) +default her_ev_admire_breasts_t4_e2 = Event(id="admire_breasts_t4_e2", label="hg_pf_admire_breasts_T4_E1", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T4"]) +default her_ev_admire_breasts_t4_e3 = Event(id="admire_breasts_t4_e3", label="hg_pf_admire_breasts_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T4"]) -default her_ev_grope_t1_e1 = Event(id="grope_t1_e1", label="hg_pf_grope_T1_fail", priority=5, req="states.her.tier == 1", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_grope_t2_e1 = Event(id="grope_t2_e1", label="hg_pf_grope_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_grope_breasts_T2", "hg_pf_grope_ass_T2", "hg_pf_grope_ass_T2_back", "hg_pf_grope_ass_T2_front", "hg_pf_grope_ass_T2_continue", "hg_pf_grope_breasts_T2_continue"]) -default her_ev_grope_t2_e2 = Event(id="grope_t2_e2", label="hg_pf_grope_T2_E1", priority=6, req="states.her.tier == 2", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_grope_breasts_T2", "hg_pf_grope_ass_T2", "hg_pf_grope_ass_T2_back", "hg_pf_grope_ass_T2_front", "hg_pf_grope_ass_T2_continue", "hg_pf_grope_breasts_T2_continue"]) -default her_ev_grope_t3_e1 = Event(id="grope_t3_e1", label="hg_pf_grope_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_grope_breasts_T3", "hg_pf_grope_ass_T3", "hg_pf_grope_ass_T3_back", "hg_pf_grope_ass_T3_front", "hg_pf_grope_ass_T3_continue", "hg_pf_grope_breasts_T3_continue"]) -default her_ev_grope_t3_e2 = Event(id="grope_t3_e2", label="hg_pf_grope_T3_E1", priority=6, req="states.her.tier == 3", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_grope_breasts_T3", "hg_pf_grope_ass_T3", "hg_pf_grope_ass_T3_back", "hg_pf_grope_ass_T3_front", "hg_pf_grope_ass_T3_continue", "hg_pf_grope_breasts_T3_continue"]) -default her_ev_grope_t4_e1 = Event(id="grope_t4_e1", label="hg_pf_grope_T4_intro_E1", priority=5, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) -default her_ev_grope_t4_e2 = Event(id="grope_t4_e2", label="hg_pf_grope_T4_intro_E2", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) -default her_ev_grope_t4_e3 = Event(id="grope_t4_e3", label="hg_pf_grope_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) +default her_ev_grope_t1_e1 = Event(id="grope_t1_e1", label="hg_pf_grope_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False) +default her_ev_grope_t2_e1 = Event(id="grope_t2_e1", label="hg_pf_grope_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_grope_breasts_T2", "hg_pf_grope_ass_T2", "hg_pf_grope_ass_T2_back", "hg_pf_grope_ass_T2_front", "hg_pf_grope_ass_T2_continue", "hg_pf_grope_breasts_T2_continue"]) +default her_ev_grope_t2_e2 = Event(id="grope_t2_e2", label="hg_pf_grope_T2_E1", priority=6, req="states.her.tier == 2", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_grope_breasts_T2", "hg_pf_grope_ass_T2", "hg_pf_grope_ass_T2_back", "hg_pf_grope_ass_T2_front", "hg_pf_grope_ass_T2_continue", "hg_pf_grope_breasts_T2_continue"]) +default her_ev_grope_t3_e1 = Event(id="grope_t3_e1", label="hg_pf_grope_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_grope_breasts_T3", "hg_pf_grope_ass_T3", "hg_pf_grope_ass_T3_back", "hg_pf_grope_ass_T3_front", "hg_pf_grope_ass_T3_continue", "hg_pf_grope_breasts_T3_continue"]) +default her_ev_grope_t3_e2 = Event(id="grope_t3_e2", label="hg_pf_grope_T3_E1", priority=6, req="states.her.tier == 3", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_grope_breasts_T3", "hg_pf_grope_ass_T3", "hg_pf_grope_ass_T3_back", "hg_pf_grope_ass_T3_front", "hg_pf_grope_ass_T3_continue", "hg_pf_grope_breasts_T3_continue"]) +default her_ev_grope_t4_e1 = Event(id="grope_t4_e1", label="hg_pf_grope_T4_intro_E1", priority=5, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) +default her_ev_grope_t4_e2 = Event(id="grope_t4_e2", label="hg_pf_grope_T4_intro_E2", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) +default her_ev_grope_t4_e3 = Event(id="grope_t4_e3", label="hg_pf_grope_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) -default her_ev_strip_for_me_t1_e1 = Event(id="strip_for_me_t1_e1", label="hg_pf_strip_fail", priority=5, req="states.her.tier == 1", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_strip_for_me_t2_e1 = Event(id="strip_for_me_t2_e1", label="hg_pf_strip_T2_intro_fail", priority=5, req="states.her.tier == 2", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_strip_for_me_t2_e2 = Event(id="strip_for_me_t2_e2", label="hg_pf_strip_T2_repeat_fail", priority=6, req="states.her.tier == 2", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_strip_for_me_t3_e1 = Event(id="strip_for_me_t3_e1", label="hg_pf_strip_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_strip_for_me_t3_e2 = Event(id="strip_for_me_t3_e2", label="hg_pf_strip_T3_intro_E2", priority=6, req="states.her.tier == 3", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_strip_for_me_t3_e3 = Event(id="strip_for_me_t3_e3", label="hg_pf_strip_T3_E2", priority=7, req="states.her.tier == 3", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_strip_T3_masturbate", "hg_pf_strip_T3_watch", "hg_pf_strip_T3_snape"]) -default her_ev_strip_for_me_t4_e1 = Event(id="strip_for_me_t4_e1", label="hg_pf_strip_T4_intro_E1", priority=5, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) -default her_ev_strip_for_me_t4_e2 = Event(id="strip_for_me_t4_e2", label="hg_pf_strip_T4_intro_E2", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) -default her_ev_strip_for_me_t4_e3 = Event(id="strip_for_me_t4_e3", label="hg_pf_strip_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) +default her_ev_strip_for_me_t1_e1 = Event(id="strip_for_me_t1_e1", label="hg_pf_strip_fail", priority=5, req="states.her.tier == 1", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False) +default her_ev_strip_for_me_t2_e1 = Event(id="strip_for_me_t2_e1", label="hg_pf_strip_T2_intro_fail", priority=5, req="states.her.tier == 2", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False) +default her_ev_strip_for_me_t2_e2 = Event(id="strip_for_me_t2_e2", label="hg_pf_strip_T2_repeat_fail", priority=6, req="states.her.tier == 2", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False) +default her_ev_strip_for_me_t3_e1 = Event(id="strip_for_me_t3_e1", label="hg_pf_strip_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False) +default her_ev_strip_for_me_t3_e2 = Event(id="strip_for_me_t3_e2", label="hg_pf_strip_T3_intro_E2", priority=6, req="states.her.tier == 3", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False) +default her_ev_strip_for_me_t3_e3 = Event(id="strip_for_me_t3_e3", label="hg_pf_strip_T3_E2", priority=7, req="states.her.tier == 3", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_strip_T3_masturbate", "hg_pf_strip_T3_watch", "hg_pf_strip_T3_snape"]) +default her_ev_strip_for_me_t4_e1 = Event(id="strip_for_me_t4_e1", label="hg_pf_strip_T4_intro_E1", priority=5, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) +default her_ev_strip_for_me_t4_e2 = Event(id="strip_for_me_t4_e2", label="hg_pf_strip_T4_intro_E2", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) +default her_ev_strip_for_me_t4_e3 = Event(id="strip_for_me_t4_e3", label="hg_pf_strip_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) -default her_ev_handjob_t1_to_t3_e1 = Event(id="handjob_t1_to_t3_e1", label="hg_pf_handjob_fail", priority=5, req="states.her.tier < 4", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_handjob_t4_e1 = Event(id="handjob_t4_e1", label="hg_pf_handjob_T4_intro_E1", priority=5, req="states.her.tier == 4", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_handjob_1"]) -default her_ev_handjob_t4_e2 = Event(id="handjob_t4_e2", label="hg_pf_handjob_T4_intro_E2", priority=6, req="states.her.tier == 4", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_handjob_1"]) -default her_ev_handjob_t4_e3 = Event(id="handjob_t4_e3", label="hg_pf_handjob_T4_repeat", priority=7, req="states.her.tier == 4", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_handjob_1"]) -default her_ev_handjob_t5_e1 = Event(id="handjob_t5_e1", label="hg_pf_handjob_T5_intro_E1", priority=5, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) -default her_ev_handjob_t5_e2 = Event(id="handjob_t5_e2", label="hg_pf_handjob_T5_intro_E2", priority=6, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) -default her_ev_handjob_t5_e3 = Event(id="handjob_t5_e3", label="hg_pf_handjob_T5_repeat", priority=7, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) +default her_ev_handjob_t1_to_t3_e1 = Event(id="handjob_t1_to_t3_e1", label="hg_pf_handjob_fail", priority=5, req="states.her.tier < 4", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False) +default her_ev_handjob_t4_e1 = Event(id="handjob_t4_e1", label="hg_pf_handjob_T4_intro_E1", priority=5, req="states.her.tier == 4", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_handjob_1"]) +default her_ev_handjob_t4_e2 = Event(id="handjob_t4_e2", label="hg_pf_handjob_T4_intro_E2", priority=6, req="states.her.tier == 4", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_handjob_1"]) +default her_ev_handjob_t4_e3 = Event(id="handjob_t4_e3", label="hg_pf_handjob_T4_repeat", priority=7, req="states.her.tier == 4", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_handjob_1"]) +default her_ev_handjob_t5_e1 = Event(id="handjob_t5_e1", label="hg_pf_handjob_T5_intro_E1", priority=5, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) +default her_ev_handjob_t5_e2 = Event(id="handjob_t5_e2", label="hg_pf_handjob_T5_intro_E2", priority=6, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) +default her_ev_handjob_t5_e3 = Event(id="handjob_t5_e3", label="hg_pf_handjob_T5_repeat", priority=7, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) -default her_ev_titjob_t1_to_t4_e1 = Event(id="titjob_t1_to_t4_e1", label="hg_pf_titjob_fail", priority=5, req="states.her.tier < 5", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_titjob_t5_e1 = Event(id="titjob_t5_e1", label="hg_pf_titjob_T5_intro_E1", priority=5, req="states.her.tier == 5", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "back_to_titjob_choices", "hg_pf_titjob_1"]) -default her_ev_titjob_t5_e2 = Event(id="titjob_t5_e2", label="hg_pf_titjob_T5_repeat", priority=6, req="states.her.tier == 5", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_titjob_1"]) -default her_ev_titjob_t6_e1 = Event(id="titjob_t6_e1", label="hg_pf_titjob_T6_intro_E1", priority=5, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) -default her_ev_titjob_t6_e2 = Event(id="titjob_t6_e2", label="hg_pf_titjob_T6_intro_E2", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) -default her_ev_titjob_t6_e3 = Event(id="titjob_t6_e3", label="hg_pf_titjob_T6_repeat", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) +default her_ev_titjob_t1_to_t4_e1 = Event(id="titjob_t1_to_t4_e1", label="hg_pf_titjob_fail", priority=5, req="states.her.tier < 5", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False) +default her_ev_titjob_t5_e1 = Event(id="titjob_t5_e1", label="hg_pf_titjob_T5_intro_E1", priority=5, req="states.her.tier == 5", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["back_to_titjob_choices", "hg_pf_titjob_1"]) +default her_ev_titjob_t5_e2 = Event(id="titjob_t5_e2", label="hg_pf_titjob_T5_repeat", priority=6, req="states.her.tier == 5", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_titjob_1"]) +default her_ev_titjob_t6_e1 = Event(id="titjob_t6_e1", label="hg_pf_titjob_T6_intro_E1", priority=5, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) +default her_ev_titjob_t6_e2 = Event(id="titjob_t6_e2", label="hg_pf_titjob_T6_intro_E2", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) +default her_ev_titjob_t6_e3 = Event(id="titjob_t6_e3", label="hg_pf_titjob_T6_repeat", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) -default her_ev_blowjob_t1_to_t3_e1 = Event(id="blowjob_t1_to_t3_e1", label="hg_pf_blowjob_fail", priority=5, req="states.her.tier < 4", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_blowjob_t4_e1 = Event(id="blowjob_t4_e1", label="hg_pf_blowjob_T4_fail_intro", priority=5, req="states.her.tier == 4", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_blowjob_t4_e2 = Event(id="blowjob_t4_e2", label="hg_pf_blowjob_T4_fail_repeat", priority=6, req="states.her.tier == 4", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_blowjob_t5_e1 = Event(id="blowjob_t5_e1", label="hg_pf_blowjob_T5_intro_E1", priority=5, req="states.her.tier == 5", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) -default her_ev_blowjob_t5_e2 = Event(id="blowjob_t5_e2", label="hg_pf_blowjob_T5_intro_E2", priority=6, req="states.her.tier == 5", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) -default her_ev_blowjob_t5_e3 = Event(id="blowjob_t5_e3", label="hg_pf_blowjob_T5_repeat", priority=7, req="states.her.tier == 5", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) -default her_ev_blowjob_t6_e1 = Event(id="blowjob_t6_e1", label="hg_pf_blowjob_T6_intro_E1", priority=5, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu", "hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) -default her_ev_blowjob_t6_e2 = Event(id="blowjob_t6_e2", label="hg_pf_blowjob_T6_hidden_repeat", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) -default her_ev_blowjob_t6_e3 = Event(id="blowjob_t6_e3", label="hg_pf_blowjob_T6_repeat", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu", "hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) +default her_ev_blowjob_t1_to_t3_e1 = Event(id="blowjob_t1_to_t3_e1", label="hg_pf_blowjob_fail", priority=5, req="states.her.tier < 4", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False) +default her_ev_blowjob_t4_e1 = Event(id="blowjob_t4_e1", label="hg_pf_blowjob_T4_fail_intro", priority=5, req="states.her.tier == 4", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) +default her_ev_blowjob_t4_e2 = Event(id="blowjob_t4_e2", label="hg_pf_blowjob_T4_fail_repeat", priority=6, req="states.her.tier == 4", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False) +default her_ev_blowjob_t5_e1 = Event(id="blowjob_t5_e1", label="hg_pf_blowjob_T5_intro_E1", priority=5, req="states.her.tier == 5", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) +default her_ev_blowjob_t5_e2 = Event(id="blowjob_t5_e2", label="hg_pf_blowjob_T5_intro_E2", priority=6, req="states.her.tier == 5", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) +default her_ev_blowjob_t5_e3 = Event(id="blowjob_t5_e3", label="hg_pf_blowjob_T5_repeat", priority=7, req="states.her.tier == 5", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) +default her_ev_blowjob_t6_e1 = Event(id="blowjob_t6_e1", label="hg_pf_blowjob_T6_intro_E1", priority=5, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) +default her_ev_blowjob_t6_e2 = Event(id="blowjob_t6_e2", label="hg_pf_blowjob_T6_hidden_repeat", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) +default her_ev_blowjob_t6_e3 = Event(id="blowjob_t6_e3", label="hg_pf_blowjob_T6_repeat", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) -default her_ev_sex_t1_to_t5_e1 = Event(id="sex_t1_to_t5_e1", label="hg_pf_sex_fail", priority=5, req="states.her.tier < 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_sex_t6_e1 = Event(id="sex_t6_e1", label="hg_pf_sex_T6_intro_E1", priority=5, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_sex_t6_e2 = Event(id="sex_t6_e2", label="hg_pf_sex_T6_intro_E2", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_sex_t6_e3 = Event(id="sex_t6_e3", label="hg_pf_sex_T6_intro_E3", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hermione_favor_menu"]) -default her_ev_sex_t6_e4 = Event(id="sex_t6_e4", label="hg_pf_sex_T6_E3", priority=8, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, ignore_labels=["hermione_favor_menu"]) +default her_ev_sex_t1_to_t5_e1 = Event(id="sex_t1_to_t5_e1", label="hg_pf_sex_fail", priority=5, req="states.her.tier < 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) +default her_ev_sex_t6_e1 = Event(id="sex_t6_e1", label="hg_pf_sex_T6_intro_E1", priority=5, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, repeat=False) +default her_ev_sex_t6_e2 = Event(id="sex_t6_e2", label="hg_pf_sex_T6_intro_E2", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, repeat=False) +default her_ev_sex_t6_e3 = Event(id="sex_t6_e3", label="hg_pf_sex_T6_intro_E3", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, repeat=False) +default her_ev_sex_t6_e4 = Event(id="sex_t6_e4", label="hg_pf_sex_T6_E3", priority=8, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) default her_ev_anal_t6_e1 = Event(id="anal_t6_e1", label="hg_anal_sex_1_intro", priority=5, req="states.her.tier >= 6", queue="her_eventqueue_anal", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_anal_t6_e2 = Event(id="anal_t6_e2", label="hg_anal_sex_2_intro", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_anal", autoenqueue=True, autodequeue=False, repeat=False) diff --git a/game/scripts/events/queue.rpy b/game/scripts/events/queue.rpy index fe4b5855..a87ba3ce 100644 --- a/game/scripts/events/queue.rpy +++ b/game/scripts/events/queue.rpy @@ -118,6 +118,7 @@ init -1 python: class Event(object): _queue = None + _parent = None def __init__(self, id, wait=0, priority=5, daytime=None, req=None, label=None, func=None, queue="eventqueue", autoenqueue=False, autodequeue=True, repeat=True, fail_suffixes=("_fail", "too_much", "too_much_public"), ignore_labels=[], subevents=[]): @@ -136,6 +137,9 @@ init -1 python: self.ignore_labels = ignore_labels self.subevents = subevents + for ev in subevents: + getattr(store, ev)._parent = self + self.queued = False self.started = False self.completed = False @@ -241,6 +245,12 @@ init -1 python: if self._track_completion in event_callbacks: event_callbacks.remove(self._track_completion) + if self._parent: + self._parent.cancel() + + if renpy.get_return_stack(): + renpy.pop_call() + def _track_completion(self, label, abnormal): if renpy.is_init_phase(): return @@ -257,15 +267,12 @@ init -1 python: # Ignore local labels return - # if _last_label_call == label: - # # Ignore calls. - # return - - # if abnormal: + # if abnormal: # Irrelevant # return if renpy.game.context().return_stack: # If return stack exists, ignore, because we're probably in a call label. + # We only allow room_menu, to pass. return if self.started: # Event cancelled abnormally? @@ -285,15 +292,6 @@ init -1 python: if self._track_completion in event_callbacks: event_callbacks.remove(self._track_completion) - - - # def catch_label_call(label, args, kwargs): - # if config.developer: - # print(f"Called '{label}' with ARGS: {args} KWARGS: {kwargs}") - - # global _last_label_call - # _last_label_call = label - def execute_event_callbacks(label, abnormal): if renpy.is_init_phase() or not hasattr(store, "event_callbacks"): return @@ -306,7 +304,6 @@ init -1 python: # We need to add these after defaults are finished. renpy.config.label_callbacks.append(execute_event_callbacks) - # renpy.config.call_callbacks.append(catch_label_call) def show_events_menu(queues, filter=False, **kwargs): def menu_hints(queue, filter): @@ -349,5 +346,4 @@ init -1 python: init offset = -5 -default eventqueue = EventQueue("mainloop") -# default _last_label_call = None \ No newline at end of file +default eventqueue = EventQueue("mainloop") \ No newline at end of file diff --git a/game/scripts/utility/engine.rpy b/game/scripts/utility/engine.rpy index 52d6753a..ed22e322 100644 --- a/game/scripts/utility/engine.rpy +++ b/game/scripts/utility/engine.rpy @@ -122,11 +122,9 @@ python early hide: renpy.display.focus.set_focused = set_focused - # Add a callbacks for label calls, we use them for the event class - # in order to figure out if the event was completed or if it's just a call. - # - # Might not be required - # + # Add callbacks for label calls and jumps, we use them for the event class + # in order to figure out if the event was completed or if it's just a call, + # and also for debugging. # class _CallException(Exception): # from_current = False @@ -145,8 +143,110 @@ python early hide: # def __reduce__(self): # return (_CallException, (self.label, self.args, self.kwargs, self.from_current)) - # renpy.game.CONTROL_EXCEPTIONS = tuple(list(renpy.game.CONTROL_EXCEPTIONS) + [_CallException]) + # class _JumpException(Exception): + + # def __init__(self, label): + # for i in renpy.config._label_callbacks: + # i(label) + + # class _JumpOutException(Exception): + + # def __init__(self, label): + # for i in renpy.config._label_callbacks: + # i(label) + + # renpy.game.CONTROL_EXCEPTIONS = tuple(list(renpy.game.CONTROL_EXCEPTIONS) + [_CallException, _JumpException, _JumpOutException]) # renpy.game.CallException = _CallException + # renpy.game.JumpException = _JumpException + # renpy.game.JumpOutException = _JumpOutException + + # class _Call(renpy.ast.Call): + # def execute(self): + # statement_name("call") + + # label = self.label + # if self.expression: + # label = renpy.python.py_eval(label) + + # rv = renpy.game.context().call(label, return_site=self.next.name) + # next_node(rv) + # renpy.game.context().abnormal = True + + # if self.arguments: + # args, kwargs = self.arguments.evaluate() + # renpy.store._args = args + # renpy.store._kwargs = kwargs + # else: + # renpy.store._args = None + # renpy.store._kwargs = None + + # setattr(store, "_last_label_call", label) + + # if config.developer: + # last_label = getattr(store, "_last_label_jump", None) + # caller_id = renpy.get_filename_line() + # print(f"Called '{stdcol.PURPLE}{label}{stdcol.END}' from '{stdcol.PURPLE}{last_label}{stdcol.END}' with ARGS:'{stdcol.YELLOW}{args}{stdcol.END}' KWARGS:'{stdcol.YELLOW}{kwargs}{stdcol.END}' caller '{stdcol.BLUE}{caller_id}{stdcol.END}'...") + + # class _Jump(renpy.ast.Jump): + # def execute(self): + + # statement_name("jump") + + # target = self.target + # if self.expression: + # target = renpy.python.py_eval(target) + + # rv = renpy.game.script.lookup(target) + # renpy.game.context().abnormal = True + + # next_node(rv) + + # setattr(store, "_last_label_jump", target) + + # if config.developer: + # last_label = getattr(store, "_last_label_jump", None) + # caller_id = renpy.get_filename_line() + # print(f"Jumped '{stdcol.PURPLE}{target}{stdcol.END}' from '{stdcol.PURPLE}{last_label}{stdcol.END}' with ARGS:'{stdcol.YELLOW}{args}{stdcol.END}' KWARGS:'{stdcol.YELLOW}{kwargs}{stdcol.END}' caller '{stdcol.BLUE}{caller_id}{stdcol.END}'...") + + # renpy.ast.Call = _Call + # renpy.ast.Jump = _Jump + +default _last_label = None + +python early: + def catch_label_call(label, abnormal): + if config.developer: + # last_label = renpy.game.context().come_from_label <- Doesn't work as expected, other methods are just as unreliable. + # from '{stdcol.PURPLE}{last_label}{stdcol.END}' + caller_id = renpy.get_filename_line() + print(f"Reached '{stdcol.PURPLE}{label}{stdcol.END}' caller '{stdcol.BLUE}{caller_id}{stdcol.END}'...") + + setattr(store, "_last_label", label) + + renpy.config.label_callbacks.append(catch_label_call) + + # def catch_label_call(label, args, kwargs): + # # Used in event queue system to differentiate jumps from calls. + # if config.developer: + # last_label = getattr(store, "_last_label_jump", None) + # caller_id = renpy.get_filename_line() + # print(f"Called '{stdcol.PURPLE}{label}{stdcol.END}' from '{stdcol.PURPLE}{last_label}{stdcol.END}' with ARGS:'{stdcol.YELLOW}{args}{stdcol.END}' KWARGS:'{stdcol.YELLOW}{kwargs}{stdcol.END}' caller '{stdcol.BLUE}{caller_id}{stdcol.END}'...") + + # setattr(store, "_last_label_call", label) + + # def catch_label_jump(label): + # # if getattr(store, "_last_label_call", None) == label: + # # return + + # if config.developer: + # last_label = getattr(store, "_last_label_jump", None) + # caller_id = renpy.get_filename_line() + # print(f"Jumped '{stdcol.PURPLE}{label}{stdcol.END}' from '{stdcol.PURPLE}{last_label}{stdcol.END}' caller '{stdcol.BLUE}{caller_id}{stdcol.END}'...") + + # setattr(store, "_last_label_jump", label) + + # renpy.config.call_callbacks = [catch_label_call] # CallException callback + # renpy.config._label_callbacks = [catch_label_jump] # JumpException and JumpOutException callbacks; Please note this is not the same as `config.label_callbacks` init -100 python: # Due to the sheer number of Doll-type objects we create and keep per each character, @@ -236,6 +336,3 @@ init -100 python: expression = expression() return true if expression else false - -# python early: -# renpy.config.call_callbacks = [] # CallException callback