Ready to play dirty? Command your Lust Goddess now. Play Now!
x
3.50 star(s) 94 Votes

ThirdLife

New Member
May 31, 2022
2
4
48
Yeah I can confirm that my mod isn't the Rootcause because I was able to recreate the exact same issue without it

AnonDev any idea ? I have a blackscreen just before the crash error, looks like it mainly triggers during some daisy scenes
The game is crashing because the "phone contact" for that replayed scene is None when the phone UI expects a proper contact dict. So when the code tries to access "phone_contact["img"]", it blows up.
  1. The phone UI screen is being shown (phone_visible == True).
  2. The screen assumes that phone_contact has been set to a valid contact before drawing.
  3. In this replay context, it wasn't set, so it's None.

So in a gallery / replay:
  1. You select a scene (EP1_07 Daisy scene).
  2. That scene calls phone_outgoing_call("Daisy", "daisy_chat5").
  3. The phone system starts the "live chat" screen.
But in replay mode, whatever normally sets phone_contact (like looking up Daisy in a contacts dict) either:
- never runs, or​
- fails to find the contact and returns None.​

In normal story progression, this probably works fine because:
- The phone/contact system is fully initialized.​
- phone_contact is set before the screen is shown.​


In gallery replay, that label is never run, so:
  1. phone_contacts doesn’t contain Daisy.
  2. phone_get_contact_by_contact_name("Daisy") returns None.
  3. phone_contact becomes None.
  4. The phone screen tries phone_contact["img"] -> crash

TLDR: The Gallery calls the label directly with minimal game state.

Your normal save where you unlocked Daisy may be irrelevant here, especially if achievements are accessible from main menu / fresh context. The phone state is basically "default Sophie only", no Daisy contact.

I patched "phone_controller.rpy" with a fallback. It will now create a temporary contact in any case where the contact is not found instead of crashing. Put it there -> MilfsOfSunville-Season-1-Extra-pc\game\Phone

Python:
    def phone_get_contact_by_contact_name(contact_name):
        global phone_contacts
        for contact in phone_contacts:
            if contact["name"] == contact_name:
                return contact

        # Fallback: create a generic temporary contact so the UI doesn't crash
        temp_contact = {
            "name": contact_name,
            "caption": t_(contact_name),
            "img": "/images/Phone/contacts/Contacts_MC.png",
            "visible": True
        }
        return temp_contact
Please note i have not tested how this will behave in-game. It shouldn't be an issue as it should only called upon in a game-state where you don't have a contact and the game tries to access that non-existing contact. But...i am not a coder so not 100% sure about it. :)
 
Last edited:
3.50 star(s) 94 Votes