Mod Ren'Py Pale Carnations - Shawn's Walkthrough + Improvements + Cheat Mod [vCh4Up6] [Shawnchapp]

5.00 star(s) 2 Votes

Are people using the options to see multi scenes? I'm replaying and wonder if i should add more


  • Total voters
    359
  • Poll closed .

Ancalagon451

New Member
Apr 23, 2018
1
2
207

CinderFall201

Member
Feb 5, 2018
247
356
248
YAY can't wait to play this, so glad we can pick all the girls instead of picking one. Take all the time you need Shawn!!
 

Shawnchapp

Engaged Member
Modder
Feb 13, 2018
2,314
8,315
610
It's gonna sound weird, but could you also include a tip for the fastest route out of the freeroaming, IE: skip all that is skippable?

I've to redo several playthroughs after losing my saves and some of the freeroams are unnecessary to some of them.

Get well soon.
for most of the freeraom there is no "quick" route you have to view all scene before it unlocks the new areas, but for the one i just showed part 3 of freeroam you can just talk to lucy and follower her and skips it all or hana as both of those just trigger the final scene right away (which is why im adding the guide for that part of the freeroam as you can quite easily miss alot of content)
 

Shawnchapp

Engaged Member
Modder
Feb 13, 2018
2,314
8,315
610
Update think I'm finally done with this "simple" screen that turn out not be so simple with the logic i used.....

full code so peoplecan understand how i turn a simple screen into a complicated mess LOL I'm sure a more experienced coder probably could do what i did in maybe less the half the lines i used and more efficient LOL


Python:
init python:

    def handle_girl_selection(base_checks, extra_checks=None, jump_label=None):
        for cond, msg in base_checks:
            if cond:
                renpy.show_screen("mod_popup", message=msg)
                renpy.store.mod_week3_up6_stage3_menu = False
                return

        if extra_checks is None:
            extra_checks = [
                (not all([w3ExBar3AllisonLeft, w3ExBar3SophiaRepeat, w3ExAugustTalk, w3ExHallwayLucyGone]),
                 "You haven't completed all optional scenes yet. Proceed anyway?")
            ]

        for cond, msg in extra_checks:
            if cond and jump_label:
                renpy.show_screen("mod_popup", message=msg, jump_label=jump_label, allow_proceed=True)
                renpy.store.mod_week3_up6_stage3_menu = False
                return

        if mod_week3_up6_freeraom3_cheat and jump_label:
            renpy.show_screen(
                "mod_popup",
                message="Is this the girl you want to canonical end on?",
                jump_label=jump_label,
                allow_proceed=True
            )
            renpy.store.mod_week3_up6_stage3_menu = False
            return

        if jump_label:
            renpy.jump(jump_label)

    mod_tracked_screens = {
        "w3ExHallwayStage3": "mod_week3_up6_stage3",
        "w3ExHDRStage3": "mod_week3_up6_stage3",
        "w3ExVRStage3": "mod_week3_up6_stage3",
        "w3ExAO3": "mod_week3_up6_stage3",
        "w3ExBarStage3": "mod_week3_up6_stage3",
        }

    active_tracked = {screen: False for screen in mod_tracked_screens}

    def update_active_tracked():
        for screen_name in active_tracked:
            active_tracked[screen_name] = renpy.get_screen(screen_name) is not None

    def update_mod_screens():
        update_active_tracked()
        for mod_screen in set(mod_tracked_screens.values()):
            should_show = any(
                active_tracked[s] for s, m in mod_tracked_screens.items() if m == mod_screen
            )
            if should_show:
                renpy.show_screen(mod_screen)
            else:
                renpy.hide_screen(mod_screen)

    config.interact_callbacks.append(update_mod_screens)

screen mod_week3_up6_stage3:
    frame:
        style "stats_f_outline"
        align (0.5, 0.001)
        has frame:
            style "stats_f_main"
        vbox:
            spacing 20
            text "Order for Events (to get the most scenes)" xalign 0.5
            if mod_week3_up6_stage3_menu:
                textbutton "Hide Guide"  action SetVariable("mod_week3_up6_stage3_menu", False) selected mod_week3_up6_stage3_menu text_style "mod_textbuttonr" xalign 0.5
            else:
                textbutton "Show Guide"  action SetVariable("mod_week3_up6_stage3_menu", True) selected mod_week3_up6_stage3_menu  text_style "mod_textbuttong" xalign 0.5
            if mod_week3_up6_stage3_menu:
                hbox:
                    spacing 20
                    xalign 0.5

                    if not any([w3ExHDROPen, w3LucySent, w3LucyAvoided, w3LucyEdwinTime]):
                        vbox:
                            xalign 0.5
                            imagebutton:
                                idle ImageReference("lucy")
                                hover ImageReference("lucy" + "_hov")
                                action Jump("w3ExHallwayLucyGlimpse")
                                xalign 0.5
                            text "Lucy \"Give the lady some time\"" xalign 0.5 size 22

                hbox:
                    spacing 20
                    xalign 0.5

                    if not w3ExAugustTalk:
                        vbox:
                            xalign 0.5
                            imagebutton:
                                idle ImageReference("august")
                                hover ImageReference("august" + "_hov")
                                action Jump("w3ExAO3Chat")
                                xalign 0.5
                            text "August" xalign 0.5 size 22

                    if not w3ExBar3AllisonLeft:
                        vbox:
                            xalign 0.5
                            imagebutton:
                                idle ImageReference("allison")
                                hover ImageReference("allison" + "_hov")
                                action Jump("w3ExBar3Allison")
                                xalign 0.5
                            text "Allison" xalign 0.5 size 22

                    if not w3ExBar3SophiaRepeat:
                        vbox:
                            xalign 0.5
                            imagebutton:
                                idle ImageReference("sophia")
                                hover ImageReference("sophia" + "_hov")
                                action Jump("w3ExBar3Sophia")
                                xalign 0.5
                            text "Sophia" xalign 0.5 size 22

                text "Must choose one" xalign 0.5
                hbox:
                    spacing 20
                    xalign 0.5
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("lucy")
                            hover ImageReference("lucy" + "_hov")
                            action Function(
                                handle_girl_selection,
                                base_checks=[
                                    (not w3ExHallwayLucyGone,
                                     "Must complete Lucy's step 1 first")
                                ],
                                jump_label="w3ExHDRLucy"
                            )
                        text "Lucy" xalign 0.5 size 22

                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("hana")
                            hover ImageReference("hana" + "_hov")
                            action Function(
                                handle_girl_selection,
                                base_checks=[],
                                jump_label="w3ExKOGothMommies"
                            )
                            xalign 0.5
                        text "Hana" xalign 0.5 size 22

                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("kathleen")
                            hover ImageReference("kathleen" + "_hov")
                            action Function(
                                handle_girl_selection,
                                base_checks=[
                                    (not any([w3ExHallwayLucyGone, w3ExKatHallwaySeen, w3ExKatFlirt]) or not w3ExKOStage3Empty,
                                     "Must complete Lucy's step 1 and then Hana's scene first")
                                ],
                                jump_label="w3ExHallwayKatBother"
                            )
                            xalign 0.5
                        text "Kathleen" xalign 0.5 size 22

                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("felicia")
                            hover ImageReference("felicia" + "_hov")
                            action Function(
                                handle_girl_selection,
                                base_checks=[
                                    (not any([w3ExHallwayLucyGone, w3ExKatHallwaySeen, w3ExFeliciaTalk, w3ExEndSkip]) or not w3ExKOStage3Empty,
                                     "Must complete Lucy's step 1 and then Hana's scene first")
                                ],
                                jump_label="w3ExVIPFeliciaFinally"
                            )
                            xalign 0.5
                        text "Felicia" xalign 0.5 size 22

                text "{m_note} For Felicia or Kathleen MUST do Hana's scene first and choose\"The devil's work is never done\"" size 20 xalign 0.5
                vbox:
                    xalign 0.5
                    hbox:
                        spacing 20
                        xalign 0.5
                        text "CHEAT"
                        if mod_week3_up6_freeraom3_cheat:
                            textbutton "Enabled"  action SetVariable("mod_week3_up6_freeraom3_cheat", False) selected mod_week3_up6_freeraom3_cheat text_style "mod_textbuttong" yoffset -6
                        else:
                            textbutton "Disabled"  action SetVariable("mod_week3_up6_freeraom3_cheat", True) selected mod_week3_up6_freeraom3_cheat text_style "mod_textbuttonr" yoffset -6
                    text "Pick all final girls" size 20 xalign 0.5

screen mod_popup(message="", jump_label=None, allow_proceed=False):

    modal True
    frame:
        style "stats_f_outline"
        align (0.5, 0.5)
        has frame:
            style "stats_f_main"
        vbox:
            spacing 20
            text message size 24 xalign 0.5

            if jump_label is None and not allow_proceed:
                textbutton "Close":
                    xalign 0.5
                    action [Hide("mod_popup"), SetVariable("mod_week3_up6_stage3_menu", True)]
                    text_idle_color "#ffffff"
                    text_hover_color "#51087E"

            elif allow_proceed and jump_label is not None:
                hbox:
                    spacing 40
                    xalign 0.5

                    textbutton "Proceed":
                        action [Hide("mod_popup"), SetVariable("mod_week3_up6_stage3_menu", True), Jump(jump_label)]
                        text_idle_color "#ffffff"
                        text_hover_color "#00ff00"

                    textbutton "Cancel":
                        action [Hide("mod_popup"), SetVariable("mod_week3_up6_stage3_menu", True)]
                        text_idle_color "#ffffff"
                        text_hover_color "#ff0000"

            elif jump_label is not None:
                textbutton "OK":
                    xalign 0.5
                    action [Hide("mod_popup"), SetVariable("mod_week3_up6_stage3_menu", True), Jump(jump_label)]
                    text_idle_color "#ffffff"
                    text_hover_color "#51087E"



screen mod_week3_up6_stage3_pickgirl:
    frame:
        style "stats_f_outline"
        align (0.5, 0.001)
        has frame:
            style "stats_f_main"
        vbox:
            spacing 20
            text "Pick next girl" xalign 0.5
            hbox:
                spacing 20
                xalign 0.5

                if not any([w3LucyEdwinTime, w3LucyAvoided, w3LucySent]):
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("lucy")
                            hover ImageReference("lucy" + "_hov")
                            action Jump("w3ExHDRLucy")
                            xalign 0.5
                        text "Lucy" xalign 0.5 size 22

                if not w3ExKatFlirt and not w3ExKatHallwaySeen:
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("kathleen")
                            hover ImageReference("kathleen" + "_hov")
                            action Jump("w3ExHallwayKatBother")
                            xalign 0.5
                        text "Kathleen" xalign 0.5 size 22

                if not w3ExHanaPhotoshoot and not w3ExKatHallwaySeen:
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("hana")
                            hover ImageReference("hana" + "_hov")
                            action Jump("w3ExKOGothMommies")
                            xalign 0.5
                        text "Hana" xalign 0.5 size 22

                if not w3ExFeliciaTalk and not w3ExEndSkip:
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("felicia")
                            hover ImageReference("felicia" + "_hov")
                            action Jump("w3ExVIPFeliciaFinally")
                            xalign 0.5
                        text "Felicia" xalign 0.5 size 22

                textbutton "FINISHED":
                    action Jump("w3ExStage3Donezo")
                    text_idle_color "#ffffff"
                    text_hover_color "#00ff00"

                text "{m_note} Clicking finished ends freeroam and skips the rest fo the girls." size 20 xalign 0.5
 
Last edited:

balboa2151

Active Member
Jun 10, 2023
527
581
226
Damn. I'm really sorry that you're sick, every time I turn around someone in the gaming community has health issues, it's very sad and depressing, I receive so many emails where the devs send out updates and I'm just blown away by how many are unhealthy, Shawn I wish you the best, I was a surgical nurse in the operating room since 1991, yeah I'm fucking old, but if you need any advice pertaining to surgical intervention please message me and I hope that I can answer some of your questions, I really don't mind, take care
 

Hoboy

Well-Known Member
Jul 24, 2017
1,941
1,367
385
Update think I'm finally done with this "simple" screen that turn out not be so simple with the logic i used.....

full code so peoplecan understand how i turn a simple screen into a complicated mess LOL I'm sure a more experienced coder probably could do what i did in maybe less the half the lines i used and more efficient LOL


Python:
init python:

    def handle_girl_selection(base_checks, extra_checks=None, jump_label=None):
        for cond, msg in base_checks:
            if cond:
                renpy.show_screen("mod_popup", message=msg)
                renpy.store.mod_week3_up6_stage3_menu = False
                return

        if extra_checks is None:
            extra_checks = [
                (not all([w3ExBar3AllisonLeft, w3ExBar3SophiaRepeat, w3ExAugustTalk, w3ExHallwayLucyGone]),
                 "You haven't completed all optional scenes yet. Proceed anyway?")
            ]

        for cond, msg in extra_checks:
            if cond and jump_label:
                renpy.show_screen("mod_popup", message=msg, jump_label=jump_label, allow_proceed=True)
                renpy.store.mod_week3_up6_stage3_menu = False
                return

        if mod_week3_up6_freeraom3_cheat and jump_label:
            renpy.show_screen(
                "mod_popup",
                message="Is this the girl you want to canonical end on?",
                jump_label=jump_label,
                allow_proceed=True
            )
            renpy.store.mod_week3_up6_stage3_menu = False
            return

        if jump_label:
            renpy.jump(jump_label)

    mod_tracked_screens = {
        "w3ExHallwayStage3": "mod_week3_up6_stage3",
        "w3ExHDRStage3": "mod_week3_up6_stage3",
        "w3ExVRStage3": "mod_week3_up6_stage3",
        "w3ExAO3": "mod_week3_up6_stage3",
        "w3ExBarStage3": "mod_week3_up6_stage3",
        }

    active_tracked = {screen: False for screen in mod_tracked_screens}

    def update_active_tracked():
        for screen_name in active_tracked:
            active_tracked[screen_name] = renpy.get_screen(screen_name) is not None

    def update_mod_screens():
        update_active_tracked()
        for mod_screen in set(mod_tracked_screens.values()):
            should_show = any(
                active_tracked[s] for s, m in mod_tracked_screens.items() if m == mod_screen
            )
            if should_show:
                renpy.show_screen(mod_screen)
            else:
                renpy.hide_screen(mod_screen)

    config.interact_callbacks.append(update_mod_screens)

screen mod_week3_up6_stage3:
    frame:
        style "stats_f_outline"
        align (0.5, 0.001)
        has frame:
            style "stats_f_main"
        vbox:
            spacing 20
            text "Order for Events (to get the most scenes)" xalign 0.5
            if mod_week3_up6_stage3_menu:
                textbutton "Hide Guide"  action SetVariable("mod_week3_up6_stage3_menu", False) selected mod_week3_up6_stage3_menu text_style "mod_textbuttonr" xalign 0.5
            else:
                textbutton "Show Guide"  action SetVariable("mod_week3_up6_stage3_menu", True) selected mod_week3_up6_stage3_menu  text_style "mod_textbuttong" xalign 0.5
            if mod_week3_up6_stage3_menu:
                hbox:
                    spacing 20
                    xalign 0.5

                    if not any([w3ExHDROPen, w3LucySent, w3LucyAvoided, w3LucyEdwinTime]):
                        vbox:
                            xalign 0.5
                            imagebutton:
                                idle ImageReference("lucy")
                                hover ImageReference("lucy" + "_hov")
                                action Jump("w3ExHallwayLucyGlimpse")
                                xalign 0.5
                            text "Lucy \"Give the lady some time\"" xalign 0.5 size 22

                hbox:
                    spacing 20
                    xalign 0.5

                    if not w3ExAugustTalk:
                        vbox:
                            xalign 0.5
                            imagebutton:
                                idle ImageReference("august")
                                hover ImageReference("august" + "_hov")
                                action Jump("w3ExAO3Chat")
                                xalign 0.5
                            text "August" xalign 0.5 size 22

                    if not w3ExBar3AllisonLeft:
                        vbox:
                            xalign 0.5
                            imagebutton:
                                idle ImageReference("allison")
                                hover ImageReference("allison" + "_hov")
                                action Jump("w3ExBar3Allison")
                                xalign 0.5
                            text "Allison" xalign 0.5 size 22

                    if not w3ExBar3SophiaRepeat:
                        vbox:
                            xalign 0.5
                            imagebutton:
                                idle ImageReference("sophia")
                                hover ImageReference("sophia" + "_hov")
                                action Jump("w3ExBar3Sophia")
                                xalign 0.5
                            text "Sophia" xalign 0.5 size 22

                text "Must choose one" xalign 0.5
                hbox:
                    spacing 20
                    xalign 0.5
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("lucy")
                            hover ImageReference("lucy" + "_hov")
                            action Function(
                                handle_girl_selection,
                                base_checks=[
                                    (not w3ExHallwayLucyGone,
                                     "Must complete Lucy's step 1 first")
                                ],
                                jump_label="w3ExHDRLucy"
                            )
                        text "Lucy" xalign 0.5 size 22

                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("hana")
                            hover ImageReference("hana" + "_hov")
                            action Function(
                                handle_girl_selection,
                                base_checks=[],
                                jump_label="w3ExKOGothMommies"
                            )
                            xalign 0.5
                        text "Hana" xalign 0.5 size 22

                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("kathleen")
                            hover ImageReference("kathleen" + "_hov")
                            action Function(
                                handle_girl_selection,
                                base_checks=[
                                    (not any([w3ExHallwayLucyGone, w3ExKatHallwaySeen, w3ExKatFlirt]) or not w3ExKOStage3Empty,
                                     "Must complete Lucy's step 1 and then Hana's scene first")
                                ],
                                jump_label="w3ExHallwayKatBother"
                            )
                            xalign 0.5
                        text "Kathleen" xalign 0.5 size 22

                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("felicia")
                            hover ImageReference("felicia" + "_hov")
                            action Function(
                                handle_girl_selection,
                                base_checks=[
                                    (not any([w3ExHallwayLucyGone, w3ExKatHallwaySeen, w3ExFeliciaTalk, w3ExEndSkip]) or not w3ExKOStage3Empty,
                                     "Must complete Lucy's step 1 and then Hana's scene first")
                                ],
                                jump_label="w3ExVIPFeliciaFinally"
                            )
                            xalign 0.5
                        text "Felicia" xalign 0.5 size 22

                text "{m_note} For Felicia or Kathleen MUST do Hana's scene first and choose\"The devil's work is never done\"" size 20 xalign 0.5
                vbox:
                    xalign 0.5
                    hbox:
                        spacing 20
                        xalign 0.5
                        text "CHEAT"
                        if mod_week3_up6_freeraom3_cheat:
                            textbutton "Enabled"  action SetVariable("mod_week3_up6_freeraom3_cheat", False) selected mod_week3_up6_freeraom3_cheat text_style "mod_textbuttong" yoffset -6
                        else:
                            textbutton "Disabled"  action SetVariable("mod_week3_up6_freeraom3_cheat", True) selected mod_week3_up6_freeraom3_cheat text_style "mod_textbuttonr" yoffset -6
                    text "Pick all final girls" size 20 xalign 0.5

screen mod_popup(message="", jump_label=None, allow_proceed=False):

    modal True
    frame:
        style "stats_f_outline"
        align (0.5, 0.5)
        has frame:
            style "stats_f_main"
        vbox:
            spacing 20
            text message size 24 xalign 0.5

            if jump_label is None and not allow_proceed:
                textbutton "Close":
                    xalign 0.5
                    action [Hide("mod_popup"), SetVariable("mod_week3_up6_stage3_menu", True)]
                    text_idle_color "#ffffff"
                    text_hover_color "#51087E"

            elif allow_proceed and jump_label is not None:
                hbox:
                    spacing 40
                    xalign 0.5

                    textbutton "Proceed":
                        action [Hide("mod_popup"), SetVariable("mod_week3_up6_stage3_menu", True), Jump(jump_label)]
                        text_idle_color "#ffffff"
                        text_hover_color "#00ff00"

                    textbutton "Cancel":
                        action [Hide("mod_popup"), SetVariable("mod_week3_up6_stage3_menu", True)]
                        text_idle_color "#ffffff"
                        text_hover_color "#ff0000"

            elif jump_label is not None:
                textbutton "OK":
                    xalign 0.5
                    action [Hide("mod_popup"), SetVariable("mod_week3_up6_stage3_menu", True), Jump(jump_label)]
                    text_idle_color "#ffffff"
                    text_hover_color "#51087E"



screen mod_week3_up6_stage3_pickgirl:
    frame:
        style "stats_f_outline"
        align (0.5, 0.001)
        has frame:
            style "stats_f_main"
        vbox:
            spacing 20
            text "Pick next girl" xalign 0.5
            hbox:
                spacing 20
                xalign 0.5

                if not any([w3LucyEdwinTime, w3LucyAvoided, w3LucySent]):
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("lucy")
                            hover ImageReference("lucy" + "_hov")
                            action Jump("w3ExHDRLucy")
                            xalign 0.5
                        text "Lucy" xalign 0.5 size 22

                if not w3ExKatFlirt and not w3ExKatHallwaySeen:
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("kathleen")
                            hover ImageReference("kathleen" + "_hov")
                            action Jump("w3ExHallwayKatBother")
                            xalign 0.5
                        text "Kathleen" xalign 0.5 size 22

                if not w3ExHanaPhotoshoot and not w3ExKatHallwaySeen:
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("hana")
                            hover ImageReference("hana" + "_hov")
                            action Jump("w3ExKOGothMommies")
                            xalign 0.5
                        text "Hana" xalign 0.5 size 22

                if not w3ExFeliciaTalk and not w3ExEndSkip:
                    vbox:
                        xalign 0.5
                        imagebutton:
                            idle ImageReference("felicia")
                            hover ImageReference("felicia" + "_hov")
                            action Jump("w3ExVIPFeliciaFinally")
                            xalign 0.5
                        text "Felicia" xalign 0.5 size 22

                textbutton "FINISHED":
                    action Jump("w3ExStage3Donezo")
                    text_idle_color "#ffffff"
                    text_hover_color "#00ff00"

                text "{m_note} Clicking finished ends freeroam and skips the rest fo the girls." size 20 xalign 0.5
Don't worry about it..you'rd good
 

Shawnchapp

Engaged Member
Modder
Feb 13, 2018
2,314
8,315
610
Updated

PB: 3days

Change logs:
  • Added more mod options, based on routes picked example doing both Hana and Mina visit (only available if you stay with Mina at the rockshow and kissed her and didn't dance on stage)
  • Added option to see all final girls scene in the freeroam part 3 (must enable cheat, and pick the girl you want the game to register as your choice first)
  • Fixed bugs and typos on all past script files
  • updated mod ui to split girls/guys as character list getting larger.
 

spiralkinda

Newbie
Dec 27, 2017
34
44
243
Updated

PB: 3days

Change logs:
  • Added more mod options, based on routes picked example doing both Hana and Mina visit (only available if you stay with Mina at the rockshow and kissed her and didn't dance on stage)
  • Added option to see all final girls scene in the freeroam part 3 (must enable cheat, and pick the girl you want the game to register as your choice first)
  • Fixed bugs and typos on all past script files
  • updated mod ui to split girls/guys as character list getting larger.


Purchased
Thanks.
 
5.00 star(s) 2 Votes