Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions worlds/sims4/Names/CareerNames.py
Original file line number Diff line number Diff line change
@@ -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)"
Expand All @@ -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)"
Expand All @@ -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)"
Expand All @@ -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)"
Expand All @@ -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)"
Expand All @@ -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)"
Expand All @@ -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)"
Expand All @@ -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)"
Expand All @@ -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)"
Expand All @@ -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)"
Expand All @@ -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)"
Expand Down
35 changes: 21 additions & 14 deletions worlds/sims4/Options.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from Options import Choice, PerGameCommonOptions, OptionSet, StartInventoryPool, Visibility

from .Names import CareerNames
from .Names.DLC import ExpansionNames, GamePackNames, StuffNames, CASKitNames, BuildKitNames

class AspirationGoal(Choice):
Expand Down Expand Up @@ -29,21 +30,27 @@ 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.
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"
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 = {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}
default = sorted({CareerNames.base_career_athlete})


class ExpansionPacks(OptionSet):
Expand Down
22 changes: 11 additions & 11 deletions worlds/sims4/Rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def set_rules(sims4_world: Sims4World):
# Career Rules

# Athlete
if options.career.value == options.career.option_athlete:
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))
Expand Down Expand Up @@ -66,7 +66,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 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),
Expand Down Expand Up @@ -95,7 +95,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 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),
Expand Down Expand Up @@ -125,7 +125,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 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),
Expand Down Expand Up @@ -157,7 +157,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 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))
Expand Down Expand Up @@ -200,7 +200,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 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))
Expand Down Expand Up @@ -241,7 +241,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 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),
Expand Down Expand Up @@ -269,7 +269,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 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))
Expand Down Expand Up @@ -303,7 +303,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 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),
Expand Down Expand Up @@ -351,7 +351,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 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),
Expand Down Expand Up @@ -385,7 +385,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 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),
Expand Down
27 changes: 9 additions & 18 deletions worlds/sims4/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,26 +102,18 @@ 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)
)
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)
item.classification = item.classification
pool.append(item)

self.multiworld.itempool += pool
Expand All @@ -140,11 +132,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().replace(" ", "_")]:
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)
Expand All @@ -163,9 +156,7 @@ def fill_slot_data(self) -> Mapping[str, Any]:
# slot_data = self.options.as_dict("goal", "career", "expansion_packs", "game_packs", "stuff_packs", "cas_kits", "build_kits")
slot_data = {
"goal": self.options.goal.current_key,
"goal_value": self.options.goal.value,
"career": self.options.career.current_key,
"career_value": self.options.career.value,
"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,
Expand Down
Loading