├── .gitignore ├── CRIMFBRG.TTF ├── Disclaimer and License.txt ├── Emma ├── Emma_Animations.rpy ├── Emma_Animations_Cowgirl.rpy ├── Emma_Animations_Doggy.rpy ├── Emma_Animations_Missionary.rpy ├── Emma_BJ_Animation_ONI.rpy ├── Emma_Chat.rpy ├── Emma_Cowgirl.rpy ├── Emma_Doggy.rpy ├── Emma_Fondle.rpy ├── Emma_HJ.rpy ├── Emma_Missionary.rpy ├── Emma_Orgasms.rpy ├── Emma_SDialog.rpy ├── Emma_Scenes.rpy ├── Emma_Sex.rpy └── Emma_Stripping.rpy ├── Kitty ├── Kitty_Animations.rpy ├── Kitty_Animations_Doggy.rpy ├── Kitty_Chat.rpy ├── Kitty_DateNight.rpy ├── Kitty_Doggy.rpy ├── Kitty_Fondle.rpy ├── Kitty_HJ.rpy ├── Kitty_Missionary.rpy ├── Kitty_Orgasms.rpy ├── Kitty_SDialog.rpy ├── Kitty_Scenes.rpy ├── Kitty_Sex.rpy └── Kitty_Stripping.rpy ├── Laura ├── Mod_Laura_Animations.rpy ├── Mod_Laura_Chat.rpy ├── Mod_Laura_DateNight.rpy ├── Mod_Laura_Fondle.rpy ├── Mod_Laura_HJ.rpy ├── Mod_Laura_Orgasms.rpy ├── Mod_Laura_SDialog.rpy ├── Mod_Laura_Scenes.rpy ├── Mod_Laura_Sex.rpy ├── Mod_Laura_Stripping.rpy ├── Mod_script Scenes.rpy └── NewGirl_Initial_Values.rpy ├── Mod_Backgrounds.rpy ├── Mystique ├── Mystique_Animations.rpy ├── Mystique_Animations_Doggy.rpy ├── Mystique_Animations_Doggy_Special.rpy ├── Mystique_Animations_Missionary.rpy ├── Mystique_Animations_Missionary_Special.rpy ├── Mystique_Animations_Special.rpy ├── Mystique_Chat.rpy ├── Mystique_Doggy.rpy ├── Mystique_Fondle.rpy ├── Mystique_HJ.rpy ├── Mystique_Missionary.rpy ├── Mystique_Orgasms.rpy ├── Mystique_SDialog.rpy ├── Mystique_Scenes.rpy ├── Mystique_Sex.rpy └── Mystique_Stripping.rpy ├── NewGirl ├── NewGirl_Functions.rpy └── NewGirl_Python.rpy ├── Quiz.rpy ├── README.md ├── Rogue ├── Rogue_Addiction.rpy ├── Rogue_Animations.rpy ├── Rogue_Chat.rpy ├── Rogue_DateNight.rpy ├── Rogue_Doggy.rpy ├── Rogue_Fondle.rpy ├── Rogue_HJ.rpy ├── Rogue_Missionary.rpy ├── Rogue_Orgasms.rpy ├── Rogue_SDialog.rpy ├── Rogue_Scenes.rpy ├── Rogue_Sex.rpy ├── Rogue_Stripping.rpy └── Rogue_Toys.rpy ├── dungeon.TTF ├── ltromatic.ttf ├── options.rpy ├── renpy └── display │ └── layout.py ├── screens.rpy ├── script DateNight.rpy ├── script Functions.rpy ├── script Locations.rpy ├── script.rpy └── script_version.txt /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.png 3 | *.rpa 4 | *.rpyb 5 | *.rpyc 6 | *.save 7 | saves/persistent 8 | *.mp3 9 | *.wav 10 | *.db 11 | *.jpg 12 | *.zip 13 | *.bat 14 | *.bak 15 | -------------------------------------------------------------------------------- /CRIMFBRG.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tinymanhood/Rouge-Like-Expanded/6d3c7ec4c1178a521590da1e135e9aa91f440a17/CRIMFBRG.TTF -------------------------------------------------------------------------------- /Disclaimer and License.txt: -------------------------------------------------------------------------------- 1 | This is a work of parody fiction. It is intended to be distributed through Hentai United and Oniartist's Patreon page, please do not redistribute through other sources. 2 | 3 | As is noted in the game, this story takes place several years after the last episode of the TV series it is based on, and all characters involved are over the age of 18. The game references events of the TV series, but is not beholden to the canon of the series, and characters will behave differently or have different backstories. 4 | 5 | I would like to thank Akabur for his help getting started with all this (definitely check out his games too), and the various documentation on the Renpy site for pointing me in the right directions. I've had a lot of fun coding this game, and look forward to continually improving on it. If you'd like to support my efforts, please sign up under my name at Hentai United, or join on to my Patreon page. I have some huge ambitions for where this project will end up. 6 | 7 | http://oni.hentaiunited.com/ 8 | http://www.patreon.com/OniArtist -------------------------------------------------------------------------------- /Emma/Emma_BJ_Animation_ONI.rpy: -------------------------------------------------------------------------------- 1 | image Emma_BJ_Animation: 2 | ConditionSwitch( 3 | "OniBJ", "Emma_BJ_Animation_ONI", 4 | "True", "Emma_BJ_Animation_Mod", 5 | ), 6 | 7 | image TempHairBack: 8 | "images/EmmaSprite/EmmaSprite_Head_HairBackWet.png" 9 | anchor (0.6, 0.0) 10 | zoom .5 11 | 12 | image Emma_BJ_ONI_Blink: 13 | ConditionSwitch( 14 | "E_Eyes == 'sexy'", "images/EmmaSprite/EmmaSprite_Head_Eyes_Sexy.png", 15 | "E_Eyes == 'side'", "images/EmmaSprite/EmmaSprite_Head_Eyes_Side.png", 16 | "E_Eyes == 'surprised'", "images/EmmaSprite/EmmaSprite_Head_Eyes_Surprised.png", 17 | "E_Eyes == 'normal'", "images/EmmaSprite/EmmaSprite_Head_Eyes_Normal.png", 18 | "E_Eyes == 'stunned'", "images/EmmaSprite/EmmaSprite_Head_Eyes_Agao.png", 19 | "E_Eyes == 'down'", "images/EmmaSprite/EmmaSprite_Head_Eyes_Down.png", 20 | "E_Eyes == 'closed'", "images/EmmaSprite/EmmaSprite_Head_Eyes_Closed.png", 21 | "E_Eyes == 'manic'", "images/EmmaSprite/EmmaSprite_Head_Eyes_Surprised.png", 22 | "E_Eyes == 'squint'", "Emma_BJ_ONI_Squint", 23 | "True", "images/EmmaSprite/EmmaSprite_Head_Eyes_Normal.png", 24 | ), 25 | choice: 26 | 3.5 27 | choice: 28 | 3.25 29 | choice: 30 | 3 31 | "images/EmmaSprite/EmmaSprite_Head_Eyes_Closed.png" 32 | .25 33 | repeat 34 | 35 | image Emma_BJ_ONI_Squint: 36 | "images/EmmaSprite/EmmaSprite_Head_Eyes_Sexy.png" 37 | choice: 38 | 3.5 39 | choice: 40 | 3.25 41 | choice: 42 | 3 43 | "images/EmmaSprite/EmmaSprite_Head_Eyes_Squint.png" 44 | .25 45 | repeat 46 | # End Emma Sprite / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 47 | 48 | 49 | 50 | 51 | # Start Emma Blowjob Animations / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 52 | # Core Emma BJ element /////////////////////////////////////////////////////////////////////////// Core Emma BJ element 53 | #Emma BJ Over Sprite Compositing 54 | 55 | 56 | image Emma_BJ_Animation_ONI:#BJ_NewTest: #core BJ animation 57 | LiveComposite( 58 | (858,928), 59 | (-270,-160), ConditionSwitch( #-270,-160 60 | # Emma's hair backside 61 | "Speed == 0", At("Emma_BJ_ONI_HairBack", Emma_BJ_ONI_Head_0()), #Static 62 | "Speed == 1", At("Emma_BJ_ONI_HairBack", Emma_BJ_ONI_Head_1()), #Licking 63 | "Speed == 2", At("Emma_BJ_ONI_HairBack", Emma_BJ_ONI_Head_2()), #Heading 64 | "Speed == 3", At("Emma_BJ_ONI_HairBack", Emma_BJ_ONI_Head_3()), #Sucking 65 | "Speed == 4", At("Emma_BJ_ONI_HairBack", Emma_BJ_ONI_Head_4()), #Deepthroat 66 | "Speed == 5", At("Emma_BJ_ONI_HairBack", Emma_BJ_ONI_Head_5()), #Cumming High 67 | "Speed == 6", At("Emma_BJ_ONI_HairBack", Emma_BJ_ONI_Head_6()), #Cumming Deep 68 | "True", Null(), 69 | ), 70 | (-20,270), ConditionSwitch( 71 | # Emma's body, everything below the chin 72 | "Speed == 0", At("Emma_BJ_ONI_Backdrop", Emma_BJ_ONI_Body_0()), #Static 73 | "Speed == 1", At("Emma_BJ_ONI_Backdrop", Emma_BJ_ONI_Body_1()), #Licking 74 | "Speed == 2", At("Emma_BJ_ONI_Backdrop", Emma_BJ_ONI_Body_2()), #Heading 75 | "Speed == 3", At("Emma_BJ_ONI_Backdrop", Emma_BJ_ONI_Body_3()), #Sucking 76 | "Speed == 4", At("Emma_BJ_ONI_Backdrop", Emma_BJ_ONI_Body_4()), #Deepthroat 77 | "Speed == 5", At("Emma_BJ_ONI_Backdrop", Emma_BJ_ONI_Body_5()), #Cumming High 78 | "Speed == 6", At("Emma_BJ_ONI_Backdrop", Emma_BJ_ONI_Body_6()), #Cumming Deep 79 | "True", Null(), 80 | ), 81 | (-270,-160), ConditionSwitch( 82 | # Emma's head Underlay 83 | "Speed == 0", At("Emma_BJ_ONI_Head", Emma_BJ_ONI_Head_0()), #Static 84 | "Speed == 1", At("Emma_BJ_ONI_Head", Emma_BJ_ONI_Head_1()), #Licking 85 | "Speed == 2", At("Emma_BJ_ONI_Head", Emma_BJ_ONI_Head_2()), #Heading 86 | "Speed == 3", At("Emma_BJ_ONI_Head", Emma_BJ_ONI_Head_3()), #Sucking 87 | "Speed == 4", At("Emma_BJ_ONI_Head", Emma_BJ_ONI_Head_4()), #Deepthroat 88 | "Speed == 5", At("Emma_BJ_ONI_Head", Emma_BJ_ONI_Head_5()), #Cumming High 89 | "Speed == 6", At("Emma_BJ_ONI_Head", Emma_BJ_ONI_Head_6()), #Cumming Deep 90 | "True", Null(), 91 | ), 92 | (0,0), ConditionSwitch( 93 | # Cock 94 | "Speed == 0", At("Blowcock", Emma_BJ_ONI_Cock_0()), #Static 95 | "Speed == 1", At("Blowcock", Emma_BJ_ONI_Cock_1()), #Licking 96 | "Speed >= 2", At("Blowcock", Emma_BJ_ONI_Cock_2()), #Heading+ 97 | "True", Null(), 98 | ), 99 | (-270,-160), ConditionSwitch( 100 | # the masked overlay for when her head overlaps the cock 101 | "Speed < 3", Null(), 102 | "Speed == 3", At(AlphaMask("Emma_BJ_ONI_Head", "Emma_BJ_ONI_MouthSuckingMask"), Emma_BJ_ONI_Head_3()), #Sucking 103 | "Speed == 4", At(AlphaMask("Emma_BJ_ONI_Head", "Emma_BJ_ONI_MouthSuckingMask"), Emma_BJ_ONI_Head_4()), #Deepthroat 104 | "Speed == 6", At(AlphaMask("Emma_BJ_ONI_Head", "Emma_BJ_ONI_MouthSuckingMask"), Emma_BJ_ONI_Head_6()), #Cumming Deep 105 | "True", Null(), 106 | ), 107 | (-270,-160), ConditionSwitch( 108 | # same as above, but for the heading animation 109 | "Speed == 2", At(AlphaMask("Emma_BJ_ONI_Head", "Emma_BJ_ONI_MaskHeadingComposite"), Emma_BJ_ONI_Head_2()), #Heading 110 | "Speed == 5", At(AlphaMask("Emma_BJ_ONI_Head", "Emma_BJ_ONI_MaskHeadingComposite"), Emma_BJ_ONI_Head_5()), #Cumming High 111 | "True", Null(), 112 | ), 113 | (325,490), ConditionSwitch( 114 | # the over part of spunk 115 | "Speed < 3 or 'mouth' not in E_Spunk", Null(), 116 | "Speed == 3", At("Emma_BJ_ONI_SuckingSpunk", Emma_BJ_ONI_Head_3()), #Sucking 117 | "Speed == 4", At("Emma_BJ_ONI_SuckingSpunk", Emma_BJ_ONI_Head_4()), #Deepthroat 118 | "Speed == 6", At("Emma_BJ_ONI_SuckingSpunk", Emma_BJ_ONI_Head_6()), #Cumming Deep 119 | "True", Null(), 120 | ), 121 | (325,490), ConditionSwitch( #(325,490) 122 | # same as above, but for the heading animation 123 | "Speed == 2 and 'mouth' in E_Spunk", At("Emma_BJ_ONI_MaskHeadingSpunk", Emma_BJ_ONI_Head_2()), #Heading 124 | "True", Null(), 125 | ), 126 | ) 127 | zoom .55 128 | anchor (.5,.5) 129 | 130 | image Emma_BJ_ONI_HairBack: 131 | #Hair underlay 132 | ConditionSwitch( 133 | "E_Hair", "images/EmmaBJFaceONI/Emma_BJ_Hair_Wave_Back.png", 134 | "True", Null(), 135 | ), 136 | zoom 1.4 137 | anchor (0.5, 0.5) 138 | 139 | 140 | image Emma_BJ_ONI_Backdrop: 141 | #add body here 142 | 143 | image Emma_BJ_ONI_Backdrop: 144 | #Her Body under the head 145 | LiveComposite( 146 | (858,928), 147 | (-375,250), ConditionSwitch( 148 | #blanket 149 | "'blanket' in E_RecentActions", "images/KittyBJFace/Kitty_BJFace_Blanket.png", 150 | "True", Null(), 151 | ), 152 | (0,0),"images/EmmaBJFaceONI/Emma_TJ_Body.png", 153 | #body 154 | (0,0), ConditionSwitch( 155 | #tits 156 | "renpy.showing('Emma_TJ_Animation')", "images/EmmaBJFaceONI/Emma_TJ_Tits.png", #Titjob animation 157 | "E_Chest == 'corset'", "images/EmmaBJFaceONI/Emma_TJ_Tits_Up.png", # E_TitsUp = 1 158 | "E_Chest == 'sports bra' or E_Chest == 'lace bra'", "images/EmmaBJFaceONI/Emma_TJ_Tits_Up.png", # E_TitsUp = 1 159 | "True", "images/EmmaBJFaceONI/Emma_TJ_Tits_Down.png", # E_TitsUp = 0 160 | ), 161 | 162 | ) 163 | zoom 1.5 164 | offset (-300,-200) 165 | 166 | 167 | image Emma_BJ_ONI_Head: #These are all the details of the face 168 | LiveComposite( 169 | (858,928), 170 | (0,0), ConditionSwitch( 171 | #Hair behind face above body 172 | "E_Hair", "images/EmmaBJFaceONI/Emma_BJ_Hair_Wave_Mid.png", 173 | "True", Null(), 174 | ), 175 | (0,0), ConditionSwitch( 176 | # Basic Face layer 177 | "Speed <= 2 or Speed == 5 or (not renpy.showing('Emma_BJ_Animation') and OniBJ)", ConditionSwitch( 178 | # If the animation isn't sucking, or if not in BJ pose 179 | "E_Blush", "images/EmmaBJFaceONI/Emma_BJ_FaceClosed_Blush.png", 180 | "True", "images/EmmaBJFaceONI/Emma_BJ_FaceClosed.png", 181 | ), 182 | "E_Blush", "images/EmmaBJFaceONI/Emma_BJ_FaceOpen_Blush.png", 183 | "True", "images/EmmaBJFaceONI/Emma_BJ_FaceOpen.png" 184 | ), 185 | (0,0), ConditionSwitch( 186 | #Mouth 187 | "Speed and renpy.showing('Emma_BJ_Animation') and OniBJ", ConditionSwitch( 188 | # If in sucking position 189 | "Speed == 1", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Tongue.png", #licking 190 | "(Speed == 2 or Speed == 5)", Null(), #heading 191 | "Speed == 3", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Sucking.png", #sucking 192 | "Speed == 4", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Sucking.png", #deepthroat 193 | "Speed == 6", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Sucking.png", #cumming 194 | ), 195 | "E_Mouth == 'normal'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Smile.png", 196 | "E_Mouth == 'lipbite'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Lipbite.png", 197 | "E_Mouth == 'sucking'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Sucking.png", 198 | "E_Mouth == 'kiss'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Kiss.png", 199 | "E_Mouth == 'sad'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Sad.png", 200 | "E_Mouth == 'smile'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Smile.png", 201 | "E_Mouth == 'smirk'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Smirk.png", 202 | "E_Mouth == 'grimace'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Smile.png", 203 | "E_Mouth == 'surprised'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Surprised.png", 204 | "E_Mouth == 'tongue'", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Tongue.png", 205 | "True", "images/EmmaBJFaceONI/Emma_BJ_Mouth_Smile.png", 206 | ), 207 | (428,605), ConditionSwitch( 208 | # Heading Mouth 209 | "not renpy.showing('Emma_BJ_Animation')", Null(), 210 | "OniBJ and Speed == 2", At("Emma_BJ_ONI_MouthHeading", Emma_BJ_ONI_MouthAnim()), #heading 211 | "OniBJ and Speed == 5", At("Emma_BJ_ONI_MouthHeading", Emma_BJ_ONI_MouthAnimC()), #cumming high 212 | "True", Null(), 213 | ), 214 | 215 | (0,0), ConditionSwitch( 216 | #Spunk layer 217 | "'mouth' not in E_Spunk", Null(), 218 | "Speed and renpy.showing('Emma_BJ_Animation') and OniBJ", ConditionSwitch( 219 | # If in sucking position 220 | "Speed == 1", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Tongue.png", #licking 221 | "(Speed == 2 or Speed == 5)", Null(), #heading 222 | "Speed == 3", "images/EmmaBJFaceONI/Emma_BJ_Spunk_SuckingUnder.png", #sucking 223 | "Speed == 4", "images/EmmaBJFaceONI/Emma_BJ_Spunk_SuckingUnder.png", #deepthroat 224 | "Speed == 6", "images/EmmaBJFaceONI/Emma_BJ_Spunk_SuckingUnder.png", #cumming 225 | ), 226 | "E_Mouth == 'normal'", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Smile.png", 227 | "E_Mouth == 'lipbite'", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Lipbite.png", 228 | "E_Mouth == 'kiss'", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Kiss.png", 229 | "E_Mouth == 'sad'", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Sad.png", 230 | "E_Mouth == 'smile'", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Smile.png", 231 | "E_Mouth == 'smirk'", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Smirk.png", 232 | "E_Mouth == 'surprised'", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Surprised.png", 233 | "E_Mouth == 'tongue'", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Tongue.png", 234 | "E_Mouth == 'sucking'", "images/EmmaBJFaceONI/Emma_BJ_Spunk_SuckingUnder.png", 235 | "True", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Smile.png", 236 | ), 237 | (0,0), ConditionSwitch( 238 | #Brows 239 | "E_Brows == 'normal'", "images/EmmaBJFaceONI/Emma_BJ_Brows_Normal.png", 240 | "E_Brows == 'angry'", "images/EmmaBJFaceONI/Emma_BJ_Brows_Angry.png", 241 | "E_Brows == 'sad'", "images/EmmaBJFaceONI/Emma_BJ_Brows_Sad.png", 242 | "E_Brows == 'surprised'", "images/EmmaBJFaceONI/Emma_BJ_Brows_Surprised.png", 243 | "E_Brows == 'confused'", "images/EmmaBJFaceONI/Emma_BJ_Brows_Confused.png", 244 | "True", "images/EmmaBJFaceONI/Emma_BJ_Brows_Normal.png", 245 | ), 246 | (0,0), "Emma_BJ_ONI_Blink", 247 | #Eyes 248 | (0,0), ConditionSwitch( 249 | #cum on the face 250 | "'facial' in E_Spunk", "images/EmmaBJFaceONI/Emma_BJ_Spunk_Facial.png", 251 | "True", Null(), 252 | ), 253 | (0,0), ConditionSwitch( 254 | #Hair overlay 255 | "E_Hair", "images/EmmaBJFaceONI/Emma_BJ_Hair_Wave_Top.png", 256 | "True", Null(), 257 | ), 258 | ) 259 | zoom 1.4 260 | anchor (0.5, 0.5) 261 | 262 | image Emma_BJ_ONI_Blink: 263 | #eyeblinks 264 | ConditionSwitch( 265 | "E_Eyes == 'normal'", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Sexy.png", 266 | "E_Eyes == 'sexy'", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Sexy.png", 267 | "E_Eyes == 'closed'", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Closed.png", 268 | "E_Eyes == 'surprised'", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Surprised.png", 269 | "E_Eyes == 'side'", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Side.png", 270 | "E_Eyes == 'stunned'", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Surprised.png", 271 | "E_Eyes == 'down'", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Down.png", 272 | "E_Eyes == 'manic'", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Surprised.png", 273 | "E_Eyes == 'squint'", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Squint.png", 274 | "True", "images/EmmaBJFaceONI/Emma_BJ_Eyes_Sexy.png", 275 | ), 276 | choice: 277 | 3.5 278 | choice: 279 | 3.25 280 | choice: 281 | 3 282 | "images/EmmaBJFaceONI/Emma_BJ_Eyes_Closed.png" 283 | .25 284 | repeat 285 | 286 | image Emma_BJ_ONI_MouthHeading: 287 | #the mouth used for the heading animations 288 | contains: 289 | "images/EmmaBJFaceONI/Emma_BJ_Mouth_Sucking.png" 290 | zoom 1.4 291 | anchor (0.50,0.65) #(0.50,0.65) 292 | 293 | image Emma_BJ_ONI_MouthSuckingMask: 294 | #the mask used for sucking animations 295 | contains: 296 | "images/EmmaBJFaceONI/Emma_BJ_Mouth_SuckingMask.png" 297 | zoom 1.4 298 | 299 | image Emma_BJ_ONI_MaskHeading: 300 | #the mask used for the heading image 301 | contains: 302 | "images/EmmaBJFaceONI/Emma_BJ_Mouth_SuckingMask.png" 303 | offset (-380,-595) 304 | 305 | image Emma_BJ_ONI_MaskHeadingComposite: 306 | #The composite for the heading mask that goes over the face 307 | LiveComposite( 308 | (858,928), 309 | (300,462), ConditionSwitch( 310 | "Speed == 2", At("Emma_BJ_ONI_MaskHeading", Emma_BJ_ONI_MouthAnim()), 311 | "Speed == 5", At("Emma_BJ_ONI_MaskHeading", Emma_BJ_ONI_MouthAnimC()), 312 | "True", Null(), 313 | ), 314 | ) 315 | zoom 1.8 316 | 317 | image Emma_BJ_ONI_MaskHeadingSpunk: 318 | #The composite for the heading mask that goes over the face 319 | contains: 320 | "images/EmmaBJFaceONI/Emma_BJ_Spunk_SuckingOver.png" 321 | subpixel True 322 | anchor (0.5, 0.65) 323 | zoom 0.58 #0.58 = top of heading, 0.66 = crown, 0.60 = valley, 0.68 = base 324 | block: #total time 1.0 down, 1.5 back up 2.5 total 325 | pause .20 326 | easein .15 zoom 0.66 327 | linear .15 zoom 0.60 328 | easeout .25 zoom 0.68 329 | pause .25 330 | #1.0s to this point 331 | pause .40 332 | easein .40 zoom 0.60 333 | linear .10 zoom 0.66 334 | easeout .30 zoom 0.58 335 | pause .30 336 | #1.5s to this point 337 | repeat 338 | zoom 2.5 #1.8 339 | yoffset 210#130 340 | 341 | image Emma_BJ_ONI_SuckingSpunk: 342 | contains: 343 | "images/EmmaBJFaceONI/Emma_BJ_Spunk_SuckingOver.png" 344 | zoom 1.4 345 | anchor (0.5, 0.5) 346 | 347 | 348 | transform Emma_BJ_ONI_MouthAnim(): 349 | #The animation for the heading mouth 350 | subpixel True 351 | zoom 0.58 #0.58 = top of heading, 0.66 = crown, 0.60 = valley, 0.68 = base 352 | block: #total time 1.0 down, 1.5 back up 2.5 total 353 | pause .20 354 | easein .15 zoom 0.66 355 | linear .15 zoom 0.60 356 | easeout .25 zoom 0.68 357 | pause .25 358 | #1.0s to this point 359 | pause .40 360 | easein .40 zoom 0.60 361 | linear .10 zoom 0.66 362 | easeout .30 zoom 0.58 363 | pause .30 364 | #1.5s to this point 365 | repeat 366 | 367 | 368 | 369 | transform Emma_BJ_ONI_Head_2(): 370 | #The heading animation for her face 371 | subpixel True 372 | offset (0,-40) #top (0,-40), -20 is crown, 0 is mid 373 | block: 374 | ease 1 yoffset 40 #bottom 375 | ease 1.5 offset (0,-40) #top 376 | repeat 377 | 378 | 379 | 380 | transform Emma_BJ_ONI_MouthAnimC(): 381 | #The animation for the heading mouth 382 | subpixel True 383 | zoom 0.7 #0.90 384 | block: #total time 10 down, 15 back up 385 | pause .20 386 | ease .50 zoom 0.65 #0.87 387 | pause .60 388 | ease .30 zoom 0.7#0.9 389 | pause .10 390 | ease .30 zoom 0.65#0.9 391 | pause .20 392 | ease .30 zoom 0.7#0.9 393 | repeat 394 | 395 | 396 | #Cock Animations for Emma's BJ Scenes / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 397 | transform Emma_BJ_ONI_Cock_0(): 398 | #The angled static animation for the cock for starting 399 | anchor (.5,.5) 400 | rotate -10 401 | transform Emma_BJ_ONI_Cock_1(): 402 | #The licking animation for the cock 403 | subpixel True 404 | anchor (.5,.5) 405 | ease 0.5 rotate 0 406 | block: 407 | ease 2 rotate -5 #410 408 | pause .5 409 | ease 2.5 rotate 0 410 | repeat 411 | transform Emma_BJ_ONI_Cock_2(): 412 | #The vertical static animation for the cock used in most sucking 413 | anchor (.5,.5) 414 | rotate 0 415 | alpha 1 416 | #End Cock Animations for Emma's BJ Scenes / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 417 | 418 | 419 | #Head and Body Animations for Emma's BJ Scenes / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 420 | transform Emma_BJ_ONI_Head_0(): 421 | #The starting animation for her face 422 | subpixel True 423 | ease 1.5 offset (0,0) 424 | transform Emma_BJ_ONI_Body_0(): 425 | #The starting animation for her body 426 | subpixel True 427 | ease 1.5 offset (0,0) 428 | 429 | 430 | transform Emma_BJ_ONI_Head_1(): 431 | #The licking animation for her face 432 | subpixel True 433 | ease 0.5 offset (0,-35) #top 434 | block: 435 | ease 2.5 offset (25,100) #bottom 436 | ease 2 offset (0,-35) #top 437 | pause .5 438 | repeat 439 | transform Emma_BJ_ONI_Body_1(): 440 | #The licking animation for her body 441 | subpixel True 442 | ease 0.5 offset (0,-35) #top 443 | block: 444 | ease 2.5 offset (30,90) #bottom 25,50 445 | ease 2 offset (0,-35) #top 446 | pause .5 447 | repeat 448 | 449 | 450 | transform Emma_BJ_ONI_Body_2(): 451 | #The heading animation for her body 452 | subpixel True 453 | offset (0,-40) #top 454 | block: 455 | ease 1 yoffset 15 #bottom 456 | ease 1.5 offset (0,-40) #top 457 | repeat 458 | 459 | transform Emma_BJ_ONI_Head_3(): 460 | #The sucking animation for her face 461 | subpixel True 462 | ease 0.5 offset (0,50) 463 | block: 464 | ease 1 yoffset 120 #100 465 | ease 1.5 offset (0,50) 466 | repeat 467 | transform Emma_BJ_ONI_Body_3(): 468 | #The sucking animation for her body 469 | subpixel True 470 | ease 0.5 offset (0,50) 471 | block: 472 | ease 1 yoffset 100 #80 #bottom 473 | ease 1.5 offset (0,50) #top 474 | repeat 475 | 476 | transform Emma_BJ_ONI_Head_4(): 477 | #The deep animation for her face 478 | ease .5 offset (0,100) 479 | block: 480 | subpixel True 481 | ease 1 yoffset 300 482 | pause .5 483 | ease 2 yoffset 100 484 | repeat 485 | transform Emma_BJ_ONI_Body_4(): 486 | #The deep animation for her body 487 | ease .5 offset (0,100) 488 | block: 489 | subpixel True 490 | ease 1.2 yoffset 250 491 | pause .5 492 | ease 1.8 yoffset 100 493 | repeat 494 | 495 | transform Emma_BJ_ONI_Head_5(): 496 | #The heading cumming animation for her face 497 | subpixel True 498 | offset (0,-30) #top 499 | block: 500 | ease 1 yoffset -20 #bottom 501 | ease 1.5 offset (0,-30) #top 502 | repeat 503 | transform Emma_BJ_ONI_Body_5(): 504 | #The heading cumming animation for her body 505 | subpixel True 506 | offset (0,-30) #top 507 | block: 508 | ease 1 yoffset -20 #bottom 509 | ease 1.5 offset (0,-30) #top 510 | repeat 511 | 512 | transform Emma_BJ_ONI_Head_6(): 513 | #The deep cumming animation for her face 514 | ease .5 offset (0,230) 515 | block: 516 | subpixel True 517 | ease 1 yoffset 250 518 | pause .5 519 | ease 2 yoffset 230 520 | repeat 521 | transform Emma_BJ_ONI_Body_6(): 522 | #The deep cumming animation for her body 523 | ease .5 offset (0,190) 524 | block: 525 | subpixel True 526 | ease 1.2 yoffset 200 527 | pause .5 528 | ease 1.8 yoffset 190 529 | repeat 530 | 531 | 532 | 533 | #Head and Body Animations for Emma's BJ Scenes / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 534 | #BJ Launchers 535 | #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 536 | -------------------------------------------------------------------------------- /Kitty/Kitty_DateNight.rpy: -------------------------------------------------------------------------------- 1 | # Date Night ////////////////////////////////////////////////////////////////////// 2 | # Count = price of things 3 | # Count2 = tempmod 4 | 5 | label Kitty_Date_Night: 6 | call Shift_Focus("Kitty") from _call_Shift_Focus_265 7 | if "askeddate" in K_RecentActions: 8 | call KittyFace("angry") from _call_KittyFace_1146 9 | ch_k "Geez, stop bothering me already!" 10 | return 11 | $ K_RecentActions.append("askeddate") 12 | 13 | if K_Break[0] and "ex" in K_Traits: 14 | call KittyFace("angry") from _call_KittyFace_1147 15 | ch_k "You can't just pretend that nothing happened!" 16 | return 17 | elif ApprovalCheck("Kitty", 1200) and "ex" in K_Traits: 18 | call KittyFace("bemused") from _call_KittyFace_1148 19 | $ K_Brows = "sad" 20 | if "no summon" in K_RecentActions: 21 | ch_k "Well, I was doing something, but I guess if we're going out. . ." 22 | else: 23 | ch_k "I don't know, we used to have fun. I guess so." 24 | if "deadbeat" in K_History: 25 | call KittyFace("angry") from _call_KittyFace_1149 26 | $ K_Mouth = "grimace" 27 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 80, 2) 28 | ch_k "But you're definitely paying this time!" 29 | call KittyFace("bemused") from _call_KittyFace_1150 30 | elif "ex" in K_Traits: 31 | call KittyFace("angry") from _call_KittyFace_1151 32 | $ K_Eyes = "side" 33 | ch_k "I[K_like]don't think so." 34 | return 35 | elif "deadbeat" in K_History: 36 | call KittyFace("angry") from _call_KittyFace_1152 37 | menu: 38 | ch_k "Last time we went out, you[K_like]left me with the check!" 39 | "Sorry about that, I'll take care of the check this time.": 40 | if ApprovalCheck("Kitty", 650): 41 | call KittyFace("sad") from _call_KittyFace_1153 42 | ch_k "Well, I guess I can give you another chance, just don't disappoint me again." 43 | else: 44 | call KittyFace("angry") from _call_KittyFace_1154 45 | "Yeah[K_like]fool me once. . . no thanks, [K_Petname]." 46 | return 47 | "Yeah, so?": 48 | if ApprovalCheck("Kitty", 1400): 49 | call KittyFace("angry") from _call_KittyFace_1155 50 | $ K_Mouth = "grimace" 51 | ch_k "Why do I[K_like]put up with you?" 52 | call KittyFace("bemused") from _call_KittyFace_1156 53 | elif ApprovalCheck("Rogue", 500, "O"): 54 | call KittyFace("sad") from _call_KittyFace_1157 55 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 80, 3) 56 | ch_k "Well, I guess we can still have fun. . ." 57 | elif ApprovalCheck("Kitty", 650): 58 | call KittyFace("angry") from _call_KittyFace_1158 59 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 80, -5) 60 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 60, 2) 61 | ch_k "Yeah[K_like]I'm going out with {i}you,{/i} dick." 62 | return 63 | else: 64 | call KittyFace("angry") from _call_KittyFace_1159 65 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 80, -10) 66 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 80, -3) 67 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 60, 2) 68 | ch_k "Asshole." 69 | return 70 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 30, 3) 71 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 80, 2) 72 | elif ApprovalCheck("Kitty", 650): 73 | call KittyFace("smile") from _call_KittyFace_1160 74 | if "no summon" in K_RecentActions: 75 | ch_k "Well, I was doing something, but I guess if we're going out. . ." 76 | else: 77 | ch_k "Sure, where to?" 78 | elif ApprovalCheck("Kitty", 500): 79 | call KittyFace("perplexed") from _call_KittyFace_1161 80 | if "no summon" in K_RecentActions: 81 | ch_k "Sorry, I told you I was busy." 82 | else: 83 | ch_k "Um[K_like]I guess we could. . ." 84 | elif ApprovalCheck("Kitty", 400): 85 | call KittyFace("angry") from _call_KittyFace_1162 86 | $ K_Eyes = "side" 87 | ch_k "I've[K_like]got better things to do. . ." 88 | return 89 | else: 90 | call KittyFace("angry") from _call_KittyFace_1163 91 | ch_r "[K_Like]no way." 92 | return 93 | $ renpy.pop_call() 94 | 95 | $ Taboo = 40 96 | if K_Schedule[7]: 97 | #if she has a date outfit set 98 | if K_Schedule[7] == 2: 99 | $ K_Outfit = "red outfit" 100 | elif K_Schedule[7] == 3: 101 | $ K_Outfit = "custom1" 102 | elif K_Schedule[7] == 4: 103 | $ K_Outfit = "gym" 104 | elif K_Schedule[7] == 5: 105 | $ K_Outfit = "custom2" 106 | elif K_Schedule[7] == 6: 107 | $ K_Outfit = "custom3" 108 | elif K_Schedule[7] == 11: 109 | $ K_Outfit = "custom4" 110 | elif K_Schedule[7] == 12: 111 | $ K_Outfit = "custom5" 112 | elif K_Schedule[7] == 13: 113 | $ K_Outfit = "custom6" 114 | elif K_Schedule[7] == 14: 115 | $ K_Outfit = "custom7" 116 | else: 117 | $ K_Outfit = "pink outfit" 118 | else: 119 | $ Options = ["red outfit", "black dress"] 120 | $ Options.append("custom1") if K_Custom[0] == 2 else Options 121 | $ Options.append("custom2") if K_Custom2[0] == 2 else Options 122 | $ Options.append("custom3") if K_Custom3[0] == 2 else Options 123 | $ Options.append("custom4") if K_Custom4[0] == 2 else Options 124 | $ Options.append("custom5") if K_Custom5[0] == 2 else Options 125 | $ Options.append("custom6") if K_Custom6[0] == 2 else Options 126 | $ Options.append("custom7") if K_Custom7[0] == 2 else Options 127 | $ renpy.random.shuffle(Options) 128 | $ K_Outfit = Options[0] 129 | $ del Options[:] 130 | call CleartheRoom("Kitty",0,1) from _call_CleartheRoom_53 131 | $ K_Loc = "date" 132 | $ bg_current = "date" 133 | call KittyOutfit(Changed=1) from _call_KittyOutfit_46 134 | call Set_The_Scene from _call_Set_The_Scene_170 135 | menu: 136 | ch_k "So[K_like]where would you like to go?" 137 | "To the movies.": 138 | $ K_RecentActions.append("movie") 139 | $ K_DailyActions.append("movie") 140 | "To a restaurant.": 141 | $ K_RecentActions.append("dinner") 142 | $ K_DailyActions.append("dinner") 143 | "Dinner and a movie.": 144 | $ K_RecentActions.append("movie") 145 | $ K_DailyActions.append("movie") 146 | $ K_RecentActions.append("dinner") 147 | $ K_DailyActions.append("dinner") 148 | "Never Mind.": 149 | call KittyFace("sad") from _call_KittyFace_1164 150 | ch_k "Oh, ok. Maybe later?" 151 | call KittyFace from _call_KittyFace_1165 152 | jump Kitty_Chat 153 | ch_k "K, let's get going then." 154 | show blackscreen onlayer black with dissolve 155 | $ Count = 0 156 | $ Party = [] 157 | 158 | 159 | if "dinner" not in K_RecentActions: 160 | "You head to the local theater and check out the film listings." 161 | jump K_Date_Movies 162 | 163 | label K_Date_Dinner: 164 | "You go to one of the nicer restaurants in town. The food is quality but reasonably affordable." 165 | $ bg_current = "bg restaurant" 166 | $ K_Loc = "bg restaurant" 167 | call Set_The_Scene from _call_Set_The_Scene_171 168 | 169 | menu: 170 | "You order. . ." 171 | "Surf and turf for you and Kitty. ($20 each)": 172 | call KittyFace("sad") from _call_KittyFace_1166 173 | $ K_Brows = "surprised" 174 | ch_k "Um, I[K_like]don't really eat shellfish. . ." 175 | call KittyFace from _call_KittyFace_1167 176 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 80, -5) 177 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 200, -2) 178 | $ Count = 20 179 | $ Count2 -= 11 180 | $ Line = "steak and a juicy lobster" 181 | "Steak for the both of you. ($15 each)": 182 | call KittyFace("smile") from _call_KittyFace_1168 183 | ch_k "Sounds delish." 184 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 80, 5) 185 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 200, 2) 186 | $ Count = 15 187 | $ Line = "medium rare ribeye" 188 | "Chicken for both of you. ($10 each)": 189 | call KittyFace("smile") from _call_KittyFace_1169 190 | ch_k "Chicken's fine." 191 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 50, 1) 192 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 80, 3) 193 | $ Count = 10 194 | $ Line = "pangrilled chicken thighs" 195 | "Just a salad for each of you. ($5 each)": 196 | $ K_Mouth = "sad" 197 | $ K_Eyes = "sexy" 198 | $ K_Brows = "confused" 199 | ch_k "I do enjoy a nice salad." 200 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 60, -3) 201 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 50, 2) 202 | $ Count = 5 203 | $ Line = "fresh garden salad" 204 | "Why don't you choose, Kitty?": 205 | call KittyFace("smile") from _call_KittyFace_1170 206 | ch_k "Well thanks, [K_Petname]. I think we'll have the steak." 207 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 80, 7) 208 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 200, 2) 209 | $ Count = 15 210 | $ Line = "medium rare ribeye" 211 | 212 | "You eat your meals" # add options here 213 | if Line == "steak and a juicy lobster": 214 | $ Line = "You eat your "+ Line + ", Kitty eats the steak but pushes the lobster to the side." 215 | else: 216 | $ Line = "You eat your "+ Line + ", and have a pleasant conversation over the meal." 217 | "[Line]" 218 | call KittyFace("sexy", 1) from _call_KittyFace_1171 219 | 220 | $ del Options[:] 221 | $ Options = ["nothing"] 222 | 223 | if K_Anal and ApprovalCheck("Kitty", 1500) and Count >=15: 224 | $ Options.append("anal") 225 | if K_Sex and ApprovalCheck("Kitty", 1500) and Count >=10: 226 | $ Options.append("sex") 227 | if K_Blow and ApprovalCheck("Kitty", 1300) and Count >=10: 228 | $ Options.append("blow") 229 | if K_Hand and ApprovalCheck("Kitty", 1000) and Count >=10: 230 | $ Options.append("hand") 231 | if K_FondleP and ApprovalCheck("Kitty", 1000) and Count >=10: 232 | $ Options.append("pussy") 233 | if ApprovalCheck("Kitty", 1000) and Count >=10: 234 | $ Options.append("foot") 235 | 236 | $ renpy.random.shuffle(Options) 237 | 238 | if Options[0] == "nothing": 239 | pass 240 | elif Options[0] == "anal": 241 | "Halfway through the meal, Kitty gets a sly look on her face, nods her head suggestively towards the restrooms, and then excuses herself." 242 | "A few seconds later, you follow her and she drags you inside, locking the door behind you. She spends the next several minutes taking it up the ass." 243 | ch_k "That was {i}so{/i} worth it." 244 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 9) 245 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 3) 246 | $ K_SeenPeen += 1 247 | $ K_Anal += 1 248 | $ P_Semen -= 1 249 | $ K_RecentActions.append("anal") 250 | $ K_DailyActions.append("anal") 251 | elif Options[0] == "sex": 252 | "Halfway through the meal, Kitty gets a sly look on her face, nods her head suggestively towards the restrooms, and then excuses herself." 253 | "A few seconds later, you follow her and she drags you inside, locking the door behind you. She spends the next several minutes fucking you raw." 254 | ch_k "That was a workout." 255 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 8) 256 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 2) 257 | $ K_SeenPeen += 1 258 | $ K_Sex += 1 259 | $ P_Semen -= 1 260 | $ K_RecentActions.append("sex") 261 | $ K_DailyActions.append("sex") 262 | elif Options[0] == "blow": 263 | "Halfway through the meal, Kitty gets a sly look on her face, then knocks her fork off the table." 264 | "She ducks under the table after it, and unzips your pants. She then procedes to blow you for several minutes until you cum." 265 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 6) 266 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 2) 267 | $ K_RecentActions.append("blow") 268 | $ K_DailyActions.append("blow") 269 | if K_Swallow: 270 | "Kitty wipes her mouth as she climbs out from under the table." 271 | ch_k "That hit the spot. . ." 272 | $ K_Addict -= 20 273 | $ K_Swallow += 1 274 | $ K_RecentActions.append("swallow") 275 | $ K_DailyActions.append("swallow") 276 | else: 277 | "Kitty grabs the napkin off your lap and uses it to collect the jiz." 278 | ch_k "I feel kinda sorry for the busboys." 279 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 30, 4) 280 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 2) 281 | $ K_SeenPeen += 1 282 | $ K_Blow += 1 283 | $ P_Semen -= 1 284 | elif Options[0] == "hand": 285 | "Halfway through the meal, Kitty gets a sly look on her face, then shifts her chair around next to yours." 286 | "She unzips your pants under the table, and proceeds to caress your cock, stroking it until you cum into the napkin." 287 | ch_k "I feel kinda sorry for the busboys." 288 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 30, 4) 289 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 2) 290 | $ K_Hand += 1 291 | $ P_Semen -= 1 292 | $ K_RecentActions.append("hand") 293 | $ K_DailyActions.append("hand") 294 | elif Options[0] == "pussy": 295 | "Halfway through the meal, Kitty gets a sly look on her face, then shifts her chair around next to yours." 296 | if PantsNum("Kitty") > 5: 297 | "She takes your hand and pulls it over to her crotch, shoving it down her pants. You can feel that she's warm as a furnace." 298 | elif PantsNum("Kitty") == 5: 299 | "She takes your hand and pulls it over to her crotch, shoving it down her shorts. You can feel that she's warm as a furnace." 300 | elif PantsNum("Kitty") == 3: 301 | "She takes your hand and pulls it down to her crotch, shoving it under her skirt. You can feel that she's warm as a furnace." 302 | else: 303 | "She takes your hand and pulls it down to her crotch. You can feel that she's warm as a furnace." 304 | "You stroke her pussy for several minutes, until finally she shudders in orgasm and slowly pulls your hand free with a sly smile." 305 | ch_k "Thanks, [K_Petname], I needed that." 306 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 90, 3) 307 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 30, 5) 308 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 90, 2) 309 | $ K_FondleP += 1 310 | $ K_Org += 1 311 | $ K_RecentActions.append("fondle pussy") 312 | $ K_DailyActions.append("fondle pussy") 313 | elif Options[0] == "foot": 314 | "Halfway through the meal, Kitty gets a sly look on her face, then shifts a bit lower in her seat." 315 | "You suddenly feel her foot in your lap, gently caressing your cock. After several minutes of this, she pulls back." 316 | ch_k "Just a taste of things to come, [K_Petname]." 317 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 3) 318 | 319 | $ del Options[:] 320 | call KittyFace(B = 0) from _call_KittyFace_1172 321 | 322 | $ Count = 20 if Count == 4 else Count #resets price of the meal if you picked surf and turf 323 | 324 | call K_Date_Paying from _call_K_Date_Paying 325 | if Count2 >= 30: 326 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 15) 327 | elif Count2 >= 20: 328 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 10) 329 | elif Count2 >= 10: 330 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 5) 331 | 332 | if "movie" not in K_RecentActions: 333 | "After dinner, you head back to the dorms and escort Kitty to her room." 334 | jump K_Date_End 335 | 336 | #else: 337 | "After dinner, you head to the local theater and check out the film listings." 338 | 339 | label K_Date_Movies: 340 | $ bg_current = "bg movies" 341 | $ K_Loc = "bg movies" 342 | call Set_The_Scene from _call_Set_The_Scene_172 343 | $ Count = 10 344 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 50, 2) 345 | menu: 346 | "What would you like to see?" 347 | "A romantic comedy.": 348 | call KittyFace("smile") from _call_KittyFace_1173 349 | $ K_Eyes = "surprised" 350 | ch_k "Aw, how cuuuute!" 351 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 50, 2) 352 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 95, 3) 353 | $ Count2 += 5 354 | $ K_RecentActions.append("romcom") 355 | "An action movie.": 356 | call KittyFace("sexy") from _call_KittyFace_1174 357 | ch_k "Action movies are kind of fun." 358 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 95, 4) 359 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 2) 360 | $ Count2 += 5 361 | $ K_RecentActions.append("action") 362 | "A horror movie.": 363 | call KittyFace("sad") from _call_KittyFace_1175 364 | $ K_Eyes = "surprised" 365 | ch_k "It won't be {i}too{/i} scary, right?." 366 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 90, -5) 367 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 50, 4) 368 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 80, 2) 369 | $ Count2 += 15 370 | $ K_RecentActions.append("horror") 371 | "An acclaimed drama.": 372 | call KittyFace("bemused") from _call_KittyFace_1176 373 | ch_k "I heard this was a good one!" 374 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 95, 3) 375 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 50, 2) 376 | $ Count2 += 20 377 | $ K_RecentActions.append("drama") 378 | "Let Kitty pick.": 379 | call KittyFace("smile") from _call_KittyFace_1177 380 | ch_k "How sweet, [K_Petname]. Let's see the drama." 381 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 80, 4) 382 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 50, -2) 383 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 2) 384 | $ Count2 += 20 385 | $ K_RecentActions.append("drama") 386 | 387 | call K_Date_Paying from _call_K_Date_Paying_1 388 | if Count2 >= 50: 389 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 25) 390 | elif Count2 >= 40: 391 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 20) 392 | elif Count2 >= 30: 393 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 15) 394 | elif Count2 >= 20: 395 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 10) 396 | elif Count2 >= 10: 397 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 5) 398 | 399 | if "romcom" in K_RecentActions: 400 | $ Count += 2 401 | $ Line = renpy.random.choice(["You watch the movie, which is about an adorkable girl who can't choose between two hunky guys. She picks the other one.", 402 | "You watch the movie, which is about a girl is mercilessly stalked by some weird guy until she eventually decides she loves him. They live hapily ever after.", 403 | "In this movie, the lead goes to all her friend's weddings, but can't get it together herself. She dies alone. Just kidding, she gets married at the end.", 404 | "You watch the movie, in which a bunch of college girls go on a wild adventure and have lots of random sex.", 405 | "This movie is about a girl who's convinced to live in a sex dungeon, and really seems to enjoy it.", 406 | "This movie is about a girl who works for a fashion house and is bullied by her boss, until they become friends."]) 407 | elif "action" in K_RecentActions: 408 | $ Count += 1 409 | $ Line = renpy.random.choice(["You watch the movie, which is about an ex marine fighting aliens.", 410 | "You watch the movie, which is about a girl is mercilessly stalked by some weird guy until she eventually decides she loves him. They live hapily ever after. There are also a lot of explosions.", 411 | "In this movie, giant robots are fighting animal mash-ups, with the fate of the world in the balance.", 412 | "You watch the movie, in which a team of non-mutant superhumans are apparently fighting some sort of silvery robots in Eastern Europe.", 413 | "This movie is about a superhuman powerhouse that nearly wrecks a town, and yet is not arrested for it by the humans. Must be the hammer.", 414 | "This movie is about 90 minutes of constant explosions and lensflares."]) 415 | elif "horror" in K_RecentActions: 416 | $ Count += 4 417 | $ Line = renpy.random.choice(["You watch the movie, which is about an adorkable girl who can't choose between two hunky guys. She picks the other one. The guys are a fishman and a skeleton.", 418 | "You watch the movie, which is about a girl is mercilessly stalked by some weird guy until she eventually gives in and marries him. Her life is an endless hell.", 419 | "In this movie, a group of teens are trapped in a wilderness cabin. They have a lot of random sex as some shadowy monster kills them one by one.", 420 | "In this movie, a group of teens are trapped in an abandoned motel. They have a lot of random sex as some shadowy monster kills them one by one.", 421 | "This movie is about a girl who's convinced to live in a sex dungeon, and she's eventually murdered.", 422 | "In this movie, a group of teens are trapped in a spaceship. They have a lot of random sex as some shadowy monster kills them one by one."]) 423 | elif "drama" in K_RecentActions: 424 | $ Count += 5 425 | $ Line = renpy.random.choice(["You watch the movie, which is about a mature woman who can't choose between two eligible widowers. She picks the other one.", 426 | "You watch the movie, which is a documentary about a girl is mercilessly stalked by some weird guy until she eventually decides she gets a restraining order.", 427 | "In this movie, which is a biopic about a great historical leader.", 428 | "You watch the movie, in which a disabled person struggles with his various disabilities, and eventually overcomes them, and/or dies.", 429 | "This movie is about a lot of yelling and crying as some very serious issues are explored by an ensemble cast."]) 430 | "[Line]" 431 | $ D20 = renpy.random.randint(1, 20) 432 | $ Line = 0 433 | if (D20 + Count) >= 10 and ApprovalCheck("Kitty", 500, Bonus=(10*Count2)): 434 | call KittyFace("kiss", 1) from _call_KittyFace_1178 435 | if "romcom" in K_RecentActions: 436 | "Halfway through the movie, inspired by the action on screen, Kitty turns to you and starts to make out with you." 437 | elif "action" in K_RecentActions: 438 | "Halfway through the movie, adrenaline pumping from the action on screen, Kitty turns to you and starts to make out with you." 439 | elif "horror" in K_RecentActions: 440 | "Halfway through the movie, freaked out by the tension on screen, Kitty huddles in your arms, and then starts to make out with you." 441 | elif "drama" in K_RecentActions: 442 | "Halfway through the movie, Kitty turns to you with a shrug and starts to make out with you." 443 | $ K_RecentActions.append("kissing") 444 | $ K_DailyActions.append("kissing") 445 | 446 | if K_Anal and ApprovalCheck("Kitty", 2000, Bonus=(10*Count2)) and K_Legs != "pants": 447 | call KittyFace("sexy", 1) from _call_KittyFace_1179 448 | if K_Panties: 449 | "As you make out, Kitty reaches down and undoes your fly. She pulls her panties aside and shifts into your lap." 450 | else: 451 | "As you make out, Kitty reaches down and undoes your fly. She hikes her skirt up a bit and shifts into your lap." 452 | "She gingerly squeezes your cock into her ass and begins to grind up and down, quietly enough that the other patrons don't seem to notice." 453 | if K_CreamA: 454 | if K_Panties: 455 | "After several minutes of this, you can't take it anymore and come inside her. She pulls her panties back up and returns to her seat." 456 | else: 457 | "After several minutes of this, you can't take it anymore and come inside her. She wipes off as best she can and shifts back into her seat." 458 | $ K_CreamA += 1 459 | $ K_RecentActions.append("creampie anal") 460 | $ K_DailyActions.append("creampie anal") 461 | else: 462 | "After several minutes of this, she pulls out and shifts back into her seat, finishing you off with her hand." 463 | if K_Swallow: 464 | "You cum into the popcorn bucket, which she then finishes off." 465 | $ K_Addict -= 20 466 | $ K_Swallow += 1 467 | $ K_Spunk.append("mouth") 468 | $ K_RecentActions.append("swallowed") 469 | $ K_DailyActions.append("swallowed") 470 | else: 471 | "You cum into the popcorn bucket, which she phases into the floor." 472 | ch_k "Talk about a \"4D\" movie." 473 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 4) 474 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 90, 3) 475 | $ K_SeenPeen += 1 476 | $ K_Anal += 1 477 | $ P_Semen -= 1 478 | $ K_RecentActions.append("anal") 479 | $ K_DailyActions.append("anal") 480 | elif K_Sex and ApprovalCheck("Kitty", 2000, Bonus=(10*Count2)) and K_Legs != "pants": 481 | call KittyFace("sexy", 1) from _call_KittyFace_1180 482 | if K_Panties: 483 | "As you make out, Kitty reaches down and undoes your fly. She pulls her panties aside and shifts into your lap." 484 | else: 485 | "As you make out, Kitty reaches down and undoes your fly. She hikes her skirt up a bit and shifts into your lap." 486 | "Seconds later, she's slowly rocking on your cock, quietly enough that the other patrons don't seem to notice." 487 | if K_CreamP: 488 | if K_Panties: 489 | "After several minutes of this, you can't take it anymore and come inside her. She pulls her panties up over her dripping slit and returns to her seat." 490 | else: 491 | "After several minutes of this, you can't take it anymore and come inside her. She wipes up as best she can and returns to her seat." 492 | $ K_CreamP += 1 493 | $ K_RecentActions.append("creampie sex") 494 | $ K_DailyActions.append("creampie sex") 495 | else: 496 | "After several minutes of this, she pulls out and shifts back into her seat, finishing you off with her hand." 497 | if K_Swallow: 498 | "You cum into the popcorn bucket, which she then finishes off." 499 | $ K_Spunk.append("mouth") 500 | $ K_Addict -= 20 501 | $ K_Swallow += 1 502 | $ K_RecentActions.append("swallowed") 503 | $ K_DailyActions.append("swallowed") 504 | else: 505 | "You cum into the popcorn bucket, which she phases into the floor." 506 | ch_k "Talk about a \"4D\" movie." 507 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 4) 508 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 90, 3) 509 | $ K_SeenPeen += 1 510 | $ K_Sex += 1 511 | $ P_Semen -= 1 512 | $ K_RecentActions.append("sex") 513 | $ K_DailyActions.append("sex") 514 | elif K_Blow and ApprovalCheck("Kitty", 1300, Bonus=(10*Count2)): 515 | call KittyFace("sucking", 1) from _call_KittyFace_1181 516 | "As you make out, Kitty reaches down and undoes your fly. She then bends down and wraps her lips around it." 517 | "She sucks on it contentedly for several minutes before you finally cum." 518 | $ K_Spunk.append("mouth") 519 | if K_Swallow: 520 | "Kitty wipes her mouth as she shifts back into her seat and washes it down with some soda." 521 | call KittyFace("sexy") from _call_KittyFace_1182 522 | ch_k "Mmmm, that hit the spot. . ." 523 | $ K_Addict -= 20 524 | $ K_Swallow += 1 525 | $ K_RecentActions.append("swallowed") 526 | $ K_DailyActions.append("swallowed") 527 | else: 528 | "You cum into the popcorn bucket, which she phases into the floor." 529 | ch_k "That should give archeolgists a surprise." 530 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 40, 3) 531 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 2) 532 | $ K_SeenPeen += 1 533 | $ K_Blow += 1 534 | $ P_Semen -= 1 535 | $ K_RecentActions.append("blow") 536 | $ K_DailyActions.append("blow") 537 | elif K_Hand and K_FondleP and ApprovalCheck("Kitty", 1000, Bonus=(10*Count2)): 538 | call KittyFace("sexy") from _call_KittyFace_1183 539 | "As you make out, Kitty reaches down and pulls out your cock. She then leans over and begins to stroke it." 540 | call KittyFace("surprised") from _call_KittyFace_1184 541 | if K_Legs: 542 | "You also lean over, reach into her [K_Legs], and begin to stroke her pussy." 543 | elif K_Hose: 544 | "You also lean in, reach under her [K_Hose], and begin to stroke her pussy." 545 | elif K_Panties: 546 | "You also lean in, reach under her panties, and begin to stroke her pussy." 547 | else: 548 | "You also lean over, notice she isn't wearing anything down there, and begin to stroke her pussy." 549 | call KittyFace("sexy", 1) from _call_KittyFace_1185 550 | $ K_Eyes = "closed" 551 | "After several minutes of this, she shudders in orgasm, which sets you off as well. She catches the jiz in the popcorn bucket." 552 | $ K_Eyes = "sexy" 553 | if K_Swallow: 554 | "She finishes off the remaining popcorn with a grin." 555 | $ K_Spunk.append("mouth") 556 | ch_k "Best topping they got here, [K_Petname]." 557 | $ K_Addict -= 20 558 | $ K_Swallow += 1 559 | $ K_RecentActions.append("swallowed") 560 | $ K_DailyActions.append("swallowed") 561 | else: 562 | "You cum into the popcorn bucket, which she phases into the floor." 563 | ch_k "That should give archeolgists a surprise." 564 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 90, 2) 565 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 40, 3) 566 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 2) 567 | $ K_FondleP += 1 568 | $ K_Org += 1 569 | $ K_Hand += 1 570 | $ P_Semen -= 1 571 | $ K_RecentActions.append("hand") 572 | $ K_DailyActions.append("hand") 573 | elif K_Hand and ApprovalCheck("Kitty", 1000, Bonus=(10*Count2)): 574 | call KittyFace("sexy") from _call_KittyFace_1186 575 | "As you make out, Kitty reaches down and pulls out your cock. She then leans over and begins to stroke it." 576 | "After several minutes of this, you begin to feel it rising up, and she catches the jiz in the popcorn bucket." 577 | if K_Swallow: 578 | "She finishes off the remaining popcorn with a grin." 579 | $ K_Spunk.append("mouth") 580 | ch_k "Best topping they got here, [K_Petname]." 581 | $ K_Addict -= 20 582 | $ K_Swallow += 1 583 | $ K_RecentActions.append("swallowed") 584 | $ K_DailyActions.append("swallowed") 585 | else: 586 | "You cum into the popcorn bucket, which she phases into the floor." 587 | ch_k "That should give archeolgists a surprise." 588 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 40, 2) 589 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 2) 590 | $ K_SeenPeen += 1 591 | $ K_Hand += 1 592 | $ P_Semen -= 1 593 | $ K_RecentActions.append("hand") 594 | $ K_DailyActions.append("hand") 595 | elif K_FondleP and ApprovalCheck("Kitty", 900, Bonus=(10*Count2)): 596 | call KittyFace("sexy") from _call_KittyFace_1187 597 | if K_Legs: 598 | "You also lean over, reach into her [K_Legs], and begin to stroke her pussy." 599 | elif K_Hose: 600 | "As you make out, Kitty grabs your hand and shoves it down her [K_Hose]." 601 | elif K_Panties: 602 | "As you make out, Kitty grabs your hand and shoves it down her panties." 603 | else: 604 | "As you make out, Kitty grabs your hand and shoves it between her legs." 605 | $ K_Eyes = "closed" 606 | "After several minutes of this, she shudders in orgasm and leans back with a contented sigh." 607 | $ K_Eyes = "sexy" 608 | ch_k "Hmm, that felt great, [K_Petname]." 609 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 90, 2) 610 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 40, 2) 611 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 80, 2) 612 | $ K_FondleP += 1 613 | $ K_Org += 1 614 | $ K_RecentActions.append("fondle pussy") 615 | $ K_DailyActions.append("fondle pussy") 616 | elif ApprovalCheck("Kitty", 1200, Bonus=(5*Count2)) and K_Panties: 617 | call KittyFace("sexy") from _call_KittyFace_1188 618 | "After making out for a few minutes, Kitty gets a sly look on her face and reaches into her pocket." 619 | "After a a second, she hands you a cloth lump, apparently her panties." 620 | $ K_DailyActions.append("pantyless") 621 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 60, 2) 622 | $ K_Panties = 0 623 | ch_k "[K_Like]hold on to those for me, uh?" 624 | elif ApprovalCheck("Kitty", 1200, Bonus=(5*Count2)): 625 | call KittyFace("sexy") from _call_KittyFace_1189 626 | "After making out for a few minutes, Kitty gets a sly look on her face, then shifts a bit lower in her seat." 627 | if K_Legs == "pants": 628 | "Looking down, you notice she's pulled down her pants enough that you can see her bare pussy, lit by the movie screen." 629 | elif K_Legs == "shorts": 630 | "Looking down, you notice she's pulled down her shorts enough that you can see her bare pussy, lit by the movie screen." 631 | else: 632 | "Looking down, you notice she's hiked up her skirt enough that you can see her bare pussy, lit by the movie screen." 633 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 60, 2) 634 | call Kitty_First_Bottomless(1) from _call_Kitty_First_Bottomless_32 635 | ch_k "Just giving you a little taste. . ." 636 | #End sex options 637 | 638 | call KittyOutfit from _call_KittyOutfit_47 639 | "After the movie, you head back to the dorms and escort Kitty to her room." 640 | 641 | label K_Date_End: 642 | $ Taboo = 0 643 | $ bg_current = "bg kitty" 644 | $ K_Loc = "bg kitty" 645 | call Set_The_Scene from _call_Set_The_Scene_173 646 | 647 | if "romcom" in K_RecentActions: 648 | $ Count2 += 5 649 | elif "horror" in K_RecentActions: 650 | $ Count2 -= 10 651 | elif "drama" in K_RecentActions: 652 | $ Count2 -= 15 653 | call Wait(Outfit = 0) from _call_Wait_38 654 | if Count2 < 0: 655 | call KittyFace("angry", 0) from _call_KittyFace_1190 656 | $ K_Eyes = "side" 657 | ch_k "You[K_like]really need to get your shit together, [Playername]." 658 | "You return to your room." 659 | $ bg_current = "bg player" 660 | $ Count2 = 0 661 | jump Player_Room 662 | else: 663 | $ K_DailyActions.append("dated") 664 | if Count2 > 20: 665 | call KittyFace("sexy", 1) from _call_KittyFace_1191 666 | ch_k "That was fun, [K_Petname]. Do you have to go . . ." 667 | else: 668 | call KittyFace("smile", 1) from _call_KittyFace_1192 669 | ch_k "Well that was fun, [K_Petname]. Text me later." 670 | 671 | $ K_Date += 1 672 | menu: 673 | extend "" 674 | "Could I get a good night kiss?": 675 | if ApprovalCheck("Kitty", 600, Bonus=(10*Count2)): 676 | $ K_Mouth = "smile" 677 | ch_k "Heh, I guess so. . ." 678 | $ MultiAction = 0 679 | call K_KissPrep from _call_K_KissPrep_1 680 | $ MultiAction = 1 681 | if ApprovalCheck("Kitty", 900, Bonus=(10*Count2)): 682 | call KittyFace("sexy", 1) from _call_KittyFace_1193 683 | ch_k "Hmmm . . ." 684 | ch_k "Maybe. . . come inside for a minute?" 685 | else: 686 | call KittyFace("smile", 1) from _call_KittyFace_1194 687 | ch_k "That was nice, text you later!" 688 | "You return to your room." 689 | $ bg_current = "bg player" 690 | $ Count2 = 0 691 | jump Player_Room 692 | "Could I come in for a bit?": 693 | if ApprovalCheck("Kitty", 800, Bonus=(10*Count2)): 694 | call KittyFace("sexy", 1) from _call_KittyFace_1195 695 | ch_k "Heh, I guess so. . ." 696 | "Ok, good night then.": 697 | call KittyFace("confused", 1) from _call_KittyFace_1196 698 | "Kitty looks a little confused, but you head back to your room." 699 | $ bg_current = "bg player" 700 | $ Count2 = 0 701 | jump Player_Room 702 | 703 | 704 | # Kitty lets you into her room: 705 | $ bg_current = "bg kitty" 706 | call Set_The_Scene from _call_Set_The_Scene_174 707 | call KittyFace("sexy", 1) from _call_KittyFace_1197 708 | ch_k "So[K_like]here we are. . . " 709 | $ Tempmod = Count2 710 | call Kitty_SexMenu from _call_Kitty_SexMenu_4 # You have what sex you can get away with 711 | 712 | if "angry" in K_RecentActions: 713 | "Kitty shoves you out into the hall. You head back to your room." 714 | $ bg_current = "bg player" 715 | $ Count2 = 0 716 | jump Player_Room 717 | 718 | if True: #fix remove after sloopover added 719 | "Afterwards, you head back to your room for the night." 720 | $ bg_current = "bg player" 721 | $ Count2 = 0 722 | jump Player_Room 723 | 724 | call Kitty_Sleepover from _call_Kitty_Sleepover_2 725 | jump Kitty_Room #should never be reached 726 | 727 | label Kitty_Date_Over: 728 | $ K_RecentActions.append("angry") 729 | call KittyFace("angry") from _call_KittyFace_1198 730 | ch_k "You know what?" 731 | ch_k "[Playername]'s a Jerk!" 732 | "Kitty storms out, and you head back to the dorms alone." 733 | $ bg_current = "bg player" 734 | $ Count = 0 735 | $ Count2 = 0 736 | jump Player_Room 737 | 738 | label K_Date_Paying: 739 | menu: 740 | "Who's paying?" 741 | "I've got it." if P_Cash >= (2*Count): 742 | call KittyFace("sexy", 1) from _call_KittyFace_1199 743 | ch_k "[K_Like]that's really nice of you." 744 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 50, 2) 745 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 80, 2) 746 | if Count >= 15: 747 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 200, 2) 748 | $ P_Cash -= (2*Count) 749 | $ Count2 += Count 750 | if "deadbeat" in K_History: 751 | $ K_History.remove("deadbeat") 752 | 753 | "Kitty, you pay.": 754 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 90, -7) 755 | if Count >= 15: 756 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 200, -6) 757 | if ApprovalCheck("Kitty", 800): 758 | call KittyFace("sad") from _call_KittyFace_1200 759 | ch_k "Huh? I mean I guess I can. . ." 760 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 30, 3) 761 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 80, 2) 762 | else: 763 | "As if! You're paying for yourself, [K_Petname]." 764 | call KittyFace("angry") from _call_KittyFace_1201 765 | if P_Cash >= Count: 766 | "You split the check." 767 | $ P_Cash -= Count 768 | else: 769 | ch_p "I really can't cover it. Here's all I've got." 770 | $ Count2 += P_Cash 771 | $ P_Cash = 0 772 | $ Count2 -= Count 773 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 80, -3) 774 | call KittyFace("sad") from _call_KittyFace_1202 775 | ch_k "Geez, I guess I can cover it." 776 | if "deadbeat" not in K_History: 777 | $ K_History.append("deadbeat") 778 | else: 779 | jump Kitty_Date_Over 780 | 781 | 782 | "Let's split it." if P_Cash >= Count: 783 | if Count >= 15: 784 | $ Count2 -= 10 785 | if ApprovalCheck("Kitty", 600): 786 | call KittyFace("sad") from _call_KittyFace_1203 787 | $ K_Mouth = "normal" 788 | ch_k "Yeah[K_like]ok." 789 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 50, 2) 790 | else: 791 | call KittyFace("angry") from _call_KittyFace_1204 792 | $ K_Eyes = "side" 793 | ch_k "Jerk." 794 | if Count >= 15: 795 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 200, -2) 796 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 200, -3) 797 | $ P_Cash -= Count 798 | 799 | "I really can't afford it. . ." if P_Cash < Count: 800 | $ Count2 -= Count 801 | if Count >= 15: 802 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 200, -4) 803 | $ K_Obed = Statupdate("Kitty", "Obed", K_Obed, 50, -2) 804 | call KittyFace("sad") from _call_KittyFace_1205 805 | if ApprovalCheck("Kitty", 800): 806 | ch_k "That's so[K_like]sad." 807 | else: 808 | $ K_Brows = "angry" 809 | ch_k "I wouldn't have gone out with you if I'd known you were such a bum." 810 | $ K_Love = Statupdate("Kitty", "Love", K_Love, 200, 3) 811 | if "deadbeat" not in K_History: 812 | $ K_History.append("deadbeat") 813 | else: 814 | jump Kitty_Date_Over 815 | $ Count = 0 816 | return 817 | 818 | #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 819 | -------------------------------------------------------------------------------- /Laura/Mod_Laura_Scenes.rpy: -------------------------------------------------------------------------------- 1 | 2 | # start LauraMeet////////////////////////////////////////////////////////// 3 | 4 | 5 | label LauraMeet(Topics=[],Loop=1): 6 | $ newgirl["Laura"].Pubes = 1 7 | 8 | $ newgirl["Laura"].GirlName = "???" 9 | 10 | $ bg_current = "bg dangerroom" 11 | call CleartheRoom("All",0,1) 12 | $ newgirl["Laura"].Loc = "bg dangerroom" 13 | $ newgirl["Laura"].Love = 400 14 | $ newgirl["Laura"].Obed = 0 15 | $ newgirl["Laura"].Inbt = 200 16 | call Shift_Focus("Laura") 17 | $ newgirl["Laura"].SpriteLoc = StageCenter 18 | call Set_The_Scene(0) 19 | $ newgirl["Laura"].Petname = Playername 20 | 21 | "As you approach the Danger Room, you hear a ferocious clanging of metal." 22 | "Just as you pass through the door, a robotic arm smashes into your face." 23 | ". . ." 24 | call LauraFace("normal", 0) 25 | show Laura_Sprite at SpriteLoc(newgirl["Laura"].SpriteLoc) 26 | "When you come to, a girl pulls you up by your arm." 27 | call LauraFace("surprised", 0, Eyes="squint",Brows="sad") 28 | ch_u "Oh, good, you don't look too damaged." 29 | call LauraFace("smile", 0, Brows="sad") 30 | ch_u "Sorry about that, I was getting a work-out in, and must have forgotten to lock the door." 31 | call LauraFace("smile", 0) 32 | while Loop: 33 | menu: 34 | extend "" 35 | "Who are you?" if newgirl["Laura"].GirlName == "???": 36 | call LauraFace("normal", 0) 37 | ch_l "I go by \"X-23\" in the field." 38 | $ newgirl["Laura"].GirlName = "X-23" 39 | "X-23? Is that your real name?" if newgirl["Laura"].GirlName == "X-23" and "X23" not in Topics: 40 | call LauraFace("confused", 0) 41 | ch_l "It's the one I was born with." 42 | $ Topics.append("X23") 43 | "Is there anything else I could call you?" if "X23" in Topics and "Laura" not in Topics: 44 | call Statup("Laura", "Love", 70, 5) # Love 45 | call LauraFace("normal", 0) 46 | ch_l "I also go by Laura. Laura Kinney." 47 | call LauraFace("confused", 0, Mouth="normal") 48 | $ newgirl["Laura"].GirlName = "Laura" 49 | $ Topics.append("Laura") 50 | menu: 51 | extend "" 52 | "Nice to meet you Laura.": 53 | call Statup("Laura", "Love", 70, 5) # Love 54 | call LauraFace("normal", 0) 55 | ch_l "Yeah, ok." 56 | "Hello Laura Laura Kinney.": 57 | call LauraFace("confused", 0,Mouth="sucking") 58 | ch_l "It's just-" 59 | call LauraFace("smile", 0,Brows="surprised") 60 | call Statup("Laura", "Love", 70, 3) # Love 61 | call Statup("Laura", "Inbt", 70, 2) # Inbt 62 | ch_l "Oh, get it." 63 | "Ok, how did you get that name?": 64 | call LauraFace("angry", 1,Eyes="side") 65 | call Statup("Laura", "Love", 70, -2) # Love 66 | call Statup("Laura", "Obed", 70, 2) # Obed 67 | ch_l "You're getting too personal." 68 | "I think I'd prefer calling you X-23." if newgirl["Laura"].GirlName == "Laura" and "Laura" in Topics: 69 | call Statup("Laura", "Love", 70, -2) # Love 70 | call Statup("Laura", "Obed", 70, 5) # Obed 71 | call LauraFace("sadside", 0,Brows="normal") 72 | ch_l "Suit yourself." 73 | $ newgirl["Laura"].GirlName = "X-23" 74 | "My name is [Playername]" if newgirl["Laura"].GirlName != "???" and "player" not in Topics: 75 | call LauraFace("normal", 0) 76 | ch_l "Ok." 77 | $ Topics.append("player") 78 | menu: 79 | extend "" 80 | ". . .and it's nice to meet you?": 81 | call Statup("Laura", "Love", 70, 1) # Love 82 | call LauraFace("confused", 0,Mouth="normal") 83 | ch_l "Yeah, you too." 84 | "So. . .[[moving on]": 85 | call Statup("Laura", "Love", 70, 3) # Love 86 | call Statup("Laura", "Obed", 70, 1) # Obed 87 | call Statup("Laura", "Inbt", 70, 1) # Inbt 88 | 89 | "What are you doing here?" if "Training" not in Topics: 90 | call Statup("Laura", "Obed", 70, -2) # Obed 91 | call LauraFace("confused", 0) 92 | ch_l "Training. That's the point of this place." 93 | $ Topics.append("Training") 94 | menu: 95 | extend "" 96 | "I meant in the school, I haven't seen you around before.": 97 | call Statup("Laura", "Obed", 70, 2) # Obed 98 | "Ok, that's fair.": 99 | call LauraFace("normal", 0) 100 | ch_p "But are you new to this school?" 101 | call Statup("Laura", "Love", 70, 3) # Love 102 | call Statup("Laura", "Obed", 70, 4) # Obed 103 | ch_l "I've been here since before your time." 104 | ch_l "Mostly out in the field though." 105 | "So you don't stay here long?" if "Training" in Topics and "Stay" not in Topics: 106 | call Statup("Laura", "Love", 70, 2) # Love 107 | call LauraFace("normal", 0,Eyes="side") 108 | ch_l "I'll be heading out again soon." 109 | call LauraFace("normal", 0) 110 | ch_l "But I am planning to stick around after I get back from this mission." 111 | $ Topics.append("Stay") 112 | 113 | 114 | "What the hell was that?" if len(Topics) <= 1 and "WTF" not in Topics: 115 | call Statup("Laura", "Love", 70, -2) # Love 116 | call Statup("Laura", "Obed", 70, 8) # Obed 117 | call LauraFace("confused", 0) 118 | ch_l "It was a robot arm." 119 | call LauraFace("sad", 1,Eyes="leftside") 120 | ch_l "Like I said, sorry." 121 | call Statup("Laura", "Obed", 70, -3) # Obed 122 | call Statup("Laura", "Inbt", 70, 3) # Inbt 123 | call LauraFace("smile", 0,Brows="confused") 124 | ch_l "You probably should have ducked though." 125 | $ Topics.append("WTF") 126 | 127 | "So what's your mutant power?" if newgirl["Laura"].GirlName != "???" and "claws" not in Topics: 128 | call Statup("Laura", "Love", 70, 1) # Love 129 | call Statup("Laura", "Obed", 70, 1) # Obed 130 | call LauraFace("normal", 0) 131 | ch_l "I can heal fast." 132 | $ newgirl["Laura"].Girl_Arms = 2 133 | ch_l "Also I have claws." 134 | $ newgirl["Laura"].Claws = 1 135 | call LauraFace("smile", 0,Brows="confused") 136 | "snikt" 137 | $ Topics.append("claws") 138 | menu: 139 | "Those claws look pretty sharp.": 140 | call Statup("Laura", "Inbt", 70, 3) # Inbt 141 | ch_l "Yeah, indestructible too." 142 | "Cool.": 143 | call Statup("Laura", "Love", 70, 3) # Love 144 | call Statup("Laura", "Obed", 70, 2) # Obed 145 | call Statup("Laura", "Inbt", 70, 1) # Inbt 146 | call LauraFace("smile", 0,Brows="surprised") 147 | ch_l "Yeah, indestructible too." 148 | "Ouch.": 149 | $ newgirl["Laura"].Claws = 0 150 | call LauraFace("confused", 0) 151 | call Statup("Laura", "Love", 70, -2) # Love 152 | call Statup("Laura", "Obed", 70, -5) # Obed 153 | ch_l "Don't worry, I won't stab you." 154 | call LauraFace("confused", 0,Mouth="normal") 155 | call Statup("Laura", "Inbt", 70, 7) # Inbt 156 | ch_l "Probably." 157 | $ newgirl["Laura"].Claws = 0 158 | $ newgirl["Laura"].Girl_Arms = 1 159 | 160 | "Don't you want to know my power?" if "claws" in Topics and "powers" not in Topics: 161 | if newgirl["Laura"].Love >= 405: 162 | call LauraFace("smile", 0,Brows="confused") 163 | ch_l "Yeah, I guess." 164 | else: 165 | call LauraFace("normal", 0) 166 | ch_l "Not really." 167 | call Statup("Laura", "Inbt", 70, 3) # Inbt 168 | $ Topics.append("powers") 169 | ch_p "I'm immune to mutant powers and can shut them off." 170 | call LauraFace("smile", 0,Brows="confused") 171 | call Statup("Laura", "Love", 70, 3) # Love 172 | call Statup("Laura", "Obed", 70, 3) # Obed 173 | ch_l "Huh. Interesting. So you can stop me from healing?" 174 | ch_p "Yeah. If I touch you, temporarily." 175 | call Statup("Laura", "Obed", 70, 2) # Obed 176 | call Statup("Laura", "Lust", 70, 3) # Lust 177 | ch_l "Give it a try." 178 | "She holds out her arm, and you grab it." 179 | call Statup("Laura", "Love", 70, 1) # Love 180 | call Statup("Laura", "Obed", 70, 2) # Obed 181 | call Statup("Laura", "Lust", 70, 5) # Lust 182 | call LauraFace("confused", 0) 183 | ch_l "Huh." 184 | call LauraFace("sexy", 1,Eyes="closed") 185 | "You can feel her shudder a little." 186 | call LauraFace("sexy", 1) 187 | call Statup("Laura", "Love", 70, 1) # Love 188 | call Statup("Laura", "Obed", 70, 3) # Obed 189 | call Statup("Laura", "Lust", 70, 5) # Lust 190 | ch_l "That feels weird." 191 | call LauraFace("sexy", 1,Eyes="leftside") 192 | call Statup("Laura", "Obed", 70, 1) # Obed 193 | call Statup("Laura", "Lust", 70, 3) # Lust 194 | ch_l "-a little more \"alive\" than usual." 195 | call Statup("Laura", "Inbt", 70, 5) # Inbt 196 | call Statup("Laura", "Lust", 70, 5) # Lust 197 | call LauraFace("sexy", 1,Brows="confused") 198 | ch_l "Almost. . . dangerous." 199 | 200 | "Never mind that. . . [[moving on]" if newgirl["Laura"].GirlName != "???": 201 | $ Loop = 0 202 | 203 | if len(Topics) >= 3 and newgirl["Laura"].GirlName == "???": 204 | call Statup("Laura", "Love", 70, -2) # Love 205 | call Statup("Laura", "Obed", 70, 5) # Obed 206 | call Statup("Laura", "Inbt", 70, 5) # Inbt 207 | ch_l "Oh, by the way, you can call me \"X-23\"." 208 | $ newgirl["Laura"].GirlName = "X-23" 209 | if len(Topics) >= 8: 210 | $ Loop = 0 211 | 212 | 213 | #close while loop 214 | ch_l "Ok, I've got a plane to catch." 215 | if "player" in Topics: 216 | call Statup("Laura", "Love", 70, 2) # Love 217 | call Statup("Laura", "Lust", 70, 1) # Lust 218 | call LauraFace("smile",0) 219 | ch_l "Maybe I'll see you when I get back, [Playername]." 220 | else: 221 | call LauraFace("normal", 0) 222 | ch_l "Maybe I'll see you when I get back, stranger." 223 | if "powers" in Topics: 224 | call Statup("Laura", "Obed", 70, 2) # Obed 225 | call Statup("Laura", "Inbt", 70, 2) # Inbt 226 | call Statup("Laura", "Lust", 70, 3) # Lust 227 | call LauraFace("smile", 1, Brows="confused") 228 | ch_l "We should. . . spar." 229 | 230 | $ newgirl["Laura"].Loc = "bg laura" 231 | call Set_The_Scene 232 | 233 | "She dashes out of the room, headed for the hanger." 234 | 235 | $ newgirl["Laura"].History.append("met") 236 | $ bg_current = "bg dangerroom" 237 | $ Round -= 10 238 | call Shift_Focus("Rogue") 239 | return 240 | 241 | # end LauraMeet////////////////////////////////////////////////////////// 242 | 243 | 244 | label Laura_Key: 245 | call Set_The_Scene 246 | call LauraFace("bemused") 247 | ch_l "Hey, so... this isn't something I usually do but..." 248 | ch_l "Look, you've been sleeping over a lot and I was thinking..." 249 | ch_l "Just take it already." 250 | "She takes your hand and practically forces a key onto your palm before making your fingers close on it." 251 | $ Keys.append("Laura") 252 | $ newgirl["Laura"].Event[0] = 1 253 | ch_p "Thanks." 254 | return 255 | 256 | 257 | 258 | # Event Laura_Caught_Masturbating ///////////////////////////////////////////////////// 259 | 260 | #Not updated 261 | 262 | label Laura_Caught_Masturbating: 263 | #This label is called from a Location 264 | call Shift_Focus("Laura") 265 | "You hear some odd noises coming from Laura's room as you enter." #fix this scene, pants option 266 | show blackscreen onlayer black 267 | call LauraOutfit(Changed=1) 268 | $ newgirl["Laura"].Upskirt = 1 269 | $ newgirl["Laura"].PantiesDown = 1 270 | $ newgirl["Laura"].Loc = bg_current 271 | call Set_The_Scene(0) 272 | call Display_Laura(0) 273 | call LauraFace("sexy") 274 | $ newgirl["Laura"].Eyes = "closed" 275 | $ newgirl["Laura"].Girl_Arms = 2 276 | $ Count = 0 277 | hide blackscreen onlayer black 278 | $ Trigger = "masturbation" 279 | $ newgirl["Laura"].DailyActions.append("unseen") 280 | $ newgirl["Laura"].RecentActions.append("unseen") 281 | call Laura_SexAct("masturbate") 282 | if "angry" in newgirl["Laura"].RecentActions: 283 | return 284 | 285 | #After caught masturbating. . . 286 | $ newgirl["Laura"].Eyes = "sexy" 287 | $ newgirl["Laura"].Brows = "confused" 288 | $ newgirl["Laura"].Mouth = "smile" 289 | if newgirl["Laura"].Mast == 1: 290 | $ newgirl["Laura"].Mouth = "kiss" 291 | ch_l "So what are you doing here? . ." 292 | $ newgirl["Laura"].Eyes = "side" 293 | $ newgirl["Laura"].Mouth = "lipbite" 294 | ch_l "not that I mind the company. . ." 295 | $ newgirl["Laura"].Eyes = "sexy" 296 | $ newgirl["Laura"].Brows = "normal" 297 | $ newgirl["Laura"].Mouth = "smile" 298 | ch_l "But you know, give me a heads up first." 299 | else: 300 | ch_l "You're around a lot. . ." 301 | $ newgirl["Laura"].Girl_Arms = 1 302 | call LauraOutfit 303 | return 304 | 305 | # end Laura_Caught_Masturbating///////////////////////////////////////////////////// 306 | 307 | 308 | # Event Laura_Caught ///////////////////////////////////////////////////// 309 | 310 | #Not updated 311 | 312 | label Laura_Caught(TotalCaught=0): 313 | $ TotalCaught = R_Caught + K_Caught + E_Caught + newgirl["Laura"].Caught 314 | call Shift_Focus("Laura") 315 | call Checkout 316 | ch_l "!!!" 317 | $ Line = Trigger 318 | $ Trigger = 0 319 | $ Trigger2 = 0 320 | $ Trigger3 = 0 321 | $ Trigger4 = 0 322 | $ Trigger5 = 0 323 | call LauraOutfit 324 | if R_Loc == bg_current: 325 | $ R_Loc = "bg study" 326 | if K_Loc == bg_current: 327 | $ K_Loc = "bg study" 328 | if E_Loc == bg_current: 329 | $ E_Loc = "bg study" 330 | $ bg_current = "bg study" 331 | $ newgirl["Laura"].Loc = "bg study" 332 | call Set_The_Scene(0) 333 | show Professor at SpriteLoc(StageLeft) 334 | show Laura_Sprite at SpriteLoc(StageRight) with ease 335 | if R_Loc == bg_current: 336 | show Rogue at SpriteLoc(StageFarRight) with ease 337 | if K_Loc == bg_current: 338 | show Kitty_Sprite at SpriteLoc(StageFarRight) with ease 339 | if E_Loc == bg_current: 340 | show Emma_Sprite at SpriteLoc(StageFarRight) with ease 341 | call XavierFace("shocked") 342 | call LauraFace("sad") 343 | ch_x "I'm very disappointed in your behavior, the both of you." 344 | 345 | if Line == "fondle thighs" or Line == "fondle breasts" or Line == "fondle pussy" or Line == "hotdog" or Line == "hand": 346 | ch_x "The two of you, feeling each other up like animals!" 347 | elif Line == "dildo pussy" or Line == "dildo anal": 348 | ch_x "Using those. . . devices on each other, unsanitary!" 349 | elif Line == "lick pussy": 350 | ch_x "Engaging in. . . cunnilingus. . . dripping everywhere. . ." 351 | elif Line == "blow": 352 | ch_x "Right there in public with his {i}penis{/i} in your mouth. . ." 353 | else: 354 | ch_x "Having sexual relations in such a public location, it shows very poor character of you!" 355 | 356 | if newgirl["Laura"].Shame >= 40: 357 | ch_x "Laura, my dear, you're practically naked! At least throw a towel on!" 358 | "He throws Laura the towel." 359 | show blackscreen onlayer black 360 | $ newgirl["Laura"].Over = "towel" 361 | hide blackscreen onlayer black 362 | elif newgirl["Laura"].Shame >= 20: 363 | ch_x "Laura, my dear, that attire is positively scandalous." 364 | 365 | if newgirl["Laura"].Caught: 366 | "And this isn't even the first time this has happened!" 367 | 368 | if R_Loc == bg_current: #fix, might not currently work? 369 | call RogueFace("surprised",2) 370 | if not R_Rules: 371 | ch_x "And. . .hm, I could have sworn there was someone else. . ." 372 | else: 373 | ch_x "And Rogue, you were just watching this occur!" 374 | call RogueFace("bemused",1, Eyes="side") 375 | elif K_Loc == bg_current: #fix, might not currently work? 376 | call KittyFace("surprised",2) 377 | if not K_Rules: 378 | ch_x "And. . .hm, I could have sworn there was someone else. . ." 379 | else: 380 | ch_x "And Kitty, you were just watching this occur!" 381 | call KittyFace("bemused",1,Eyes="side") 382 | elif E_Loc == bg_current: #fix, might not currently work? 383 | call EmmaFace("surprised",2) 384 | if not E_Rules: 385 | ch_x "And. . .hm, I could have sworn there was someone else. . ." 386 | else: 387 | ch_x "And Emma, you were just watching this occur!" 388 | ch_x "Unacceptable. . ." 389 | call EmmaFace("bemused",1, Eyes="side") 390 | 391 | if "rules" in Rules: #if the rules had been removed in a previous game 392 | call XavierFace("hypno") 393 | ch_x ". . ." 394 | ch_x "Hmm, I seem to be having a bit of deja vu here. . ." 395 | ch_x "I could swear that we've had a conversation like this before, but I cannot recall when. . ." 396 | call XavierFace("angry") 397 | ch_x "Regardless, this is a serious issue." 398 | $ Rules.remove("rules") 399 | 400 | $ Count = newgirl["Laura"].Caught 401 | menu: 402 | "Well what have you to say for yourselves?" 403 | "Sorry sir, won't do it again.": 404 | if newgirl["Laura"].Caught < 5: 405 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 30, -20) 406 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 50, -10) 407 | call XavierFace("happy") 408 | if newgirl["Laura"].Caught: 409 | ch_x "But you know you've done this before. . . at least [newgirl[Laura].Caught] times. . ." 410 | elif TotalCaught: 411 | ch_x "Not with this young lady, perhaps, but you know you've done this before. . ." 412 | ch_x "at least [TotalCaught] times. . ." 413 | else: 414 | ch_x "Very well, just don't let it happen again. " 415 | $ Count += 5 416 | if PunishmentX: 417 | ch_x "I'm extending your punishment by [Count] days." 418 | else: 419 | ch_x "I'm halving your daily stipend for [Count] days." 420 | ch_x "Now return to your rooms and reflect on what you've done." 421 | 422 | "Just having a little fun, right [newgirl[Laura].Pet]?": 423 | call Laura_Namecheck 424 | call LauraFace("bemused") 425 | $ newgirl["Laura"].Lust = Statupdate("Laura", "Lust", newgirl["Laura"].Lust, 90, 5) 426 | if newgirl["Laura"].Caught < 5: 427 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 90, 10) 428 | $ newgirl["Laura"].Love = Statupdate("Laura", "Love", newgirl["Laura"].Love, 90, 10) 429 | call XavierFace("angry") 430 | $ Count += 10 431 | ch_x "If that's your attitude, harsher methods might be necessary." 432 | if PunishmentX: 433 | ch_x "I'm extending your punishment by [Count] days." 434 | else: 435 | ch_x "I'm halving your daily stipend for [Count] days." 436 | if newgirl["Laura"].Caught < 5: 437 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 50, 20) 438 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 90, 20) 439 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 30, -20) 440 | ch_x "I've had enough of you, begone." 441 | 442 | "Just this. . . Plan Chi, Laura!" if P_Lvl >= 5: 443 | if newgirl["Laura"].Lvl >= 5 and ApprovalCheck("Laura", 1500, TabM=1, Loc="No") and ApprovalCheck("Laura", 750, "I"): 444 | jump Plan_Chi 445 | elif ApprovalCheck("Laura", 1000, TabM=1, Loc="No"): 446 | call LauraFace("angry",Eyes="side") 447 | $ newgirl["Laura"].Brows = "angry" 448 | ch_l "I told you that was a stupid idea. . ." 449 | menu: 450 | "Dammit Laura. . .": 451 | call LauraFace("angry") 452 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 50, 5) 453 | $ newgirl["Laura"].Love = Statupdate("Laura", "Love", newgirl["Laura"].Love, 90, -5) 454 | "Yeah, I guess you're right. . .": 455 | call LauraFace("bemused") 456 | $ newgirl["Laura"].Love = Statupdate("Laura", "Love", newgirl["Laura"].Love, 90, 5) 457 | else: 458 | call LauraFace("confused") 459 | ch_l "Yeah!" 460 | ch_l ". . ." 461 | ch_l "Wait, plan \"key,\" what??" 462 | ch_p "Plan {i}Chi!{/i} . . you know. . ." 463 | ch_l "Um. No?" 464 | ch_p "oh, yeah, I guess I haven't mentioned that. . ." 465 | call LauraFace("bemused") 466 | call XavierFace("angry") 467 | $ Count += 10 468 | ch_x "I have no idea what that was about, but it sounds like you haven't learned." 469 | if PunishmentX: 470 | ch_x "I'm extending your punishment by [Count] days." 471 | else: 472 | ch_x "I'm halving your daily stipend for [Count] days." 473 | if newgirl["Laura"].Caught < 5: 474 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 50, 10) 475 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 90, 10) 476 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 30, -10) 477 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 50, -5) 478 | ch_x "I've had enough of you, begone." 479 | 480 | 481 | "You can suck it, old man.": 482 | call LauraFace("surprised") 483 | $ newgirl["Laura"].Lust = Statupdate("Laura", "Lust", newgirl["Laura"].Lust, 90, 10) 484 | if newgirl["Laura"].Caught < 5: 485 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 50, 25) 486 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 90, 40) 487 | call XavierFace("angry") 488 | $ Count += 20 489 | ch_x "If that's your attitude, harsher methods might be necessary." 490 | if PunishmentX: 491 | ch_x "I'm extending your punishment by [Count] days!" 492 | else: 493 | ch_x "I'm halving your daily stipend for [Count] days!" 494 | if newgirl["Laura"].Caught < 5: 495 | if newgirl["Laura"].Inbt > 50: 496 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 90, 15) 497 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 30, -15) 498 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 50, -10) 499 | ch_x "Now get out of my sight." 500 | 501 | if "Xavier's photo" not in P_Inventory: 502 | "It would probably be a good idea to find some way to get Xavier to leave you alone." 503 | "There probably isn't a way available right now though. . ." 504 | # if newgirl["Laura"].Caught > 1: 505 | # "Maybe I should try searching the office when he's not around." 506 | # if newgirl["Laura"].Caught > 2: 507 | # "I bet Laura could help me get in." 508 | $ PunishmentX += Count 509 | $ newgirl["Laura"].Caught += 1 510 | $ newgirl["Laura"].RecentActions.append("caught") 511 | $ newgirl["Laura"].DailyActions.append("caught") 512 | call Remove_Girl("All") 513 | "You return to your room" 514 | jump Player_Room 515 | # $ bg_current = "bg player" 516 | # return 517 | 518 | label Plan_Chi: 519 | call LauraFace("sly") 520 | "As you say this, a sly grin crosses Laura's face." 521 | $ newgirl["Laura"].Girl_Arms = 2 522 | "You quickly approach Xavier and place your hands on his head." 523 | call XavierFace("psychic") 524 | ch_x ". . ." 525 | call XavierFace("shocked") 526 | "Xavier realizes with a shock that with your powers, his telepathy is useless." 527 | show Laura_Sprite at SpriteLoc(StageLeft+100,150) with ease 528 | $ newgirl["Laura"].SpriteLoc = StageCenter 529 | "Laura moves in sits on his lap, placing one hand on his." 530 | if R_Loc == bg_current and "Omega" not in P_Traits: 531 | call RogueFace("surprised") 532 | "Rogue looks a bit caught off guard, but goes along with the idea." 533 | call RogueFace("sly") 534 | elif K_Loc == bg_current and "Kappa" not in P_Traits: 535 | call KittyFace("surprised") 536 | "Kitty looks a bit caught off guard, but goes along with the idea." 537 | call KittyFace("sly") 538 | elif E_Loc == bg_current and "Psi" not in P_Traits: 539 | call EmmaFace("surprised") 540 | "Emma looks a bit caught off guard, but goes along with the idea." 541 | call EmmaFace("sly") 542 | call XavierFace("angry") 543 | 544 | if "Chi" in P_Traits: 545 | ch_x "Oh, not again." 546 | ch_x "What is it you want this time?" 547 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 80, 3) 548 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 80, 1) 549 | else: 550 | ch_x "What is the meaning of this? Unhand me!" 551 | ch_p "Laura and I were talking, and it seems like neither of us appreciates you bothering us." 552 | ch_x "And if I continue?" 553 | ch_p "My little [newgirl[Laura].Pet] here has a very particular set of skills, you know. . ." 554 | call Laura_Namecheck 555 | $ newgirl["Laura"].Claws = 1 556 | call LauraFace("sly") 557 | ch_p "She could cause a lot of trouble if she keeps getting called down here. . ." 558 | "Laura draws her claws along the arm of the Professor's chair, tracing fine lines into the metal." 559 | ch_x "Very well. . . I'll forget about your punishment." 560 | ch_p "Oh, I think we can do a bit better than that. . ." 561 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 50, 40) 562 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 80, 30) 563 | $ newgirl["Laura"].Obed = Statupdate("Laura", "Obed", newgirl["Laura"].Obed, 200, 30) 564 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 200, 10) 565 | $ Count = 3 566 | $ PunishmentX = 0 567 | while Count: 568 | $ Count -= 1 569 | menu: 570 | ch_l "Well, [newgirl[Laura].Petname], what should we ask for?" 571 | "Don't bother us anymore when we're having fun." if "Laura" not in Rules: 572 | ch_x "Very well. . . I could offer you some. . . discretion. . ." 573 | $ newgirl["Laura"].Rules = 0 574 | $ Rules.append("Laura") 575 | "You know, it's kinda fun dodging you, catch us if you can." if "Laura" in Rules: 576 | ch_x "If you. . . want me to, I suppose. . ." 577 | $ newgirl["Laura"].Rules = 1 578 | "Raise my stipend." if P_Income < 30 and "Chi" not in P_Traits: 579 | ch_x "Very well. . . but I can only raise it by so much. . ." 580 | $ P_Income += 2 581 | "Raise my stipend. [[Used](locked)" if P_Income >= 30 or "Chi" in P_Traits: 582 | pass 583 | "In was interested in a key. . . ": 584 | menu: 585 | "Give me the key to your study." if "Xavier" not in Keys: 586 | ch_x "Fine, take it. . ." 587 | $ Keys.append("Xavier") 588 | "Give me the key to your study.[[Owned] (locked)" if "Xavier" in Keys: 589 | pass 590 | 591 | "Give me the key to Rogue's room." if "Rogue" not in Keys: 592 | ch_x "I. . . suppose I could do that. . ." 593 | $ Keys.append("Rogue") 594 | "Give me the key to Rogue's room.[[Owned] (locked)" if "Rogue" in Keys: 595 | pass 596 | 597 | "Give me the key to Laura's room." if "Laura" not in Keys: 598 | ch_x "Couldn't she provide it? Oh, never mind, here. . ." 599 | $ Keys.append("Laura") 600 | "Give me the key to Laura's room.[[Owned] (locked)" if "Laura" in Keys: 601 | pass 602 | 603 | "Never mind the keys.": 604 | $ Count += 1 605 | "That should do it.": 606 | $ Count = 0 607 | ch_x "Very well, that should conclude our business. Please leave." 608 | if "Chi" not in P_Traits: 609 | $ newgirl["Laura"].Lust = Statupdate("Laura", "Lust", newgirl["Laura"].Lust, 90, 10) 610 | $ newgirl["Laura"].Inbt = Statupdate("Laura", "Inbt", newgirl["Laura"].Inbt, 80, 10) 611 | $ newgirl["Laura"].Love = Statupdate("Laura", "Love", newgirl["Laura"].Love, 70, 10) 612 | $ newgirl["Laura"].Love = Statupdate("Laura", "Love", newgirl["Laura"].Love, 200, 20) 613 | $ P_Traits.append("Chi") 614 | $ newgirl["Laura"].Girl_Arms = 1 615 | $ newgirl["Laura"].Claws = 0 616 | "You return to your room" 617 | jump Player_Room 618 | 619 | # end Laura_Caught///////////////////////////////////////////////////// 620 | -------------------------------------------------------------------------------- /Laura/NewGirl_Initial_Values.rpy: -------------------------------------------------------------------------------- 1 |  2 | label Mod_Laura_Values: 3 | 4 | $ newgirl["Laura"].Petname = "guy" #What Laura calls the player 5 | $ newgirl["Laura"].Petnames = ["guy"] 6 | $ newgirl["Laura"].Pet = "Laura" #What you call Laura 7 | $ newgirl["Laura"].Pets = ["Laura","X-23"] 8 | $ newgirl["Laura"].GirlName = "Laura" 9 | $ newgirl["Laura"].Loc = 0 10 | $ newgirl["Laura"].Love = 400 11 | $ newgirl["Laura"].Obed = 0 12 | $ newgirl["Laura"].Inbt = 200 13 | $ newgirl["Laura"].Lust = 20 14 | $ newgirl["Laura"].LikeRogue = 500 15 | $ newgirl["Laura"].LikeEmma = 500 16 | $ newgirl["Laura"].LikeKitty = 500 17 | #newgirl["Laura"].LikeOtherGirl = {} 18 | $ newgirl["Laura"].Claws = 0 19 | $ newgirl["Laura"].OutfitShame = [50,0,5,0,25,0,0,10,0,0,0,0,0,0,0] 20 | ## Sprite Variables 21 | $ newgirl["Laura"].Outfit = "leathers" 22 | $ newgirl["Laura"].OutfitDay = "leathers" 23 | $ newgirl["Laura"].Arms = "wrists" #her gloves 24 | $ newgirl["Laura"].Legs = "leather pants" 25 | $ newgirl["Laura"].Chest = "leather bra" 26 | $ newgirl["Laura"].Neck = "leash choker" 27 | $ newgirl["Laura"].Hair = "long" 28 | $ newgirl["Laura"].Boots = 0 29 | $ newgirl["Laura"].Gym = [2,0,"leather pants",0,0,"leather bra","black panties",0,0,0,0] #arms position, 0, 0, over, legs, chest, panties, 30 | $ newgirl["Laura"].Sleepwear = [0,0,0,0,0,"leather bra","black panties",0,0,0] 31 | $ newgirl["Laura"].Schedule = [0,0,0,0,0,0,0,0,0,0] #chooses when she wears what 32 | $ newgirl["Laura"].ScentTimer = 0 33 | $ newgirl["Laura"].TempClothes = [0,0,0,0,0,0,0,0,0,0,0] 34 | ## Sexual Encounters 35 | return 36 | 37 | # /////////////////////////////////////////////////////////////////////////////////////////////////////////// -------------------------------------------------------------------------------- /NewGirl/NewGirl_Python.rpy: -------------------------------------------------------------------------------- 1 | init python: 2 | 3 | class Girlnew(object): 4 | 5 | def __init__ (self, name = "no name"): 6 | #self.name = name 7 | #self.money = money 8 | #self.girl = { 9 | self.name = name 10 | self.Petname = "boy" #What Mystique calls the player 11 | self.Petnames = ["boy"] 12 | self.Pet = "Mystique" #What you call Mystique 13 | self.Pets = ["Mystique"] 14 | self.Rules = 1 15 | self.GirlName = "Raven" 16 | self.Loc = "bg Mystique" 17 | self.Love = 0 18 | self.Obed = 0 19 | self.Inbt = 0 20 | self.Lust = 0 21 | self.LikeRogue = 0 22 | self.LikeEmma = 0 23 | self.LikeKitty = 0 24 | self.LikeOtherGirl = {} 25 | self.Addict = 0 #how addicted she is 26 | self.Addictionrate = 0 #How fast her addiciton rises 27 | self.Resistance = 0 #how fast her rate falls 28 | self.Inventory = [] 29 | self.OCount = 0 #Orgasm counter 30 | self.Loose = 2 31 | self.XP = 0 32 | self.Cheated = 0 #number of times you've cheated on her 33 | self.Break = [0,0] #minimum time between break-ups/number of total break-ups 34 | self.StatPoints = 0 35 | self.XPgoal = 100 36 | self.Lvl = 0 37 | self.Traits = [] 38 | self.Rep = 800 39 | self.OutfitShame = [50,0,0,0,20,0,0,10,0,0,0,0,0,0,0] 40 | self.Shame = 0 #The amount of shame she generates with her current clothing/action 41 | self.Taboo = 0 #The taboo level of the location she is at when not with you 42 | self.Chat = [0,0,0,0,0,0] 43 | self.Event = [0,0,0,0,0,0,0,0,0,0,0] 44 | self.Todo = [] 45 | self.PubeC = 0 46 | ## Sprite Variables 47 | self.Outfit = "regular" 48 | self.OutfitDay = "regular" 49 | self.Emote = "normal" 50 | self.EmoteDefault = "normal" 51 | self.Girl_Arms = 1 #her arm position 52 | self.Arms = 0 #her gloves 53 | self.Legs = "skirt" 54 | self.Over = 0 55 | self.Chest = "top" 56 | self.Pierce = 0 57 | self.Panties = "black panties" 58 | self.Neck = 0 59 | self.Hose = 0 60 | self.Mouth = "normal" 61 | self.Brows = "normal" 62 | self.Eyes = "normal" 63 | self.Hair = "basic" 64 | self.HairColor = 0 65 | self.Gag = 0 66 | self.Gagx = 0 67 | self.Blush = 0 68 | self.Spunk = [] 69 | self.Pubes = 0 70 | self.Wet = 0 71 | self.LegsUp = 0 72 | self.Water = 0 73 | self.TitsUp = 1 74 | self.Upskirt = 0 75 | self.PantiesDown = 0 76 | self.Custom = [0,0,0,0,0,0,0,0,0,0] 77 | self.Custom2 = [0,0,0,0,0,0,0,0,0,0,0] 78 | self.Custom3 = [0,0,0,0,0,0,0,0,0,0,0] 79 | self.Custom4 = [0,0,0,0,0,0,0,0,0,0,0] 80 | self.Custom5 = [0,0,0,0,0,0,0,0,0,0,0] 81 | self.Custom6 = [0,0,0,0,0,0,0,0,0,0,0] 82 | self.Custom7 = [0,0,0,0,0,0,0,0,0,0,0] 83 | self.Gym = [2,0,0,0,"tights","top","black panties",0,0,0,0] #arms position, 0, 0, over, legs, chest, panties, 84 | self.Sleepwear = [0,0,0,0,0,"short top","black panties",0,0,0] 85 | self.Schedule = [0,0,0,0,0,0,0,0,4,0] #chooses when she wears what 86 | self.GirlLayer = 101 87 | self.SpriteLoc = 550 #Sets Emma to default to the center 88 | ## Sexual Encounters 89 | self.History = [] 90 | self.RecentActions = [] 91 | self.DailyActions = [] 92 | self.Action = 3 93 | self.MaxAction = 4 94 | self.Caught = 0 95 | self.Kissed = 0 #How many times they've kissed 96 | self.Hand = 0 97 | self.Foot = 0 98 | self.Slap = 0 99 | self.Spank = 0 100 | self.Strip = 0 101 | self.Tit = 0 102 | self.Sex = 0 103 | self.Anal = 0 104 | self.Hotdog = 0 105 | self.Mast = 0 106 | self.Org = 0 107 | self.FondleB = 0 108 | self.FondleT = 0 109 | self.FondleP = 0 110 | self.FondleA = 0 111 | self.DildoP = 0 112 | self.DildoA = 0 113 | self.Vib = 0 114 | self.Vibrator = 0 115 | self.Plug = 0 116 | self.Plugged = 0 117 | self.SuckB = 0 118 | self.InsertP = 0 119 | self.InsertA = 0 120 | self.LickP = 0 121 | self.LickA = 0 122 | self.Blow = 0 123 | self.Swallow = 0 124 | self.CreamP = 0 125 | self.CreamA = 0 126 | self.Les = 0 127 | self.LesWatch = 0 128 | self.SexRogue = 0 129 | self.SexKitty = 0 130 | self.SexEmma = 0 131 | self.SexOtherGirl = {} 132 | self.SEXP = 0 133 | self.ShameLevel = 0 134 | self.PlayerFav = 0 #The player's favorite activity with her 135 | self.Favorite = 0 #her favorite activity 136 | self.SeenChest = 0 137 | self.SeenPanties = 0 138 | self.SeenPussy = 0 139 | self.SeenPeen = 0 140 | self.Sleep = 0 141 | self.Personality = "normal" 142 | self.Date = 0 143 | self.Forced = 0 #This is a toggle for if she's being coerced 144 | self.ForcedCount = 0 145 | self.Glasses = 0 146 | self.HeadBand = 0 147 | self.Swimsuit = 0 148 | self.OnePiece = 0 149 | self.Held = 0 150 | self.Accessory1 = 0 151 | self.Accessory2 = 0 152 | self.Accessory3 = 0 153 | self.Extra = {} 154 | self.LooksLike = "Raven" 155 | self.Blindfold = 0 156 | self.Headband = 0 157 | #} 158 | 159 | 160 | 161 | 162 | class FieldValue2(BarValue, FieldEquality): 163 | # """ 164 | # :doc: value 165 | # A bar value that allows the user to adjust the value of a field 166 | # on an object. 167 | # `object` 168 | # The object. 169 | # `field` 170 | # The field, a string. 171 | # `range` 172 | # The range to adjust over. 173 | # `max_is_zero` 174 | # If True, then when the field is zero, the value of the 175 | # bar will be range, and all other values will be shifted 176 | # down by 1. This works both ways - when the bar is set to 177 | # the maximum, the field is set to 0. 178 | # This is used internally, for some preferences. 179 | # `style` 180 | # The styles of the bar created. 181 | # `offset` 182 | # An offset to add to the value. 183 | # `step` 184 | # The amount to change the bar by. If None, defaults to 1/10th of 185 | # the bar. 186 | # """ 187 | offset = 0 188 | 189 | identity_fields = [ 'object' ] 190 | equality_fields = [ 'range', 'max_is_zero', 'style', 'offset', 'step'] 191 | 192 | def __init__(self, object, field, girl, range, max_is_zero=False, style="bar", offset=0, step=None): 193 | self.object = object 194 | #self.field = field 195 | self.variable = field 196 | self.girl = girl 197 | self.range = range 198 | self.max_is_zero = max_is_zero 199 | self.style = style 200 | self.offset = offset 201 | 202 | if step is None: 203 | if isinstance(range, float): 204 | step = range / 10.0 205 | else: 206 | step = max(range / 10, 1) 207 | 208 | self.step = step 209 | 210 | def changed(self, value): 211 | 212 | if self.max_is_zero: 213 | if value == self.range: 214 | value = 0 215 | else: 216 | value = value + 1 217 | 218 | value += self.offset 219 | 220 | setattr(newgirl[self.girl], self.variable, value) 221 | #newgirl["Mystique"].Love = value 222 | renpy.restart_interaction() 223 | 224 | def get_adjustment(self): 225 | 226 | #value = newgirl["Mystique"].Love 227 | #getattr(self.object, self.field) 228 | value = getattr(newgirl[self.girl], self.variable) 229 | 230 | value -= self.offset 231 | 232 | if self.max_is_zero: 233 | if value == 0: 234 | value = self.range 235 | else: 236 | value = value - 1 237 | 238 | return ui.adjustment( 239 | range=self.range, 240 | value=value, 241 | changed=self.changed, 242 | step=self.step) 243 | 244 | def get_style(self): 245 | return self.style, "v" + self.style 246 | 247 | def VariableValue2(variable, girl, range, max_is_zero=False, style="bar", offset=0, step=None): 248 | # """ 249 | # :doc: value 250 | 251 | # A bar value that allows the user to adjust the value of a variable 252 | # in the default store. 253 | 254 | # `variable` 255 | # A string giving the name of the variable to adjust. 256 | # `range` 257 | # The range to adjust over. 258 | # `max_is_zero` 259 | # If True, then when the field is zero, the value of the 260 | # bar will be range, and all other values will be shifted 261 | # down by 1. This works both ways - when the bar is set to 262 | # the maximum, the field is set to 0. 263 | 264 | # This is used internally, for some preferences. 265 | # `style` 266 | # The styles of the bar created. 267 | # `offset` 268 | # An offset to add to the value. 269 | # `step` 270 | # The amount to change the bar by. If None, defaults to 1/10th of 271 | # the bar. 272 | # """ 273 | 274 | return FieldValue2(store, variable, girl, range, max_is_zero=max_is_zero, style=style, offset=offset, step=step) 275 | 276 | 277 | def Girls_Around(): 278 | GirlsAround = [] 279 | if R_Loc == bg_current: 280 | GirlsAround.append("Rogue") 281 | if K_Loc == bg_current: 282 | GirlsAround.append("Kitty") 283 | if E_Loc == bg_current: 284 | GirlsAround.append("Emma") 285 | for xkk in ModdedGirls: 286 | if newgirl[xkk].Loc == bg_current: 287 | GirlsAround.append(xkk) 288 | return GirlsAround 289 | 290 | def OtherGirls_Around(Girl_ = "Rogue"): 291 | OtherGirlsAround = [] 292 | if R_Loc == bg_current and Girl_ != "Rogue": 293 | OtherGirlsAround.append("Rogue") 294 | if K_Loc == bg_current and Girl_ != "Kitty": 295 | OtherGirlsAround.append("Kitty") 296 | if E_Loc == bg_current and Girl_ != "Emma": 297 | OtherGirlsAround.append("Emma") 298 | for xkk in ModdedGirls: 299 | if newgirl[xkk].Loc == bg_current and Girl_ != xkk: 300 | OtherGirlsAround.append(xkk) 301 | return OtherGirlsAround 302 | 303 | ## Blinking eyes start 304 | def eyewarp(x): 305 | return x**1.33 306 | eye_open = ImageDissolve("eye.png", .5, ramplen=128, reverse=False, time_warp=eyewarp) 307 | eye_shut = ImageDissolve("eye.png", .5, ramplen=128, reverse=True, time_warp=eyewarp) 308 | 309 | image blackblink: 310 | Solid("#000") 311 | image whiteblink: 312 | Solid("#FFF") 313 | 314 | label BlinkEyes: 315 | scene blackblink 316 | ## Closed 317 | scene whiteblink 318 | with eye_open 319 | ## Open 320 | scene blackblink 321 | with eye_shut 322 | ## Closed 323 | return 324 | ## Blinking eyes end -------------------------------------------------------------------------------- /Quiz.rpy: -------------------------------------------------------------------------------- 1 | label Rogue_Strip_Study: 2 | $ Count = 0 3 | $ Count2 = 1 4 | $ QuizOrder = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] # The entire list of objects. . . 5 | $ renpy.random.shuffle(QuizOrder) # . . .shuffled randomly. . . 6 | 7 | ch_r "Alright, [R_Petname], I'll make this simple. I'll ask you a quiz question, get it right, I take something off. . ." 8 | ch_r "Get three wrong, and we're done for the night. Good luck." 9 | while Count2: 10 | "Question [Count2]," 11 | call Quiz_Question_Rogue from _call_Quiz_Question_Rogue 12 | $ Count2 += 1 13 | if _return: 14 | call Rogue_Strip_Study_Right from _call_Rogue_Strip_Study_Right 15 | else: 16 | $ Count += 1 17 | call Rogue_Strip_Study_Wrong from _call_Rogue_Strip_Study_Wrong 18 | return 19 | 20 | label Rogue_Strip_Study_Right: 21 | if R_Hose: # Will she lose the hose? 22 | "She slowly removes her hose. . ." 23 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 3) 24 | $ R_Hose = 0 25 | return 26 | 27 | if R_Over: #will she lose the top? 28 | if R_SeenChest or (R_Chest and ApprovalCheck("Rogue", 300)) or ApprovalCheck("Rogue", 850): 29 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 25, 1) 30 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 1) 31 | "She pulls her [R_Over] off and throws it aside." 32 | $ R_Over = 0 33 | 34 | else: 35 | ch_r "You know, I don't really think I'm ready for this, sorry [R_Petname]. I shouldn't have led you on." 36 | $ Count2 = 0 37 | return 38 | 39 | if R_Legs: #will she lose the pants/skirt? 40 | if (R_SeenPanties and R_SeenPussy) or (R_Panties and (ApprovalCheck("Rogue", 700) or R_SeenPanties)) or ApprovalCheck("Rogue", 950): 41 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 5) 42 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 30, 1) 43 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 1) 44 | if R_Legs == "skirt": 45 | "She unzips her skirt and slides it off." 46 | else: 47 | "She unzips her jeans and slides them down her legs." 48 | $ R_Legs = 0 49 | if R_Panties: 50 | if not R_SeenPanties: 51 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 200, 2) 52 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 3) 53 | $ R_SeenPanties = 1 54 | else: 55 | #R seen pussy 56 | $ R_Blush = 1 57 | "You notice that she apparently isn't wearing any panties, and she flushes a bit." 58 | 59 | else: 60 | ch_r "You know, I don't really think I'm ready for this, sorry [R_Petname]. I shouldn't have led you on." 61 | $ Count2 = 0 62 | return 63 | 64 | if R_Chest: # Will she go topless? 65 | if ApprovalCheck("Rogue", 900) or (R_SeenChest and ApprovalCheck("Rogue", 600)): 66 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 60, 5) 67 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 2) 68 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 200, 1) 69 | "She pulls her [R_Chest] over her head and tosses it aside." 70 | $ R_Chest = 0 71 | if not R_SeenChest: 72 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 200, 3) 73 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 1) 74 | call Rogue_First_Topless(1) from _call_Rogue_First_Topless_17 75 | $ P_Focus = Statupdate("Rogue", "Focus", P_Focus, 80, 15) 76 | else: 77 | ch_r "I know a deal's a deal, but I'd like to keep my top on, ok [R_Petname]? Sorry about that." 78 | $ Count2 = 0 79 | return 80 | 81 | if R_Panties: # Will she go bottomless? 82 | if ApprovalCheck("Rogue", 950) or (R_SeenPussy and ApprovalCheck("Rogue", 600)): 83 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 70, 10) 84 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 70, 2) 85 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 200, 2) 86 | "She slides her [R_Panties] off, leaving her pussy bare." 87 | $ R_Panties = 0 88 | if not R_SeenPussy: 89 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 4) 90 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 200, 4) 91 | call Rogue_First_Bottomless(1) from _call_Rogue_First_Bottomless_21 92 | $ P_Focus = Statupdate("Rogue", "Focus", P_Focus, 75, 20) 93 | else: 94 | ch_r "Look, this has gone a bit far, [R_Petname]. I'd like to call it a night." 95 | $ Count2 = 0 96 | return 97 | 98 | ch_r "Well, that's another right answer, but I don't have a stitch left to take off. . ." 99 | $ Count2 = 0 100 | $ Tempmod = 50 101 | call Rogue_SexMenu from _call_Rogue_SexMenu_17 102 | ch_r "Well I sure enjoyed that." 103 | return 104 | 105 | label Rogue_Strip_Study_Wrong: 106 | if Count == 1: 107 | ch_r "Bzzt, too bad, [R_Petname]." 108 | elif Count == 2: 109 | ch_r "Oh, you're really not good at this. Come on, you've only got one more shot." 110 | elif Count > 2: 111 | ch_r "And you are out of here! Sorry, [R_Petname], thanks for playing, you're done." 112 | $ Count2 = 0 113 | 114 | return 115 | 116 | label Quiz_Question_Rogue: 117 | if QuizOrder[Count2] == 1: 118 | menu: 119 | ch_r "Who was the first person who I used my powers on?" 120 | "A. Colby": 121 | return 0 122 | "B. Renly": 123 | return 0 124 | "C. Remy": 125 | return 0 126 | "D. Cody": 127 | return 1 128 | if QuizOrder[Count2] == 2: 129 | menu: 130 | ch_r "Where did I live before moving to Xaviers?" 131 | "A. Lousiana": 132 | return 0 133 | "B. Mississippi": 134 | return 1 135 | "C. Connecticut": 136 | return 0 137 | "D. Tennessee": 138 | return 0 139 | if QuizOrder[Count2] == 3: 140 | menu: 141 | ch_r "What was the first power I. . . borrowed?" 142 | "A. Mystique's shape shifting": 143 | return 0 144 | "B. Shadowcat's phasing": 145 | return 0 146 | "C. Nightcrawler's teleport": 147 | return 1 148 | "D. Cyclops's eyebeams": 149 | return 0 150 | if QuizOrder[Count2] == 4: 151 | menu: 152 | ch_r "What mutant raised me as my parent before my powers manifested." 153 | "A. Magneto": 154 | return 0 155 | "B. Mystique": 156 | return 1 157 | "C. Xavier": 158 | return 0 159 | "D. Belasco": 160 | return 0 161 | if QuizOrder[Count2] == 5: 162 | menu: 163 | ch_r "I eventually joined the X-Men after Mystique attacked me, where?" 164 | "A. At school": 165 | return 0 166 | "B. At the beach": 167 | return 0 168 | "C. In the mountains": 169 | return 1 170 | "D. In the bayou": 171 | return 0 172 | if QuizOrder[Count2] == 6: 173 | menu: 174 | ch_r "When Magneto was selecting the fittest mutants for Asteroid M, I was captured after beating which member of the Brotherhood?" 175 | "A. Blob": 176 | return 0 177 | "B. Avalanche": 178 | return 0 179 | "C. Toad": 180 | "That's right, [R_Petname], I slammed that frog tongue in a car door" 181 | "Better not make me angry." 182 | return 1 183 | "D. Quicksilver": 184 | return 0 185 | 186 | #remove this once I have enough questions 187 | "You answer the question correctly." 188 | return 1 189 | 190 | 191 | #//////////////////////////////////////////////////////////////////////////////////// 192 | 193 | #//////////////////////////////////////////////////////////////////////////////////// 194 | 195 | label Kitty_Strip_Study: 196 | $ Count = 0 197 | $ Count2 = 1 198 | $ QuizOrder = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] # The entire list of objects. . . 199 | $ renpy.random.shuffle(QuizOrder) # . . .shuffled randomly. . . 200 | call KittyFace("perplexed", 2) from _call_KittyFace_628 201 | ch_k "Ok, so[K_like]if you get a question right. . . I'll take off a piece of clothing. . ." 202 | ch_k "But you only get three tries." 203 | call KittyFace("sly", 1) from _call_KittyFace_629 204 | while Count2: 205 | "Question [Count2]," 206 | call Quiz_Question_Kitty from _call_Quiz_Question_Kitty 207 | $ Count2 += 1 208 | if _return: 209 | call Kitty_Strip_Study_Right from _call_Kitty_Strip_Study_Right 210 | else: 211 | $ Count += 1 212 | call Kitty_Strip_Study_Wrong from _call_Kitty_Strip_Study_Wrong 213 | return 214 | 215 | label Kitty_Strip_Study_Right: 216 | if K_Hose: # Will she lose the hose? 217 | "She slowly removes her hose. . ." 218 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 3) 219 | $ K_Hose = 0 220 | return 221 | 222 | if K_Over: #will she lose the top? 223 | if K_SeenChest or (K_Chest and ApprovalCheck("Kitty", 300)) or ApprovalCheck("Kitty", 850): 224 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 25, 1) 225 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 1) 226 | "She lets her [K_Over] drop to the floor." 227 | $ K_Over = 0 228 | 229 | else: 230 | call KittyFace("perplexed", 2) from _call_KittyFace_630 231 | ch_k "Sorry, don't mean to be a tease, but I just can't handle this yet." 232 | call KittyFace("bemused", 1) from _call_KittyFace_631 233 | $ Count2 = 0 234 | return 235 | 236 | if K_Legs: #will she lose the pants/skirt? 237 | if (K_SeenPanties and K_SeenPussy) or (K_Panties and (ApprovalCheck("Kitty", 700) or K_SeenPanties)) or ApprovalCheck("Kitty", 950): 238 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 50, 5) 239 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 30, 1) 240 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 1) 241 | "She lets her [K_Legs] pool at her feet." 242 | $ K_Legs = 0 243 | if K_Panties: 244 | if not K_SeenPanties: 245 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 200, 2) 246 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 3) 247 | $ K_SeenPanties = 1 248 | else: 249 | #R seen pussy 250 | $ K_Blush = 2 251 | "You notice that she apparently isn't wearing any panties, and she flushes a bit." 252 | $ K_Blush = 1 253 | 254 | else: 255 | ch_k "Sorry, don't mean to be a tease, but I just can't handle this yet." 256 | $ Count2 = 0 257 | return 258 | 259 | if K_Chest: # Will she go topless? 260 | if ApprovalCheck("Kitty", 900) or (K_SeenChest and ApprovalCheck("Kitty", 600)): 261 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 60, 5) 262 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 2) 263 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 200, 1) 264 | "She lets her [K_Chest] drop into a pile at her feet." 265 | $ K_Chest = 0 266 | if not K_SeenChest: 267 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 200, 3) 268 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 1) 269 | call Kitty_First_Topless(1) from _call_Kitty_First_Topless_5 270 | $ P_Focus = Statupdate("Kitty", "Focus", P_Focus, 80, 15) 271 | else: 272 | ch_k "So. . . I know this is a bit late to mention it, but I'd like to keep my top on?" 273 | $ Count2 = 0 274 | return 275 | 276 | if K_Panties: # Will she go bottomless? 277 | if ApprovalCheck("Kitty", 950) or (K_SeenPussy and ApprovalCheck("Kitty", 600)): 278 | $ K_Lust = Statupdate("Kitty", "Lust", K_Lust, 70, 10) 279 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 70, 2) 280 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 200, 2) 281 | "She shrugs and her [K_Panties] drop to the floor, leaving her pussy bare." 282 | $ K_Panties = 0 283 | if not K_SeenPussy: 284 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 50, 4) 285 | $ K_Inbt = Statupdate("Kitty", "Inbt", K_Inbt, 200, 4) 286 | call Kitty_First_Bottomless(1) from _call_Kitty_First_Bottomless_12 287 | $ P_Focus = Statupdate("Kitty", "Focus", P_Focus, 75, 20) 288 | else: 289 | call KittyFace("perplexed", 2) from _call_KittyFace_632 290 | ch_k "Wow, I. . . I'm not really ready for this sort of thing, I'm sorry!" 291 | call KittyFace("perplexed", 1) from _call_KittyFace_633 292 | $ Count2 = 0 293 | return 294 | 295 | call KittyFace("sly", 1) from _call_KittyFace_634 296 | ch_k "So. . . you got that one right. . ." 297 | $ K_Eyes = "down" 298 | ch_k ". . . but I'm not[K_like]wearing anything else. . ." 299 | call KittyFace("sly", 1) from _call_KittyFace_635 300 | $ Count2 = 0 301 | $ Tempmod = 50 302 | call Kitty_SexMenu from _call_Kitty_SexMenu_1 303 | ch_k "I think I learned a few things there. . ." 304 | return 305 | 306 | label Kitty_Strip_Study_Wrong: 307 | call KittyFace("sly", 1) from _call_KittyFace_636 308 | if Count == 1: 309 | ch_k "Nope." 310 | elif Count == 2: 311 | ch_k "{i}So{/i} close. One more try." 312 | elif Count > 2: 313 | ch_k "Aw, too bad, so sad. Maybe next time." 314 | $ Count2 = 0 315 | 316 | return 317 | 318 | label Quiz_Question_Kitty: 319 | if QuizOrder[Count2] == 1: 320 | menu: 321 | ch_k "Ok, do you[K_like]know where I come from? What's my home town?" 322 | "A. Chicago, Illinois": 323 | return 0 324 | "B. Deerfield, Illinois": 325 | return 1 326 | "C. New York City, New York": 327 | return 0 328 | "D. St. Louis, Missouri": 329 | return 0 330 | if QuizOrder[Count2] == 2: 331 | menu: 332 | ch_k "What's my mutant power called?" 333 | "A. Disappearing": 334 | return 0 335 | "B. Ghosting": 336 | return 0 337 | "C. Phasing": 338 | return 1 339 | "D. Shifting": 340 | return 0 341 | if QuizOrder[Count2] == 3: 342 | menu: 343 | ch_k "So. . . don't laugh, but I have this stuffed animal I sleep with[K_like]every night. Know his name?" 344 | "A. Draco": 345 | return 0 346 | "B. Flipper": 347 | return 0 348 | "C. Lockheed": 349 | return 1 350 | "D. N'gari": 351 | return 0 352 | 353 | if QuizOrder[Count2] == 4: 354 | menu: 355 | ch_k "Okay. Did you know that Dr. McCoy takes a handful of students that're falling behind in their Earth Science studies on a private tutoring retreat? Know where he takes them?" 356 | "A. The Great Redwood Forest, California": 357 | return 1 358 | "B. Mount McKinley, Alaska": 359 | return 0 360 | "C. Mount Rushmore, South Dakota": 361 | return 0 362 | "D. Yellowstone National Park, Wyoming": 363 | return 0 364 | if QuizOrder[Count2] == 5: 365 | menu: 366 | ch_k "One of the worst threats we have to worry about as mutants are the giant robots called Sentinels. Do you know who built them?" 367 | "A. Arcade": 368 | return 0 369 | "B. Bolivar Trask": 370 | return 1 371 | "C. Magneto": 372 | return 0 373 | "D. Unus the Untouchable": 374 | return 0 375 | if QuizOrder[Count2] == 6: 376 | menu: 377 | ch_k "Y'know, we didn't always have classes here at the Institute. For a while, all the students here went to a local public school. Know which one?" 378 | "A. Bayville High School": 379 | return 1 380 | "B. King Memorial High School": 381 | return 0 382 | "C. Riverside High School": 383 | return 0 384 | "D. Seth Paine High School": 385 | return 0 386 | if QuizOrder[Count2] == 7: 387 | menu: 388 | ch_k "It seems like it happened so long ago, but do you know who the first mutant I ever met was?" 389 | "A. Jean Grey": 390 | return 0 391 | "B. Lance Alvers": 392 | return 1 393 | "C. Mystique": 394 | return 0 395 | "D. Professor Xavier": 396 | return 0 397 | if QuizOrder[Count2] == 8: 398 | ch_k "Rogue, Boom-Boom, Magma, Jean, and I once put together a crime-fighting team and took down a local chop shop operation." 399 | ch_k "Even though it was a lot of fun, we ended up disbanding after that." 400 | menu: 401 | ch_k "Anyway, know what the name we chose for the group was?" 402 | "A. The Bayville Avengers": 403 | return 0 404 | "B. The Bayville Brawlers": 405 | return 0 406 | "C. The Bayville Harpies": 407 | return 0 408 | "D. The Bayville Sirens": 409 | return 1 410 | if QuizOrder[Count2] == 9: 411 | menu: 412 | ch_k "Okay[K_like]..not that I'd know, but do you know the remedy for stink bomb aroma?" 413 | "A. A hot shower": 414 | return 0 415 | "B. Methyl Ethyl Ketone": 416 | return 0 417 | "C. Isolation": 418 | return 1 419 | "D. Tomato Juice": 420 | return 0 421 | if QuizOrder[Count2] == 10: 422 | menu: 423 | ch_k "When I'm using my powers, I'm not[K_like]{i}totally{/i} invulnerable. Who has powers that can still affect me?" 424 | "A. Blob": 425 | return 0 426 | "B. Magneto": 427 | return 0 428 | "C. Quicksilver": 429 | return 0 430 | "D. Scarlet Witch": 431 | return 1 432 | 433 | #remove this once I have enough questions 434 | "You answer the question correctly." 435 | return 1 436 | 437 | #label Quiz: 438 | # $ Count = 0 #This is the number of times you've gotten a wrong answer. 439 | # $ Count2 = 1 #this is the position in the quis so far. 440 | # $ QuizOrder = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] # The entire list of objects. . . 441 | # $ renpy.random.shuffle(QuizOrder) # . . .shuffled randomly. . . This is optional, and if you want to skip randomization then you can just increment a counter instead of this. 442 | 443 | # while Count2: #This cycles so long as Count2 is greater than zero 444 | # "Question [Count2]," 445 | # call Quiz_Question 446 | # $ Count2 += 1 #This increments to the next question in the list after ti asks each one 447 | # if _return: #the _return variable is whatever the Quiz Questions lable returns. 448 | # "You got it right!" 449 | # $ Score += 1 #This tallies the right answers as you make them 450 | # else: 451 | # "Bzzt, Wrong answer" 452 | # $ Count += 1 453 | # if Count2 >= 14: #set this to one under the total number of questions 454 | # "You're done. Your score is [Score] out of 15." 455 | # $ Count2 = 0 456 | # elif Count > 2: #this kicks you out if you get three wrong, remove that if you don't want it. 457 | # "Too bad, you're done" 458 | # $ Count2 = 0 #This breaks the cycle and returns the player to where he started the quiz. 459 | # return 460 | 461 | #label Quiz_Question: 462 | # if QuizOrder[Count2] == 1: #This asks the first question, set each following question to a number. 463 | # menu: 464 | # "Question" 465 | # "A. ": 466 | # return 1 #the correct answer sends a 1, the incorrect answers send back a zero. 467 | # "B. ": 468 | # return 0 469 | # "C. ": 470 | # return 0 471 | # "D. ": 472 | # return 0 473 | 474 | 475 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Overview: 2 | [Expanded Mod](https://f95zone.com/threads/rogue-like-evolution-expanded-mod-v24-08.14865/) is a collection of mods for the game Rogue-Like: Evolution, which is being developed by [Oni](https://www.patreon.com/OniArtist). 3 | It has several contributors and aims to add several new things to the game, such as clothes, characters, events/locations and new features. 4 | 5 | ## How to play the Github version: 6 | 1. Download Ren'Py 6.99.13 [here](https://www.renpy.org/release/6.99.13) and extract it somewhere. 7 | 2. Create a folder called "Projects" or something else you'll remember. Create another folder inside the projects folder and call it something like "Rogue-Like-Github". 8 | 3. Start up Ren'Py and click on "preferences". 9 | 4. Redirect the path of the "Projects Directory" to the newly created projects folder. 10 | 5. Download the master branch from the Github repository. 11 | 6. Unzip the master branch into the "Rogue-Like-Github" folder and rename "Rouge-Like-Expanded-master" to "game". 12 | 7. Go to "Projects\Rogue-Like-Github\game" and create a folder called "images". 13 | 8. Download the image files [here](https://mega.nz/#F!QfoRhATA!VWBVBhoE_NabSQ979FY3rg). 14 | 9. Extract the files and folders into the newly created "images" folder. 15 | 10. Download [this](https://mega.nz/#!hTYDUIqZ!_meQOlSE-ixZzYAM-IcZcGllFJNIuSuI-zitwHm00Go) file and extract into "renpy-6.99.13-sdk\renpy\common". 16 | 11. Start up Ren'Py and launch the project. 17 | 18 | 19 | ## Features: 20 | **New hair colors**: 21 | - Black and blond for Rogue (both with and without white streak) 22 | - Black, blond and red for Kitty 23 | - Black, red and white for Emma 24 | 25 | 26 | **New clothes for Kitty**: 27 | - Leather outfit (top and pants) 28 | - Racer outfit (top and skirt) 29 | - Bikini (top and bottom) 30 | - Transparent swimsuit 31 | - Bondage outfit (needs high obedience) 32 | - Socks 33 | - Kitty headband 34 | - Recolors of original clothes and of new clothes 35 | 36 | 37 | **New clothes for Rogue**: 38 | - Long sleeved crop top (black and green) 39 | - Glasses 40 | - Shorter skirt and top 41 | - Cheerleader outfit 42 | - SR7 comic outfit 43 | - Insulating tapes for nipples 44 | - Recolors of almost all clothes 45 | - Recolor of original clothes and new 46 | 47 | 48 | **New clothes for Emma**: 49 | - NewX outfit 50 | - Cape 51 | - Sports outfit (red and white) 52 | - Bikini 53 | - Original and new outfits have black color option 54 | 55 | 56 | **New scenes**: 57 | - Doggystyle for Kitty 58 | - Missionary and Footjob for Rogue 59 | - Doggystyle, Blowjob, Missionary and Footjob for Emma 60 | 61 | 62 | **New Locations**: 63 | - Pool (with a few events and new art with variants for time of day) 64 | - Football field 65 | 66 | 67 | **Events**: 68 | - Small exhibitionist events for Rogue, Kitty and Emma 69 | - Wear vibrator to class (for Rogue, Kitty and Emma) 70 | - Emma at danger room with costume 71 | - Buttplug for girls 72 | - Gags for girls 73 | - Bondage and blindfold for Kitty 74 | 75 | 76 | **Others**: 77 | - Tans for Kitty and Rogue 78 | - Slapping girls's butt anim 79 | - Slapping girls's butt make it red 80 | - Easier Xavier Study room 81 | - Separate rules for Xavier caught event 82 | - Scrollable menus 83 | - Added new girl Mystique (WIP) 84 | 85 | 86 | ## Authors/contributors: 87 | - [Shanks_Aka](https://f95zone.com/members/shanks_aka.315447/) 88 | - [Tinymanhood](https://f95zone.com/members/tinymanhood.58077/) 89 | - [MK78](https://f95zone.com/members/mk78.343405/) 90 | - [Olive_Drab](https://f95zone.com/members/olive_drab.57696/) 91 | 92 | 93 | - [Everglow](https://f95zone.com/members/everglow.3829/) 94 | - [Grundle](https://f95zone.com/members/grundle.8956/) 95 | - [Hakunon](https://f95zone.com/members/hakunon.17790/) 96 | - [Syliar](https://f95zone.com/members/syliar.123758/) 97 | 98 | -------------------------------------------------------------------------------- /Rogue/Rogue_DateNight.rpy: -------------------------------------------------------------------------------- 1 | # Date Night ////////////////////////////////////////////////////////////////////// 2 | # Count = price of things 3 | # Count2 = tempmod 4 | 5 | label Rogue_Date_Night: 6 | call Shift_Focus("Rogue") from _call_Shift_Focus_154 7 | if "askeddate" in R_RecentActions: 8 | call RogueFace("angry") from _call_RogueFace_784 9 | ch_r "I think you got your answer already." 10 | return 11 | $ R_RecentActions.append("askeddate") 12 | 13 | 14 | if R_Break[0] and "ex" in R_Traits: 15 | call RogueFace("angry") from _call_RogueFace_785 16 | ch_r "Seriously? You're asking me that after what you just did?" 17 | return 18 | elif ApprovalCheck("Rogue", 1200) and "ex" in R_Traits: 19 | call RogueFace("bemused") from _call_RogueFace_786 20 | $ R_Brows = "sad" 21 | if "no summon" in R_RecentActions: 22 | ch_r "I was kinda busy, but I'd like to get out. . ." 23 | else: 24 | ch_r "We had some fun, I guess we could go out, as friends maybe." 25 | if "deadbeat" in R_History: 26 | call RogueFace("angry") from _call_RogueFace_787 27 | $ R_Mouth = "grimace" 28 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 80, 2) 29 | ch_r "You're paying though!" 30 | call RogueFace("bemused") from _call_RogueFace_788 31 | elif "ex" in R_Traits: 32 | call RogueFace("angry") from _call_RogueFace_789 33 | $ R_Eyes = "side" 34 | ch_r "I don't think we really worked out, [R_Petname]." 35 | return 36 | elif "deadbeat" in R_History: 37 | call RogueFace("angry") from _call_RogueFace_790 38 | menu: 39 | ch_r "Remember last time, when you made me pay?" 40 | "Sorry about that, I'll take care of the check this time.": 41 | if ApprovalCheck("Rogue", 650): 42 | call RogueFace("sad") from _call_RogueFace_791 43 | "Ok, [R_Petname], you'd better." 44 | else: 45 | call RogueFace("angry") from _call_RogueFace_792 46 | "Yeah, I'm not buy'in that hogwash, [R_Petname]." 47 | return 48 | "Yeah, so?": 49 | if ApprovalCheck("Rogue", 1400): 50 | call RogueFace("angry") from _call_RogueFace_793 51 | $ R_Mouth = "grimace" 52 | ch_r "It's a good thing you're so pretty." 53 | call RogueFace("bemused") from _call_RogueFace_794 54 | elif ApprovalCheck("Rogue", 500, "O"): 55 | call RogueFace("surprised") from _call_RogueFace_795 56 | ch_r ". . ." 57 | call RogueFace("sad") from _call_RogueFace_796 58 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 80, 3) 59 | ch_r "I. . . guess I can pick up the check again. . ." 60 | elif ApprovalCheck("Rogue", 650): 61 | call RogueFace("angry") from _call_RogueFace_797 62 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 80, -5) 63 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 60, 2) 64 | ch_r "\"So\" it looks like we won't be going out again." 65 | return 66 | else: 67 | call RogueFace("angry") from _call_RogueFace_798 68 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 80, -10) 69 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 80, -3) 70 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 60, 2) 71 | ch_r "Fuck off." 72 | return 73 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 60, 2) 74 | elif ApprovalCheck("Rogue", 650): 75 | call RogueFace("smile") from _call_RogueFace_799 76 | if "no summon" in R_RecentActions: 77 | ch_r "I was kinda busy, but I'd like to get out. . ." 78 | else: 79 | ch_r "Yeah, sounds good. Where did you want to take me, [R_Petname]?" 80 | elif ApprovalCheck("Rogue", 400): 81 | call RogueFace("angry") from _call_RogueFace_800 82 | $ R_Eyes = "side" 83 | ch_r "I think I'm washing my hair tonight. . ." 84 | return 85 | else: 86 | call RogueFace("angry") from _call_RogueFace_801 87 | ch_r "Yeah, you wish." 88 | return 89 | $ renpy.pop_call() 90 | $ Taboo = 40 91 | if R_Schedule[7]: 92 | # if she has a date outfit set 93 | if R_Schedule[7] == 2: 94 | $ R_Outfit = "evo_pink" 95 | elif R_Schedule[7] == 3: 96 | $ R_Outfit = "custom1" 97 | elif R_Schedule[7] == 4: 98 | $ R_Outfit = "gym" 99 | elif R_Schedule[7] == 5: 100 | $ R_Outfit = "custom2" 101 | elif R_Schedule[7] == 6: 102 | $ R_Outfit = "custom3" 103 | elif R_Schedule[7] == 11: 104 | $ R_Outfit = "custom4" 105 | elif R_Schedule[7] == 12: 106 | $ R_Outfit = "custom5" 107 | elif R_Schedule[7] == 13: 108 | $ R_Outfit = "custom6" 109 | elif R_Schedule[7] == 14: 110 | $ R_Outfit = "custom7" 111 | else: 112 | $ R_Outfit = "evo_green" 113 | else: 114 | if (ApprovalCheck("Rogue", 1500) or ApprovalCheck("Rogue", 500, "I")) or "exhibitionist" in R_Traits: 115 | $ Options = ["red dress pantyless", "blue dress pantyless"] 116 | else: 117 | $ Options = ["red dress", "blue dress"] 118 | $ Options.append("custom1") if R_Custom[0] == 2 else Options 119 | $ Options.append("custom2") if R_Custom2[0] == 2 else Options 120 | $ Options.append("custom3") if R_Custom3[0] == 2 else Options 121 | $ Options.append("custom4") if R_Custom4[0] == 2 else Options 122 | $ Options.append("custom5") if R_Custom5[0] == 2 else Options 123 | $ Options.append("custom6") if R_Custom6[0] == 2 else Options 124 | $ Options.append("custom7") if R_Custom7[0] == 2 else Options 125 | $ renpy.random.shuffle(Options) 126 | $ R_Outfit = Options[0] 127 | $ del Options[:] 128 | call CleartheRoom("Rogue",0,1) from _call_CleartheRoom_28 129 | $ R_Loc = "date" 130 | $ bg_current = "date" 131 | call RogueOutfit(Changed=1) from _call_RogueOutfit_66 132 | call Set_The_Scene from _call_Set_The_Scene_126 133 | menu: 134 | ch_r "Where would you like to go?" 135 | "To the movies.": 136 | $ R_RecentActions.append("movie") 137 | $ R_DailyActions.append("movie") 138 | "To a restaurant.": 139 | $ R_RecentActions.append("dinner") 140 | $ R_DailyActions.append("dinner") 141 | "Dinner and a movie.": 142 | $ R_RecentActions.append("movie") 143 | $ R_DailyActions.append("movie") 144 | $ R_RecentActions.append("dinner") 145 | $ R_DailyActions.append("dinner") 146 | "Never Mind.": 147 | call RogueFace("sad") from _call_RogueFace_802 148 | ch_r "Oh, ok. Maybe some other time then." 149 | call RogueFace from _call_RogueFace_803 150 | jump Rogue_Chat 151 | ch_r "Ok, that sounds like fun." 152 | show blackscreen onlayer black with dissolve 153 | $ Count = 0 154 | $ Party = [] 155 | 156 | if "dinner" not in R_RecentActions: 157 | "You head to the local theater and check out the film listings." 158 | jump R_Date_Movies 159 | 160 | label R_Date_Dinner: 161 | "You go to one of the nicer restaurants in town. The food is quality but reasonably affordable." 162 | $ bg_current = "bg restaurant" 163 | $ R_Loc = "bg restaurant" 164 | call Set_The_Scene from _call_Set_The_Scene_127 165 | 166 | menu: 167 | "You order. . ." 168 | "Surf and turf for you and Rogue. ($20 each)": 169 | call RogueFace("smile") from _call_RogueFace_804 170 | $ R_Brows = "surprised" 171 | ch_r "Ooh, you're really pulling out the stops here." 172 | call RogueFace from _call_RogueFace_805 173 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 80, 5) 174 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 200, 2) 175 | $ Count = 20 176 | $ Line = "steak and a juicy lobster" 177 | "Steak for the both of you. ($15 each)": 178 | call RogueFace("smile") from _call_RogueFace_806 179 | ch_r "I love a big, juicy steak." 180 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 80, 5) 181 | $ Count = 15 182 | $ Line = "medium rare ribeye" 183 | "Chicken for both of you. ($10 each)": 184 | call RogueFace("smile") from _call_RogueFace_807 185 | ch_r "I could always go for some chicken." 186 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 50, 1) 187 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 80, 3) 188 | $ Count = 10 189 | $ Line = "pangrilled chicken thighs" 190 | "Just a salad for each of you. ($5 each)": 191 | $ R_Mouth = "sad" 192 | $ R_Eyes = "sexy" 193 | $ R_Brows = "confused" 194 | ch_r "Well, I guess salad isn't that bad. . ." 195 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 60, -5) 196 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 50, 2) 197 | $ Count = 5 198 | $ Line = "fresh garden salad" 199 | "Why don't you choose, Rogue?": 200 | call RogueFace("smile") from _call_RogueFace_808 201 | ch_r "Well thanks, [R_Petname]. I think we'll have the chicken." 202 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 80, 5) 203 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 3) 204 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 50, -2) 205 | $ Count = 10 206 | $ Line = "pangrilled chicken thighs" 207 | 208 | "You eat your meals" # add options here 209 | $ Line = "You eat your "+ Line + ", and have a pleasant conversation over the meal." 210 | "[Line]" 211 | call RogueFace("sexy", 1) from _call_RogueFace_809 212 | if R_Anal and ApprovalCheck("Rogue", 1500) and Count >=15: 213 | "Halfway through the meal, Rogue gets a sly look on her face, nods her head suggestively towards the restrooms, and then excuses herself." 214 | "A few seconds later, you follow her and she drags you inside, locking the door behind you. She spends the next several minutes taking it up the ass." 215 | ch_r "I hope I'll still be able to sit down later." 216 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 9) 217 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 3) 218 | $ R_Anal += 1 219 | $ R_SeenPeen += 1 220 | $ P_Semen -= 1 221 | $ R_RecentActions.append("anal") 222 | $ R_DailyActions.append("anal") 223 | elif R_Sex and ApprovalCheck("Rogue", 1500) and Count >=10: 224 | "Halfway through the meal, Rogue gets a sly look on her face, nods her head suggestively towards the restrooms, and then excuses herself." 225 | "A few seconds later, you follow her and she drags you inside, locking the door behind you. She spends the next several minutes fucking you raw." 226 | ch_r "I needed to work off that meal a bit." 227 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 8) 228 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 2) 229 | $ R_Sex += 1 230 | $ R_SeenPeen += 1 231 | $ P_Semen -= 1 232 | $ R_RecentActions.append("sex") 233 | $ R_DailyActions.append("sex") 234 | elif R_Blow and ApprovalCheck("Rogue", 1300) and Count >=10: 235 | "Halfway through the meal, Rogue gets a sly look on her face, then knocks her fork off the table." 236 | "She ducks under the table after it, and unzips your pants. She then procedes to blow you for several minutes until you cum." 237 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 6) 238 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 2) 239 | $ R_RecentActions.append("blow") 240 | $ R_DailyActions.append("blow") 241 | if R_Swallow: 242 | "Rogue wipes her mouth as she climbs out from under the table." 243 | ch_r "I don't think we need desert, [R_Petname]." 244 | $ R_Addict -= 20 245 | $ R_Swallow += 1 246 | $ R_RecentActions.append("swallow") 247 | $ R_DailyActions.append("swallow") 248 | else: 249 | "Rogue grabs the napkin off your lap and uses it to collect the jiz." 250 | ch_r "I bet the cleaning crew will enjoy that." 251 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 30, 4) 252 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 2) 253 | $ R_SeenPeen += 1 254 | $ R_Blow += 1 255 | $ P_Semen -= 1 256 | elif R_Hand and ApprovalCheck("Rogue", 1000) and Count >=10: 257 | "Halfway through the meal, Rogue gets a sly look on her face, then shifts her chair around next to yours." 258 | "She unzips your pants under the table, and proceeds to caress your cock, stroking it until you cum into the napkin." 259 | ch_r "I bet the cleaning crew will enjoy that." 260 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 30, 4) 261 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 2) 262 | $ R_Hand += 1 263 | $ P_Semen -= 1 264 | $ R_RecentActions.append("hand") 265 | $ R_DailyActions.append("hand") 266 | elif R_FondleP and ApprovalCheck("Rogue", 1000) and Count >=10: 267 | "Halfway through the meal, Rogue gets a sly look on her face, then shifts her chair around next to yours." 268 | if PantsNum("Rogue") == 10: 269 | "She takes your hand and pulls it over to her crotch, shoving it down her pants. You can feel that she's warm as a furnace." 270 | else: 271 | "She takes your hand and pulls it down to her crotch, shoving it under her skirt. You can feel that she's warm as a furnace." 272 | "You stroke her pussy for several minutes, until finally she shudders in orgasm and slowly pulls your hand free with a sly smile." 273 | ch_r "I needed to take a bit of the edge off, [R_Petname]." 274 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 90, 3) 275 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 30, 5) 276 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 90, 2) 277 | $ R_FondleP += 1 278 | $ R_Org += 1 279 | $ R_RecentActions.append("fondle pussy") 280 | $ R_DailyActions.append("fondle pussy") 281 | elif ApprovalCheck("Rogue", 1000) and Count >=10: 282 | "Halfway through the meal, Rogue gets a sly look on her face, then shifts a bit lower in her seat." 283 | "You suddenly feel her foot in your lap, gently caressing your cock. After several minutes of this, she pulls back." 284 | ch_r "Just a little downpayment on later, [R_Petname]." 285 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 3) 286 | call RogueFace(B = 0) from _call_RogueFace_810 287 | 288 | call R_Date_Paying from _call_R_Date_Paying 289 | if Count2 >= 30: 290 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 15) 291 | elif Count2 >= 20: 292 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 10) 293 | elif Count2 >= 10: 294 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 5) 295 | 296 | if "movie" not in R_RecentActions: 297 | "After dinner, you head back to the dorms and escort Rogue to her room." 298 | jump R_Date_End 299 | 300 | #else: 301 | "After dinner, you head to the local theater and check out the film listings." 302 | 303 | label R_Date_Movies: 304 | $ bg_current = "bg movies" 305 | $ R_Loc = "bg movies" 306 | call Set_The_Scene from _call_Set_The_Scene_128 307 | $ Count = 10 308 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 50, 2) 309 | menu: 310 | "What would you like to see?" 311 | "A romantic comedy.": 312 | call RogueFace("smile") from _call_RogueFace_811 313 | $ R_Eyes = "surprised" 314 | ch_r "Oooh, I love a good rom-com, [R_Petname]. This should be great!" 315 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 50, 2) 316 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 95, 4) 317 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 2) 318 | $ Count2 += 5 319 | $ R_RecentActions.append("romcom") 320 | "An action movie.": 321 | call RogueFace("sexy") from _call_RogueFace_812 322 | ch_r "Hmm, you know I'm always up for some action." 323 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 95, 3) 324 | $ Count2 += 5 325 | $ R_RecentActions.append("action") 326 | "A horror movie.": 327 | call RogueFace("sad") from _call_RogueFace_813 328 | $ R_Eyes = "surprised" 329 | ch_r "I'm not really into the spooky stuff, [R_Petname]." 330 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 90, -3) 331 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 50, 3) 332 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 80, 2) 333 | $ Count2 += 15 334 | $ R_RecentActions.append("horror") 335 | "An acclaimed drama.": 336 | call RogueFace("bemused") from _call_RogueFace_814 337 | ch_r "Hmmm, I have heard some good things about this one, could be interesting." 338 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 95, 1) 339 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 50, 3) 340 | $ Count2 += 20 341 | $ R_RecentActions.append("drama") 342 | "Let Rogue pick.": 343 | call RogueFace("smile") from _call_RogueFace_815 344 | ch_r "How sweet, [R_Petname]. Let's see the romantic comedy." 345 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 80, 4) 346 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 50, -2) 347 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 2) 348 | $ R_RecentActions.append("romcom") 349 | 350 | call R_Date_Paying from _call_R_Date_Paying_1 351 | if Count2 >= 50: 352 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 25) 353 | elif Count2 >= 40: 354 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 20) 355 | elif Count2 >= 30: 356 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 15) 357 | elif Count2 >= 20: 358 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 10) 359 | elif Count2 >= 10: 360 | $ R_Lust = Statupdate("Rogue", "Lust", R_Lust, 50, 5) 361 | 362 | if "romcom" in R_RecentActions: 363 | $ Count += 2 364 | $ Line = renpy.random.choice(["You watch the movie, which is about an adorkable girl who can't choose between two hunky guys. She picks the other one.", 365 | "You watch the movie, which is about a girl is mercilessly stalked by some weird guy until she eventually decides she loves him. They live hapily ever after.", 366 | "In this movie, the lead goes to all her friend's weddings, but can't get it together herself. She dies alone. Just kidding, she gets married at the end.", 367 | "You watch the movie, in which a bunch of college girls go on a wild adventure and have lots of random sex.", 368 | "This movie is about a girl who's convinced to live in a sex dungeon, and really seems to enjoy it.", 369 | "This movie is about a girl who works for a fashion house and is bullied by her boss, until they become friends."]) 370 | elif "action" in R_RecentActions: 371 | $ Count += 1 372 | $ Line = renpy.random.choice(["You watch the movie, which is about an ex marine fighting aliens.", 373 | "You watch the movie, which is about a girl is mercilessly stalked by some weird guy until she eventually decides she loves him. They live hapily ever after. There are also a lot of explosions.", 374 | "In this movie, giant robots are fighting animal mash-ups, with the fate of the world in the balance.", 375 | "You watch the movie, in which a team of non-mutant superhumans are apparently fighting some sort of silvery robots in Eastern Europe.", 376 | "This movie is about a superhuman powerhouse that nearly wrecks a town, and yet is not arrested for it by the humans. Must be the hammer.", 377 | "This movie is about 90 minutes of constant explosions and lensflares."]) 378 | elif "horror" in R_RecentActions: 379 | $ Count += 4 380 | $ Line = renpy.random.choice(["You watch the movie, which is about an adorkable girl who can't choose between two hunky guys. She picks the other one. The guys are a fishman and a skeleton.", 381 | "You watch the movie, which is about a girl is mercilessly stalked by some weird guy until she eventually gives in and marries him. Her life is an endless hell.", 382 | "In this movie, a group of teens are trapped in a wilderness cabin. They have a lot of random sex as some shadowy monster kills them one by one.", 383 | "In this movie, a group of teens are trapped in an abandoned motel. They have a lot of random sex as some shadowy monster kills them one by one.", 384 | "This movie is about a girl who's convinced to live in a sex dungeon, and she's eventually murdered.", 385 | "In this movie, a group of teens are trapped in a spaceship. They have a lot of random sex as some shadowy monster kills them one by one."]) 386 | elif "drama" in R_RecentActions: 387 | $ Count += 5 388 | $ Line = renpy.random.choice(["You watch the movie, which is about a mature woman who can't choose between two eligible widowers. She picks the other one.", 389 | "You watch the movie, which is a documentary about a girl is mercilessly stalked by some weird guy until she eventually decides she gets a restraining order.", 390 | "In this movie, which is a biopic about a great historical leader.", 391 | "You watch the movie, in which a disabled person struggles with his various disabilities, and eventually overcomes them, and/or dies.", 392 | "This movie is about a lot of yelling and crying as some very serious issues are explored by an ensemble cast."]) 393 | "[Line]" 394 | $ D20 = renpy.random.randint(1, 20) 395 | $ Line = 0 396 | if (D20 + Count) >= 10 and ApprovalCheck("Rogue", 500, Bonus=(10*Count2)): 397 | call RogueFace("kiss", 1) from _call_RogueFace_816 398 | if "romcom" in R_RecentActions: 399 | "Halfway through the movie, inspired by the action on screen, Rogue turns to you and starts to make out with you." 400 | elif "action" in R_RecentActions: 401 | "Halfway through the movie, adrenaline pumping from the action on screen, Rogue turns to you and starts to make out with you." 402 | elif "horror" in R_RecentActions: 403 | "Halfway through the movie, freaked out by the tension on screen, Rogue huddles in your arms, and then starts to make out with you." 404 | elif "drama" in R_RecentActions: 405 | "Halfway through the movie, profoundly bored by the movie, Rogue turns to you with a shrug and starts to make out with you." 406 | $ R_RecentActions.append("kissing") 407 | $ R_DailyActions.append("kissing") 408 | 409 | if R_Anal and ApprovalCheck("Rogue", 2000, Bonus=(10*Count2)) and PantsNum("Rogue") != 10: 410 | call RogueFace("sexy", 1) from _call_RogueFace_817 411 | if R_Panties: 412 | "As you make out, Rogue reaches down and undoes your fly. She pulls her panties aside and shifts into your lap." 413 | else: 414 | "As you make out, Rogue reaches down and undoes your fly. She hikes her skirt up a bit and shifts into your lap." 415 | "She gingerly squeezes your cock into her ass and begins to grind up and down, quietly enough that the other patrons don't seem to notice." 416 | # if D20 >= 15: 417 | # $ Line = "anal" 418 | # jump R_Usher 419 | if R_CreamA: 420 | if R_Panties: 421 | "After several minutes of this, you can't take it anymore and come inside her. She pulls her panties back up and returns to her seat." 422 | else: 423 | "After several minutes of this, you can't take it anymore and come inside her. She wipes off as best she can and shifts back into her seat." 424 | $ R_CreamA += 1 425 | $ R_RecentActions.append("creampie anal") 426 | $ R_DailyActions.append("creampie anal") 427 | else: 428 | "After several minutes of this, she pulls out and shifts back into her seat, finishing you off with her hand." 429 | if R_Swallow: 430 | "You cum into the popcorn bucket, which she then finishes off." 431 | $ R_Addict -= 20 432 | $ R_Swallow += 1 433 | $ R_Spunk.append("mouth") 434 | $ R_RecentActions.append("swallowed") 435 | $ R_DailyActions.append("swallowed") 436 | else: 437 | "You cum into the popcorn bucket, which she sets in the seat next to her." 438 | ch_r "This makes for a better ride than a movie." 439 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 4) 440 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 90, 3) 441 | $ R_SeenPeen += 1 442 | $ R_Anal += 1 443 | $ P_Semen -= 1 444 | $ R_RecentActions.append("anal") 445 | $ R_DailyActions.append("anal") 446 | elif R_Sex and ApprovalCheck("Rogue", 2000, Bonus=(10*Count2)) and PantsNum("Rogue") != 10: 447 | call RogueFace("sexy", 1) from _call_RogueFace_818 448 | if R_Panties: 449 | "As you make out, Rogue reaches down and undoes your fly. She pulls her panties aside and shifts into your lap." 450 | else: 451 | "As you make out, Rogue reaches down and undoes your fly. She hikes her skirt up a bit and shifts into your lap." 452 | "Seconds later, she's slowly rocking on your cock, quietly enough that the other patrons don't seem to notice." 453 | # if D20 >= 15: 454 | # $ Line = "sex" 455 | # jump R_Usher 456 | if R_CreamP: 457 | if R_Panties: 458 | "After several minutes of this, you can't take it anymore and come inside her. She pulls her panties up over her dripping slit and returns to her seat." 459 | else: 460 | "After several minutes of this, you can't take it anymore and come inside her. She wipes up as best she can and returns to her seat." 461 | $ R_CreamP += 1 462 | $ R_RecentActions.append("creampie sex") 463 | $ R_DailyActions.append("creampie sex") 464 | else: 465 | "After several minutes of this, she pulls out and shifts back into her seat, finishing you off with her hand." 466 | if R_Swallow: 467 | "You cum into the popcorn bucket, which she then finishes off." 468 | $ R_Spunk.append("mouth") 469 | $ R_Addict -= 20 470 | $ R_Swallow += 1 471 | $ R_RecentActions.append("swallowed") 472 | $ R_DailyActions.append("swallowed") 473 | else: 474 | "You cum into the popcorn bucket, which she sets in the seat next to her." 475 | ch_r "This makes for a better ride than a movie." 476 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 50, 4) 477 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 90, 3) 478 | $ R_SeenPeen += 1 479 | $ R_Sex += 1 480 | $ P_Semen -= 1 481 | $ R_RecentActions.append("sex") 482 | $ R_DailyActions.append("sex") 483 | elif R_Blow and ApprovalCheck("Rogue", 1300, Bonus=(10*Count2)): 484 | call RogueFace("sucking", 1) from _call_RogueFace_819 485 | "As you make out, Rogue reaches down and undoes your fly. She then bends down and wraps her lips around it." 486 | # if D20 >= 17: 487 | # $ Line = "blow" 488 | # jump R_Usher 489 | "She sucks on it contentedly for several minutes before you finally cum." 490 | $ R_Spunk.append("mouth") 491 | if R_Swallow: 492 | "Rogue wipes her mouth as she shifts back into her seat and washes it down with some soda." 493 | call RogueFace("sexy") from _call_RogueFace_820 494 | ch_r "Mmmm, refreshing. . ." 495 | $ R_Addict -= 20 496 | $ R_Swallow += 1 497 | $ R_RecentActions.append("swallowed") 498 | $ R_DailyActions.append("swallowed") 499 | else: 500 | "Rogue spits the cum into the popcorn bucket and sets it aside." 501 | call RogueFace("sexy") from _call_RogueFace_821 502 | ch_r "I bet the cleaning crew will enjoy that." 503 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 40, 3) 504 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 2) 505 | $ R_Blow += 1 506 | $ P_Semen -= 1 507 | $ R_RecentActions.append("blow") 508 | $ R_DailyActions.append("blow") 509 | elif R_Hand and R_FondleP and ApprovalCheck("Rogue", 1000, Bonus=(10*Count2)): 510 | call RogueFace("sexy") from _call_RogueFace_822 511 | "As you make out, Rogue reaches down and pulls out your cock. She then leans over and begins to stroke it." 512 | call RogueFace("surprised") from _call_RogueFace_823 513 | if R_Panties: 514 | "You also lean over, reach under her panties, and begin to stroke her pussy." 515 | else: 516 | "You also lean over, notice she isn't wearing any panties, and begin to stroke her pussy." 517 | call RogueFace("sexy", 1) from _call_RogueFace_824 518 | # if D20 >= 18: 519 | # $ Line = "mutual" 520 | # jump R_Usher 521 | $ R_Eyes = "closed" 522 | "After several minutes of this, she shudders in orgasm, which sets you off as well. She catches the jiz in the popcorn bucket." 523 | $ R_Eyes = "sexy" 524 | if R_Swallow: 525 | "She finishes off the remaining popcorn with a grin." 526 | $ R_Spunk.append("mouth") 527 | ch_r "Best topping they got here, [R_Petname]." 528 | $ R_Addict -= 20 529 | $ R_Swallow += 1 530 | $ R_RecentActions.append("swallowed") 531 | $ R_DailyActions.append("swallowed") 532 | else: 533 | "You cum into the popcorn bucket, which she sets in the seat next to her." 534 | ch_r "I bet the cleaning crew will enjoy that." 535 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 90, 2) 536 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 40, 3) 537 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 2) 538 | $ R_SeenPeen += 1 539 | $ R_FondleP += 1 540 | $ R_Org += 1 541 | $ R_Hand += 1 542 | $ P_Semen -= 1 543 | $ R_RecentActions.append("hand") 544 | $ R_DailyActions.append("hand") 545 | elif R_Hand and ApprovalCheck("Rogue", 1000, Bonus=(10*Count2)): 546 | call RogueFace("sexy") from _call_RogueFace_825 547 | "As you make out, Rogue reaches down and pulls out your cock. She then leans over and begins to stroke it." 548 | # if D20 >= 19: 549 | # $ Line = "hand" 550 | # jump R_Usher 551 | "After several minutes of this, you begin to feel it rising up, and she catches the jiz in the popcorn bucket." 552 | if R_Swallow: 553 | "She finishes off the remaining popcorn with a grin." 554 | $ R_Spunk.append("mouth") 555 | ch_r "Best topping they got here, [R_Petname]." 556 | $ R_Addict -= 20 557 | $ R_Swallow += 1 558 | $ R_RecentActions.append("swallowed") 559 | $ R_DailyActions.append("swallowed") 560 | else: 561 | "You cum into the popcorn bucket, which she sets in the seat next to her." 562 | ch_r "I bet the cleaning crew will enjoy that." 563 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 40, 2) 564 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 2) 565 | $ R_SeenPeen += 1 566 | $ R_Hand += 1 567 | $ P_Semen -= 1 568 | $ R_RecentActions.append("hand") 569 | $ R_DailyActions.append("hand") 570 | elif R_FondleP and ApprovalCheck("Rogue", 900, Bonus=(10*Count2)): 571 | call RogueFace("sexy") from _call_RogueFace_826 572 | if PantsNum("Rogue") == 10: 573 | "As you make out, Rogue grabs your hand and shoves it down her pants." 574 | else: 575 | "As you make out, Rogue grabs your hand and shoves it up her skirt." 576 | if R_Panties: 577 | "You reach under her panties, and begin to stroke her pussy." 578 | else: 579 | "You notice she isn't wearing any panties, and begin to stroke her pussy." 580 | # if D20 >= 19: 581 | # $ Line = "fondle" 582 | # jump R_Usher 583 | $ R_Eyes = "closed" 584 | "After several minutes of this, she shudders in orgasm and leans back with a contented sigh." 585 | $ R_Eyes = "sexy" 586 | ch_r "Thanks [R_Petname]. I needed that. . . distraction." 587 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 90, 2) 588 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 40, 2) 589 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 80, 2) 590 | $ R_FondleP += 1 591 | $ R_Org += 1 592 | $ R_RecentActions.append("fondle pussy") 593 | $ R_DailyActions.append("fondle pussy") 594 | elif ApprovalCheck("Rogue", 1000, Bonus=(5*Count2)) and R_Panties: 595 | call RogueFace("sexy") from _call_RogueFace_827 596 | "After making out for a few minutes, Rogue gets a sly look on her face, then shifts a bit lower in her seat." 597 | "After a few moments of wriggling, she hands you a cloth lump, apparently her panties." 598 | $ R_DailyActions.append("pantyless") 599 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 60, 2) 600 | $ R_Panties = 0 601 | ch_r "Just a little downpayment on later, [R_Petname]." 602 | elif ApprovalCheck("Rogue", 1000, Bonus=(5*Count2)): 603 | call RogueFace("sexy") from _call_RogueFace_828 604 | "After making out for a few minutes, Rogue gets a sly look on her face, then shifts a bit lower in her seat." 605 | if PantsNum("Rogue") == 10: 606 | "Looking down, you notice she's pulled down her pants enough that you can see her bare pussy, lit by the movie screen." 607 | else: 608 | "Looking down, you notice she's hiked up her skirt enough that you can see her bare pussy, lit by the movie screen." 609 | $ R_Inbt = Statupdate("Rogue", "Inbt", R_Inbt, 60, 2) 610 | call Rogue_First_Bottomless(1) from _call_Rogue_First_Bottomless_20 611 | ch_r "Just a little downpayment on later, [R_Petname]." 612 | 613 | call RogueOutfit from _call_RogueOutfit_67 614 | "After the movie, you head back to the dorms and escort Rogue to her room." 615 | 616 | label R_Date_End: 617 | $ Taboo = 0 618 | $ bg_current = "bg rogue" 619 | $ R_Loc = "bg rogue" 620 | call Set_The_Scene from _call_Set_The_Scene_129 621 | if "romcom" in R_RecentActions: 622 | $ Count2 += 5 623 | elif "horror" in R_RecentActions: 624 | $ Count2 -= 5 625 | elif "drama" in R_RecentActions: 626 | $ Count2 -= 20 627 | call Wait(Outfit = 0) from _call_Wait_33 628 | if Count2 < 0: 629 | call RogueFace("angry", 0) from _call_RogueFace_829 630 | $ R_Eyes = "side" 631 | ch_r "Well that was a waste of an evening. I'll see you around, [Playername]." 632 | "You return to your room." 633 | $ bg_current = "bg player" 634 | $ Count2 = 0 635 | jump Player_Room 636 | else: 637 | $ R_DailyActions.append("dated") 638 | if Count2 > 20: 639 | call RogueFace("sexy", 1) from _call_RogueFace_830 640 | ch_r "Well that was a lot of fun, [R_Petname]. I don't want the night to end . . ." 641 | else: 642 | call RogueFace("smile", 1) from _call_RogueFace_831 643 | ch_r "Well that was a lot of fun, [R_Petname]. We'll have to do it again." 644 | 645 | $ R_Date += 1 646 | menu: 647 | extend "" 648 | "Could I get a good night kiss?": 649 | if ApprovalCheck("Rogue", 600, Bonus=(10*Count2)): 650 | $ R_Mouth = "smile" 651 | ch_r "Ok, [R_Petname]. I suppose you've earned it." 652 | $ MultiAction = 0 653 | call R_KissPrep from _call_R_KissPrep_12 654 | $ MultiAction = 1 655 | if ApprovalCheck("Rogue", 900, Bonus=(10*Count2)): 656 | call RogueFace("sexy", 1) from _call_RogueFace_832 657 | ch_r "That was real nice, how about you come inside for a minute. . ." 658 | else: 659 | call RogueFace("smile", 1) from _call_RogueFace_833 660 | ch_r "That was real nice, I'll see you later, [R_Petname]" 661 | "You return to your room." 662 | $ bg_current = "bg player" 663 | $ Count2 = 0 664 | jump Player_Room 665 | "Could I come in for a bit?": 666 | if ApprovalCheck("Rogue", 800, Bonus=(10*Count2)): 667 | call RogueFace("sexy", 1) from _call_RogueFace_834 668 | ch_r "Alright, [R_Petname]. I think you've earned it." 669 | "Ok, good night then.": 670 | call RogueFace("confused", 1) from _call_RogueFace_835 671 | "Rogue looks a little perplexed, but you head back to your room." 672 | $ bg_current = "bg player" 673 | $ Count2 = 0 674 | jump Player_Room 675 | 676 | 677 | # Rogue lets you into her room: 678 | $ bg_current = "bg rogue" 679 | call Set_The_Scene from _call_Set_The_Scene_130 680 | call RogueFace("sexy", 1) from _call_RogueFace_836 681 | ch_r "So, [R_Petname], you've got me all alone, what are your intentions? . ." 682 | $ Tempmod = Count2 683 | call Rogue_SexMenu from _call_Rogue_SexMenu_16 # You have what sex you can get away with 684 | 685 | if "angry" in R_RecentActions: 686 | "Rogue shoves you out into the hall. You head back to your room." 687 | $ bg_current = "bg player" 688 | $ Count2 = 0 689 | jump Player_Room 690 | 691 | call Rogue_Sleepover from _call_Rogue_Sleepover_2 692 | jump Rogue_Room #should never be reached 693 | 694 | label Rogue_Date_Over: 695 | $ R_RecentActions.append("angry") 696 | call RogueFace("angry") from _call_RogueFace_837 697 | ch_r "I think I'm done here, [R_Petname]." 698 | "Rogue storms out, and you head back to the dorms alone." 699 | $ bg_current = "bg player" 700 | $ Count = 0 701 | $ Count2 = 0 702 | jump Player_Room 703 | 704 | label R_Date_Paying: 705 | menu: 706 | "Who's paying?" 707 | "I've got it." if P_Cash >= (2*Count): 708 | call RogueFace("sexy", 1) from _call_RogueFace_838 709 | ch_r "Oh, and such a gentleman." 710 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 50, 2) 711 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 80, 2) 712 | if Count >= 15: 713 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 200, 2) 714 | $ P_Cash -= (2*Count) 715 | $ Count2 += Count 716 | if "deadbeat" in R_History: 717 | $ R_History.remove("deadbeat") 718 | 719 | "Rogue, you pay.": 720 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 90, -7) 721 | if Count >= 15: 722 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 200, -6) 723 | if ApprovalCheck("Rogue", 800): 724 | call RogueFace("sad") from _call_RogueFace_839 725 | ch_r "Well, ok, I guess I can cover it this time." 726 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 30, 3) 727 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 80, 2) 728 | else: 729 | "I'm not gonna pick up your tab, [R_Petname]." 730 | call RogueFace("angry") from _call_RogueFace_840 731 | if P_Cash >= Count: 732 | "You split the check." 733 | $ P_Cash -= Count 734 | else: 735 | ch_p "I really can't cover it. Here's all I've got." 736 | $ Count2 += P_Cash 737 | $ P_Cash = 0 738 | $ Count2 -= Count 739 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 80, -3) 740 | call RogueFace("sad") from _call_RogueFace_841 741 | ch_r "Ok, I'll cover the rest, this time." 742 | if "deadbeat" not in R_History: 743 | $ R_History.append("deadbeat") 744 | else: 745 | jump Rogue_Date_Over 746 | 747 | 748 | "Let's split it." if P_Cash >= Count: 749 | if Count >= 15: 750 | $ Count2 -= 10 751 | if ApprovalCheck("Rogue", 600): 752 | call RogueFace("sad") from _call_RogueFace_842 753 | $ R_Mouth = "normal" 754 | ch_r "Fine, I guess that's fair." 755 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 50, 2) 756 | else: 757 | call RogueFace("angry") from _call_RogueFace_843 758 | $ R_Eyes = "side" 759 | ch_r "Tch. Cheapskate." 760 | if Count >= 15: 761 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 200, -2) 762 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 200, -3) 763 | $ P_Cash -= Count 764 | 765 | "I really can't afford it. . ." if P_Cash < Count: 766 | $ Count2 -= Count 767 | if Count >= 15: 768 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 200, -4) 769 | $ R_Obed = Statupdate("Rogue", "Obed", R_Obed, 50, -2) 770 | call RogueFace("sad") from _call_RogueFace_844 771 | if ApprovalCheck("Rogue", 800): 772 | ch_r "Aw, poor baby." 773 | else: 774 | $ R_Brows = "angry" 775 | ch_r "Well that's pretty weak, asking a girl out when you can't even afford it." 776 | $ R_Love = Statupdate("Rogue", "Love", R_Love, 200, 3) 777 | if "deadbeat" not in R_History: 778 | $ R_History.append("deadbeat") 779 | else: 780 | jump Rogue_Date_Over 781 | $ Count = 0 782 | return 783 | 784 | #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 785 | 786 | -------------------------------------------------------------------------------- /Rogue/Rogue_Toys.rpy: -------------------------------------------------------------------------------- 1 | #stuff -------------------------------------------------------------------------------- /dungeon.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tinymanhood/Rouge-Like-Expanded/6d3c7ec4c1178a521590da1e135e9aa91f440a17/dungeon.TTF -------------------------------------------------------------------------------- /ltromatic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tinymanhood/Rouge-Like-Expanded/6d3c7ec4c1178a521590da1e135e9aa91f440a17/ltromatic.ttf -------------------------------------------------------------------------------- /options.rpy: -------------------------------------------------------------------------------- 1 | ## This file contains some of the options that can be changed to customize 2 | ## your Ren'Py game. It only contains the most common options. . . there 3 | ## is quite a bit more customization you can do. 4 | ## 5 | ## Lines beginning with two '#' marks are comments, and you shouldn't 6 | ## uncomment them. Lines beginning with a single '#' mark are 7 | ## commented-out code, and you may want to uncomment them when 8 | ## appropriate. 9 | 10 | init -1 python hide: 11 | 12 | ## Should we enable the use of developer tools? This should be 13 | ## set to False before the game is released, so the user can't 14 | ## cheat using developer tools. 15 | 16 | config.developer = True 17 | 18 | ## These control the width and height of the screen. 19 | 20 | config.screen_width = 1024 21 | config.screen_height = 768 22 | 23 | ## This controls the title of the window, when Ren'Py is 24 | ## running in a window. 25 | 26 | config.window_title = u"Rogue-Like" 27 | 28 | # These control the name and version of the game, that are reported 29 | # with tracebacks and other debugging logs. 30 | config.name = "Rogue-Like" 31 | config.version = "0.978e" 32 | 33 | ######################################### 34 | # Themes 35 | 36 | ## We then want to call a theme function. theme.roundrect is 37 | ## a theme that features the use of rounded rectangles. 38 | ## 39 | ## The theme function takes a number of parameters that can 40 | ## customize the color scheme. 41 | 42 | theme.tv( 43 | ## Theme: TV 44 | ## Color scheme: Fine China 45 | 46 | ## The color of an idle widget face. 47 | widget = "#6A7183", 48 | 49 | ## The color of a focused widget face. 50 | widget_hover = "#1A2B47", 51 | 52 | ## The color of the text in a widget. 53 | widget_text = "#C9C9CB", 54 | 55 | ## The color of the text in a selected widget. (For 56 | ## example, the current value of a preference.) 57 | widget_selected = "#E3E3E4", 58 | 59 | ## The color of a disabled widget face. 60 | disabled = "#ADB9CC", 61 | 62 | ## The color of disabled widget text. 63 | disabled_text = "#DFBA14", 64 | 65 | ## The color of informational labels. 66 | label = "#39435E", 67 | 68 | ## The color of a frame containing widgets. 69 | frame = "#ADB9CC", 70 | 71 | ## The background of the main menu. This can be a color 72 | ## beginning with '#', or an image filename. The latter 73 | ## should take up the full height and width of the screen. 74 | mm_root = "Background", 75 | 76 | ## The background of the game menu. This can be a color 77 | ## beginning with '#', or an image filename. The latter 78 | ## should take up the full height and width of the screen. 79 | gm_root = "images/menuimage.jpg", 80 | 81 | ## If this is True, the in-game window is rounded. If False, 82 | ## the in-game window is square. 83 | rounded_window = False, 84 | 85 | ## And we're done with the theme. The theme will customize 86 | ## various styles, so if we want to change them, we should 87 | ## do so below. 88 | ) 89 | 90 | 91 | ######################################### 92 | ## These settings let you customize the window containing the 93 | ## dialogue and narration, by replacing it with an image. 94 | 95 | ## The background of the window. In a Frame, the two numbers 96 | ## are the size of the left/right and top/bottom borders, 97 | ## respectively. 98 | 99 | style.window.background = Frame("images/chatbox.png", 12, 12) 100 | 101 | ## Margin is space surrounding the window, where the background 102 | ## is not drawn. 103 | 104 | style.window.left_margin = 6 105 | style.window.right_margin = 6 106 | style.window.top_margin = 6 107 | style.window.bottom_margin = 6 108 | 109 | ## Padding is space inside the window, where the background is 110 | ## drawn. 111 | 112 | style.window.left_padding = 25 113 | style.window.right_padding = 25 114 | style.window.top_padding = 25 115 | style.window.bottom_padding = 25 116 | style.window.xminimum = 5 117 | style.window.yminimum = 5 118 | 119 | style.window.xmaximum = 500 #mine 120 | 121 | ## This is the minimum height of the window, including the margins 122 | ## and padding. 123 | 124 | # style.window.yminimum = 250 125 | 126 | style.say_who_window.background = Frame("images/Nametag.png", 20,20) #namebox.png 127 | style.say_who_window.xalign = 0.05 128 | style.say_who_window.yalign = -100 129 | style.say_who_window.xminimum = 50 130 | # style.say_who_window.yoffset = -150 131 | style.say_who_window.left_padding = 10 132 | style.say_who_window.right_padding = 10 133 | style.say_who_window.top_padding = 10 134 | style.say_who_window.bottom_padding = 10 135 | 136 | # style My word balloons 137 | 138 | # I tried putting the block below in the Options rpy, did not work: 139 | # style say_balloon is frame: 140 | # background "images/Wordballoon.png" 141 | 142 | # I tried this block below, did not work: 143 | style.say_balloon = Style(style.default) 144 | style.say_balloon.background = Frame("images/Wordballoon.png", 50, 50) 145 | style.say_balloon.left_padding = 25 146 | style.say_balloon.right_padding = 25 147 | style.say_balloon.top_padding = 25 148 | style.say_balloon.bottom_padding = 25 149 | style.say_balloon.yminimum = 0 #50 150 | style.say_balloon.xminimum = 100 151 | style.say_balloon.xmaximum = 450 #mine 152 | style.say_balloon.font = "ltromatic.ttf" 153 | 154 | style.textbox = Style(style.default) 155 | style.textbox.background = Frame("images/chatbox.png", 12, 12) 156 | style.textbox.padding = (25,25) 157 | style.textbox.xminimum = 100 158 | style.textbox.xmaximum = 450 159 | 160 | ######################################### 161 | ## This lets you change the placement of the main menu. 162 | 163 | ## The way placement works is that we find an anchor point 164 | ## inside a displayable, and a position (pos) point on the 165 | ## screen. We then place the displayable so the two points are 166 | ## at the same place. 167 | 168 | ## An anchor/pos can be given as an integer or a floating point 169 | ## number. If an integer, the number is interpreted as a number 170 | ## of pixels from the upper-left corner. If a floating point, 171 | ## the number is interpreted as a fraction of the size of the 172 | ## displayable or screen. 173 | 174 | # style.mm_menu_frame.xpos = 0.5 175 | # style.mm_menu_frame.xanchor = 0.5 176 | # style.mm_menu_frame.ypos = 0.75 177 | # style.mm_menu_frame.yanchor = 0.5 178 | 179 | 180 | 181 | ######################################### 182 | ## These let you customize the default font used for text in Ren'Py. 183 | 184 | ## The file containing the default font. 185 | 186 | # style.default.font = "DejaVuSans.ttf" 187 | style.default.font = "dungeon.ttf" 188 | # style.default.font = "CRIMFBRG.ttf" 189 | ## The default size of text. 190 | 191 | style.default.size = 18 192 | 193 | ## Note that these only change the size of some of the text. Other 194 | ## buttons have their own styles. 195 | 196 | 197 | ######################################### 198 | ## These settings let you change some of the sounds that are used by 199 | ## Ren'Py. 200 | 201 | ## Set this to False if the game does not have any sound effects. 202 | 203 | config.has_sound = True 204 | 205 | ## Set this to False if the game does not have any music. 206 | 207 | config.has_music = True 208 | 209 | ## Set this to True if the game has voicing. 210 | 211 | config.has_voice = False 212 | 213 | ## Sounds that are used when button and imagemaps are clicked. 214 | 215 | # style.button.activate_sound = "click.wav" 216 | # style.imagemap.activate_sound = "click.wav" 217 | 218 | ## Sounds that are used when entering and exiting the game menu. 219 | 220 | # config.enter_sound = "click.wav" 221 | # config.exit_sound = "click.wav" 222 | 223 | ## A sample sound that can be played to check the sound volume. 224 | 225 | # config.sample_sound = "click.wav" 226 | 227 | ## Music that is played while the user is at the main menu. 228 | 229 | # config.main_menu_music = "main_menu_theme.ogg" 230 | 231 | 232 | ######################################### 233 | ## Help. 234 | 235 | ## This lets you configure the help option on the Ren'Py menus. 236 | ## It may be: 237 | ## - A label in the script, in which case that label is called to 238 | ## show help to the user. 239 | ## - A file name relative to the base directory, which is opened in a 240 | ## web browser. 241 | ## - None, to disable help. 242 | config.help = "README.html" 243 | 244 | 245 | ######################################### 246 | ## Transitions. 247 | 248 | ## Used when entering the game menu from the game. 249 | config.enter_transition = None 250 | 251 | ## Used when exiting the game menu to the game. 252 | config.exit_transition = None 253 | 254 | ## Used between screens of the game menu. 255 | config.intra_transition = None 256 | 257 | ## Used when entering the game menu from the main menu. 258 | config.main_game_transition = None 259 | 260 | ## Used when returning to the main menu from the game. 261 | config.game_main_transition = None 262 | 263 | ## Used when entering the main menu from the splashscreen. 264 | config.end_splash_transition = None 265 | 266 | ## Used when entering the main menu after the game has ended. 267 | config.end_game_transition = None 268 | 269 | ## Used when a game is loaded. 270 | config.after_load_transition = None 271 | 272 | ## Used when the window is shown. 273 | config.window_show_transition = None 274 | 275 | ## Used when the window is hidden. 276 | config.window_hide_transition = None 277 | 278 | ## Used when showing NVL-mode text directly after ADV-mode text. 279 | config.adv_nvl_transition = dissolve 280 | 281 | ## Used when showing ADV-mode text directly after NVL-mode text. 282 | config.nvl_adv_transition = dissolve 283 | 284 | ## Used when yesno is shown. 285 | config.enter_yesno_transition = None 286 | 287 | ## Used when the yesno is hidden. 288 | config.exit_yesno_transition = None 289 | 290 | ## Used when entering a replay 291 | config.enter_replay_transition = None 292 | 293 | ## Used when exiting a replay 294 | config.exit_replay_transition = None 295 | 296 | ## Used when the image is changed by a say statement with image attributes. 297 | config.say_attribute_transition = None 298 | 299 | ######################################### 300 | ## This is the name of the directory where the game's data is 301 | ## stored. (It needs to be set early, before any other init code 302 | ## is run, so the persistent information can be found by the init code.) 303 | python early: 304 | config.save_directory = "Rogue-Like" 305 | 306 | init -1 python hide: 307 | ######################################### 308 | ## Default values of Preferences. 309 | 310 | ## Note: These options are only evaluated the first time a 311 | ## game is run. To have them run a second time, delete 312 | ## game/saves/persistent 313 | 314 | ## Should we start in fullscreen mode? 315 | 316 | config.default_fullscreen = False 317 | 318 | ## The default text speed in characters per second. 0 is infinite. 319 | 320 | config.default_text_cps = 0 321 | 322 | ## The default auto-forward time setting. 323 | 324 | config.default_afm_time = 10 325 | 326 | ######################################### 327 | ## More customizations can go here. 328 | 329 | 330 | 331 | ## This section contains information about how to build your project into 332 | ## distribution files. 333 | init python: 334 | 335 | ## The name that's used for directories and archive files. For example, if 336 | ## this is 'mygame-1.0', the windows distribution will be in the 337 | ## directory 'mygame-1.0-win', in the 'mygame-1.0-win.zip' file. 338 | build.directory_name = "Rogue-Like-0.978e" 339 | 340 | ## The name that's uses for executables - the program that users will run 341 | ## to start the game. For example, if this is 'mygame', then on Windows, 342 | ## users can click 'mygame.exe' to start the game. 343 | build.executable_name = "Rogue-Like" 344 | 345 | ## If True, Ren'Py will include update information into packages. This 346 | ## allows the updater to run. 347 | build.include_update = False 348 | 349 | ## File patterns: 350 | ## 351 | ## The following functions take file patterns. File patterns are case- 352 | ## insensitive, and matched against the path relative to the base 353 | ## directory, with and without a leading /. If multiple patterns match, 354 | ## the first is used. 355 | ## 356 | ## 357 | ## In a pattern: 358 | ## 359 | ## / 360 | ## Is the directory separator. 361 | ## * 362 | ## Matches all characters, except the directory separator. 363 | ## ** 364 | ## Matches all characters, including the directory separator. 365 | ## 366 | ## For example: 367 | ## 368 | ## *.txt 369 | ## Matches txt files in the base directory. 370 | ## game/**.ogg 371 | ## Matches ogg files in the game directory or any of its subdirectories. 372 | ## **.psd 373 | ## Matches psd files anywhere in the project. 374 | 375 | ## Classify files as None to exclude them from the built distributions. 376 | 377 | build.classify('**~', None) 378 | build.classify('**.bak', None) 379 | build.classify('**/.**', None) 380 | build.classify('**/#**', None) 381 | build.classify('**/thumbs.db', None) 382 | 383 | ## To archive files, classify them as 'archive'. 384 | 385 | build.classify("**.png", "archive") 386 | build.classify("**.jpg", "archive") 387 | build.classify("**.rpy", "archive") 388 | build.classify("**.rpyc", "archive") 389 | build.classify("**.TTF", "archive") 390 | 391 | ## Files matching documentation patterns are duplicated in a mac app 392 | ## build, so they appear in both the app and the zip file. 393 | 394 | build.documentation('*.html') 395 | build.documentation('*.txt') 396 | 397 | # My junk 398 | config.layers = [ 'backdrop', 'master', 'nightmask', 'black', 'transient', 'screens', 'overlay' ] 399 | #config.layers = [ 'master', 'nightmask', 'black', 'transient', 'screens', 'overlay' ] #what it was before I messed with it. -------------------------------------------------------------------------------- /script_version.txt: -------------------------------------------------------------------------------- 1 | (6, 99, 13) --------------------------------------------------------------------------------