SMW: v1.1 Content Update (#1344)
* Make Bowser unkillable on Egg Hunt * Increment Data Package version Changed a location name. * Baseline for Bowser Rooms shuffling * Add boss shuffle * Remove extra space * Overworld Palette Shuffle * Fix Literature Trap typo * Handle Queuing traps and new Timer Trap * Fix trap name and actually create them * Early Climb and Overworld Speed * Add correct tooltip for Early Climb * Tooltip text edit * Address unconnected regions * Add option to fully exclude Special Zone levels from the seed * Fix Chocolate Island 4 Dragon Coins logic * Update worlds/smw/Client.py to use `getattr`
This commit is contained in:
@@ -5,12 +5,12 @@ import threading
|
||||
|
||||
from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification
|
||||
from .Items import SMWItem, ItemData, item_table
|
||||
from .Locations import SMWLocation, all_locations, setup_locations
|
||||
from .Locations import SMWLocation, all_locations, setup_locations, special_zone_level_names, special_zone_dragon_coin_names
|
||||
from .Options import smw_options
|
||||
from .Regions import create_regions, connect_regions
|
||||
from .Levels import full_level_list, generate_level_list, location_id_to_level_id
|
||||
from .Rules import set_rules
|
||||
from ..generic.Rules import add_rule
|
||||
from ..generic.Rules import add_rule, exclusion_rules
|
||||
from .Names import ItemName, LocationName
|
||||
from .Client import SMWSNIClient
|
||||
from ..AutoWorld import WebWorld, World
|
||||
@@ -41,7 +41,7 @@ class SMWWorld(World):
|
||||
game: str = "Super Mario World"
|
||||
option_definitions = smw_options
|
||||
topology_present = False
|
||||
data_version = 2
|
||||
data_version = 3
|
||||
required_client_version = (0, 3, 5)
|
||||
|
||||
item_name_to_id = {name: data.code for name, data in item_table.items()}
|
||||
@@ -74,6 +74,10 @@ class SMWWorld(World):
|
||||
|
||||
return slot_data
|
||||
|
||||
def generate_early(self):
|
||||
if self.multiworld.early_climb[self.player]:
|
||||
self.multiworld.local_early_items[self.player][ItemName.mario_climb] = 1
|
||||
|
||||
def generate_basic(self):
|
||||
itempool: typing.List[SMWItem] = []
|
||||
|
||||
@@ -89,6 +93,15 @@ class SMWWorld(World):
|
||||
add_rule(self.multiworld.get_region(LocationName.chocolate_island_1_tile, self.player).entrances[0], lambda state: state.has(ItemName.koopaling, self.player, 5))
|
||||
add_rule(self.multiworld.get_region(LocationName.valley_of_bowser_1_tile, self.player).entrances[0], lambda state: state.has(ItemName.koopaling, self.player, 6))
|
||||
|
||||
if self.multiworld.exclude_special_zone[self.player]:
|
||||
exclusion_pool = set()
|
||||
if self.multiworld.dragon_coin_checks[self.player]:
|
||||
exclusion_pool.update(special_zone_level_names)
|
||||
exclusion_pool.update(special_zone_dragon_coin_names)
|
||||
elif self.multiworld.number_of_yoshi_eggs[self.player].value <= 72:
|
||||
exclusion_pool.update(special_zone_level_names)
|
||||
exclusion_rules(self.multiworld, self.player, exclusion_pool)
|
||||
|
||||
total_required_locations = 96
|
||||
if self.multiworld.dragon_coin_checks[self.player]:
|
||||
total_required_locations += 49
|
||||
@@ -120,6 +133,7 @@ class SMWWorld(World):
|
||||
trap_weights += ([ItemName.ice_trap] * self.multiworld.ice_trap_weight[self.player].value)
|
||||
trap_weights += ([ItemName.stun_trap] * self.multiworld.stun_trap_weight[self.player].value)
|
||||
trap_weights += ([ItemName.literature_trap] * self.multiworld.literature_trap_weight[self.player].value)
|
||||
trap_weights += ([ItemName.timer_trap] * self.multiworld.timer_trap_weight[self.player].value)
|
||||
trap_count = 0 if (len(trap_weights) == 0) else math.ceil(junk_count * (self.multiworld.trap_fill_percentage[self.player].value / 100.0))
|
||||
junk_count -= trap_count
|
||||
|
||||
|
||||
Reference in New Issue
Block a user