On version 0.2.1, I got an error when using the Air Control Skill:
[code]
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/dungeon_rooms.rpy", line 337, in script call
call expression _current_room_label from _call_expression_1
File "game/dungeon_rooms.rpy", line 5957, in script
menu:
File "renpy/common/00action_other.rpy", line 619, in __call__
rv = self.callable(*self.args, **self.kwargs)
File "game/init.rpy", line 1667, in use_item
effect_result = effect_func(*effect_args)
File "game/init.rpy", line 3543, in skill_use_air_control
part_to = get_least_likely_to_pop_part(exclude_part=part_from)
TypeError: get_least_likely_to_pop_part() got an unexpected keyword argument 'exclude_part'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/dungeon_rooms.rpy", line 337, in script call
call expression _current_room_label from _call_expression_1
File "game/dungeon_rooms.rpy", line 5957, in script
menu:
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\ast.py", line 1632, in execute
choice = renpy.exports.menu(choices, self.set, args, kwargs, item_arguments)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\exports\menuexports.py", line 134, in menu
rv = renpy.store.menu(new_items)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\exports\menuexports.py", line 424, in display_menu
rv = renpy.ui.interact(mouse='menu', type=type, roll_forward=roll_forward)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\ui.py", line 301, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\core.py", line 2218, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\core.py", line 3289, in interact_core
rv = root_widget.event(ev, x, y, 0)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 1297, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 1297, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 1297, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\screen.py", line 794, in event
rv = self.child.event(ev, x, y, st)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 1297, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 1297, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\behavior.py", line 1119, in event
rv = super(Button, self).event(ev, x, y, st)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 1526, in event
rv = super(Window, self).event(ev, x, y, st)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 285, in event
rv = d.event(ev, x - xo, y - yo, st)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 1297, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 285, in event
rv = d.event(ev, x - xo, y - yo, st)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 1526, in event
rv = super(Window, self).event(ev, x, y, st)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\layout.py", line 285, in event
rv = d.event(ev, x - xo, y - yo, st)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\behavior.py", line 1182, in event
return handle_click(self.clicked)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\behavior.py", line 1103, in handle_click
rv = run(action)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\behavior.py", line 394, in run
new_rv = run(i, *args, **kwargs)
File "C:\Users\Anom\Games\Yuki Pop Repeat\v0.2.1\renpy\display\behavior.py", line 401, in run
return action(*args, **kwargs)
File "renpy/common/00action_other.rpy", line 619, in __call__
rv = self.callable(*self.args, **self.kwargs)
File "game/init.rpy", line 1667, in use_item
effect_result = effect_func(*effect_args)
File "game/init.rpy", line 3543, in skill_use_air_control
part_to = get_least_likely_to_pop_part(exclude_part=part_from)
TypeError: get_least_likely_to_pop_part() got an unexpected keyword argument 'exclude_part'
Windows-10-10.0.19041 AMD64
Ren'Py 8.3.8.25060602+nightly
Yuki, Pop, Repeat 0.2.1
Wed Nov 12 13:16:20 2025
[/code]
The get_least_likely_to_pop_part function doesnt take arguments (as the exclude_part). A quick fix can be to implement the behavior of exclusion on the get_least_likely_to_pop_part function, and additionally implement it on the get_most_likely_to_pop_part function for future skills. The fix is (all code line numbers based on original v0.2.1 unaltered files):
[code]
File "game/init.rpy", lines 796-818, in get_least_likely_to_pop_part:
def get_least_likely_to_pop_part(exclude_part=""): # Consider excluded part
...
parts_with_remaining_capacity.pop(exclude_part, None) # Remove the excluded part from options
if not parts_with_remaining_capacity: # All parts are at/over cap or no valid parts
default_parts = ["chest", "belly", "butt"] # Default options for Fallback
default_parts.remove(exclude_part) # Remove the excluded part from fallback options
return renpy.random.choice(default_parts) # Fallback: pick a random part
return max(parts_with_remaining_capacity, key=parts_with_remaining_capacity.get)
[/code]
[code]
File "game/init.rpy", lines 820-849, in get_most_likely_to_pop_part:
def get_most_likely_to_pop_part(exclude_part=""): Consider excluded part
...
parts_with_remaining_capacity.pop(exclude_part, None) # Remove the excluded part from options
if not parts_with_remaining_capacity: # All parts are at/below minimum or no valid parts
return None # No part can be siphoned
# Return the part with the smallest remaining capacity (closest to pop)
# This includes negative remaining capacity (overinflated parts are most likely to pop)
return min(parts_with_remaining_capacity, key=parts_with_remaining_capacity.get)
[/code]
;)