From 0597621c54e0b6b364e120a27ad665886bf9c160 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 24 Mar 2024 18:18:34 +0000 Subject: [PATCH] Random Object Refactoring and a bug fix (by Gouvernathor) --- game/scripts/events/DayNight.rpy | 6 +- game/scripts/interface/door.rpy | 127 +++++++++++++++++-------------- game/scripts/shops/item/menu.rpy | 2 +- 3 files changed, 73 insertions(+), 62 deletions(-) diff --git a/game/scripts/events/DayNight.rpy b/game/scripts/events/DayNight.rpy index 38e943dc..38db7ad3 100644 --- a/game/scripts/events/DayNight.rpy +++ b/game/scripts/events/DayNight.rpy @@ -86,7 +86,8 @@ label day_start: # Randomisers random_gold = renpy.random.randint(8, 40) - map_randomobj = renpy.random.Random() + map_randomobj.seed() + door_randomobj.seed() # Send salary every 7th day if game.day % 7 == 0: @@ -194,7 +195,8 @@ label night_start: # Randomisers random_gold = renpy.random.randint(8, 40) - map_randomobj = renpy.random.Random() + map_randomobj.seed() + door_randomobj.seed() # Update map locations call set_all_map_locations diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index 074839d0..9a2d7f41 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -3,6 +3,71 @@ #################################### default summon_show_busy = True +default door_randomobj = renpy.random.Random() + +init python: + def __choice(seq): + seed = door_randomobj.getstate() + rv = door_randomobj.choice(seq) + door_randomobj.setstate(seed) + return rv + +define map_transcript_loc = dict( + library = "Library", + room_g = "Gryffindor Dormitory", + room_s = "Slytherin Dormitory", + room_r = "Ravenclaw Dormitory", + room_h = "Hufflepuff Dormitory", + great_hall = "Great Hall", + courtyard = "Courtyard", + forest = "Forest", + greenhouse = "Greenhouse", + defense = "D.A.D.A Classroom", + training_grounds = "Training Grounds", + Lake = "Lake", + randomstudent = functools.partial(__choice, ( + "Classroom", + "Bathroom", + "Hagrid's Hut", + "Weasley's Store", + "Mafkin's Store", + "Broom Cupboard", + "Attic")), + randomsnape = functools.partial(__choice, ( + "Classroom", + "Boathouse", + "Bathroom", + "Snape's Office", + "Hall", + "Slytherin Dormitory", + "Library", + "Attic", + "Forest", + "Lake", + "Dungeons", + "Quidditch Cave", + "Staircase", + "Behind your door", + "Room of Doom")), + randomtonks = functools.partial(__choice, ( + "Classroom", + "Bathroom", + "Hall", + "Gryffindor Dormitory", + "Slytherin Dormitory", + "Hufflepuff Dormitory", + "Ravenclaw Dormitory", + "Training Grounds", + "Tonks's Room", + "Quidditch Pitch", + "Infirmary", + "Sex Dungeon", + "Hospital Wing", + "Forest", + "Lake", + "Greenhouse", + "Mafkin's Store")), +) label summon: $ gui.in_context("summon_menu") @@ -11,63 +76,6 @@ label summon: label summon_menu(xx=723, yy=90): $ renpy.dynamic( - map_transcript_loc = { - "library": "Library", - "room_g": "Gryffindor Dormitory", - "room_s": "Slytherin Dormitory", - "room_r": "Ravenclaw Dormitory", - "room_h": "Hufflepuff Dormitory", - "great_hall": "Great Hall", - "courtyard": "Courtyard", - "forest": "Forest", - "greenhouse": "Greenhouse", - "defense": "D.A.D.A Classroom", - "training_grounds": "Training Grounds", - "Lake": "Lake", - "randomstudent": renpy.random.choice(( - "Classroom", - "Bathroom", - "Hagrid's Hut", - "Weasley's Store", - "Mafkin's Store", - "Broom Cupboard", - "Attic")), - "randomsnape": renpy.random.choice(( - "Classroom", - "Boathouse", - "Bathroom", - "Snape's Office", - "Hall", - "Slytherin Dormitory", - "Library", - "Attic", - "Forest", - "Lake", - "Dungeons", - "Quidditch Cave", - "Staircase", - "Behind your door", - "Room of Doom")), - "randomtonks": renpy.random.choice(( - "Classroom", - "Bathroom", - "Hall", - "Gryffindor Dormitory", - "Slytherin Dormitory", - "Hufflepuff Dormitory", - "Ravenclaw Dormitory", - "Training Grounds", - "Tonks' Room", - "Quidditch Pitch", - "Infirmary", - "Sex Dungeon", - "Hospital Wing", - "Forest", - "Lake", - "Greenhouse", - "Mafkin's Store")), - }, - # Door dictionary summon_dict = { # the order will be the one in the menu @@ -179,9 +187,10 @@ screen summon_menu(): xysize (48, 48) add crop_image_zoom("interface/icons/head/"+char_dict["ico"]+".webp", 42, 42, char_dict["busy"]) align (0.5, 0.5) - text map_transcript_loc[char_dict["loc"]] size 10 xalign 0.625 yalign 0.9 xanchor 0.5 + $ loc = map_transcript_loc[char_dict["loc"]] + text (loc() if callable(loc) else loc) size 10 xcenter 0.6 yalign 0.9 if not states.sna.unlocked: text "You don't know anyone" size 12 at truecenter elif allbusy: - text "All characters are busy" size 12 at truecenter + text "All characters are busy" size 12 at truecenter \ No newline at end of file diff --git a/game/scripts/shops/item/menu.rpy b/game/scripts/shops/item/menu.rpy index 252fc388..c3713d1c 100644 --- a/game/scripts/shops/item/menu.rpy +++ b/game/scripts/shops/item/menu.rpy @@ -43,7 +43,7 @@ label shop_item_menu(xx=150, yy=90): show screen shop_item(xx, yy) label .after_init: - $ renpy.dynamix(__choice = ui.interact()) + $ renpy.dynamic(__choice = ui.interact()) if __choice[0] == "select": $ current_item = __choice[1]