Create your AI Cum Slut for Valentine’s Day 60% OFF Now
x

VN Ren'Py Royal Switch [Development Thread]

Which paths are you playing?

  • I play them all!

    Votes: 5 20.0%
  • Esther Timid Route

    Votes: 3 12.0%
  • Esther Fearless Route

    Votes: 12 48.0%
  • Brigitte Sub Route

    Votes: 11 44.0%
  • Brigitte Bratty Route

    Votes: 9 36.0%

  • Total voters
    25
  • Poll closed .

ffive

Conversation Conqueror
Jun 19, 2022
6,949
16,350
Regarding question how to add stuff to the game's options menu, per you'd be basically adjusting with your own additions to the preferences screen (labels and checkboxes)
 
Dec 16, 2022
257
323
I've had some time today to take a look at the script and this is what I came up with. It has a several neat features...
  • No need to repeat the same animation code for every animation, making development faster and less error prone
  • Can change behavior of all animations in one place
  • There should be no weird roll bugs, can roll over animations smoothly
  • No hard pause
  • No return labels required, just one line in the script
The whole motivation was to implement a autoplay feature, which I did, I've tested it quite a bit and this version works well for me. From what I can tell, with 'default anim_autoplay = False' it behaves the exact same, but more testing is required.
Also, save compatibility should be carefully considered. This shouldn't mess with old saves, unless someone made a save during an animation, then it might. Again, more testing required.

There's still some things that can be improved, but I thought I'd share it anyways. Take a look at it if you want and let me know what you think.

Python:
# These two can be hooked into the settings menu.
# For some reason setting anim_autoplay = True will change the layout of the anim_start / anim_end screens...
default anim_autoplay = False
default anim_duration = 8.0

# The time to wait before starting any animations,
default anim_timeout = 3.0

default anim_start_btn = "imagebuttons/animbutton_%s.webp"
default anim_end_btn = "imagebuttons/finishedbutton_%s.png"


# Generic start/stop animation screens with optional timer
screen anim_start(filename):
    frame:
        xalign 0.02
        yalign 0.95
        background None
       
        $button_action = [Hide("anim_start", dissolve), Call("play_anim", filename)]
       
        imagebutton auto anim_start_btn:
            action button_action
       
        if anim_autoplay:
            timer anim_timeout action button_action
       

screen anim_end():
    modal True
    frame:
        xalign 0.02
        yalign 0.01
        background None
       
        $button_action = [Hide("anim_end", dissolve), Return()]
       
        imagebutton auto anim_end_btn:
            action button_action
           
        if anim_autoplay:
            timer anim_duration action button_action
           

# This label is called from the script, e.g. call animation("m_dhmf2a")
label animation(filename):
    # Suspend rollback, otherwise pause will create a checkpoint and rollback won't work as expected.
    $renpy.suspend_rollback(True)
   
    show screen anim_start(filename) with dissolve
   
    python:
        # This is so that we can forward roll over this screen without blocking...
        # I haven't fully figured out why this is needed, but may be related to:
        # https://github.com/renpy/renpy/issues/2794
        if not renpy.in_rollback():
            renpy.pause()
            # If afm and autoplay are on avoid skipping the animation entirely. There's probably a better way to do this.
            if renpy.game.preferences.afm_enable and anim_autoplay:
                renpy.pause(60)
   
    hide screen anim_start with dissolve
   
    $renpy.suspend_rollback(False)
    return


label play_anim(filename):
    window hide  
    show image filename with dissolve  
    show screen anim_end with dissolve  
    pause
    # In case we somehow manage to jump out of the animation early, we hide the screen and return.
    hide screen anim_end with dissolve  
    return
This can then be called from the script like this:
Python:
call animation("m_dhmf2a")
I did finish my universal patch for the current version too, which basically mimics the same autoplay feature, but injects some code at runtime.
 
  • Like
Reactions: ffive

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
I've had some time today to take a look at the script and this is what I came up with. It has a several neat features...
  • No need to repeat the same animation code for every animation, making development faster and less error prone
  • Can change behavior of all animations in one place
  • There should be no weird roll bugs, can roll over animations smoothly
  • No hard pause
  • No return labels required, just one line in the script
The whole motivation was to implement a autoplay feature, which I did, I've tested it quite a bit and this version works well for me. From what I can tell, with 'default anim_autoplay = False' it behaves the exact same, but more testing is required.
Also, save compatibility should be carefully considered. This shouldn't mess with old saves, unless someone made a save during an animation, then it might. Again, more testing required.

There's still some things that can be improved, but I thought I'd share it anyways. Take a look at it if you want and let me know what you think.

Python:
# These two can be hooked into the settings menu.
# For some reason setting anim_autoplay = True will change the layout of the anim_start / anim_end screens...
default anim_autoplay = False
default anim_duration = 8.0

# The time to wait before starting any animations,
default anim_timeout = 3.0

default anim_start_btn = "imagebuttons/animbutton_%s.webp"
default anim_end_btn = "imagebuttons/finishedbutton_%s.png"


# Generic start/stop animation screens with optional timer
screen anim_start(filename):
    frame:
        xalign 0.02
        yalign 0.95
        background None
      
        $button_action = [Hide("anim_start", dissolve), Call("play_anim", filename)]
      
        imagebutton auto anim_start_btn:
            action button_action
      
        if anim_autoplay:
            timer anim_timeout action button_action
      

screen anim_end():
    modal True
    frame:
        xalign 0.02
        yalign 0.01
        background None
      
        $button_action = [Hide("anim_end", dissolve), Return()]
      
        imagebutton auto anim_end_btn:
            action button_action
          
        if anim_autoplay:
            timer anim_duration action button_action
          

# This label is called from the script, e.g. call animation("m_dhmf2a")
label animation(filename):
    # Suspend rollback, otherwise pause will create a checkpoint and rollback won't work as expected.
    $renpy.suspend_rollback(True)
  
    show screen anim_start(filename) with dissolve
  
    python:
        # This is so that we can forward roll over this screen without blocking...
        # I haven't fully figured out why this is needed, but may be related to:
        # https://github.com/renpy/renpy/issues/2794
        if not renpy.in_rollback():
            renpy.pause()
            # If afm and autoplay are on avoid skipping the animation entirely. There's probably a better way to do this.
            if renpy.game.preferences.afm_enable and anim_autoplay:
                renpy.pause(60)
  
    hide screen anim_start with dissolve
  
    $renpy.suspend_rollback(False)
    return


label play_anim(filename):
    window hide 
    show image filename with dissolve 
    show screen anim_end with dissolve 
    pause
    # In case we somehow manage to jump out of the animation early, we hide the screen and return.
    hide screen anim_end with dissolve 
    return
This can then be called from the script like this:
Python:
call animation("m_dhmf2a")
I did finish my universal patch for the current version too, which basically mimics the same autoplay feature, but injects some code at runtime.
Thank you so much for this! I will play around with it and see if I can get it to work. I would like to include you in the game credits! If you're interested, DM me.
 
Dec 16, 2022
257
323
Thank you so much for this! I will play around with it and see if I can get it to work. I would like to include you in the game credits! If you're interested, DM me.
That's nice of you to offer, but not really necessary. I'm just having a bit of fun working with renpy and if something comes of it that you want to use, that's great.

I have been thinking about potential save game issues today and just done some more testing. It turns out it doesn't matter, because saves taken during animations are broken already, for the same reason that rolling doesn't work properly I believe.

If you save during an animation subroutine like this...
Python:
label play_m_dhmf7A:
    show screen fin_dhmf_7A with dissolve
    window hide
    $ renpy.show("m_dhmf7a")
    $ renpy.transition(Dissolve(.5))
    $ renpy.pause(12, hard=True)
... renpy doesn't know where to return to and doesn't find any instruction to execute, so it just goes back to main menu.

Adding a jump instruction at the end fixes this.
Python:
label play_m_dhmf7A:
    show screen fin_dhmf_7A with dissolve
    window hide
    $ renpy.show("m_dhmf7a")
    $ renpy.transition(Dissolve(.5))
    $ renpy.pause(12, hard=True)
    jump dhmf_cs
But tbh this approach isn't very good imo, it's not robust enough and requires a lot of manual labor, I think ultimately changing how animations are handled would be for the best. I would avoid using jump at all, unless you're jumping to labels within the same scope and instead use call for calling subroutines.
 
  • Like
Reactions: DeepBauhaus

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
On Breaking Saves.

Developing a VN (or game) is a strange journey. On one hand, it can be very much like writing a serial novel, like Charles Dickens in the Literary Gazette. On the other hand, it involves the development of a (hopefully) finished product, where you are continually releasing beta (or, let’s be honest) alpha versions for public consumption.

If you are able to manage the serial model, you can simply release a chapter after chapter, and in the end you have Nicholas Nikleby. That was my goal, my hope, my aspiration. Alas, I am no Charles Dickens.

When you are developing a finished product, you occasionally encounter certain aspects of your work that simply do not fit into the greater milieu, or that, in the experience of the reader/player, are unsatisfactory (I will call these, for the sake of argument, “mistakes”). For these, you might need to go back and make some corrections. These might be minor, like changing a little bit of dialogue, or they might be more substantial, like rewriting entire scenes.

Which is all well and good for the finished product. But what about the faithful early adopters who have stuck with you from the early stages? Well, those people will end up with the dreaded broken saves.

Which brings me to the point of this post: it’s coming.

With version 0.09, I am going to be breaking saves in earnest. This will be an ongoing effort.

For those of you inconvenienced by this: I am sorry. But I truly believe it is for the better of the project.

In v. 0.09, I have re-written the “Puppy Play” scene from v. 0.08. It is (in relative terms) a minor rewrite, but it makes the story flow better, and it makes some of the later events more coherent. These changes will almost certainly break any saves made during that scene. I do not know how it will affect saves after that (though I am fairly sure earlier saves will be unaffected).

In upcoming versions (either 0.10 or 0.11) you will see some major re-writes from earlier in the VN. Specifically, I plan to rework the first three of Brigitte’s tasks/challenges. It has been pointed out that it is rather unsatisfying to choose the “bratty” path only to have our heroine eventually do the task anyway. Now, I have (or had) a reason for this. Not an excuse, but a reason. I initially thought Brigitte’s journey would involve a slow descent into submission, where she really had no choice, but she would fight it to varying degrees. This turned out to be unsatisfying.

In version 0.07, we started to move into more clearly defined routes for our heroines. It soon became clear that, while more work for your humble dev, this created more satisfying experiences for readers. So, as much as it pains me, I am going back to edit and (I hope) improve some of the earlier paths. Specifically, I will be making significant changes to Brigitte’s “Clean Your Room,” “Clean the Barracks” and “Clean the Mess Hall” stories. These will almost certainly break a bunch of saves. For that, I apologize. However, I think in the long run it will make for a better project.

I also plan to edit the way animations are handled (see earlier posts in this thread), and I'll probably go back to try to improve my earlier animations as time goes on (though I continue to assert that mine is more of a visual novel than a crummy movie, so don't expect the world from me in that regard).

Thanks to everyone for your support! I hope future versions will live up to your expectations.
 
Dec 16, 2022
257
323
On Breaking Saves.

Developing a VN (or game) is a strange journey. On one hand, it can be very much like writing a serial novel, like Charles Dickens in the Literary Gazette. On the other hand, it involves the development of a (hopefully) finished product, where you are continually releasing beta (or, let’s be honest) alpha versions for public consumption.

If you are able to manage the serial model, you can simply release a chapter after chapter, and in the end you have Nicholas Nikleby. That was my goal, my hope, my aspiration. Alas, I am no Charles Dickens.

When you are developing a finished product, you occasionally encounter certain aspects of your work that simply do not fit into the greater milieu, or that, in the experience of the reader/player, are unsatisfactory (I will call these, for the sake of argument, “mistakes”). For these, you might need to go back and make some corrections. These might be minor, like changing a little bit of dialogue, or they might be more substantial, like rewriting entire scenes.

Which is all well and good for the finished product. But what about the faithful early adopters who have stuck with you from the early stages? Well, those people will end up with the dreaded broken saves.

Which brings me to the point of this post: it’s coming.

With version 0.09, I am going to be breaking saves in earnest. This will be an ongoing effort.

For those of you inconvenienced by this: I am sorry. But I truly believe it is for the better of the project.

In v. 0.09, I have re-written the “Puppy Play” scene from v. 0.08. It is (in relative terms) a minor rewrite, but it makes the story flow better, and it makes some of the later events more coherent. These changes will almost certainly break any saves made during that scene. I do not know how it will affect saves after that (though I am fairly sure earlier saves will be unaffected).

In upcoming versions (either 0.10 or 0.11) you will see some major re-writes from earlier in the VN. Specifically, I plan to rework the first three of Brigitte’s tasks/challenges. It has been pointed out that it is rather unsatisfying to choose the “bratty” path only to have our heroine eventually do the task anyway. Now, I have (or had) a reason for this. Not an excuse, but a reason. I initially thought Brigitte’s journey would involve a slow descent into submission, where she really had no choice, but she would fight it to varying degrees. This turned out to be unsatisfying.

In version 0.07, we started to move into more clearly defined routes for our heroines. It soon became clear that, while more work for your humble dev, this created more satisfying experiences for readers. So, as much as it pains me, I am going back to edit and (I hope) improve some of the earlier paths. Specifically, I will be making significant changes to Brigitte’s “Clean Your Room,” “Clean the Barracks” and “Clean the Mess Hall” stories. These will almost certainly break a bunch of saves. For that, I apologize. However, I think in the long run it will make for a better project.

I also plan to edit the way animations are handled (see earlier posts in this thread), and I'll probably go back to try to improve my earlier animations as time goes on (though I continue to assert that mine is more of a visual novel than a crummy movie, so don't expect the world from me in that regard).

Thanks to everyone for your support! I hope future versions will live up to your expectations.
I am very curious about what you've come up with. I like that Brigitte is a bit of a spoiled brat, so I always went with those options, but ultimately I do still want her to submit, that's why I hope there will be some indication as to when's the 'last chance' to do so and that the original 'rebellious' path remains accessible in some form.

If you want any help with debugging or reviewing any code changes, feel free to reach out. I'm no renpy expert, but I'm happy to help in any way I can.
 

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
I am very curious about what you've come up with. I like that Brigitte is a bit of a spoiled brat, so I always went with those options, but ultimately I do still want her to submit, that's why I hope there will be some indication as to when's the 'last chance' to do so and that the original 'rebellious' path remains accessible in some form.

If you want any help with debugging or reviewing any code changes, feel free to reach out. I'm no renpy expert, but I'm happy to help in any way I can.
Thank you! I'm still testing/figuring out your changes to the animations...I hope to have that up and running by the next version (or maybe the one after that).

As for Brigitte's "spoiled" path...
You don't have permission to view the spoiler content. Log in or register now.
 
  • Yay, update!
Reactions: GuybrushPeepwood

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
Royal Switch version 0.10 has been released for patrons. I still haven't done the "autoplay animations" feature or the fight game. Hope springs eternal, though. Maybe next release...
 

gregers

Forum Fanatic
Dec 9, 2018
4,961
6,404
1724476590152.png

I'm not in the core audience for this so my opinion shouldn't carry too much weight, but played through it recently because the rewrites made me curious if the game had maybe landed more in my wheelhouse.

I think I only looked at the introduction before so can't really compare the two, but for now, Brigitte's "bratty" route seems to involve a lot of fake choices, letting the player say no once or twice (while Brigitte thinks how she really wanted to say yes) before looping back and only giving you one option, e.g. with the wanna-be mistress whose name escapes me or feeding and dancing for Bruno.

Esther, meanwhile, agreed to train as a spy, not a sex worker, but most of her training seems to be trying to push her in the latter direction. Refusing to show off her body for some creep she never met before seems to have landed her on the "timid" route. Not how I would describe strength of character, but if it's another term for "less-eager-to-be-a-whore" then ok.
 
  • Like
Reactions: Kaesi

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
View attachment 3961968

I'm not in the core audience for this so my opinion shouldn't carry too much weight, but played through it recently because the rewrites made me curious if the game had maybe landed more in my wheelhouse.

I think I only looked at the introduction before so can't really compare the two, but for now, Brigitte's "bratty" route seems to involve a lot of fake choices, letting the player say no once or twice (while Brigitte thinks how she really wanted to say yes) before looping back and only giving you one option, e.g. with the wanna-be mistress whose name escapes me or feeding and dancing for Bruno.

Esther, meanwhile, agreed to train as a spy, not a sex worker, but most of her training seems to be trying to push her in the latter direction. Refusing to show off her body for some creep she never met before seems to have landed her on the "timid" route. Not how I would describe strength of character, but if it's another term for "less-eager-to-be-a-whore" then ok.
The "bratty" choices should not loop back: that was finally fixed as of version 0.10. Or at least I thought it was.
 

gregers

Forum Fanatic
Dec 9, 2018
4,961
6,404
The "bratty" choices should not loop back: that was finally fixed as of version 0.10. Or at least I thought it was.
We may be speaking at cross purposes, I'm referring to fake choices like this.
You don't have permission to view the spoiler content. Log in or register now.

(Edit: Maybe worth noting that the only way I could even get the option for Brigitte to refuse the first few times was by avoiding any energy losses, which is only possible by playing her as submissive as possible (or cheating, I guess). So players who aren't having her refuse anything will get the option to refuse, while players who have been playing her as resistant won't have the option to resist. I think that seems counter-intuitive.

If you absolutely want a condition for being able to refuse Siobhan, obedience below some threshold or other seems like the more obvious choice.)

Opening the game to grab these reminded me that I'd have liked an option for Esther to refuse Tristan, rather than just the two sex options governed by her inhibition. I understand that it may be implied that she's too drunk to think clearly, but that didn't seem to be the case on the morning after.

And I really have no opinion on Cassandra and Saturna's relationship at the end of the update. I'm not playing as either of those characters and don't have a stake in whether they kiss or not. Like the earlier side stories, I think that bit just appeals to a different type of player, which is fine, but personally I'd preferred an option to just skip it.
 
Last edited:
  • Like
Reactions: Kaesi

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
We may be speaking at cross purposes, I'm referring to fake choices like this.
You don't have permission to view the spoiler content. Log in or register now.

(Edit: Maybe worth noting that the only way I could even get the option for Brigitte to refuse the first few times was by avoiding any energy losses, which is only possible by playing her as submissive as possible (or cheating, I guess). So players who aren't having her refuse anything will get the option to refuse, while players who have been playing her as resistant won't have the option to resist. I think that seems counter-intuitive.

If you absolutely want a condition for being able to refuse Siobhan, obedience below some threshold or other seems like the more obvious choice.)

Opening the game to grab these reminded me that I'd have liked an option for Esther to refuse Tristan, rather than just the two sex options governed by her inhibition. I understand that it may be implied that she's too drunk to think clearly, but that didn't seem to be the case on the morning after.

And I really have no opinion on Cassandra and Saturna's relationship at the end of the update. I'm not playing as either of those characters and don't have a stake in whether they kiss or not. Like the earlier side stories, I think that bit just appeals to a different type of player, which is fine, but personally I'd preferred an option to just skip it.
Ah. The "Siobhan's Offer" scene. That one is a bit different. And it just occurred to me that version 0.10.1, which edits some of the dialogue in those scenes and gets rid of the "energy" issue, is not out for public release yet. I'll do that today.

"Siobhan's Offer" is important to me, because it shows that Brigitte is interested in exploring her submissive side. Without her relationship with Siobhan, I feel that Bruno's efforts--which are not truly a sub/domme dynamic--would be far too r*pey. Sub Brigitte has to enjoy being a submissive, and Bratty Brigitte must enjoy either being punished or trying to manipulate Bruno to win her freedom. Otherwise it's just torture, and that would be too much for me. It's a difficult line to walk in a 'training' game. I want there to be an element of consent throughout.*

Also, I've abandoned the whole "energy" thing for now. With v. 0.10.1, I believe I have finally exorcised all the Bratty Brigitte loopbacks, and that's really what that was for.

So, long story short: Brigitte is not meant to avoid Siobhan's training altogether. if the player chooses to think about it, it affects her overall resistance.

*Speaking of which, if anyone from Patreon is watching: Esther's relationship with Tristan is consensual. She is not drunk: she says she is tipsy and he cuts her off. Anything that happens thereafter is fully consensual.

As for Tristan: I didn't want to insert a choice there for its own sake. I have not thought of an alternative story for that particular arc that I find interesting. If something comes to mind in the future, I might go back and do that.

Finally: thank you for your feedback. Whether it's good or bad, and whether I agree with it or not, I take feedback seriously. I have already made quite a few changes based on reader feedback, and I expect that will continue to do so in the future.
 
  • Like
Reactions: gregers

gregers

Forum Fanatic
Dec 9, 2018
4,961
6,404
Bratty Brigitte must enjoy either being punished or trying to manipulate Bruno to win her freedom
Yeah, that's probably where I disconnect from her story, which isn't a fault of the game, but more an indication that the game is not intended for me.

Similarly, I don't connect with Esther secretly wanting to be a sex worker despite having spent her previous life trying to avoid it. So what I read as having the strength of her convictions the game interprets as being afraid of her real desires. Again, not a fault of the game as such.


Also, I've abandoned the whole "energy" thing for now. With v. 0.10.1, I believe I have finally exorcised all the Bratty Brigitte loopbacks, and that's really what that was for.
That sounds like a good decision, although stripping it all out was probably tedious. I couldn't really see what it was accomplishing in the current game, at least.


Finally: thank you for your feedback. Whether it's good or bad, and whether I agree with it or not, I take feedback seriously. I have already made quite a few changes based on reader feedback, and I expect that will continue to do so in the future.
It's all good. You're clearly putting a lot of thought, time, and effort into this game, and I admire that. It's not going to click with just everyone, but nothing interesting ever does.
 
  • Like
Reactions: ffive

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
Esther secretly wanting to be a sex worker despite having spent her previous life trying to avoid it
Thanks for your insights. I will take small issue with this one thing, however. Esther's kink is exhibitionism. It's not that she wants to be a sex worker; she just likes to show off. I do agree that this is in opposition to her previous life, however. Her overall story arc is about empowerment, and she finds it empowering to be admired.
 
  • Like
Reactions: gregers

gregers

Forum Fanatic
Dec 9, 2018
4,961
6,404
Thanks for your insights. I will take small issue with this one thing, however. Esther's kink is exhibitionism. It's not that she wants to be a sex worker; she just likes to show off. I do agree that this is in opposition to her previous life, however. Her overall story arc is about empowerment, and she finds it empowering to be admired.
Duly noted. I may have missed something on my playthrough, but to me it seemed inextricably tied to her new "career", where her training officer wastes no time in making her undress in front of him, masturbate in front of him, etc. Those scenes came across as for his gratification, not hers. There were some opportunities for exhibitionism outside the training, but those were fully optional if she wasn't in the mood, whereas for her new job sex work seems a requirement.

But of course I accept that you intend her story differently. All I can say is how it came across to me as I was playing.
 
  • Like
Reactions: DeepBauhaus

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
Duly noted. I may have missed something on my playthrough, but to me it seemed inextricably tied to her new "career", where her training officer wastes no time in making her undress in front of him, masturbate in front of him, etc. Those scenes came across as for his gratification, not hers. There were some opportunities for exhibitionism outside the training, but those were fully optional if she wasn't in the mood, whereas for her new job sex work seems a requirement.

But of course I accept that you intend her story differently. All I can say is how it came across to me as I was playing.
<wistful sigh> That reminds me...this whole project began life as an homage to Valiant Warrior Astrid (RIP). Good times. If you know that one, some of those things will be familiar to you...
 

gregers

Forum Fanatic
Dec 9, 2018
4,961
6,404
Also, I've abandoned the whole "energy" thing for now. With v. 0.10.1, I believe I have finally exorcised all the Bratty Brigitte loopbacks, and that's really what that was for.

So, long story short: Brigitte is not meant to avoid Siobhan's training altogether. if the player chooses to think about it, it affects her overall resistance.
Just had a quick look at the updated build and see that you've not only removed the energy requirements from the choices but also stripped out the second chance to refuse Siobhan altogether, making the whole thing sort of pointless.

So instead of
screenshot0004.png
we just get
screenshot0006.png

The +1 resistance from refusing Siobhan's training at first is cancelled out by the -1 when Brigitte automatically agrees to it moments later.


Edit: Btw. picking the bratty response to maid_shawl_one leads to spanking_2 which then jumps back to shawl_second which has the exact same dialogue and options as the first one, albeit with a different outcome (leading to hart_babydoll2). The path logic may be right but you may want to look at the repeated dialogue at some point.


Edit2: Esther's scene with Tristan throws an exception, first_time not being defined:
I'm sorry, but an uncaught exception occurred.

While running game code:
File "game/scripts/chapter_03/ch03_act07/script_es9.rpy", line 317, in script
$ first_time.grant()
File "game/scripts/chapter_03/ch03_act07/script_es9.rpy", line 317, in <module>
$ first_time.grant()
NameError: name 'first_time' is not defined
(Picking the other option requires inhibition of at least 43 which must be near impossible to achieve.)



<wistful sigh> That reminds me...this whole project began life as an homage to Valiant Warrior Astrid (RIP). Good times. If you know that one, some of those things will be familiar to you...
Never played that one, no. Never had the patience for most RPG Maker games I'm afraid.
 
Last edited:
  • Like
Reactions: ffive

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
Esther's scene with Tristan throws an exception, first_time not being defined
Dammit! Stupid misnaming...I can't believe that hasn't come up before. Shows how few people are playing the timid path, I think.

And thanks for the QC checking on the changes to the earlier task scenes. It can be tricky to rework those things and make them flow ok.
 
  • Like
Reactions: gregers

DeepBauhaus

ALL GLORY TO THE HYPNOTOAD
Game Developer
Oct 14, 2018
155
417
The +1 resistance from refusing Siobhan's training at first is cancelled out by the -1 when Brigitte automatically agrees to it moments later.
I have a different perspective on this: the way I see it, the -1 resistance effect when Brigitte takes Siobhan up on her offer is offset by the +1 resistance from deciding to think about Siobhan's offer. So the net is 0 instead of -1.