Implement get_filler_item_name for various games (#451)
This commit is contained in:
parent
e6e44b8747
commit
dbf0458575
|
@ -8,7 +8,7 @@ from BaseClasses import Item, CollectionState, Tutorial
|
||||||
from .SubClasses import ALttPItem
|
from .SubClasses import ALttPItem
|
||||||
from ..AutoWorld import World, WebWorld, LogicMixin
|
from ..AutoWorld import World, WebWorld, LogicMixin
|
||||||
from .Options import alttp_options, smallkey_shuffle
|
from .Options import alttp_options, smallkey_shuffle
|
||||||
from .Items import as_dict_item_table, item_name_groups, item_table
|
from .Items import as_dict_item_table, item_name_groups, item_table, GetBeemizerItem
|
||||||
from .Regions import lookup_name_to_id, create_regions, mark_light_world_regions
|
from .Regions import lookup_name_to_id, create_regions, mark_light_world_regions
|
||||||
from .Rules import set_rules
|
from .Rules import set_rules
|
||||||
from .ItemPool import generate_itempool, difficulties
|
from .ItemPool import generate_itempool, difficulties
|
||||||
|
@ -17,6 +17,7 @@ from .Dungeons import create_dungeons
|
||||||
from .Rom import LocalRom, patch_rom, patch_race_rom, patch_enemizer, apply_rom_settings, get_hash_string, \
|
from .Rom import LocalRom, patch_rom, patch_race_rom, patch_enemizer, apply_rom_settings, get_hash_string, \
|
||||||
get_base_rom_path, LttPDeltaPatch
|
get_base_rom_path, LttPDeltaPatch
|
||||||
import Patch
|
import Patch
|
||||||
|
from itertools import chain
|
||||||
|
|
||||||
from .InvertedRegions import create_inverted_regions, mark_dark_world_regions
|
from .InvertedRegions import create_inverted_regions, mark_dark_world_regions
|
||||||
from .EntranceShuffle import link_entrances, link_inverted_entrances, plando_connect
|
from .EntranceShuffle import link_entrances, link_inverted_entrances, plando_connect
|
||||||
|
@ -479,7 +480,11 @@ class ALTTPWorld(World):
|
||||||
trash_count -= 1
|
trash_count -= 1
|
||||||
|
|
||||||
def get_filler_item_name(self) -> str:
|
def get_filler_item_name(self) -> str:
|
||||||
return "Rupees (5)" # temporary
|
if self.world.goal[self.player] == "icerodhunt":
|
||||||
|
item = "Nothing"
|
||||||
|
else:
|
||||||
|
item = self.world.random.choice(chain(difficulties[self.world.difficulty[self.player]].extras[0:5]))
|
||||||
|
return GetBeemizerItem(self.world, self.player, item)
|
||||||
|
|
||||||
def get_pre_fill_items(self):
|
def get_pre_fill_items(self):
|
||||||
res = []
|
res = []
|
||||||
|
|
|
@ -70,6 +70,8 @@ class ArchipIDLEWorld(World):
|
||||||
self.world.get_entrance('Entrance to IDLE Zone', self.player)\
|
self.world.get_entrance('Entrance to IDLE Zone', self.player)\
|
||||||
.connect(self.world.get_region('IDLE Zone', self.player))
|
.connect(self.world.get_region('IDLE Zone', self.player))
|
||||||
|
|
||||||
|
def get_filler_item_name(self) -> str:
|
||||||
|
return self.world.random.choice(item_table)
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||||
region = Region(name, None, name, player)
|
region = Region(name, None, name, player)
|
||||||
|
|
|
@ -111,6 +111,8 @@ class FF1World(World):
|
||||||
|
|
||||||
return slot_data
|
return slot_data
|
||||||
|
|
||||||
|
def get_filler_item_name(self) -> str:
|
||||||
|
return self.world.random.choice(["Heal", "Pure", "Soft", "Tent", "Cabin", "House"])
|
||||||
|
|
||||||
def get_options(world: MultiWorld, name: str, player: int):
|
def get_options(world: MultiWorld, name: str, player: int):
|
||||||
return getattr(world, name, None)[player].value
|
return getattr(world, name, None)[player].value
|
||||||
|
|
|
@ -128,6 +128,9 @@ class MinecraftWorld(World):
|
||||||
|
|
||||||
self.world.itempool += itempool
|
self.world.itempool += itempool
|
||||||
|
|
||||||
|
def get_filler_item_name(self) -> str:
|
||||||
|
return self.world.random.choices(list(junk_weights.keys()), weights=list(junk_weights.values()))[0]
|
||||||
|
|
||||||
def set_rules(self):
|
def set_rules(self):
|
||||||
set_advancement_rules(self.world, self.player)
|
set_advancement_rules(self.world, self.player)
|
||||||
set_completion_rules(self.world, self.player)
|
set_completion_rules(self.world, self.player)
|
||||||
|
|
|
@ -1038,3 +1038,6 @@ class OOTWorld(World):
|
||||||
all_state.stale[self.player] = True
|
all_state.stale[self.player] = True
|
||||||
|
|
||||||
return all_state
|
return all_state
|
||||||
|
|
||||||
|
def get_filler_item_name(self) -> str:
|
||||||
|
return get_junk_item(count=1, pool=get_junk_pool(self))[0]
|
||||||
|
|
|
@ -161,6 +161,9 @@ class LegacyWorld(World):
|
||||||
|
|
||||||
self.world.itempool += itempool
|
self.world.itempool += itempool
|
||||||
|
|
||||||
|
def get_filler_item_name(self) -> str:
|
||||||
|
return self.world.random.choice(list(misc_items_table.keys()))
|
||||||
|
|
||||||
def create_regions(self):
|
def create_regions(self):
|
||||||
create_regions(self.world, self.player)
|
create_regions(self.world, self.player)
|
||||||
|
|
||||||
|
|
|
@ -525,6 +525,21 @@ class SMWorld(World):
|
||||||
item = next(x for x in ItemManager.Items.values() if x.Name == name)
|
item = next(x for x in ItemManager.Items.values() if x.Name == name)
|
||||||
return SMItem(item.Name, True, item.Type, self.item_name_to_id[item.Name], player = self.player)
|
return SMItem(item.Name, True, item.Type, self.item_name_to_id[item.Name], player = self.player)
|
||||||
|
|
||||||
|
def get_filler_item_name(self) -> str:
|
||||||
|
if self.world.random.randint(0, 100) < self.world.minor_qty[self.player].value:
|
||||||
|
power_bombs = self.world.power_bomb_qty[self.player].value
|
||||||
|
missiles = self.world.missile_qty[self.player].value
|
||||||
|
super_missiles = self.world.super_qty[self.player].value
|
||||||
|
roll = self.world.random.randint(1, power_bombs + missiles + super_missiles)
|
||||||
|
if roll <= power_bombs:
|
||||||
|
return "Power Bomb"
|
||||||
|
elif roll <= power_bombs + missiles:
|
||||||
|
return "Missile"
|
||||||
|
else:
|
||||||
|
return "Super Missile"
|
||||||
|
else:
|
||||||
|
return "Nothing"
|
||||||
|
|
||||||
def pre_fill(self):
|
def pre_fill(self):
|
||||||
if (self.variaRando.args.morphPlacement == "early") and next((item for item in self.world.itempool if item.player == self.player and item.name == "Morph Ball"), False):
|
if (self.variaRando.args.morphPlacement == "early") and next((item for item in self.world.itempool if item.player == self.player and item.name == "Morph Ball"), False):
|
||||||
viable = []
|
viable = []
|
||||||
|
|
|
@ -104,6 +104,9 @@ class SM64World(World):
|
||||||
self.world.get_location("THI: Bob-omb Buddy", self.player).place_locked_item(self.create_item("Cannon Unlock THI"))
|
self.world.get_location("THI: Bob-omb Buddy", self.player).place_locked_item(self.create_item("Cannon Unlock THI"))
|
||||||
self.world.get_location("RR: Bob-omb Buddy", self.player).place_locked_item(self.create_item("Cannon Unlock RR"))
|
self.world.get_location("RR: Bob-omb Buddy", self.player).place_locked_item(self.create_item("Cannon Unlock RR"))
|
||||||
|
|
||||||
|
def get_filler_item_name(self) -> str:
|
||||||
|
return "1Up Mushroom"
|
||||||
|
|
||||||
def fill_slot_data(self):
|
def fill_slot_data(self):
|
||||||
return {
|
return {
|
||||||
"AreaRando": self.area_connections,
|
"AreaRando": self.area_connections,
|
||||||
|
|
|
@ -336,6 +336,9 @@ class SoEWorld(World):
|
||||||
payload = multidata["connect_names"][self.world.player_name[self.player]]
|
payload = multidata["connect_names"][self.world.player_name[self.player]]
|
||||||
multidata["connect_names"][self.connect_name] = payload
|
multidata["connect_names"][self.connect_name] = payload
|
||||||
|
|
||||||
|
def get_filler_item_name(self) -> str:
|
||||||
|
return self.world.random.choice(list(self.item_name_groups["Ingredients"]))
|
||||||
|
|
||||||
class SoEItem(Item):
|
class SoEItem(Item):
|
||||||
game: str = "Secret of Evermore"
|
game: str = "Secret of Evermore"
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,9 @@ class SpireWorld(World):
|
||||||
slot_data[option_name] = int(option.value)
|
slot_data[option_name] = int(option.value)
|
||||||
return slot_data
|
return slot_data
|
||||||
|
|
||||||
|
def get_filler_item_name(self) -> str:
|
||||||
|
return self.world.random.choice(["Card Draw", "Card Draw", "Card Draw", "Relic", "Relic"])
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||||
ret = Region(name, None, name, player)
|
ret = Region(name, None, name, player)
|
||||||
|
|
Loading…
Reference in New Issue