Compare commits
4 Commits
main
...
gouv-event
Author | SHA1 | Date | |
---|---|---|---|
218d8c63d2 | |||
1d1d18ad1c | |||
31ebf9356a | |||
f7f0ecb566 |
@ -273,10 +273,10 @@ image ch_gen dick_out:
|
||||
"characters/genie/chibis/jerk_off/dick_out.webp"
|
||||
|
||||
image ch_gen dick_out_normal:
|
||||
"characters/genie/chibis/jerk_off/dick_out_normal.webp"
|
||||
"characters/genie/chibis/jerk_off/dick_out_normal.webp"
|
||||
|
||||
image ch_gen dick_out_shocked:
|
||||
"characters/genie/chibis/jerk_off/dick_out_shocked.webp"
|
||||
"characters/genie/chibis/jerk_off/dick_out_shocked.webp"
|
||||
|
||||
# Masturbating while standing
|
||||
#TODO Genie's standing jerk off chibis don't stand level with the others. Fix this and check/correct relevant events
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -82,12 +82,12 @@ init python:
|
||||
child = getattr(self, layer)
|
||||
|
||||
if isinstance(child, ImageReference):
|
||||
name = getattr(self, f"_{layer}")
|
||||
attributes = renpy.get_attributes(name) or renpy.get_attributes(f"{tag_prefix}_{layer}")
|
||||
name = getattr(self, "_{}".format(layer))
|
||||
attributes = renpy.get_attributes(name) or renpy.get_attributes("{}_{}".format(tag_prefix, layer))
|
||||
|
||||
if attributes:
|
||||
attributes = " ".join(attributes)
|
||||
child = ImageReference(f"{name} {attributes}")
|
||||
child = ImageReference("{} {}".format(name, attributes))
|
||||
elif child.name != name:
|
||||
child = ImageReference(name)
|
||||
else:
|
||||
|
@ -813,7 +813,7 @@ label cc_pf_strip_T2_intro_E3:
|
||||
|
||||
cho @ cheeks blush "Does Granger do these sorts of things for you too?" ("soft", "base", "worried", "mid")
|
||||
|
||||
# Remove skirt.
|
||||
# Remove skirt.
|
||||
if cho.is_worn("bottom"):
|
||||
play sound "sounds/cloth_sound3.ogg"
|
||||
hide cho_main
|
||||
|
@ -24,7 +24,7 @@ init python:
|
||||
states.gen.image.offset = (0, 600)
|
||||
|
||||
if face:
|
||||
variant = f"genie {face}"
|
||||
variant = "genie {}".format(face)
|
||||
renpy.set_tag_attributes(variant)
|
||||
side = "genie"
|
||||
|
||||
|
@ -82,7 +82,7 @@ init python:
|
||||
else:
|
||||
chibi["base"] = "ch_hem walk_robe_n"
|
||||
else:
|
||||
chibi["base"] = "ch_hem walk"
|
||||
chibi["base"] = "ch_hem walk"
|
||||
|
||||
elif not chibi.action or chibi.action == "stand":
|
||||
# Determine clothing state
|
||||
@ -97,7 +97,7 @@ init python:
|
||||
else:
|
||||
chibi["base"] = "ch_hem blink_robe_n"
|
||||
else:
|
||||
chibi["base"] = "ch_hem blink"
|
||||
chibi["base"] = "ch_hem blink"
|
||||
|
||||
elif chibi.action == "dance":
|
||||
# Determine clothing state
|
||||
@ -140,9 +140,9 @@ init python:
|
||||
|
||||
elif chibi.action in ("drink_potion", "sniff_potion", "hold_potion"):
|
||||
if not hermione.is_any_worn("top", "bottom"):
|
||||
chibi["base"] = f"ch_hem {chibi.action}_nude"
|
||||
chibi["base"] = "ch_hem {}_nude".format(chibi.action)
|
||||
else:
|
||||
chibi["base"] = f"ch_hem {chibi.action}"
|
||||
chibi["base"] = "ch_hem {}".format(chibi.action)
|
||||
|
||||
|
||||
# Sets up a chibi scene with Hermione and Genie in it
|
||||
|
@ -534,6 +534,6 @@ label hermione_chitchat:
|
||||
|
||||
block if states.her.ev.potions.breast_expand_drank:
|
||||
her "You don't happen to have any more of that breast expansion potion, [name_genie_hermione]?" ("open", "base", "base", "mid")
|
||||
her "I've noticed some correlations between grades and the student's chest size, so I thought I'd give it a shot during our next exam..." ("open", "base", "base", "mid")
|
||||
her "I've noticed some correlations between your grades and your chest size, so I thought I'd give it a shot during our next exam..." ("open", "base", "base", "mid")
|
||||
|
||||
return
|
||||
|
@ -13,20 +13,20 @@ label tentacle_scene_intro:
|
||||
$ d_flag_03 = False
|
||||
label .spell:
|
||||
if d_flag_01 and d_flag_02 and d_flag_03:
|
||||
jump .after_spell
|
||||
jump .after_spell
|
||||
menu:
|
||||
"\"Open Sesame!\"" if not d_flag_01:
|
||||
$ d_flag_01 = True
|
||||
gen "...{w=0.8} Guess not..." ("base", xpos="far_left", ypos="head")
|
||||
jump .spell
|
||||
"\"Hocus Pocus!\"" if not d_flag_02:
|
||||
$ d_flag_02 = True
|
||||
gen "...{w=0.8} Damn..." ("base", xpos="far_left", ypos="head")
|
||||
jump .spell
|
||||
"\"Abracadabra!\"" if not d_flag_03:
|
||||
$ d_flag_03 = True
|
||||
gen "...{w=0.8} ..." ("base", xpos="far_left", ypos="head")
|
||||
jump .spell
|
||||
"\"Open Sesame!\"" if not d_flag_01:
|
||||
$ d_flag_01 = True
|
||||
gen "...{w=0.8} Guess not..." ("base", xpos="far_left", ypos="head")
|
||||
jump .spell
|
||||
"\"Hocus Pocus!\"" if not d_flag_02:
|
||||
$ d_flag_02 = True
|
||||
gen "...{w=0.8} Damn..." ("base", xpos="far_left", ypos="head")
|
||||
jump .spell
|
||||
"\"Abracadabra!\"" if not d_flag_03:
|
||||
$ d_flag_03 = True
|
||||
gen "...{w=0.8} ..." ("base", xpos="far_left", ypos="head")
|
||||
jump .spell
|
||||
|
||||
label .after_spell:
|
||||
gen "Work, you stupid scroll, or I'll throw you in the fire!" ("angry", xpos="far_left", ypos="head")
|
||||
|
@ -1168,7 +1168,7 @@ label ll_pf_masturbate_T4_E1_repeat:
|
||||
lun "I never realised that the tests at Hogwarts just happened to have acronyms, that's fascinating!" ("grin", "base", "base", "mid")
|
||||
gen "Yep... I'm sure some writer didn't spend hours coming up with those."
|
||||
lun "*Huh*?" ("soft", "base", "raised", "mid")
|
||||
gen "Anyway...{w=0.4} Now that that's established, you may begin the test.{#LINT_IGNORE}"
|
||||
gen "Anyway...{w=0.4} Now that that's established, you may begin the test."
|
||||
lun "Oh, alright!" ("base", "base", "base", "mid")
|
||||
gen "Why don't you start off with the thought process behind the removal of your top."
|
||||
lun "Oh! Oh! I know that!" ("smile", "base", "base", "stare")
|
||||
|
@ -1609,7 +1609,7 @@ label ll_pf_blowjob_T4_E4_repeat:
|
||||
show screen blkfade
|
||||
with d5
|
||||
|
||||
nar "As Luna crawls out from under your desk, you slump back into your chair, exhausted by the sheer intensity of the session."
|
||||
nar "As Luna crawls out from under your desk, you slump back into your chair, exhausted by the cheer intensity of the session."
|
||||
|
||||
hide cg
|
||||
hide screen blkfade
|
||||
|
@ -95,7 +95,6 @@ label update_lun_tier:
|
||||
# T5 NOT AVAILABLE
|
||||
return
|
||||
|
||||
# unreachable
|
||||
# Requirement: Tier 4 - Blow me T4 E3
|
||||
$ lun_level_up = 4
|
||||
return
|
||||
|
@ -611,8 +611,8 @@ label snape_intro_E4:
|
||||
sna "......................." ("snape_01")
|
||||
sna "Yeah, right..." ("snape_01")
|
||||
"\"I don't have a brother, Severus.\"":
|
||||
sna "........................" ("snape_01")
|
||||
sna "You may not have one, but the real Albus Dumbledore does." ("snape_01")
|
||||
sna "........................" ("snape_01")
|
||||
sna "You may not have one, but the real Albus Dumbledore does." ("snape_01")
|
||||
"-Use magic to get the right answer-":
|
||||
nar "You use your phenomenal cosmic powers to peek into the very fabric of the universe and get the correct answer."
|
||||
gen "My little brother Aberforth? Why would I miss him?" ("base", xpos="far_left", ypos="head")
|
||||
@ -640,8 +640,8 @@ label snape_intro_E4:
|
||||
"\"A week or so...\"":
|
||||
sna "*Hmm*.... A week, huh..." ("snape_01")
|
||||
"\"Could be months...\"":
|
||||
sna "That long?" ("snape_01")
|
||||
sna "Now isn't that just \"perfect\"?" ("snape_01")
|
||||
sna "That long?" ("snape_01")
|
||||
sna "Now isn't that just \"perfect\"?" ("snape_01")
|
||||
"\"I have no clue...\"":
|
||||
sna "....................." ("snape_01")
|
||||
sna "Splendid..." ("snape_31")
|
||||
|
@ -206,7 +206,7 @@ default ton_outfit_mechanic = DollOutfit([ton_hair_mechanic, ton_top_vest_mechan
|
||||
default ton_robe_office = DollCloth("tonks", ("upper body", "robes"), "robe", "office",["#353843ff", "#fff24aff"])
|
||||
default ton_top_office = DollCloth("tonks", ("upper body", "shirts"), "top", "office", ["#e7e7e7ff", "#d1cebbff"])
|
||||
default ton_bottoms_office = DollCloth("tonks", ("lower body", "trousers"), "bottom", "office",["#353843ff"])
|
||||
default ton_accessory_office = DollCloth("tonks", ("misc", "accessory"), "accessory", "office_pin", ["#e7e7e7ff", "#fff24aff", "#d8422cff"], zorder=235)
|
||||
default ton_accessory_office = DollCloth("tonks", ("misc", "accessory"), "accessory", "office_pin", ["#e7e7e7ff", "#fff24aff", "#d8422cff"], zorder=225)
|
||||
|
||||
default ton_outfit_office = DollOutfit([ton_hair_base, ton_robe_office, ton_top_office, ton_bottoms_office, ton_accessory_office], price=450, name="SECS Outfit", desc="A smart suit for a clever girl.")
|
||||
|
||||
|
@ -14,7 +14,7 @@ screen chibi(chibi_object):
|
||||
screen chibi_emote(emote, chibi_object):
|
||||
zorder chibi_object.zorder
|
||||
sensitive False
|
||||
add f"emo_{emote}":
|
||||
add "emo_{}".format(emote):
|
||||
at emote_effect
|
||||
anchor (0.5, 1.0)
|
||||
pos chibi_object.pos
|
||||
@ -45,12 +45,12 @@ init -1 python:
|
||||
|
||||
def get_chibi_object(name):
|
||||
"""Get a chibi object by its character's name."""
|
||||
name = f"{name}_chibi"
|
||||
name = "{}_chibi".format(name)
|
||||
c = getattr(renpy.store, name, None)
|
||||
if c and isinstance(c, Chibi):
|
||||
return c
|
||||
else:
|
||||
raise Exception(f"Chibi object not found. {name}")
|
||||
raise Exception("Chibi object not found. {}".format(name))
|
||||
|
||||
def complete_chibi_moves(**elapsed):
|
||||
"""Resume old chibi action after (multiple) reduced move calls."""
|
||||
@ -81,13 +81,13 @@ init -1 python:
|
||||
|
||||
Actions are defined in the `actions` dict as a tuple: (special, transform, move_action|loop_time).
|
||||
* `special` (bool) specifies whether layer images should come from a folder with the same name as the action.
|
||||
This can be useful to prevent repetitive code in update callbacks.
|
||||
This can be useful to prevent repetitive code in update callbacks.
|
||||
* `transform` (string) is the name of the transform that is used for this action.
|
||||
It will be combined with a base transform.
|
||||
It will be combined with a base transform.
|
||||
* `move_action` (string) if set, it's the action that will be used when the chibi starts moving after the current action.
|
||||
It should not be set for move actions.
|
||||
It should not be set for move actions.
|
||||
* `loop_time` (float) if set, it's the time in seconds for one animation loop of this action. Used to calculate movement time.
|
||||
It should only be set for move actions. Set to zero to disable time adjustments.
|
||||
It should only be set for move actions. Set to zero to disable time adjustments.
|
||||
|
||||
Layers:
|
||||
A chibi is made up of one or more named layers. These are cleared on update and should be set by a callback function.
|
||||
@ -95,7 +95,7 @@ init -1 python:
|
||||
* A layer can be set to either a filename or any kind of displayable.
|
||||
* When setting an image filename, this class will look for it in `image_path` (or `image_path/action` if the action is special).
|
||||
* Adding `~` as a prefix to a filename will ignore the special action folder.
|
||||
This can be useful for images that are compatible with multiple actions.
|
||||
This can be useful for images that are compatible with multiple actions.
|
||||
* Layers are updated whenever the action changes by calling `update_callback`, which is expected to set the layers again.
|
||||
"""
|
||||
|
||||
@ -120,7 +120,7 @@ init -1 python:
|
||||
if image_path:
|
||||
self.image_path = image_path
|
||||
else:
|
||||
self.image_path = f"characters/{tag}/chibis"
|
||||
self.image_path = "characters/{}/chibis".format(tag)
|
||||
|
||||
if actions:
|
||||
# Override class variable for this instance
|
||||
@ -138,11 +138,11 @@ init -1 python:
|
||||
self.transform = None
|
||||
|
||||
# Define a screen for the chibi
|
||||
self.screen_tag = f"{tag}_chibi"
|
||||
self.screen_tag = "{}_chibi".format(tag)
|
||||
renpy.define_screen(self.screen_tag, Chibi._screen, tag=self.screen_tag, zorder="chibi_object.zorder")
|
||||
|
||||
# Define a screen for the chibi emote
|
||||
self.emote_tag = f"{tag}_chibi_emote"
|
||||
self.emote_tag = "{}_chibi_emote".format(tag)
|
||||
renpy.define_screen(self.emote_tag, Chibi._emote_screen, tag=self.emote_tag, zorder="chibi_object.zorder")
|
||||
|
||||
@staticmethod
|
||||
@ -282,7 +282,7 @@ init -1 python:
|
||||
# Combine with base transform
|
||||
return combine_transforms(self.base_transform(), trans(*args))
|
||||
elif config.developer:
|
||||
raise Exception(f"Expected an ATL transform: {name}")
|
||||
raise Exception("Expected a transform: {}".format(name))
|
||||
# No transform was given or found
|
||||
return self.base_transform()
|
||||
|
||||
@ -358,7 +358,7 @@ init -1 python:
|
||||
room = room or renpy.store.states.room
|
||||
chibi_room = ChibiRoom.rooms.get(room, None)
|
||||
if not chibi_room:
|
||||
raise Exception(f"Chibi room is not defined for {room}")
|
||||
raise Exception("Chibi room is not defined for {}".format(room))
|
||||
return chibi_room
|
||||
|
||||
@staticmethod
|
||||
|
@ -37,7 +37,7 @@ init 1 python:
|
||||
ltype, *tails = fn.rsplit("_")
|
||||
|
||||
# if not ltype in types:
|
||||
# print(f"Invalid layer type for file: {f}")
|
||||
# print("Invalid layer type for file: {}".format(f))
|
||||
# continue
|
||||
|
||||
zorder = types.get(ltype) or self.zorder
|
||||
@ -50,7 +50,7 @@ init 1 python:
|
||||
lmodifier, *tails = tails
|
||||
|
||||
if not lmodifier in modifiers:
|
||||
print(f"Invalid modifier for file: {f}")
|
||||
print("Invalid modifier for file: {}".format(f))
|
||||
continue
|
||||
|
||||
zorder_mod = modifiers.get(lmodifier)
|
||||
|
@ -211,9 +211,11 @@ init 5 python:
|
||||
|
||||
self.set_pose(pose or self.walk)
|
||||
|
||||
# Note: Warper names and their count can change over time,
|
||||
# so it's easier to just evaluate the input.
|
||||
# List of available warpers:
|
||||
# https://www.renpy.org/doc/html/atl.html?#warpers
|
||||
warper = getattr(_warper, warper, _warper.linear)
|
||||
warper = eval(f"_warper.{warper}")
|
||||
|
||||
distances = []
|
||||
times = []
|
||||
|
@ -108,7 +108,7 @@ init python:
|
||||
ltype, *tails = fn.rsplit("_")
|
||||
|
||||
if not ltype.isdigit() and not ltype in types:
|
||||
print(f"Invalid layer type for file: {f}")
|
||||
print("Invalid layer type for file: {}".format(f))
|
||||
continue
|
||||
|
||||
zorder = z if (z := types.get(ltype)) is not None else self.zorder
|
||||
@ -121,7 +121,7 @@ init python:
|
||||
lmodifier, *tails = tails
|
||||
|
||||
if not lmodifier in modifiers:
|
||||
print(f"Invalid modifier for file: {f}")
|
||||
print("Invalid modifier for file: {}".format(f))
|
||||
continue
|
||||
|
||||
zorder_mod = modifiers.get(lmodifier)
|
||||
@ -319,7 +319,7 @@ init python:
|
||||
# Method 4
|
||||
|
||||
average = (0.3333, 0.3333, 0.3333)
|
||||
|
||||
|
||||
return Transform(img, maxsize=maxsize, matrixcolor=SepiaMatrix(c, desat=average)*OpacityMatrix(c.alpha))
|
||||
|
||||
except TypeError:
|
||||
|
@ -131,7 +131,7 @@ init python:
|
||||
lmodifier, *tails = tails
|
||||
|
||||
if not lmodifier in modifiers:
|
||||
print(f"Invalid modifier for file: {f}")
|
||||
print("Invalid modifier for file: {}".format(f))
|
||||
continue
|
||||
|
||||
zorder_mod = modifiers.get(lmodifier)
|
||||
|
@ -54,7 +54,7 @@ init python:
|
||||
ltype, *tails = fn.rsplit("_")
|
||||
|
||||
if not ltype in types:
|
||||
print(f"Invalid layer type for file: {f}")
|
||||
print("Invalid layer type for file: {}".format(f))
|
||||
continue
|
||||
|
||||
zorder = types.get(ltype) or face_layers.get(part)
|
||||
@ -63,7 +63,7 @@ init python:
|
||||
lmodifier, *tails = tails
|
||||
|
||||
if not lmodifier in modifiers:
|
||||
print(f"Invalid modifier for file: {f}")
|
||||
print("Invalid modifier for file: {}".format(f))
|
||||
continue
|
||||
|
||||
zorder_mod = modifiers.get(lmodifier)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user