Wherever there are variants for a scene, the
fools people who develop this game do something like this:
Code:
$ renpy.dynamic(variants=persistent.cookie_jar['Odette']['variants']['04_unlocked'])
if len(variants) > 1:
scene expression background(l=L_tattooparlor_roof, t=3) with fade
menu:
"Roof (Topless)" if 'roof' in variants:
jump scene_odette_blowjob.roof
"Sugar Tats" if 'shop' in variants:
jump scene_odette_blowjob.shop
else:
jump expression 'scene_odette_blowjob.{}'.format(next(iter(variants)))
return
It
should be impossible to unlock Odette scene 4 without unlocking any of the variants. It is impossible if you unlocked it by playing the game! But if you unlocked it some other way, then it's possible to unlock the scene without any of the variants.
The code above creates a list of all of the variants that you've unlocked and, if the length of the list is greater than 1, it lets you choose which one you want to see. If it's not greater than 1, it assumes that the length is 1 and passes that 1 to line 165:
jump expression 'scene_odette_blowjob.{}'.format(next(iter(variants)))
But you can't assume that length is 1! This causes the game to crash if the length is 0! You have to either create an exception handler for that possibility or, more intelligently, change it so that it tests for 1 or not 1. This is how the code should be:
Code:
$ renpy.dynamic(variants=persistent.cookie_jar['Odette']['variants']['04_unlocked'])
if len(variants) == 1:
jump expression 'scene_odette_blowjob.{}'.format(next(iter(variants)))
else:
scene expression background(l=L_tattooparlor_roof, t=3) with fade
menu:
"Roof (Topless)":
jump scene_odette_blowjob.roof
"Sugar Tats":
jump scene_odette_blowjob.shop
return
Then things don't fuck up if length= 0.
TL;DR: You unlocked the scene in an unexpected way, and the coders didn't follow best practices to prevent an exception occurring if the variant iterator was empty. I've reported this foolishness on Discord, but the one I reported wasn't fixed. File a bug report.