From c44c1792e2d8aeeb44f07fd855b5fc5266e9e6cd Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 23:42:51 +0100 Subject: [PATCH] Revamp the diary system and make it work --- ...ry_NOT_IN_USE.txt => diary_NOT_IN_USE.rpy} | 106 +++++++----- game/scripts/interface/book.rpy | 160 ++++++++++++------ 2 files changed, 170 insertions(+), 96 deletions(-) rename game/scripts/characters/hermione/{diary_NOT_IN_USE.txt => diary_NOT_IN_USE.rpy} (80%) diff --git a/game/scripts/characters/hermione/diary_NOT_IN_USE.txt b/game/scripts/characters/hermione/diary_NOT_IN_USE.rpy similarity index 80% rename from game/scripts/characters/hermione/diary_NOT_IN_USE.txt rename to game/scripts/characters/hermione/diary_NOT_IN_USE.rpy index 681049c7..69bbd036 100644 --- a/game/scripts/characters/hermione/diary_NOT_IN_USE.txt +++ b/game/scripts/characters/hermione/diary_NOT_IN_USE.rpy @@ -2,18 +2,19 @@ define hermione_diary_pages = { # # Prologue - Includes MRM creation, favour trading introduction, ministry letter, failed exam and first favour. # - "prologue_00": ["Detective Hermione on the case", "Dear diary, I haven't written my thoughts for a long time but I will be needing you again. I overheard some girls talking about selling favour to their teachers today... The amount of points they were talking about were unbelievable! Maybe it's something I should investigate..."], - "prologue_01": ["Looking for clues", "Today I have seen Katey Bell exiting Professor's Snape office all flustered and kind of icky. Is she also involved in favour trading?!"], - "prologue_02": ["Mistakes have been made >.<", "After last time seeing Katey Bell exiting Snape's office I sneaked up to Katey's room and put a surveilance spell on her allowing me to see through her eyes, I know I shouldn't but I had to make sure if she's involved in the favour trading, so after classes once I have seen her heading towards Snape's office I waited a while and activated the surveilance spell and... Oh. My. God. {b}GROSS!{/b} She was on her knees and I was... No, {b}SHE{/b} was putting his.... {i}thing{/i} in her mouth, I panicked and tried to break the spell but I couldn't say the incantation quick enough and he.. he made me... her swallow his stuff. Even though I could not feel anything it was the worst experience in my life, I am {u}NEVER{/u} using this spell ever again."], - "prologue_03": ["Dead end?", "I'm starting to lose hope, how can I stop this whole favour trading affair?"], - "prologue_04": ["Taking the matters in my own hands", "This is it! I know how to fight inequality and this whole sexist favour trading at our School. I am starting a M.R.M movement!"], - "prologue_05": ["Public ignorance", "I hosted another M.R.M. meeting today, not that anyone bothered to show up... I don't understand why people aren't more upset about the inequalities of this favour trading! You'd almost think that the boys are happy about it!"], - "prologue_06": ["Looking for apprentice", "I have hosted yet another group meeting and, again, no one showed up. I don't think I can win this fight alone, I should talk to Professor Dumbledore and ask him for help."], - "prologue_07": ["Time to take out the big guns!", "So today I went to ask Professor Dumbledore for help, it went great! He looked soooo upset and filled with bad fluids, I have never seen him like that before, I think he is gonna end the whole favour trading thing right this moment. I did my part, now it is up to Professor Dumbledore. I'm proud of myself."], - "prologue_08": ["The big gun was a dud?", "It's been X days since my and Professor's Dumbledore conversation and I haven't seen him take action yet, what is taking him so long?"], - "prologue_09": ["The ministry", "Okay that's it, if professor Dumbledore cannot solve this matter I am taking it once again into my hands, or should I say into Ministry of Magic hand... or hands. Whatever."], - "prologue_10": ["HOW?!", "I failed an exam today... I never thought that I'd ever put those words to paper... It's unbelievable... Should I have studied more? (Perhaps a time turner could help?) No... It must have been Snape! That crooked old weirdo probably failed me on purpose... Maybe I should speak to Dumbledore about this..."], - "prologue_11": ["So this just happened..", "I can't believe it... today I sold my first real favour to Professor Dumbledore! It wasn't as bad as I thought it would be. It was a bit of an odd request but still, I can't wait to tell Ron and Harry about the points I have earned! Go, go Gryffindor!!!"], + "prologue_00": ("Detective Hermione on the case", "Dear diary, I haven't written my thoughts for a long time but I will be needing you again. I overheard some girls talking about selling favour to their teachers today... The amount of points they were talking about were unbelievable! Maybe it's something I should investigate..."), + "prologue_01": ("Looking for clues", "Today I have seen Katey Bell exiting Professor's Snape office all flustered and kind of icky. Is she also involved in favour trading?!"), + "prologue_02": ("Mistakes have been made >.<", "After last time seeing Katey Bell exiting Snape's office I sneaked up to Katey's room and put a surveilance spell on her allowing me to see through her eyes, I know I shouldn't but I had to make sure if she's involved in the favour trading, so after classes once I have seen her heading towards Snape's office I waited a while and activated the surveilance spell and... Oh. My. God. {b}GROSS!{/b} She was on her knees and I was... No, {b}SHE{/b} was putting his.... {i}thing{/i} in her mouth, I panicked and tried to break the spell but I couldn't say the incantation quick enough and he.. he made me... her swallow his stuff. Even though I could not feel anything it was the worst experience in my life, I am {u}NEVER{/u} using this spell ever again."), + "prologue_03": ("Dead end?", "I'm starting to lose hope, how can I stop this whole favour trading affair?"), + "prologue_04": ("Taking the matters in my own hands", "This is it! I know how to fight inequality and this whole sexist favour trading at our School. I am starting a M.R.M movement!"), + "prologue_05": ("Public ignorance", "I hosted another M.R.M. meeting today, not that anyone bothered to show up... I don't understand why people aren't more upset about the inequalities of this favour trading! You'd almost think that the boys are happy about it!"), + "prologue_06": ("Looking for apprentice", "I have hosted yet another group meeting and, again, no one showed up. I don't think I can win this fight alone, I should talk to Professor Dumbledore and ask him for help."), + "prologue_07": ("Time to take out the big guns!", "So today I went to ask Professor Dumbledore for help, it went great! He looked soooo upset and filled with bad fluids, I have never seen him like that before, I think he is gonna end the whole favour trading thing right this moment. I did my part, now it is up to Professor Dumbledore. I'm proud of myself."), + "prologue_08": ("The big gun was a dud?", "It's been X days since my and Professor's Dumbledore conversation and I haven't seen him take action yet, what is taking him so long?"), + "prologue_09": ("The ministry", "Okay that's it, if professor Dumbledore cannot solve this matter I am taking it once again into my hands, or should I say into Ministry of Magic hand... or hands. Whatever."), + "prologue_10": ("HOW?!", "I failed an exam today... I never thought that I'd ever put those words to paper... It's unbelievable... Should I have studied more? (Perhaps a time turner could help?) No... It must have been Snape! That crooked old weirdo probably failed me on purpose... Maybe I should speak to Dumbledore about this..."), + "prologue_11": ("So this just happened..", "I can't believe it... today I sold my first real favour to Professor Dumbledore! It wasn't as bad as I thought it would be. It was a bit of an odd request but still, I can't wait to tell Ron and Harry about the points I have earned! Go, go Gryffindor!!!"), + # # Talk to me (Unfinished)(Missing branching choices) # @@ -21,18 +22,19 @@ define hermione_diary_pages = { "talk_to_me_0_fap": "Professor Dumbledore offered to buy yet another favour from me, he simply wanted to talk, although I think he might have been trying something funny... He was shaking something around under his desk... Maybe his wand? He wouldn't try to curse me would he? No, of course not, he's Professor Dumbledore! It's not like I could stop him, even if I wanted to... He beat Grindelwald in a duel... and now he's buying favours from me...", "talk_to_me_2": "Eeeeeewwww!!! Dumbledore was touching himself under his desk!!! I cannot believe it!!! He even tried pretending it was something else! Ugh... I could even see some of his... stuff... being shot out from under the desk... gross, gross, gross!!!", "talk_to_me_3": "Typical... He called me up to his office again just to have me tell him a story while he... pleasured himself... under the desk... Ugh... At least I realised what was happening this time... I managed to tell him some ridiculous tale about students loving cum just to get him to finish faster...", + # - # Show breasts hermione_diary.append("admire_breasts_t2_e1", "admire_breasts_t2_e1", [admire_breasts_t2_e1_points, admire_breasts_t2_e1_fap_2]) + # Show breasts # # Tier 1 - "admire_breasts_t1_e1_fail": ["Show him my breasts?!", "He wanted to see my breasts! How can he want something so outrageous? Obviously I didn't show them to him! I just took my vest off... Ugh!!! I never realised Dumbledore would actually want anything sexual from me... I just thought he was doing this to even out the points slytherin were getting... Maybe he was just testing me today? He wouldn't actually want me to show him my breasts... right???"], - "admire_breasts_t1_e1": ["Show him my breasts?!", "He asked me to show him my breasts! I can't believe that the most powerful wizard of all time is just a huge pervert! Still, with slytherin as far ahead as they are I couldn't just leave with nothing... so I may have... showed him my breasts... But I kept the shirt and bra on! That's doesn't count, right?? Ugh... Harry and Ron better notice those points..."], - "admire_breasts_t1_e2_fail": ["Showing him my breasts", "He did it again! I cannot believe I had so much respect for this pervert before! He asked me to and here I quote \"show him my tits\"! Ridiculous!"], - "admire_breasts_t1_e2": ["Showing him my bra", "Today he asked me to show him my breasts but taking my vest off wasn't enough for him, the pervert, so he asked me to take off my shirt too. Fortunately I was allowed to keep my bra on, not that I would take it off anyway but still.. These points better be worth it."], - "admire_breasts_t1_e3": ["Showing him my bra again..", "Once again I was asked to show off my breasts... Why does he keep asking me to do that? It's not like they're special or anything. Just for the record, I kept my bra on and I plan to keep it that way, there's no way in hell I would ever bare myself in front of my headmaster, never!"], + "admire_breasts_t1_e1_fail": ("Show him my breasts?!", "He wanted to see my breasts! How can he want something so outrageous? Obviously I didn't show them to him! I just took my vest off... Ugh!!! I never realised Dumbledore would actually want anything sexual from me... I just thought he was doing this to even out the points slytherin were getting... Maybe he was just testing me today? He wouldn't actually want me to show him my breasts... right???"), + "admire_breasts_t1_e1": ("Show him my breasts?!", "He asked me to show him my breasts! I can't believe that the most powerful wizard of all time is just a huge pervert! Still, with slytherin as far ahead as they are I couldn't just leave with nothing... so I may have... showed him my breasts... But I kept the shirt and bra on! That's doesn't count, right?? Ugh... Harry and Ron better notice those points..."), + "admire_breasts_t1_e2_fail": ("Showing him my breasts", "He did it again! I cannot believe I had so much respect for this pervert before! He asked me to and here I quote \"show him my tits\"! Ridiculous!"), + "admire_breasts_t1_e2": ("Showing him my bra", "Today he asked me to show him my breasts but taking my vest off wasn't enough for him, the pervert, so he asked me to take off my shirt too. Fortunately I was allowed to keep my bra on, not that I would take it off anyway but still.. These points better be worth it."), + "admire_breasts_t1_e3": ("Showing him my bra again..", "Once again I was asked to show off my breasts... Why does he keep asking me to do that? It's not like they're special or anything. Just for the record, I kept my bra on and I plan to keep it that way, there's no way in hell I would ever bare myself in front of my headmaster, never!"), # Tier 2 - "admire_breasts_t2_e1_fail": ["He's obsessed!", "I cannot believe he offered me two hundred points to bare my chest to him, what was he even thinking?! Although I must say I have never thought my breasts would even be worth so much. Gah! What are you thinking Hermione, don't let him get into your head!"], - "admire_breasts_t2_e1": ["Well...", "I finally did it... I showed him my breasts...{}{}"], # FORMATTED {points}{action} + "admire_breasts_t2_e1_fail": ("He's obsessed!", "I cannot believe he offered me two hundred points to bare my chest to him, what was he even thinking?! Although I must say I have never thought my breasts would even be worth so much. Gah! What are you thinking Hermione, don't let him get into your head!"), + "admire_breasts_t2_e1": ("Well...", "I finally did it... I showed him my breasts...{points}{action}"), # FORMATTED {points}{action} # Branching "admire_breasts_t2_e1_points": " It's just... It was soooo many points and I've already been pulling up my shirt for him... it's not that different if I take off my bra... is it? ", "admire_breasts_t2_e1_bargain": " For a meagre twenty-five points... I should have left.... or at least get a better deal.", @@ -41,7 +43,7 @@ define hermione_diary_pages = { "admire_breasts_t2_e1_fap_2": " I still cannot believe he started touching himself in front of me, but when I asked him to stop he did. Thank be Merlin, I don't know what I would do if he kept going... I am still mad at him but at least I got my points. ", "admire_breasts_t2_e1_fap_3": " I still cannot believe he started touching himself in front of me, and when I asked him to stop he started doing it faster and faster, it was scary, I don't want to know what would happen if I stayed, I'm glad I left. ", # Tier 3 - "admire_breasts_t3_e1": "What is it with men and breasts??? They're obsessed! They're just bags of flesh... you'd think someone as old as dumbledore would have seen enough by now... but no! He has to make me lift up my shirt and expose myself for him whenever he wants!!!{}", # FORMATTED {action} + "admire_breasts_t3_e1": (None, "What is it with men and breasts??? They're obsessed! They're just bags of flesh... you'd think someone as old as dumbledore would have seen enough by now... but no! He has to make me lift up my shirt and expose myself for him whenever he wants!!!{action}"), # FORMATTED {action} # Branching "admire_breasts_t3_e1_compliment": " He even complimented my chest, I don't know how to feel about that. Ugh... I hope Mum never finds out about any of this...", "admire_breasts_t3_e1_degrade": " Not only that, no, he had the nerve to say \"I have seen better\" This old idiot! Ugh... I hope Mum never finds out about any of this...", @@ -49,59 +51,62 @@ define hermione_diary_pages = { "admire_breasts_t3_e1_cum": " But that's not the end of it, first he started masturbating and then he actually came on me!!! What a gross old pervert! I should report him to the ministry! They need to know about a gross old headmaster just cumming all over their students... GROSS!!! But that would mean no more favours... no more points for Gryffindor... UGH!!! We better win!", "admire_breasts_t3_e1_hold": " But that's not the end of it, he started masturbating and I allowed him to continue.... I could see it all, his {s}hard, long{/s}... {u}stupid, ugly thing!{/u} I'm glad he didn't finish in front of me. I hope Mum never finds out about any of this...", # Tier 4 - "admire_breasts_t4_e1": "He just wanted to take a look at my breasts again...{}", # FORMATTED {action} + "admire_breasts_t4_e1": (None, "He just wanted to take a look at my breasts again...{action}"), # FORMATTED {action} # Branching "admire_breasts_t4_e1_compliment": " I know it's wrong to think, but I was sort of hoping he'd grab them... or at least touch himself a little... Especially after he said I have great tits... At least Dumbledore seems to have calmed down a bit.", "admire_breasts_t4_e1_degrade": " I know it's wrong to think, but I was sort of hoping he'd grab them... or at least touch himself a little... Especially after he said that my tits are alright, I'm kind of getting into this this... Well, at least Dumbledore seems to have calmed down a bit.", "admire_breasts_t4_e1_touch": " What are the point of promises if you're just going to break them anyway? He promised he wouldn't touch me and then grabs a hold of both my breasts like it was Christmas! Ugh, it wasn't the worst feeling in the world though... his hands are so strong...", "admire_breasts_t4_e1_cum": " Ugh... I really need to start laying down some ground rules with Dumbledore... I can't just keep letting him cum on me whenever it pleases him... Although it's not the worst thing in the world... And it does seem to make him happy... Maybe I'll skip the ground rules for the time being.", + # # Show panties # # Tier 1 - "admire_panties_t1_e1": "He's after my panties now! That nasty old perv made me lift up my skirt for him! Ugh... How do those slytherin sluts live with themselves? I feel so dirty! His eyes just kept staring{}Gosh it was so humiliating... But how could I refuse? I need my house to win and with how things are currently I don't see any other way to achieve that goal.", # FORMATTED {action} + "admire_panties_t1_e1": (None, "He's after my panties now! That nasty old perv made me lift up my skirt for him! Ugh... How do those slytherin sluts live with themselves? I feel so dirty! His eyes just kept staring{action} Gosh it was so humiliating... But how could I refuse? I need my house to win and with how things are currently I don't see any other way to achieve that goal."), # FORMATTED {action} # Branching - "admire_panties_t1_e1_face": " at my face! I was blushing so hard I thought my cheeks were about to turn into beetroots... ", - "admire_panties_t1_e1_panties": " at my panties! I could feel him stripping me with his eyes... ", + "admire_panties_t1_e1_face": " at my face! I was blushing so hard I thought my cheeks were about to turn into beetroots...", + "admire_panties_t1_e1_panties": " at my panties! I could feel him stripping me with his eyes...", # Tier 2 - "admire_panties_t2_e1": "I had to show him my panties again today... At least it didn't feel as weird as the first time did... Not that he doesn't still give me the creeps, especially{}I just have to keep focused on winning gryffindor the house cup! If I have to show Dumbledore my panties then so be it!", # FORMATTED {action} + "admire_panties_t2_e1": (None, "I had to show him my panties again today... At least it didn't feel as weird as the first time did... Not that he doesn't still give me the creeps, especially{action} I just have to keep focused on winning gryffindor the house cup! If I have to show Dumbledore my panties then so be it!"), # FORMATTED {action} # Branching - "admire_panties_t2_e1_face": " when he kept staring at my face like that... ", - "admire_panties_t2_e1_compliment": " when he said he liked my panties... ", - "admire_panties_t2_e1_panties": " when he was continously staring at my private parts... ", + "admire_panties_t2_e1_face": " when he kept staring at my face like that...", + "admire_panties_t2_e1_compliment": " when he said he liked my panties...", + "admire_panties_t2_e1_panties": " when he was continously staring at my private parts...", # Tier 3 - "admire_panties_t3_e1": "The look on Dumbledore's face was perfect! Ugh... walking around the school without panties on is such a rush...{}", # FORMATTED {action} + "admire_panties_t3_e1": (None, "The look on Dumbledore's face was perfect! Ugh... walking around the school without panties on is such a rush...{action}"), # FORMATTED {action} # Branching "admire_panties_t3_e1_slut_positive": " When he called me a slut I felt so free and tingly inside, he even gave me bonus points! I think I can stop wearing panties for now, just to experiment a bit, there's nothing wrong with that, right?", "admire_panties_t3_e1_slut_negative": " But when he called me a slut and said I won't be getting any points I was upset... He even went so far to ask me if I'm a slut or a prostitute, obviously I told him I am a slut, I'm no common whore that would sell her body for house points!", - "admire_panties_t3_e1_good": " I know I was just going to do this today to surprise Dumbledore, but given his reaction I think I might try it out a little more... ", + "admire_panties_t3_e1_good": " I know I was just going to do this today to surprise Dumbledore, but given his reaction I think I might try it out a little more...", + # # Grope breasts # # Tier 1 - "grope_breasts_t1_e1_fail": "Dumbledore needs to learn to keep his creepy old hands to himself! I can't believe he expected me to just stand there and let him have his way with my body! He needs to learn some self control!", - "grope_breasts_t1_e1": "Dumbledore needs to learn to keep his creepy old hands to himself!{}", # FORMATTED {action} + "grope_breasts_t1_e1_fail": (None, "Dumbledore needs to learn to keep his creepy old hands to himself! I can't believe he expected me to just stand there and let him have his way with my body! He needs to learn some self control!"), + "grope_breasts_t1_e1": (None, "Dumbledore needs to learn to keep his creepy old hands to himself!{action}"), # FORMATTED {action} # Branching "grope_breasts_t1_e1_squeeze": " I can't believe he expected me to just stand there and let him have his way with my body! He needs to learn some self control!", "grope_breasts_t1_e1_massage": " His massage did feel quite nice but he still needs to learn some self control!", "grope_breasts_t1_e1_letgo": " I'm just glad he listened to me when I said it was enough otherwise I would have to slap him in the face!", # Tier 2 - "grope_breasts_t2_e1": "Ugh... I let Dumbledore have a little feel{}", # FORMATTED {action} + "grope_breasts_t2_e1": (None, "Ugh... I let Dumbledore have a little feel{action}"), # FORMATTED {action} # Branching "grope_breasts_t2_e1_grab": "... Nothing too much, although not for lack of trying on his part... If I let him have his way... Goodness knows what he would have done to my body...", "grope_breasts_t2_e1_slap": " and the first thing he did was slapping my breasts! It hurt! Not as much as I thought it would but still... Doesn't he know breasts are sensitive place on a female body?! Complete idiot!", # Tier 3 - "grope_breasts_t3_e1": "Typical breast obsessed man! All he can think about is groping me{}Ugh... No Hermione! You have to be strong! For Gryffindor!", # FORMATTED {action} + "grope_breasts_t3_e1": (None, "Typical breast obsessed man! All he can think about is groping me{action} Ugh... No Hermione! You have to be strong! For Gryffindor!"), # FORMATTED {action} # Branching - "grope_breasts_t3_e1_grab": "recently... Not that I mind too much if I'm being honest... His hands just feel so nice running around my...", + "grope_breasts_t3_e1_grab": " recently... Not that I mind too much if I'm being honest... His hands just feel so nice running around my...", "grope_breasts_t3_e1_slap": " and abusing my breasts of course. At first I hated it but whenever he slaps them it makes my whole body shiver and...", # Tier 4 - "grope_breasts_t4_e1": "Ugh... Maybe there's something wrong with me after all... I mean... Is it normal for someone's hands to feel so good? I couldn't help myself once he started kneading my breasts... ugh... I really need to start laying down some ground rules, otherwise he's going to take this way too far...", + "grope_breasts_t4_e1": (None, "Ugh... Maybe there's something wrong with me after all... I mean... Is it normal for someone's hands to feel so good? I couldn't help myself once he started kneading my breasts... ugh... I really need to start laying down some ground rules, otherwise he's going to take this way too far..."), + # # Grope ass # # Tier 1 - "grope_ass_t1_e1": "First my breasts and now my butt? What is wrong with him, why can't he ask of me to clean his desk or something less perverse...{}", # FORMATTED {action} + "grope_ass_t1_e1": (None, "First my breasts and now my butt? What is wrong with him, why can't he ask of me to clean his desk or something less perverse...{action}"), # FORMATTED {action} # Branching "grope_ass_t1_e1_front": " Ugh... It was so embarrassing to see his face while he was groping me. At least he didn't go any further than that...", "grope_ass_t1_e1_back": " Ugh... It was so embarrassing to be manhandled like that... Well... At least he didn't go any further than that...", @@ -110,7 +115,7 @@ define hermione_diary_pages = { "grope_ass_t1_e1_back_spank_no_points": " First he started molesting my butt but then suddenly he spanked me and not once or twice but multiple times! It was so demeaning... My butt is so sore I don't think I'll be able to sit down for the next couple and what's worse, I didn't get any points whatsoever! Ridiculous!", "grope_ass_t1_e1_back_spank_sub_points": " First he started molesting my butt but then suddenly he spanked me and not once or twice but multiple times! It was so demeaning... My butt is so sore I don't think I'll be able to sit down for the next couple and what's worse, I didn't get any points, more so, he actually substracted points from Gryffindor! It was all for nothing... I'm done selling favours to this bastard...", # Tier 2 - "grope_ass_t2_e1": "I had my bum groped again today...{}{}{}", # FORMATTED {action}{!action2}{!action3} (! = optional) + "grope_ass_t2_e1": (None, "I had my bum groped again today...{action}{action2}{action3}"), # FORMATTED {action}{!action2}{!action3} (! = optional) # Branching "grope_ass_t2_e1_front": " At first I wanted to say no and leave but I got reminded why I was doing it in the first place... He kept squeezing my butt tenderly, it felt... not as bad as the first time I guess, but I still would prefer if he simply asked me to do something else. A girl can dream, right?", "grope_ass_t2_e1_front_open_eyes": " That's not the worst thing in the world I guess, I could just close my eyes and get it over with, right? I couldn't be more wrong... He said that if I don't keep my eyes open the whole time it will cost me points, can you believe that? I couldn't allow that! So I opened my eyes a little and he kept starring at me with his piercing eyes... I was so flushed I thought I was gonna melt. The things I do for our house... Boys better appreciate it!", @@ -122,7 +127,7 @@ define hermione_diary_pages = { "grope_ass_t2_e1_back_prod_pussy": " But that wasn't enough for him, he pushed a finger inside of me! I was shocked I didn't know what to do! Luckily he didn't push any further and let go of me. The things I do for our house... I think I need to reevaluate my priorities...", "grope_ass_t2_e1_back_prod_ass": " At that moment I thought that was the worst of it but then he pushed a finger inside my butt!!! It was his thumb I think... Ugh... I could tell by how big it was... He kept it in there for a few seconds then withdrawn... I felt relieved. I really hope he does not try that in the future...", # Tier 3 - "grope_ass_t3_e1": "He just went straight for my bum! It's like he had three hands as well... ugh... When his strong hands started playing with my butt{}", # FORMATTED {action} + "grope_ass_t3_e1": (None, "He just went straight for my bum! It's like he had three hands as well... ugh... When his strong hands started playing with my butt{action}"), # FORMATTED {action} # Branching "grope_ass_t3_e1_front_end": " When his hand touched me I started getting wet and he noticed it as well, even commented on it, gosh it was soooo embarrassing!!! I don't know what's wrong with me... I was able to make sure he didn't take it too far though... Only just... (He was pretty close to sticking his finger up my you know)...", "grope_ass_t3_e1_back_end": "... I don't know what's wrong with me but I think I liked it... a lot... I was able to make sure he didn't take it too far though... Only just... (He was pretty close to sticking his finger up my you know)...", @@ -131,11 +136,26 @@ define hermione_diary_pages = { "grope_ass_t3_e1_back_prod_ass_end": "... I don't know what's wrong with me but I think I liked it... a lot... I was able to make sure he didn't take it too far though... Only just... I think for a moment he wanted to stick his finger up my butt, weird, it's not like anything stopped him the first time... Not that I would like that or anything, obviously, just saying!", "grope_ass_t3_e1_back_prod_ass_continue": " and when he pushed his strong finger inside of my asshole... I don't know what's wrong with me but I think I liked it... oh god... If he kept going I think I would... Never mind. I know I shouldn't be thinking like this but I wonder what will happen next?", ######## Need to finish T4 and the rest of the favours - } +} -default hermione_diary = diary_class(title = "My Diary", dictionary=hermione_diary_pages) +default hermione_diary = diary_class(title="My Diary", dictionary="hermione_diary_pages") +label __dummy_example: +label .admire_breasts: + $ hermione_diary.diary_append("admire_breasts_t2_e1_fail") + # or... + $ hermione_diary.diary_append("admire_breasts_t2_e1", points="admire_breasts_t2_e1_points", action="admire_breasts_t2_e1_fap_2") +label .grope_ass: + $ hermione_diary.diary_append("grope_ass_t2_e1", action="grope_ass_t2_e1_front", action2=None, action3=None) + # or... + $ hermione_diary.diary_append("grope_ass_t2_e1", action="grope_ass_t2_e1_back_slap", action2="grope_ass_t2_e1_back_prod_pussy_fail", action3=None) +label .test: # actually launch this one + $ hermione_diary.diary_append("admire_breasts_t2_e1_fail") + $ hermione_diary.diary_append("admire_breasts_t2_e1", points="admire_breasts_t2_e1_points", action="admire_breasts_t2_e1_fap_2") + $ hermione_diary.diary_append("grope_ass_t2_e1", action="grope_ass_t2_e1_back_slap", action2="grope_ass_t2_e1_back_prod_pussy_fail", action3=None) + call book_handle(hermione_diary) + return -label _old_writing: +label __old_writing: # Not in use, will be reintroduced above. diff --git a/game/scripts/interface/book.rpy b/game/scripts/interface/book.rpy index 76cf18a5..e1d204f9 100644 --- a/game/scripts/interface/book.rpy +++ b/game/scripts/interface/book.rpy @@ -6,13 +6,20 @@ init python: self.overflow=None self.title = title - self.contents = list(contents) + self.contents = list(contents) # list of (title, text) pairs self.__dict__.update(**kwargs) - self.pages = len(self.contents)-1 + self.npages = len(self.contents) + + @property + def maxpage(self): + # maximum value for the `page` attribute + if self.npages %2: + return self.npages-1 + return self.npages-2 def open(self, page=0): - self.page = max(0, min(page, self.pages)) + self.page = max(0, min(page, self.maxpage)) self.refresh() return @@ -22,7 +29,7 @@ init python: return def next(self): - self.page = min(self.page+2, self.pages) + self.page = min(self.page+2, self.maxpage) self.refresh() return @@ -31,52 +38,98 @@ init python: self.refresh() return - # Max 882 characters per page. - def get_text(self): - if self.pages >= self.page+1: - return (self.contents[self.page][1][0:880], self.contents[self.page+1][1][0:880]) - return (self.contents[self.page][1][0:880], None) - - def get_title(self): - if self.pages >= self.page+1: - return (self.contents[self.page][0], self.contents[self.page+1][0]) - return (self.contents[self.page][0], None) - def refresh(self): - renpy.show_screen("book_menu", page=self.page, pages=self.pages, title=self.title, page_title=self.get_title(), page_text=self.get_text(), page_overflow=self.overflow) + page_title, page_text = self.contents[self.page] + page_text = page_text[:880] + if self.npages > self.page+1: + next_page_title, next_page_text = self.contents[self.page-1] + next_page_text = next_page_text[:880] + else: + next_page_title, next_page_text = None, None + + renpy.show_screen("book_menu", + page=self.page, npages=self.npages, title=self.title, + page_title=page_title, page_text=page_text, + next_page_title=next_page_title, next_page_text=next_page_text, + page_overflow=self.overflow, + ) return - def append(self, new_page): - self.contents.append(new_page) - self.pages = len(self.contents)-1 + def append(self, page_title, page_text): + self.contents.append((page_title, page_text)) + self.npages = len(self.contents) return class diary_class(book_readable_class): - def __init__(self, title, dictionary): - super(diary_class, self).__init__(self) + def __init__(self, *args, dictionary, **kwargs): + """ + `dictionary` is a dict containing two types of entries: + - for normal text pages, id: (title, text). + `text` may contain interpolation fields, such as {code}. + When that's the case, there must be an 2nd-type entry for "code" in this dict. + `title` may be None. + - for interpolation codes, code: text. + `text` is the text to be used for the interpolation. - self.title = title - self.dictionary = dictionary + Alternatively, `dictionary` may be the name of a store variable containing the actual dictionary + (that's better when not in a testing phase, for pickling/saving/updating reasons) + """ + super().__init__(*args, **kwargs) - def append(self, entry, id, branches=None): - for i in self.contents: - if i[2] == id: - return + self.dictionary_ = dictionary # str id : either (title, text) or text + self.entry_ids = set() # str id - entry = list(self.dictionary[entry]) + @property + def dictionary(self): + rv = self.dictionary_ + if isinstance(rv, str): + rv = getattr(renpy.store, rv) + return rv + + # append still exists, so that you can manually add pages without going through the dictionary + def diary_append(self, id, day=None, **branches): + """ + Adds a page to the diary. + `id` is the key of the event that just happened, in the dictionary. + `day` sets the day number for the entry, defaulting to the current day. + + `branches` is a dict of {sub-event id : code} for every happened sub-event specializing event `id`. + the specified codes will be looked for in the dictionary, and the original entry of id `id` + will be formatted by associating {sub-event id} with dictionary[code]. + If `code` is not a valid entry in the dict, the `code` value itself will be interpolated instead, + or nothing if v is a false value (like None). + + If the page for the key `id` contains interpolation fields, + it is a mistake to not specify all interpolation fields in `branches`. + It is benign to specify keys which are not interpolation fields. + """ + + if id in self.entry_ids: + return + + dictionary = self.dictionary + page_title, page_text = dictionary[id] if branches: - branches = tuple(self.dictionary[str(x)] for x in branches) - entry = [entry[0], entry[1].format(*branches)] + branches = {k : dictionary.get(v, v or "") for k, v in branches.items()} + page_text = page_text.format(**branches) + + if day is None: + day = game.day + + if page_title: + page_title = "Day {}\n{}".format(day, page_title) + else: + page_title = "Day {}".format(day) + + self.append(page_title, page_text) + self.entry_ids.add(id) - self.contents.append(["Day {}\n{}".format(game.day, entry[0]), str(entry[1]), id]) - self.pages = len(self.contents)-1 - return label book_handle(book=None): $ book.open() play sound "sounds/bookopen.ogg" - show screen book_animator("book_page_next", 0.5) + show screen book_animator("book_page_next", 0.5) # use an ATL sort-of-Fade instead, and With label .after_init: $ renpy.dynamic(__choice = ui.interact()) @@ -102,7 +155,9 @@ label book_handle(book=None): return jump .after_init -screen book_menu(page, pages, title, page_title, page_text, page_overflow): +screen book_menu(page, npages, title, page_title, page_text, next_page_title, next_page_text, page_overflow): + # page is 0-based + # npages is the number of pages, so max(page) is npages-1 tag book_menu zorder 30 @@ -116,43 +171,42 @@ screen book_menu(page, pages, title, page_title, page_text, page_overflow): pos (280, 130) xsize 250 ysize 300 - text page_title[0] ypos -20 size 16 xalign 0.5 - text page_text[0] size 12 ypos 40 - text "{b}"+str(page+1)+"{/b}" xalign 0.5 ypos 350 size 11 # fix page calc + text page_title ypos -20 size 16 xalign 0.5 textalign .5 + text page_text size 12 ypos 40 + text str(page+1) bold True xalign 0.5 ypos 350 size 11 frame: style "empty" xpos 600 ypos 130 xsize 250 ysize 300 - if page_title[1] is not None: - text page_title[1] ypos -20 size 16 xalign 0.5 - if page_text[1] is not None: - text page_text[1] size 12 ypos 40 - text "{b}"+str(page+2)+"{/b}" xalign 0.5 ypos 350 size 11 + if next_page_title is not None: + text next_page_title ypos -20 size 16 xalign 0.5 textalign .5 + if next_page_text is not None: + text next_page_text size 12 ypos 40 + text str(page+2) bold True xalign 0.5 ypos 350 size 11 - imagebutton: - pos (878, 100) - ysize 400 - xalign 1.0 + if page+2 < npages: # Next - if page < pages: + imagebutton: + pos (721, 100) idle Transform("interface/book/hover.webp", alpha=0) hover "interface/book/hover.webp" action Return("next") + + elif page > 0: # Fast Back to start - else: + imagebutton: + pos (721, 100) idle "interface/book/back.webp" hover "interface/book/back.webp" action Return("back") - # Previous - if page > 0: + # Previous imagebutton: pos (242, 100) - ysize 400 idle Transform("interface/book/hover.webp", xzoom=-1.0, alpha=0) - hover Transform("interface/book/hover.webp", xzoom=-1.0) + hover Transform("interface/book/hover.webp", xzoom=-1.0, alpha=1) action Return("prev") use close_button