From 504341b23f22241545542c79dc23ead0112f5829 Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Sun, 6 Apr 2025 10:49:04 -0600 Subject: [PATCH 01/10] change career to be an optionset, allowing multiple careers to be selected --- worlds/sims4/Options.py | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/worlds/sims4/Options.py b/worlds/sims4/Options.py index 255beaa3bf58..8729fd403d61 100644 --- a/worlds/sims4/Options.py +++ b/worlds/sims4/Options.py @@ -27,21 +27,11 @@ class AspirationGoal(Choice): -class Career(Choice): - """The career that will be the only one included in the locations""" +class Career(OptionSet): + """The careers that will be included in the shuffling.""" display_name = "career" - default = 1 - option_astronaut = 0 - option_athlete = 1 - option_business = 2 - option_criminal = 3 - option_culinary = 4 - option_entertainer = 5 - option_painter = 6 - option_secret_agent = 7 - option_style_influencer = 8 - option_tech_guru = 9 - option_writer = 10 + valid_keys = {"Astronaut", "Athlete", "Business", "Criminal", "Culinary", "Entertainer", "Painter", + "Secret Agent", "Style Influencer", "Tech Guru", "Writer"} class ExpansionPacks(OptionSet): From b92b7fdf3d9b4416175a000be82ebe8f3bc727a5 Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Sun, 6 Apr 2025 10:49:16 -0600 Subject: [PATCH 02/10] refactor rules to account for change in career option --- worlds/sims4/Rules.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/worlds/sims4/Rules.py b/worlds/sims4/Rules.py index b412505c5c5b..da478a05e6a1 100644 --- a/worlds/sims4/Rules.py +++ b/worlds/sims4/Rules.py @@ -23,7 +23,7 @@ def set_rules(sims4_world: "Sims4World"): # Career Rules # Athlete - if options.career.value == options.career.option_athlete: + if "Athlete" in options.career: set_rule(world.get_location(CareerNames.base_career_athlete_4, player), lambda state: state.has(SkillNames.base_skill_charisma, player, count=1) and state.has(SkillNames.base_skill_fitness, player, count=1)) @@ -64,7 +64,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_charisma, player, count=6) and state.has(SkillNames.base_skill_fitness, player, count=8)) # Astronaut - elif options.career.value == options.career.option_astronaut: + if "Astronaut" in options.career: set_rule(world.get_location(CareerNames.base_career_astronaut_4, player), lambda state: state.has(SkillNames.base_skill_logic, player, count=1)) set_rule(world.get_location(CareerNames.base_career_astronaut_5, player), @@ -93,7 +93,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_rocket_science, player, count=2) and state.has(SkillNames.base_skill_fitness, player, count=8)) # Business - elif options.career.value == options.career.option_business: + if "Business" in options.career: set_rule(world.get_location(CareerNames.base_career_business_5, player), lambda state: state.has(SkillNames.base_skill_charisma, player, count=1)) set_rule(world.get_location(CareerNames.base_career_business_6, player), @@ -123,7 +123,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_charisma, player, count=6) and state.has(SkillNames.base_skill_logic, player, count=8)) # Criminal - elif options.career.value == options.career.option_criminal: + if "Criminal" in options.career: set_rule(world.get_location(CareerNames.base_career_criminal_4, player), lambda state: state.has(SkillNames.base_skill_mischief, player, count=1)) set_rule(world.get_location(CareerNames.base_career_criminal_5, player), @@ -155,7 +155,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_mischief, player, count=8) and state.has(SkillNames.base_skill_programming, player, count=6)) # Culinary - elif options.career.value == options.career.option_culinary: + if "Culinary" in options.career: set_rule(world.get_location(CareerNames.base_career_culinary_5, player), lambda state: state.has(SkillNames.base_skill_cooking, player, count=1) and state.has(SkillNames.base_skill_mixology, player, count=1)) @@ -198,7 +198,7 @@ def set_rules(sims4_world: "Sims4World"): and state.has(SkillNames.base_skill_charisma, player, count=6) and state.has(SkillNames.base_skill_cooking, player, count=2)) # Entertainer - elif options.career.value == options.career.option_entertainer: + if "Entertainer" in options.career: set_rule(world.get_location(CareerNames.base_career_entertainer_5A, player), lambda state: (state.has(SkillNames.base_skill_guitar, player, count=1) or state.has(SkillNames.base_skill_violin, player, count=1)) @@ -239,7 +239,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_comedy, player, count=8) and state.has(SkillNames.base_skill_charisma, player, count=6)) # Painter - elif options.career.value == options.career.option_painter: + if "Painter" in options.career: set_rule(world.get_location(CareerNames.base_career_painter_4, player), lambda state: state.has(SkillNames.base_skill_painting, player, count=2)) set_rule(world.get_location(CareerNames.base_career_painter_5, player), @@ -267,7 +267,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_painting, player, count=8) and state.has(SkillNames.base_skill_charisma, player, count=4)) # Secret Agent - elif options.career.value == options.career.option_secret_agent: + if "Secret Agent" in options.career: set_rule(world.get_location(CareerNames.base_career_secret_agent_4, player), lambda state: state.has(SkillNames.base_skill_logic, player, count=1) and state.has(SkillNames.base_skill_charisma, player, count=1)) @@ -301,7 +301,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_logic, player, count=8) and state.has(SkillNames.base_skill_mischief, player, count=4)) # Style Influencer - elif options.career.value == options.career.option_style_influencer: + if "Style Influencer" in options.career: set_rule(world.get_location(CareerNames.base_career_style_influencer_4, player), lambda state: state.has(SkillNames.base_skill_writing, player, count=1)) set_rule(world.get_location(CareerNames.base_career_style_influencer_5, player), @@ -349,7 +349,7 @@ def set_rules(sims4_world: "Sims4World"): and state.has(SkillNames.base_skill_charisma, player, count=6) and state.has(SkillNames.base_skill_painting, player, count=5)) # Tech Guru - elif options.career.value == options.career.option_tech_guru: + if "Tech Guru" in options.career: set_rule(world.get_location(CareerNames.base_career_tech_guru_4, player), lambda state: state.has(SkillNames.base_skill_programming, player, count=1)) set_rule(world.get_location(CareerNames.base_career_tech_guru_5, player), @@ -383,7 +383,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_programming, player, count=8) and state.has(SkillNames.base_skill_charisma, player, count=4)) # Writer - elif options.career.value == options.career.option_writer: + if "Writer" in options.career: set_rule(world.get_location(CareerNames.base_career_writer_4, player), lambda state: state.has(SkillNames.base_skill_writing, player, count=1)) set_rule(world.get_location(CareerNames.base_career_writer_5, player), From 39a3800536dc7f2e538c5e1dec70997fe28f5219 Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Sun, 6 Apr 2025 10:58:21 -0600 Subject: [PATCH 03/10] add valid careers to the docstring --- worlds/sims4/Options.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/worlds/sims4/Options.py b/worlds/sims4/Options.py index 8729fd403d61..960cf30916e4 100644 --- a/worlds/sims4/Options.py +++ b/worlds/sims4/Options.py @@ -28,7 +28,20 @@ class AspirationGoal(Choice): class Career(OptionSet): - """The careers that will be included in the shuffling.""" + """The careers that will be included in the shuffling. + Valid Careers include: + - Astronaut + - Athlete + - Business + - Criminal + - Culinary + - Entertainer + - Painter + - Secret Agent + - Style Influencer + - Tech Guru + - Writer + Currently only Base Game Careers are supported. Part-Time Jobs are not yet able to be included in the shuffling.""" display_name = "career" valid_keys = {"Astronaut", "Athlete", "Business", "Criminal", "Culinary", "Entertainer", "Painter", "Secret Agent", "Style Influencer", "Tech Guru", "Writer"} From d09fc2bb6d6e8f031c2a3bba6a6d83011366df04 Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Sun, 6 Apr 2025 11:05:28 -0600 Subject: [PATCH 04/10] add base game careers (titles) to CareerNames --- worlds/sims4/Names/CareerNames.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/worlds/sims4/Names/CareerNames.py b/worlds/sims4/Names/CareerNames.py index 6ba3aadf3db9..2090dd0273df 100644 --- a/worlds/sims4/Names/CareerNames.py +++ b/worlds/sims4/Names/CareerNames.py @@ -1,5 +1,6 @@ # Base game careers # Astronaut +base_career_astronaut = "Astronaut" base_career_astronaut_2 = "Module Cleaner (Astronaut 2)" base_career_astronaut_3 = "Technician (Astronaut 3)" base_career_astronaut_4 = "Command Center Lead (Astronaut 4)" @@ -13,6 +14,7 @@ base_career_astronaut_9B = "Alien Goods Trader (Astronaut / Interstellar Smuggler 9)" base_career_astronaut_10B = "Interstellar Smuggler (Astronaut / Interstellar Smuggler 10)" # Athlete +base_career_athlete = "Athlete" base_career_athlete_2 = "Locker Room Attendant (Athlete 2)" base_career_athlete_3 = "Team Mascot (Athlete 3)" base_career_athlete_4 = "Dance Team Captain (Athlete 4)" @@ -29,6 +31,7 @@ base_career_athlete_9B = "Celebrity Bodybuilder (Athlete / Bodybuilder 9)" base_career_athlete_10B = "Mr. / Mrs. Solar System (Athlete / Bodybuilder 10)" # Business +base_career_business = "Business" base_career_business_2 = "Office Assistant (Business 2)" base_career_business_3 = "Assistant to the Manager (Business 3)" base_career_business_4 = "Assistant Manager (Business 4)" @@ -43,6 +46,7 @@ base_career_business_9B = "Corporate Raider (Business / Investor 9)" base_career_business_10B = "Angel Investor (Business / Investor 10)" # Criminal +base_career_criminal = "Criminal" base_career_criminal_2 = "Petty Thief (Criminal 2)" base_career_criminal_3 = "Ringleader (Criminal 3)" base_career_criminal_4 = "Felonius Monk (Criminal 4)" @@ -58,6 +62,7 @@ base_career_criminal_9B = "Net Demon (Criminal / Oracle 9)" base_career_criminal_10B = "The Oracle (Criminal / Oracle 10)" # Culinary +base_career_culinary = "Culinary" base_career_culinary_2 = "Head Dishwasher (Culinary 2)" base_career_culinary_3 = "Caterer (Culinary 3)" base_career_culinary_4 = "Mixologist (Culinary 4)" @@ -73,6 +78,7 @@ base_career_culinary_9B = "Drinkmaster (Culinary / Mixologist 9)" base_career_culinary_10B = "Celebrity Mixologist (Culinary / Mixologist 10)" # Entertainer +base_career_entertainer = "Entertainer" base_career_entertainer_2 = "Open Mic Seeker (Entertainer 2)" base_career_entertainer_3 = "C-Lister (Entertainer 3)" base_career_entertainer_4 = "Opening Act (Entertainer 4)" @@ -89,6 +95,7 @@ base_career_entertainer_9B = "Stand Up Star (Entertainer / Comedian 9)" base_career_entertainer_10B = "Show Stopper (Entertainer / Comedian 10)" # Painter +base_career_painter = "Painter" base_career_painter_2 = "Art Book Collator (Painter 2)" base_career_painter_3 = "Hungry Artist (Painter 3)" base_career_painter_4 = "Watercolor Dabbler (Painter 4)" @@ -103,6 +110,7 @@ base_career_painter_9B = "Composition Curator (Painter / Patron of the Arts 9)" base_career_painter_10B = "Patron of the Arts (Painter / Patron of the Arts 10)" # Secret Agent +base_career_secret_agent = "Secret Agent" base_career_secret_agent_2 = "Intelligence Researcher (Secret Agent 2)" base_career_secret_agent_3 = "Agent Handler (Secret Agent 3)" base_career_secret_agent_4 = "Field Agent (Secret Agent 4)" @@ -117,6 +125,7 @@ base_career_secret_agent_10B = "Supreme Villain (Secret Agent / Villain 10)" base_career_secret_agent_11B = "Triple Agent (Secret Agent / Villain 11)" # Style Influencer +base_career_style_influencer = "Style Influencer" base_career_style_influencer_2 = "Consignment Commentator (Style Influencer 2)" base_career_style_influencer_3 = "Wearable Wordsmith (Style Influencer 3)" base_career_style_influencer_4 = "Ensemble Author (Style Influencer 4)" @@ -132,6 +141,7 @@ base_career_style_influencer_9B = "It Sim (Style Influencer / Trend Setter 9)" base_career_style_influencer_10B = "Icon O'Class (Style Influencer / Trend Setter 10)" # Tech Guru +base_career_tech_guru = "Tech Guru" base_career_tech_guru_2 = "Quality Assurance (Tech Guru 2)" base_career_tech_guru_3 = "Code Monkey (Tech Guru 3)" base_career_tech_guru_4 = "Ace Engineer (Tech Guru 4)" @@ -147,6 +157,7 @@ base_career_tech_guru_10B = "Start-up Genius (Tech Guru / Start-up Entrepreneur 10)" # Writer +base_career_writer = "Writer" base_career_writer_2 = "Blogger (Writer 2)" base_career_writer_3 = "Freelance Article Writer (Writer 3)" base_career_writer_4 = "Advice Columnist (Writer 4)" From d6540de8b55d4cfc92c11e9792ca03d447ff9d4c Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Sun, 6 Apr 2025 11:06:00 -0600 Subject: [PATCH 05/10] use the variables for career names instead of strings --- worlds/sims4/Options.py | 7 +++++-- worlds/sims4/Rules.py | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/worlds/sims4/Options.py b/worlds/sims4/Options.py index 960cf30916e4..7043ac03d86b 100644 --- a/worlds/sims4/Options.py +++ b/worlds/sims4/Options.py @@ -1,5 +1,6 @@ from dataclasses import dataclass from Options import Choice, PerGameCommonOptions, OptionSet, Visibility +from .Names import CareerNames from .Names.DLC import ExpansionNames, GamePackNames, StuffNames, CASKitNames, BuildKitNames class AspirationGoal(Choice): @@ -43,8 +44,10 @@ class Career(OptionSet): - Writer Currently only Base Game Careers are supported. Part-Time Jobs are not yet able to be included in the shuffling.""" display_name = "career" - valid_keys = {"Astronaut", "Athlete", "Business", "Criminal", "Culinary", "Entertainer", "Painter", - "Secret Agent", "Style Influencer", "Tech Guru", "Writer"} + valid_keys = {CareerNames.base_career_astronaut, CareerNames.base_career_athlete, CareerNames.base_career_business, + CareerNames.base_career_criminal, CareerNames.base_career_culinary, CareerNames.base_career_entertainer, + CareerNames.base_career_painter, CareerNames.base_career_secret_agent, CareerNames.base_career_style_influencer, + CareerNames.base_career_tech_guru, CareerNames.base_career_writer} class ExpansionPacks(OptionSet): diff --git a/worlds/sims4/Rules.py b/worlds/sims4/Rules.py index da478a05e6a1..2d90cc1909d8 100644 --- a/worlds/sims4/Rules.py +++ b/worlds/sims4/Rules.py @@ -23,7 +23,7 @@ def set_rules(sims4_world: "Sims4World"): # Career Rules # Athlete - if "Athlete" in options.career: + if CareerNames.base_career_athlete in options.career: set_rule(world.get_location(CareerNames.base_career_athlete_4, player), lambda state: state.has(SkillNames.base_skill_charisma, player, count=1) and state.has(SkillNames.base_skill_fitness, player, count=1)) @@ -64,7 +64,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_charisma, player, count=6) and state.has(SkillNames.base_skill_fitness, player, count=8)) # Astronaut - if "Astronaut" in options.career: + if CareerNames.base_career_astronaut in options.career: set_rule(world.get_location(CareerNames.base_career_astronaut_4, player), lambda state: state.has(SkillNames.base_skill_logic, player, count=1)) set_rule(world.get_location(CareerNames.base_career_astronaut_5, player), @@ -93,7 +93,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_rocket_science, player, count=2) and state.has(SkillNames.base_skill_fitness, player, count=8)) # Business - if "Business" in options.career: + if CareerNames.base_career_business in options.career: set_rule(world.get_location(CareerNames.base_career_business_5, player), lambda state: state.has(SkillNames.base_skill_charisma, player, count=1)) set_rule(world.get_location(CareerNames.base_career_business_6, player), @@ -123,7 +123,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_charisma, player, count=6) and state.has(SkillNames.base_skill_logic, player, count=8)) # Criminal - if "Criminal" in options.career: + if CareerNames.base_career_criminal in options.career: set_rule(world.get_location(CareerNames.base_career_criminal_4, player), lambda state: state.has(SkillNames.base_skill_mischief, player, count=1)) set_rule(world.get_location(CareerNames.base_career_criminal_5, player), @@ -155,7 +155,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_mischief, player, count=8) and state.has(SkillNames.base_skill_programming, player, count=6)) # Culinary - if "Culinary" in options.career: + if CareerNames.base_career_culinary in options.career: set_rule(world.get_location(CareerNames.base_career_culinary_5, player), lambda state: state.has(SkillNames.base_skill_cooking, player, count=1) and state.has(SkillNames.base_skill_mixology, player, count=1)) @@ -198,7 +198,7 @@ def set_rules(sims4_world: "Sims4World"): and state.has(SkillNames.base_skill_charisma, player, count=6) and state.has(SkillNames.base_skill_cooking, player, count=2)) # Entertainer - if "Entertainer" in options.career: + if CareerNames.base_career_entertainer in options.career: set_rule(world.get_location(CareerNames.base_career_entertainer_5A, player), lambda state: (state.has(SkillNames.base_skill_guitar, player, count=1) or state.has(SkillNames.base_skill_violin, player, count=1)) @@ -239,7 +239,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_comedy, player, count=8) and state.has(SkillNames.base_skill_charisma, player, count=6)) # Painter - if "Painter" in options.career: + if CareerNames.base_career_painter in options.career: set_rule(world.get_location(CareerNames.base_career_painter_4, player), lambda state: state.has(SkillNames.base_skill_painting, player, count=2)) set_rule(world.get_location(CareerNames.base_career_painter_5, player), @@ -267,7 +267,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_painting, player, count=8) and state.has(SkillNames.base_skill_charisma, player, count=4)) # Secret Agent - if "Secret Agent" in options.career: + if CareerNames.base_career_secret_agent in options.career: set_rule(world.get_location(CareerNames.base_career_secret_agent_4, player), lambda state: state.has(SkillNames.base_skill_logic, player, count=1) and state.has(SkillNames.base_skill_charisma, player, count=1)) @@ -301,7 +301,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_logic, player, count=8) and state.has(SkillNames.base_skill_mischief, player, count=4)) # Style Influencer - if "Style Influencer" in options.career: + if CareerNames.base_career_style_influencer in options.career: set_rule(world.get_location(CareerNames.base_career_style_influencer_4, player), lambda state: state.has(SkillNames.base_skill_writing, player, count=1)) set_rule(world.get_location(CareerNames.base_career_style_influencer_5, player), @@ -349,7 +349,7 @@ def set_rules(sims4_world: "Sims4World"): and state.has(SkillNames.base_skill_charisma, player, count=6) and state.has(SkillNames.base_skill_painting, player, count=5)) # Tech Guru - if "Tech Guru" in options.career: + if CareerNames.base_career_tech_guru in options.career: set_rule(world.get_location(CareerNames.base_career_tech_guru_4, player), lambda state: state.has(SkillNames.base_skill_programming, player, count=1)) set_rule(world.get_location(CareerNames.base_career_tech_guru_5, player), @@ -383,7 +383,7 @@ def set_rules(sims4_world: "Sims4World"): lambda state: state.has(SkillNames.base_skill_programming, player, count=8) and state.has(SkillNames.base_skill_charisma, player, count=4)) # Writer - if "Writer" in options.career: + if CareerNames.base_career_writer in options.career: set_rule(world.get_location(CareerNames.base_career_writer_4, player), lambda state: state.has(SkillNames.base_skill_writing, player, count=1)) set_rule(world.get_location(CareerNames.base_career_writer_5, player), From 9d9090fd27e05f59097914e63b7150980cccf2b2 Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Sun, 6 Apr 2025 11:19:47 -0600 Subject: [PATCH 06/10] define a default for the option --- worlds/sims4/Options.py | 1 + 1 file changed, 1 insertion(+) diff --git a/worlds/sims4/Options.py b/worlds/sims4/Options.py index 7043ac03d86b..592614528edd 100644 --- a/worlds/sims4/Options.py +++ b/worlds/sims4/Options.py @@ -48,6 +48,7 @@ class Career(OptionSet): CareerNames.base_career_criminal, CareerNames.base_career_culinary, CareerNames.base_career_entertainer, CareerNames.base_career_painter, CareerNames.base_career_secret_agent, CareerNames.base_career_style_influencer, CareerNames.base_career_tech_guru, CareerNames.base_career_writer} + default = sorted({CareerNames.base_career_athlete}) class ExpansionPacks(OptionSet): From bcf9eb940de36a477a02065797999610b2be1a49 Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Fri, 9 May 2025 18:59:17 -0600 Subject: [PATCH 07/10] refactor create items to get the unfilled locations in a better way --- worlds/sims4/__init__.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/worlds/sims4/__init__.py b/worlds/sims4/__init__.py index c1ce86b43e9b..5509fe8cc039 100644 --- a/worlds/sims4/__init__.py +++ b/worlds/sims4/__init__.py @@ -62,16 +62,9 @@ def create_event(self, event: str): return Sims4Item(event, ItemClassification.progression, None, self.player) def create_items(self) -> None: - career_key = self.options.career.current_key - aspiration_key = self.options.goal.current_key - pool = [] - count_to_fill = ( - len(sims4_careers[career_key]) + - len(sims4_aspiration_milestones[aspiration_key]) + - len(skill_locations_table) - ) + count_to_fill = len(self.multiworld.get_unfilled_locations(self.player)) for item in item_table.values(): for i in range(item["count"]): sims4_item = self.create_item(item["name"]) @@ -81,7 +74,6 @@ def create_items(self) -> None: for item_name in self.random.choices(sorted(filler_set), k=count_to_fill): item = self.create_item(item_name) - item.classification = item.classification pool.append(item) self.multiworld.itempool += pool From c542bc0477cf858feab5e4da5756807ac5027a6d Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Fri, 9 May 2025 19:01:35 -0600 Subject: [PATCH 08/10] rename variables to be more descriptive --- worlds/sims4/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/worlds/sims4/__init__.py b/worlds/sims4/__init__.py index 5509fe8cc039..5e4afba4de50 100644 --- a/worlds/sims4/__init__.py +++ b/worlds/sims4/__init__.py @@ -64,15 +64,15 @@ def create_event(self, event: str): def create_items(self) -> None: pool = [] - count_to_fill = len(self.multiworld.get_unfilled_locations(self.player)) + unfilled_locations = len(self.multiworld.get_unfilled_locations(self.player)) for item in item_table.values(): for i in range(item["count"]): sims4_item = self.create_item(item["name"]) pool.append(sims4_item) - count_to_fill = count_to_fill - len(pool) + filler_needed = unfilled_locations - len(pool) - for item_name in self.random.choices(sorted(filler_set), k=count_to_fill): + for item_name in self.random.choices(sorted(filler_set), k=filler_needed): item = self.create_item(item_name) pool.append(item) From 2bbe2034572914cce22b09e23994c2966f66a961 Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Fri, 9 May 2025 19:20:28 -0600 Subject: [PATCH 09/10] okay we're cooking with gas --- worlds/sims4/__init__.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/worlds/sims4/__init__.py b/worlds/sims4/__init__.py index 5e4afba4de50..7b5342ec4671 100644 --- a/worlds/sims4/__init__.py +++ b/worlds/sims4/__init__.py @@ -92,11 +92,12 @@ def create_region(self, name: str, locations=None, exits=None): def create_regions(self): menu = self.create_region("Menu", locations=None, exits=None) - career_key = self.options.career.current_key + chosen_careers = sorted(self.options.career.value) aspiration_key = self.options.goal.current_key - for career in sims4_careers[career_key]: - menu.locations.append( - Sims4Location(self.player, career, self.location_name_to_id.get(career), menu)) + for career_key in chosen_careers: + for career in sims4_careers[career_key.lower()]: + menu.locations.append( + Sims4Location(self.player, career, self.location_name_to_id.get(career), menu)) for aspiration in sims4_aspiration_milestones[aspiration_key]: menu.locations.append( Sims4Location(self.player, aspiration, self.location_name_to_id.get(aspiration), menu) @@ -111,7 +112,7 @@ def create_regions(self): def fill_slot_data(self) -> Mapping[str, Any]: slot_data = { "goal": self.options.goal.current_key, - "career": self.options.career.current_key, + "career": self.options.career.value, "expansion_packs": self.options.expansion_packs.value, "game_packs": self.options.game_packs.value, "stuff_packs": self.options.stuff_packs.value, From 599deb7ef7ab1630f216b7c4fbf0b036eb146aa9 Mon Sep 17 00:00:00 2001 From: Benny Dreamly Date: Fri, 9 May 2025 22:03:27 -0600 Subject: [PATCH 10/10] make sure spaces work --- worlds/sims4/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/sims4/__init__.py b/worlds/sims4/__init__.py index 7b5342ec4671..ea519895e77f 100644 --- a/worlds/sims4/__init__.py +++ b/worlds/sims4/__init__.py @@ -95,7 +95,7 @@ def create_regions(self): chosen_careers = sorted(self.options.career.value) aspiration_key = self.options.goal.current_key for career_key in chosen_careers: - for career in sims4_careers[career_key.lower()]: + for career in sims4_careers[career_key.lower().replace(" ", "_")]: menu.locations.append( Sims4Location(self.player, career, self.location_name_to_id.get(career), menu)) for aspiration in sims4_aspiration_milestones[aspiration_key]: