Luna favours and queue improvements

* Converted Luna personal favours into the new system, and cleaned up the code.
* Added 'noncompliant' return result to differentiate between unmet event requirements and the disabled states
* Added disabled state default parameter
This commit is contained in:
LoafyLemon 2023-07-02 16:17:44 +01:00
parent f10111bfa3
commit d2a76938b4
8 changed files with 129 additions and 152 deletions

View File

@ -168,7 +168,7 @@ label hermione_favor_menu:
$ result = show_events_menu(hermione_favors)
if result == "disabled":
if result in ("disabled", "noncompliant"):
"You haven't unlocked this favor opportunity yet."
jump .favors
elif result == "exit":
@ -199,7 +199,7 @@ label hermione_favor_menu:
$ result = show_events_menu(hermione_requests)
if result == "disabled":
if result in ("disabled", "noncompliant"):
"You haven't unlocked this request opportunity yet."
jump .requests
elif result == "exit":
@ -212,7 +212,7 @@ label hermione_favor_menu:
$ result = show_events_menu(hermione_jobs, report_progress=False)
if result == "disabled":
if result in ("disabled", "noncompliant"):
"You haven't unlocked this job opportunity yet."
jump .odd_jobs
elif result == "exit":

View File

@ -4,13 +4,15 @@
label ll_pf_masturbate:
gen "{size=-4}(*Hmm*... I wonder if I should ask Luna to masturbate in front of me...){/size}" ("base", xpos="far_left", ypos="head")
if ll_pf_masturbate.counter < 1:
if not _events_completed_any:
gen "{size=-4}(*Hmm*... I wonder if I should ask Luna to masturbate in front of me...){/size}" ("base", xpos="far_left", ypos="head")
menu:
"\"(Yes, let's do it!)\"":
pass
"\"(Not right now.)\"":
$ _event.cancel()
jump luna_favor_menu
# Start Event
@ -26,10 +28,9 @@ label ll_pf_masturbate:
hide screen blkfade
with d5
$ ll_pf_masturbate.start()
return
# End Event
label .end:
label ll_pf_masturbate_end:
# Setup
stop music fadeout 2.0
@ -56,6 +57,8 @@ label ll_pf_masturbate:
label ll_pf_masturbate_T3_E1_intro:
call ll_pf_masturbate
gen "So, have the wickerspats finally left you alone [name_luna_genie]?" ("base", xpos="far_left", ypos="head")
lun "Not at all, [name_genie_luna]... In fact... They've been worse than ever." ("angry", "narrow", "base", "downL", trans=dissolve)
gen "Really?" ("base", xpos="far_left", ypos="head")
@ -301,13 +304,15 @@ label ll_pf_masturbate_T3_E1_intro:
$ states.lun.status.masturbating = True
jump ll_pf_masturbate.end
jump ll_pf_masturbate_end
##Luna takes off her skirt and later on, her top. She fingers herself for the first time
##She doesn't squirt in this event, but will, druing the third event.
label ll_pf_masturbate_T3_E2_intro:
call ll_pf_masturbate
gen "[name_luna_genie], tell me how you've been." ("base", xpos="far_left", ypos="head")
lun "I've been okay [name_genie_luna]... But it appears the wrackspurts have come back again..." ("open", "narrow", "base", "down", trans=dissolve)
gen "Oh no... Such a shame!" ("base", xpos="far_left", ypos="head")
@ -388,7 +393,6 @@ label ll_pf_masturbate_T3_E2_intro:
$ luna.set_pose("hand_on_pussy_and_breast")
$ luna.strip("bottom", "panties")
lun @ cheeks blush "*Ah*..." ("grin", "narrow", "base", "up")
lun @ cheeks blush "I've not been able to stop thinking about this since last time..." ("grin", "narrow", "base", "stare")
lun @ cheeks blush "I worry those slimy wrackspurts have infested the dormitories, because I'm having trouble sleeping as well..." ("angry", "narrow", "base", "down")
@ -575,10 +579,15 @@ label ll_pf_masturbate_T3_E2_intro:
gen "(What an odd girl...)" ("base", xpos="far_left", ypos="head")
jump ll_pf_masturbate.end
jump ll_pf_masturbate_end
##Luna masturbates for Genie, naked and squirts##
label ll_pf_masturbate_T3_E3_intro:
$ states.lun.ev.play_with_yourself.t3_e3_complete = True
call ll_pf_masturbate
gen "Alright then, time for you to--" ("base", xpos="far_left", ypos="head")
lun "Finally..." ("mad", "base", "base", "mid", trans=dissolve)
@ -795,10 +804,13 @@ label ll_pf_masturbate_T3_E3_intro:
call lun_walk(action="leave")
jump ll_pf_masturbate.end
jump ll_pf_masturbate_end
label ll_pf_masturbate_T3_E4_repeat:
call ll_pf_masturbate
gen "Ready to avert the spurts?" ("base", xpos="far_left", ypos="head")
lun "Avert them, [name_genie_luna]?" ("soft", "base", "base", "mid", trans=dissolve)
gen "Ready to insert until you spurt and squirt?" ("base", xpos="far_left", ypos="head")
@ -1063,4 +1075,4 @@ label ll_pf_masturbate_T3_E4_repeat:
$ states.lun.level = 24
call end_of_content
jump ll_pf_masturbate.end
jump ll_pf_masturbate_end

File diff suppressed because it is too large Load Diff

View File

@ -1,71 +1,24 @@
# Personal favours
default ll_pf_talk = event_class(
title = "Talk to me!",
start_label = "ll_pf_talk",
start_tier = 1,
events = [
[# Tier 1
["ll_pf_talk_T1_E1_intro"],
["ll_pf_talk_T1_E2_intro"],
["ll_pf_talk_T1_E3_intro"],
["ll_pf_talk_T1_E4_repeat"],
],
default lun_ev_talk_to_me_t1_e1 = Event(id="lun_ev_talk_to_me_t1_e1", label="ll_pf_talk_T1_E1_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False)
default lun_ev_talk_to_me_t1_e2 = Event(id="lun_ev_talk_to_me_t1_e2", label="ll_pf_talk_T1_E2_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False)
default lun_ev_talk_to_me_t1_e3 = Event(id="lun_ev_talk_to_me_t1_e3", label="ll_pf_talk_T1_E3_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False)
default lun_ev_talk_to_me_t1_e4 = Event(id="lun_ev_talk_to_me_t1_e4", label="ll_pf_talk_T1_E4_repeat", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False)
default lun_ev_talk_to_me_t2_e1 = Event(id="lun_ev_talk_to_me_t2_e1", label="ll_pf_talk_T2_E1_repeat", req="states.lun.tier == 2", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False)
default lun_ev_talk_to_me_t3_e1 = Event(id="lun_ev_talk_to_me_t3_e1", label="ll_pf_talk_T3_E1_repeat", req="states.lun.tier >= 3", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False)
[# Tier 2
["ll_pf_talk_T2_E1_repeat"],
],
default lun_ev_inspect_her_body_t2_e1 = Event(id="lun_ev_inspect_her_body_t2_e1", label="ll_pf_inspect_T2_E1_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False)
default lun_ev_inspect_her_body_t2_e2 = Event(id="lun_ev_inspect_her_body_t2_e2", label="ll_pf_inspect_T2_E2_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False)
default lun_ev_inspect_her_body_t2_e3 = Event(id="lun_ev_inspect_her_body_t2_e3", label="ll_pf_inspect_T2_E3_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False)
default lun_ev_inspect_her_body_t2_e4 = Event(id="lun_ev_inspect_her_body_t2_e4", label="ll_pf_inspect_T2_E4_repeat", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False)
default lun_ev_inspect_her_body_t3_e1 = Event(id="lun_ev_inspect_her_body_t3_e1", label="ll_pf_inspect_T3_E1_repeat", req="states.lun.tier >= 3", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False)
[# Tier 3
["ll_pf_talk_T3_E1_repeat"],
],
],
iconset = [
["heart_empty", "heart_red"], # Tier 1
["heart_empty", "heart_red"], # Tier 2
],
)
default lun_ev_play_with_yourself_t3_e1 = Event(id="lun_ev_play_with_yourself_t3_e1", label="ll_pf_masturbate_T3_E1_intro", req="states.lun.tier >= 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False)
default lun_ev_play_with_yourself_t3_e2 = Event(id="lun_ev_play_with_yourself_t3_e2", label="ll_pf_masturbate_T3_E2_intro", req="states.lun.tier >= 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False)
default lun_ev_play_with_yourself_t3_e3 = Event(id="lun_ev_play_with_yourself_t3_e3", label="ll_pf_masturbate_T3_E3_intro", req="states.lun.tier >= 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False)
default lun_ev_play_with_yourself_t3_e4 = Event(id="lun_ev_play_with_yourself_t3_e4", label="ll_pf_masturbate_T3_E4_repeat", req="states.lun.tier >= 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False)
default ll_pf_inspect = event_class(
title = "Inspect her body!",
start_label = "ll_pf_inspect",
start_tier = 2,
events = [
[# Tier 2
["ll_pf_inspect_T2_E1_intro"],
["ll_pf_inspect_T2_E2_intro"],
["ll_pf_inspect_T2_E3_intro"],
["ll_pf_inspect_T2_E4_repeat"],
],
[# Tier 3
["ll_pf_inspect_T3_E1_repeat"],
],
],
iconset = [
["heart_empty", "heart_red"], # Tier 2
],
)
default ll_pf_masturbate = event_class(
title = "Play with yourself!",
start_label = "ll_pf_masturbate",
start_tier = 3,
events = [
[# Tier 3
["ll_pf_masturbate_T3_E1_intro"],
["ll_pf_masturbate_T3_E2_intro"],
["ll_pf_masturbate_T3_E3_intro"],
["ll_pf_masturbate_T3_E4_repeat"],
],
],
iconset = [
["heart_empty", "heart_red"], # Tier 3
],
)
default ll_favor_list = [
ll_pf_talk,
ll_pf_inspect,
ll_pf_masturbate,
]
define luna_favors = [
("lun_eventqueue_talk_to_me", "Talk to me!"),
("lun_eventqueue_inspect_her_body", "Let me inspect you!"),
("lun_eventqueue_play_with_yourself", "Play with yourself!"),
]

View File

@ -82,19 +82,17 @@ label summon_luna:
label update_lun_tier:
if states.lun.tier == 1 and states.lun.level >= 3:
if not ll_pf_talk.is_event_complete(1, 3):
if not states.lun.ev.talk_to_me.t1_e3_complete:
return
$ lun_level_up = 1
elif states.lun.tier == 2 and states.lun.level >= 6:
if not ll_pf_inspect.is_event_complete(2, 3):
if not states.lun.ev.inspect_her_body.t2_e3_complete:
return
$ lun_level_up = 2
elif states.lun.tier == 3 and states.lun.level >= 9:
# T4 NOT AVAILABLE
return
if not ll_pf_masturbate.is_event_complete(3, 3):
if not states.lun.ev.play_with_yourself.t3_e3_complete:
return
$ lun_level_up = 3
@ -131,8 +129,6 @@ label luna_level_up(tier=None):
# Luna Favor Menu
label luna_favor_menu:
call update_luna_favors
menu:
"-Level Up-" (icon="interface/icons/small/levelup.webp") if lun_level_up != None:
call luna_level_up(tier=lun_level_up)
@ -142,43 +138,37 @@ label luna_favor_menu:
call tutorial("hearts")
label .personal:
python:
menu_choices = []
for i in ll_favor_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.lun.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"))
result = renpy.display_menu(menu_choices)
$ result = show_events_menu(luna_favors)
if result == "nvm":
if result in ("disabled", "noncompliant"):
"You haven't unlocked this favour opportunity yet."
jump .personal
elif result == "exit":
jump luna_favor_menu
elif result == "vague":
call favor_not_ready
jump .personal
elif result == "na":
call not_available
jump .personal
else:
$ renpy.jump(result)
$ result.start()
"-Public Requests-" (icon="interface/icons/small/star_yellow.webp", style="disabled"):
label .requests:
call not_available
# $ result = show_events_menu(hermione_requests)
# if result in ("disabled", "noncompliant"):
# "You haven't unlocked this request opportunity yet."
# jump .requests
# elif result == "exit":
# jump .skip_points_check
# else:
# $ result.start()
jump luna_favor_menu
"-Never mind-":
jump luna_requests
label update_luna_favors:
python:
for i in ll_favor_list:
i.tier = states.lun.tier
return
label luna_talk:
# General.
menu:

View File

@ -40,6 +40,9 @@ default states.lun.ev.spectrespecs.e2_complete = False
default states.lun.ev.spectrespecs.e3_complete = False
default states.lun.ev.spectrespecs.e4_complete = False
default states.lun.ev.quibbler.stocked = False
default states.lun.ev.talk_to_me.t1_e3_complete = False
default states.lun.ev.inspect_her_body.t2_e3_complete = False
default states.lun.ev.play_with_yourself.t3_e3_complete = False
# Flags
default lun_level_up = None

View File

@ -121,7 +121,7 @@ init -1 python:
_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=[]):
repeat=True, fail_suffixes=("_fail", "too_much", "too_much_public"), ignore_labels=[], subevents=[], disabled=False):
self.id = id
self.wait = wait
self.priority = priority
@ -136,6 +136,7 @@ init -1 python:
self.fail_suffixes = tuple(fail_suffixes)
self.ignore_labels = ignore_labels
self.subevents = subevents
self.disabled = disabled
for ev in subevents:
getattr(store, ev)._parent = self
@ -144,7 +145,6 @@ init -1 python:
self.started = False
self.completed = False
self.completed_failed = False
self.disabled = False
if not renpy.has_label(self.label):
raise Exception("Supplied label does not exist.")
@ -343,16 +343,17 @@ init -1 python:
if ( ev := queue.next()) and ev.requirements_met():
action = queue
else:
elif ( ev := queue.next()) and ev.disabled:
action = "disabled"
else:
action = "noncompliant"
_kwargs = {}
if report_progress:
_kwargs = {"progress": icons}
if action == "disabled":
if action in ("disabled", "noncompliant"):
_kwargs["style"] = "disabled"
elif report_progress:
_kwargs = {"progress": icons}
location = renpy.game.context().current
choice = ui.ChoiceReturn(title, action, location, kwargs=_kwargs)