EventQueue and Event classes improvements and bug fixes

* Added _event, _event_queue globals
* Added ignore_globals class tuple
* Added extensive debugging tools
* Added next and cancel methods
* Added subevents support
* Added ability to enqueue events abnormally
* Moved menu_hints method outside of the EventQueue for better modularity
* Fixed queue filtering
* Fixed repeatable events
* Fixed missing id for the mainloop EventQueue
* Fixed groping T1 unreachable second event
* Removed daytime parameter (superseded by req)
This commit is contained in:
LoafyLemon 2023-06-26 01:44:25 +01:00
parent 19895d1953
commit ede1ee9a6c
14 changed files with 196 additions and 91 deletions

View File

@ -11,6 +11,7 @@ label start_hg_pf_strip:
"\"(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
$ current_payout = 35 $ current_payout = 35

View File

@ -11,6 +11,7 @@ label start_hg_pf_handjob:
"\"(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
$ current_payout = 45 $ current_payout = 45

View File

@ -11,6 +11,7 @@ label start_hg_pf_titjob:
"\"(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
$ current_payout = 45 $ current_payout = 45

View File

@ -11,6 +11,7 @@ label start_hg_pf_grope:
"\"(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
$ current_payout = 15 $ current_payout = 15
@ -98,15 +99,16 @@ label end_hg_pf_grope:
# Those events still prgress, but Hermione will run off and get mad. # Those events still prgress, but Hermione will run off and get mad.
# The heart icons for these events are 'black' # The heart icons for these events are 'black'
label hg_pf_grope_T1_fail_intro: label hg_pf_grope_T1_fail:
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")
gen "Or your butt! I haven't fully decided yet!" ("grin", xpos="far_left", ypos="head")
jump too_much if not _events_filtered_completed_any:
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")
gen "Or your butt! I haven't fully decided yet!" ("grin", xpos="far_left", ypos="head")
jump too_much
label hg_pf_grope_T1_fail_repeat:
gen "[name_hermione_genie], I'd like to grope you a little!" ("grin", xpos="far_left", ypos="head") gen "[name_hermione_genie], I'd like to grope you a little!" ("grin", xpos="far_left", ypos="head")
her "This again...?" ("angry", "base", "angry", "mid") her "This again...?" ("angry", "base", "angry", "mid")
her "I've told you before, [name_genie_hermione], absolutely not!!" ("scream", "closed", "angry", "mid") her "I've told you before, [name_genie_hermione], absolutely not!!" ("scream", "closed", "angry", "mid")

View File

@ -11,6 +11,7 @@ label start_hg_pf_sex:
"\"(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
# Start Event # Start Event

View File

@ -13,6 +13,7 @@ label start_hg_pf_admire_panties:
pass pass
"\"(Not right now.)\"": "\"(Not right now.)\"":
$ _event.cancel()
jump hermione_favor_menu jump hermione_favor_menu
$ current_payout = 10 $ current_payout = 10

View File

@ -10,6 +10,7 @@ label start_hg_pf_admire_breasts:
"\"(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
$ current_payout = 10 $ current_payout = 10

View File

@ -11,6 +11,7 @@ label start_hg_pf_blowjob:
"\"(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
# Start Event # Start Event

View File

@ -9,6 +9,7 @@ label start_hg_pf_talk:
"\"(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
$ current_payout = 5 $ current_payout = 5

View File

@ -1,6 +1,6 @@
default ev_her_small_plug = Event(id="her_small_plug", label="hg_butt_plugs_small_return", daytime=False) default ev_her_small_plug = Event(id="her_small_plug", label="hg_butt_plugs_small_return", req="game.daytime==False")
default ev_her_medium_plug = Event(id="her_medium_plug", label="hg_butt_plugs_medium_return", daytime=False) default ev_her_medium_plug = Event(id="her_medium_plug", label="hg_butt_plugs_medium_return", req="game.daytime==False")
default ev_her_large_plug = Event(id="her_large_plug", label="hg_butt_plugs_large_return", daytime=False) default ev_her_large_plug = Event(id="her_large_plug", label="hg_butt_plugs_large_return", req="game.daytime==False")
label hg_butt_plugs: label hg_butt_plugs:

View File

@ -1,5 +1,5 @@
default ev_her_vibrators_public_return = Event(id="her_vibrators_public_return", label="hg_vibrators_public_return", daytime=False) default ev_her_vibrators_public_return = Event(id="her_vibrators_public_return", label="hg_vibrators_public_return", req="game.daytime==False")
label hg_vibrators: label hg_vibrators:

View File

@ -32,8 +32,7 @@ default her_ev_admire_breasts_t4_e1 = Event(id="admire_breasts_t4_e1", label="hg
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_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_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_grope_t1_e1 = Event(id="grope_t1_e1", label="hg_pf_grope_T1_fail_intro", 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_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_t1_e2 = Event(id="grope_t1_e2", label="hg_pf_grope_T1_fail_repeat", priority=6, req="states.her.tier == 1", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=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_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_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_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"])

File diff suppressed because it is too large Load Diff

View File

@ -34,6 +34,31 @@ init -999 python early:
detect_orphaned_rpyc_files() detect_orphaned_rpyc_files()
# class InstanceDebugger(object):
# def __init__(self, obj):
# object.__setattr__(self, 'instance', obj)
# def __get__(self, obj, type=None):
# return functools.partial(self, obj)
# def __call__(self, *args, **kwargs):
# return self.instance(*args,**kwargs)
# def __getattr__(self, attr):
# attr = getattr(self.instance, attr)
# return self.__class__(attr) if hasattr(attr, '__dict__') else attr
# def __setattr__(self, attr, value):
# instance = self.instance
# if getattr(instance, attr, None) != value:
# print(f"'{self.instance.id}' setting attribute '{attr}' to '{value}' ...")
# instance.attr = value
init python: init python:
config.missing_image_callback = missing_image_func config.missing_image_callback = missing_image_func
@ -43,7 +68,7 @@ init python:
config.missing_label_callback = missing_label_func config.missing_label_callback = missing_label_func
config.return_not_found_label = "missing_return" config.return_not_found_label = "missing_return"
init -1 python: init -2 python:
def missing_image_func(path): def missing_image_func(path):
global systemerror global systemerror
@ -100,6 +125,18 @@ init -1 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]