@@ -357,25 +357,51 @@ def set_special_order_rules(all_location_names: List[str], logic: StardewLogic,
357
357
MultiWorldRules .set_rule (multi_world .get_location (qi_order .name , player ), order_rule .simplify ())
358
358
359
359
360
+ help_wanted_prefix = "Help Wanted:"
361
+ item_delivery = "Item Delivery"
362
+ gathering = "Gathering"
363
+ fishing = "Fishing"
364
+ slay_monsters = "Slay Monsters"
365
+
366
+
360
367
def set_help_wanted_quests_rules (logic : StardewLogic , multi_world , player , world_options ):
361
- desired_number_help_wanted : int = world_options [options .HelpWantedLocations ] // 7
362
- for i in range (0 , desired_number_help_wanted ):
363
- prefix = "Help Wanted:"
364
- delivery = "Item Delivery"
365
- rule = logic .has_lived_months (i ).simplify ()
366
- fishing_rule = rule & logic .can_fish ()
367
- slay_rule = rule & logic .can_do_combat_at_level ("Basic" )
368
- item_delivery_index = (i * 4 ) + 1
369
- for j in range (item_delivery_index , item_delivery_index + 4 ):
370
- location_name = f"{ prefix } { delivery } { j } "
371
- MultiWorldRules .set_rule (multi_world .get_location (location_name , player ), rule )
372
-
373
- MultiWorldRules .set_rule (multi_world .get_location (f"{ prefix } Gathering { i + 1 } " , player ),
374
- rule )
375
- MultiWorldRules .set_rule (multi_world .get_location (f"{ prefix } Fishing { i + 1 } " , player ),
376
- fishing_rule .simplify ())
377
- MultiWorldRules .set_rule (multi_world .get_location (f"{ prefix } Slay Monsters { i + 1 } " , player ),
378
- slay_rule .simplify ())
368
+ help_wanted_number = world_options [options .HelpWantedLocations ]
369
+ for i in range (0 , help_wanted_number ):
370
+ set_number = i // 7
371
+ month_rule = logic .has_lived_months (set_number ).simplify ()
372
+ quest_number = set_number + 1
373
+ quest_number_in_set = i % 7
374
+ if quest_number_in_set < 4 :
375
+ quest_number = set_number * 4 + quest_number_in_set + 1
376
+ set_help_wanted_delivery_rule (multi_world , player , month_rule , quest_number )
377
+ elif quest_number_in_set == 4 :
378
+ set_help_wanted_fishing_rule (logic , multi_world , player , month_rule , quest_number )
379
+ elif quest_number_in_set == 5 :
380
+ set_help_wanted_slay_monsters_rule (logic , multi_world , player , month_rule , quest_number )
381
+ elif quest_number_in_set == 6 :
382
+ set_help_wanted_gathering_rule (multi_world , player , month_rule , quest_number )
383
+
384
+
385
+ def set_help_wanted_delivery_rule (multi_world , player , month_rule , quest_number ):
386
+ location_name = f"{ help_wanted_prefix } { item_delivery } { quest_number } "
387
+ MultiWorldRules .set_rule (multi_world .get_location (location_name , player ), month_rule )
388
+
389
+
390
+ def set_help_wanted_gathering_rule (multi_world , player , month_rule , quest_number ):
391
+ location_name = f"{ help_wanted_prefix } { gathering } { quest_number } "
392
+ MultiWorldRules .set_rule (multi_world .get_location (location_name , player ), month_rule )
393
+
394
+
395
+ def set_help_wanted_fishing_rule (logic : StardewLogic , multi_world , player , month_rule , quest_number ):
396
+ location_name = f"{ help_wanted_prefix } { fishing } { quest_number } "
397
+ fishing_rule = month_rule & logic .can_fish ()
398
+ MultiWorldRules .set_rule (multi_world .get_location (location_name , player ), fishing_rule .simplify ())
399
+
400
+
401
+ def set_help_wanted_slay_monsters_rule (logic : StardewLogic , multi_world , player , month_rule , quest_number ):
402
+ location_name = f"{ help_wanted_prefix } { slay_monsters } { quest_number } "
403
+ slay_rule = month_rule & logic .can_do_combat_at_level ("Basic" )
404
+ MultiWorldRules .set_rule (multi_world .get_location (location_name , player ), slay_rule .simplify ())
379
405
380
406
381
407
def set_fishsanity_rules (all_location_names : List [str ], logic : StardewLogic , multi_world : MultiWorld , player : int ):
0 commit comments