Compare commits

..

13 Commits
gouv-5 ... main

Author SHA1 Message Date
8b127a25b4 Merge branch 'refs/heads/dev' 2024-04-08 15:53:40 +01:00
e295fbb791 PixelateMask Shader 2024-04-08 15:48:23 +01:00
5c4ce667a5 Replace unneccesary eval 2024-04-03 12:38:48 +01:00
0dc071261b Unlock Luna's favours in developer skip 2024-04-02 16:31:14 +01:00
61da56b6c8 Partially revert #7ca17b7 (Breaks dev debug) 2024-04-02 16:21:13 +01:00
9aff807593 Bug fixes
* Fixed inconsistent spacing
* Fixed inconsistent state var access
2024-04-02 16:18:18 +01:00
908beae5d3 Maintain access convention within save compat 2024-04-02 14:19:59 +01:00
d8751d73b9 Remove nonsense calls of getattr
(cherry picked from commit 7ca17b7ba7)
2024-04-02 13:53:55 +01:00
224194754f Avoid using unnecessary screens 2024-04-02 13:44:04 +01:00
e3c5fb609d Avoid python statement
(cherry picked from commit 22348f0901)
2024-04-02 13:41:44 +01:00
e04fd221dd Flag unreachable code
(cherry picked from commit 25820e002a)
2024-04-02 13:37:20 +01:00
ef97c273db Linting dynamic
(cherry picked from commit 60244e258a)
2024-04-02 13:36:59 +01:00
01126edc4e Update README 2023-08-02 22:00:18 +01:00
26 changed files with 149 additions and 82 deletions

View File

@ -273,10 +273,10 @@ image ch_gen dick_out:
"characters/genie/chibis/jerk_off/dick_out.webp" "characters/genie/chibis/jerk_off/dick_out.webp"
image ch_gen dick_out_normal: 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: 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 # Masturbating while standing
#TODO Genie's standing jerk off chibis don't stand level with the others. Fix this and check/correct relevant events #TODO Genie's standing jerk off chibis don't stand level with the others. Fix this and check/correct relevant events

View File

@ -18,7 +18,7 @@ init python:
renpy.show_screen(controller, focused) renpy.show_screen(controller, focused)
screen cho_dual_cg(focused, _layer="screens", bubble_="cho_handjob_bubble", mask="cho_handjob_bubble_mask"): screen cho_dual_cg(focused, _layer="screens", bubble="cho_handjob_bubble", mask="cho_handjob_bubble_mask"):
tag switcher tag switcher
zorder 300 zorder 300
@ -27,12 +27,12 @@ screen cho_dual_cg(focused, _layer="screens", bubble_="cho_handjob_bubble", mask
if d: if d:
$ btn = AlphaMask(Fixed(Transform(d, align=( (1.0, 0.05) if flip else (0.0, 0.05) ), zoom=0.5, xzoom=flip)), Transform(mask, zoom=0.25)) $ btn = AlphaMask(Fixed(Transform(d, align=( (1.0, 0.05) if flip else (0.0, 0.05) ), zoom=0.5, xzoom=flip)), Transform(mask, zoom=0.25))
$ btn = Fixed(Transform(bubble_, zoom=0.25), btn) $ btn = Fixed(Transform(bubble, zoom=0.25), btn)
imagebutton: imagebutton:
idle Transform(btn, alpha=0.75) idle Transform(btn, alpha=0.75)
hover Transform(btn, alpha=1.0) hover Transform(btn, alpha=1.0)
action Function(cg_pov_switch, layer=_layer) action Function(cg_pov_switch, layer=_layer)
focus_mask True focus_mask True
at transform: at transform:
xzoom flip xzoom flip

View File

@ -50,10 +50,10 @@ label ast_walk(xpos=None, ypos=None, speed=1.0, action=None, reduce=False, path=
return return
# Screens # Screens
screen ast_cloth_pile(pos=(440, 425)): # Default position: Right of desk, below feet. screen ast_cloth_pile(position=(440, 425)): # Default position: Right of desk, below feet.
tag ast_cloth_pile tag ast_cloth_pile
zorder astoria_chibi.zorder zorder astoria_chibi.zorder
add "characters/chibis/cloth_pile_r.webp" pos pos zoom 0.5 add "characters/chibis/cloth_pile_r.webp" pos position zoom 0.5
# Chibi definition # Chibi definition
default astoria_chibi = Chibi("astoria", ["fix", "base", "bottom", "shoes", "top", "robe", "gloves"], update_astoria_chibi) default astoria_chibi = Chibi("astoria", ["fix", "base", "bottom", "shoes", "top", "robe", "gloves"], update_astoria_chibi)

View File

@ -50,10 +50,10 @@ label cho_walk(xpos=None, ypos=None, speed=1.0, action=None, reduce=False, path=
return return
# Screens # Screens
screen cho_cloth_pile(pos=(440, 425)): # Default position: Right of desk, below feet. screen cho_cloth_pile(position=(440, 425)): # Default position: Right of desk, below feet.
tag cho_cloth_pile tag cho_cloth_pile
zorder cho_chibi.zorder zorder cho_chibi.zorder
add "characters/chibis/cloth_pile_r.webp" pos pos zoom 0.5 add "characters/chibis/cloth_pile_r.webp" pos position zoom 0.5
# Chibi definition # Chibi definition
default cho_chibi = Chibi("cho", ["fix", "base", "bottom", "shoes", "top", "robe", "gloves"], update_cho_chibi) default cho_chibi = Chibi("cho", ["fix", "base", "bottom", "shoes", "top", "robe", "gloves"], update_cho_chibi)

View File

@ -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") 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"): if cho.is_worn("bottom"):
play sound "sounds/cloth_sound3.ogg" play sound "sounds/cloth_sound3.ogg"
hide cho_main hide cho_main
@ -910,7 +910,7 @@ label cc_pf_strip_T2_intro_E3:
hide screen bld1 hide screen bld1
hide screen blkfade hide screen blkfade
with d3 with d3
call teleport(position_="cho", effect=False) call teleport(position="cho", effect=False)
pause .5 pause .5
call bld call bld
@ -1239,3 +1239,4 @@ label cc_pf_strip_T2_E3_fail_repeat:
call cho_walk(action="leave") call cho_walk(action="leave")
jump end_cho_event jump end_cho_event

View File

@ -101,7 +101,7 @@ label hufflepuff_match:
with d3 with d3
call gen_chibi("stand", "door", "base") call gen_chibi("stand", "door", "base")
call teleport(position_="genie", effect=False) call teleport(position="genie", effect=False)
pause .5 pause .5
call gen_chibi("stand", "door", "base", flip=False) call gen_chibi("stand", "door", "base", flip=False)

View File

@ -1680,7 +1680,7 @@ label cho_quid_E14:
play sound "sounds/kick.ogg" play sound "sounds/kick.ogg"
call gen_chibi("stand", 430, "base") call gen_chibi("stand", 430, "base")
call teleport(position_="genie", effect=False) call teleport(position="genie", effect=False)
cho @ cheeks blush "Whoa! I didn't know you could apparate at Hogwarts!" ("angry", "narrow", "base", "mid") cho @ cheeks blush "Whoa! I didn't know you could apparate at Hogwarts!" ("angry", "narrow", "base", "mid")
gen "Appa--{w=0.4} What?" ("base", xpos="far_left", ypos="base") gen "Appa--{w=0.4} What?" ("base", xpos="far_left", ypos="base")

View File

@ -31,9 +31,9 @@ style meter_text:
align (0.0, 0.5) align (0.0, 0.5)
xoffset 5 xoffset 5
screen swear_bubble(kind): screen swear_bubble(type):
tag bubble tag bubble
zorder 30 zorder 30
add "interface/meter/bubble/[kind].webp" ypos 100 xpos 100 add "interface/meter/bubble/"+str(type)+".webp" ypos 100 xpos 100
timer 1.0 action Hide("swear_bubble") timer 1.0 action Hide("swear_bubble")

View File

@ -146,7 +146,7 @@ label slytherin_match:
with d3 with d3
call gen_chibi("stand", "door", "base") call gen_chibi("stand", "door", "base")
call teleport(position_="genie", effect=False) call teleport(position="genie", effect=False)
pause .2 pause .2
call ton_chibi("stand", "desk", "base", flip=True) call ton_chibi("stand", "desk", "base", flip=True)

View File

@ -1,3 +1,5 @@
### Hermione Blowjob ### ### Hermione Blowjob ###
label start_hg_pf_blowjob: label start_hg_pf_blowjob:
@ -821,10 +823,10 @@ label hg_pf_hidden_blowjob:
jump hg_hidden_blowjob_luna jump hg_hidden_blowjob_luna
random: random:
block: block if states.her.ev.suck_it.snape_encounter:
jump hg_hidden_blowjob_snape jump hg_hidden_blowjob_snape
block: block if states.her.ev.suck_it.tonks_encounter:
jump hg_hidden_blowjob_tonks jump hg_hidden_blowjob_tonks
block if states.her.ev.suck_it.luna_encounter: block if states.her.ev.suck_it.luna_encounter:

View File

@ -13,20 +13,20 @@ label tentacle_scene_intro:
$ d_flag_03 = False $ d_flag_03 = False
label .spell: label .spell:
if d_flag_01 and d_flag_02 and d_flag_03: if d_flag_01 and d_flag_02 and d_flag_03:
jump .after_spell jump .after_spell
menu: menu:
"\"Open Sesame!\"" if not d_flag_01: "\"Open Sesame!\"" if not d_flag_01:
$ d_flag_01 = True $ d_flag_01 = True
gen "...{w=0.8} Guess not..." ("base", xpos="far_left", ypos="head") gen "...{w=0.8} Guess not..." ("base", xpos="far_left", ypos="head")
jump .spell jump .spell
"\"Hocus Pocus!\"" if not d_flag_02: "\"Hocus Pocus!\"" if not d_flag_02:
$ d_flag_02 = True $ d_flag_02 = True
gen "...{w=0.8} Damn..." ("base", xpos="far_left", ypos="head") gen "...{w=0.8} Damn..." ("base", xpos="far_left", ypos="head")
jump .spell jump .spell
"\"Abracadabra!\"" if not d_flag_03: "\"Abracadabra!\"" if not d_flag_03:
$ d_flag_03 = True $ d_flag_03 = True
gen "...{w=0.8} ..." ("base", xpos="far_left", ypos="head") gen "...{w=0.8} ..." ("base", xpos="far_left", ypos="head")
jump .spell jump .spell
label .after_spell: label .after_spell:
gen "Work, you stupid scroll, or I'll throw you in the fire!" ("angry", xpos="far_left", ypos="head") gen "Work, you stupid scroll, or I'll throw you in the fire!" ("angry", xpos="far_left", ypos="head")

View File

@ -611,8 +611,8 @@ label snape_intro_E4:
sna "......................." ("snape_01") sna "......................." ("snape_01")
sna "Yeah, right..." ("snape_01") sna "Yeah, right..." ("snape_01")
"\"I don't have a brother, Severus.\"": "\"I don't have a brother, Severus.\"":
sna "........................" ("snape_01") sna "........................" ("snape_01")
sna "You may not have one, but the real Albus Dumbledore does." ("snape_01") sna "You may not have one, but the real Albus Dumbledore does." ("snape_01")
"-Use magic to get the right answer-": "-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." 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") 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...\"": "\"A week or so...\"":
sna "*Hmm*.... A week, huh..." ("snape_01") sna "*Hmm*.... A week, huh..." ("snape_01")
"\"Could be months...\"": "\"Could be months...\"":
sna "That long?" ("snape_01") sna "That long?" ("snape_01")
sna "Now isn't that just \"perfect\"?" ("snape_01") sna "Now isn't that just \"perfect\"?" ("snape_01")
"\"I have no clue...\"": "\"I have no clue...\"":
sna "....................." ("snape_01") sna "....................." ("snape_01")
sna "Splendid..." ("snape_31") sna "Splendid..." ("snape_31")

View File

@ -50,10 +50,10 @@ label ton_walk(xpos=None, ypos=None, speed=1.0, action=None, reduce=False, path=
return return
# Screens # Screens
screen ton_cloth_pile(pos=(440, 425)): # Default position: Right of desk, below feet. screen ton_cloth_pile(position=(440, 425)): # Default position: Right of desk, below feet.
tag ton_cloth_pile tag ton_cloth_pile
zorder tonks_chibi.zorder zorder tonks_chibi.zorder
add "characters/chibis/cloth_pile_r.webp" pos pos zoom 0.5 add "characters/chibis/cloth_pile_r.webp" pos position zoom 0.5
label ton_sit(xpos=nxpos, ypos=nypos, flip=None, chair=True): # TODO: replace this with the regular chibi call and add a sitting pose/action -- call ton_chibi("sit", chair=False) label ton_sit(xpos=nxpos, ypos=nypos, flip=None, chair=True): # TODO: replace this with the regular chibi call and add a sitting pose/action -- call ton_chibi("sit", chair=False)

View File

@ -81,13 +81,13 @@ init -1 python:
Actions are defined in the `actions` dict as a tuple: (special, transform, move_action|loop_time). 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. * `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. * `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. * `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. * `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: 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. 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. * 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). * 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. * 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. * Layers are updated whenever the action changes by calling `update_callback`, which is expected to set the layers again.
""" """

View File

@ -5,8 +5,8 @@ transform combine_transforms(one, two):
one one
two two
transform chibi_base(pos, flip, scale): transform chibi_base(position, flip, scale):
pos pos pos position
anchor (0.0, 1.0) anchor (0.0, 1.0)
xzoom (-1 if flip else 1) xzoom (-1 if flip else 1)
zoom (0.5 * scale) zoom (0.5 * scale)

View File

@ -211,11 +211,9 @@ init 5 python:
self.set_pose(pose or self.walk) 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: # List of available warpers:
# https://www.renpy.org/doc/html/atl.html?#warpers # https://www.renpy.org/doc/html/atl.html?#warpers
warper = eval(f"_warper.{warper}") warper = getattr(_warper, warper, _warper.linear)
distances = [] distances = []
times = [] times = []

View File

@ -348,7 +348,7 @@ label ball_ending_E1:
play music "music/Plaint.ogg" fadein 1 fadeout 1 #SAD CREDITS MUSIC. if_changed play music "music/Plaint.ogg" fadein 1 fadeout 1 #SAD CREDITS MUSIC. if_changed
centered """{size=+7}{color=#cbcbcb}Congratulations on completing the game!{/color}{/size}\n\n centered """{size=+7}{color=#cbcbcb}Congratulations on completing the game!{/color}{/size}\n\n
{size=+5}{color=#cbcbcb}This is ending \"00\" out of \"02\".{/color}{/size}{#LINT_IGNORE}""" {size=+5}{color=#cbcbcb}This is ending \"00\" out of \"02\".{/color}{/size}{#LINT_IGNORE}"""
centered "{size=+7}{color=#cbcbcb}Thank you for playing!{/color}{/size}\n\n{#LINT_IGNORE}" centered "{size=+7}{color=#cbcbcb}Thank you for playing!{/color}{/size}\n\n{#LINT_IGNORE}"

View File

@ -103,33 +103,34 @@ label increase_house_points(house, points):
return return
#TODO Check and fix teleport/heal effect position (chibis are now anchored bottom-left) #TODO Check and fix teleport/heal effect position (chibis are now anchored bottom-left)
label teleport(position_=None, effect=True, poof_label=None): label teleport(position=None,effect=True,poof_label=None):
if position_ == "genie": python:
dynamic: if position == "genie":
teleport_pos = (genie_chibi.pos[0]+75, genie_chibi.pos[1]) teleport_xpos = genie_chibi.pos[0]+75
teleport_ypos = genie_chibi.pos[1]
teleport_zorder = 3 teleport_zorder = 3
elif position_ == "hermione": elif position == "hermione":
dynamic: teleport_xpos = hermione_chibi.pos[0]+45
teleport_pos = (hermione_chibi.pos[0]+45, hermione_chibi.pos[1]) teleport_ypos = hermione_chibi.pos[1]
teleport_zorder = 3 teleport_zorder = 3
elif position_ == "cho": elif position == "cho":
dynamic: teleport_xpos = cho_chibi.pos[0]+45
teleport_pos = (cho_chibi.pos[0]+45, cho_chibi.pos[1]) teleport_ypos = cho_chibi.pos[1]
teleport_zorder = 3 teleport_zorder = 3
elif position_ == "astoria": elif position == "astoria":
dynamic: teleport_xpos = astoria_chibi.pos[0]+45
teleport_pos = (astoria_chibi.pos[0]+45, astoria_chibi.pos[1]) teleport_ypos = astoria_chibi.pos[1]
teleport_zorder = 3 teleport_zorder = 3
elif position_ == "desk": elif position == "desk":
dynamic: teleport_xpos = 320
teleport_pos = (320, 450) teleport_ypos = 450
teleport_zorder = 5 teleport_zorder = 5
else: else:
dynamic: teleport_xpos = position[0]
teleport_pos = position_ teleport_ypos = position[1]
teleport_zorder = 2 teleport_zorder = 2
if effect: if effect == True:
play sound "sounds/magic4.ogg" play sound "sounds/magic4.ogg"
show screen whitefade show screen whitefade
with d1 with d1
@ -161,7 +162,7 @@ label teleport(position_=None, effect=True, poof_label=None):
hide teleport_animation onlayer screens hide teleport_animation onlayer screens
with d5 with d5
if effect: if effect == True:
pause 1 pause 1
return return
@ -171,4 +172,4 @@ default hermione_action = None
label set_her_action(action=None, update=None): label set_her_action(action=None, update=None):
$ hermione_action = action $ hermione_action = action
return return

View File

@ -156,8 +156,8 @@ init -1 python:
if config.developer: if config.developer:
def __setattr__(self, attr, value): def __setattr__(self, attr, value):
if getattr(self, attr, value) != value: if hasattr(self, attr) and getattr(self, attr) != value:
id = self.id id = getattr(self, "id")
rollback = f"{stdcol.UNDERLINE}(Rollback){stdcol.END} " if renpy.in_rollback() else "" rollback = f"{stdcol.UNDERLINE}(Rollback){stdcol.END} " if renpy.in_rollback() else ""
caller_id = renpy.get_filename_line() caller_id = renpy.get_filename_line()

Some files were not shown because too many files have changed in this diff Show More