Posting this in case it helps other players/modders, and also so the dev can patch it (in
script.rpy).
I found why the branches for
alienmeeting == 16 and
alienmeeting == 21 don’t fire. In my case,
alienonhold was set to 1 at the exact moment the bug happens. Because the script checks
alienonhold == 1 BEFORE checking
alienmeeting == 16 / 21, Ren’Py hits that condition first and jumps to
holdalienthing, never reaching the later elif lines.
To confirm it, I temporarily added this right before the condition block:
Code:
"[alienmeeting] / alienonhold=[alienonhold]"
When the issue happened, it printed
alienmeeting=16 (or 21) while
alienonhold=1.
Below is the original code and two fixes: a minimal reorder, and a cleaner/optimized rewrite (same logic, just readable).
BEFORE (current logic - 16/21 can get blocked by
alienonhold)
Python:
label allystory:
if alienmeeting == 2 or alienmeeting == 3 or alienmeeting == 4 or alienmeeting == 5 or alienmeeting == 12 or alienmeeting == 13 or alienmeeting == 14 or alienmeeting == 15 or alienmeeting == 17 or alienmeeting == 18 or alienmeeting == 19 or alienmeeting == 20 or alienmeeting == 22:
jump alienhangout
elif alienmeeting == 26:
jump alienhangoutnogain
elif alienmeeting == 7 or alienmeeting == 8 or alienmeeting == 9 or alienmeeting == 10:
jump sadalienhangout
elif alienonhold == 1:
jump holdalienthing
elif alienmeeting == 6:
jump allyfirstinteraction
elif alienmeeting == 11:
jump allydisguisereveal
elif alienmeeting == 16:
jump alienconfession
elif alienmeeting == 21:
jump allyfcking
elif alienmeeting == 23:
jump allyswarning
AFTER (minimal fix - give 16/21 priority over
alienonhold)
Python:
label allystory:
if alienmeeting == 2 or alienmeeting == 3 or alienmeeting == 4 or alienmeeting == 5 or alienmeeting == 12 or alienmeeting == 13 or alienmeeting == 14 or alienmeeting == 15 or alienmeeting == 17 or alienmeeting == 18 or alienmeeting == 19 or alienmeeting == 20 or alienmeeting == 22:
jump alienhangout
elif alienmeeting == 26:
jump alienhangoutnogain
elif alienmeeting == 7 or alienmeeting == 8 or alienmeeting == 9 or alienmeeting == 10:
jump sadalienhangout
# Fix: handle these before alienonhold
elif alienmeeting == 16:
jump alienconfession
elif alienmeeting == 21:
jump allyfcking
elif alienonhold == 1:
jump holdalienthing
elif alienmeeting == 6:
jump allyfirstinteraction
elif alienmeeting == 11:
jump allydisguisereveal
elif alienmeeting == 23:
jump allyswarning
AFTER (optimized/clean version - same behavior, easier to maintain)
Python:
label allystory:
if alienmeeting in (2, 3, 4, 5, 12, 13, 14, 15, 17, 18, 19, 20, 22):
jump alienhangout
elif alienmeeting == 26:
jump alienhangoutnogain
elif alienmeeting in (7, 8, 9, 10):
jump sadalienhangout
# Fix: these should not be blocked by alienonhold
elif alienmeeting == 16:
jump alienconfession
elif alienmeeting == 21:
jump allyfcking
elif alienonhold == 1:
jump holdalienthing
elif alienmeeting == 6:
jump allyfirstinteraction
elif alienmeeting == 11:
jump allydisguisereveal
elif alienmeeting == 23:
jump allyswarning
If the dev sees this: it looks like
alienonhold is staying at 1 in situations where meeting
16/21 is expected to trigger. Either resetting
alienonhold earlier (where appropriate) or giving those two meetings priority (as shown above) fixes it.
Hope this helps someone else.