Timespinner: Bring back starter progression item (#1508)
This commit is contained in:
parent
5a8e6e61f5
commit
d57314a407
|
@ -239,6 +239,22 @@ starter_spells: Tuple[str, ...] = (
|
||||||
'Corruption'
|
'Corruption'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# weighted
|
||||||
|
starter_progression_items: Tuple[str, ...] = (
|
||||||
|
'Talaria Attachment',
|
||||||
|
'Talaria Attachment',
|
||||||
|
'Succubus Hairpin',
|
||||||
|
'Succubus Hairpin',
|
||||||
|
'Timespinner Wheel',
|
||||||
|
'Timespinner Wheel',
|
||||||
|
'Twin Pyramid Key',
|
||||||
|
'Celestial Sash',
|
||||||
|
'Lightwall',
|
||||||
|
'Modern Warp Beacon',
|
||||||
|
'Timeworn Warp Beacon',
|
||||||
|
'Mysterious Warp Beacon'
|
||||||
|
)
|
||||||
|
|
||||||
filler_items: Tuple[str, ...] = (
|
filler_items: Tuple[str, ...] = (
|
||||||
'Potion',
|
'Potion',
|
||||||
'Ether',
|
'Ether',
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from typing import Dict, List, Set, Tuple, TextIO, Union
|
from typing import Dict, List, Set, Tuple, TextIO, Union
|
||||||
from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification
|
from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification
|
||||||
from .Items import get_item_names_per_category, item_table, starter_melee_weapons, starter_spells, filler_items
|
from .Items import get_item_names_per_category
|
||||||
|
from .Items import item_table, starter_melee_weapons, starter_spells, filler_items, starter_progression_items
|
||||||
from .Locations import get_location_datas, EventId
|
from .Locations import get_location_datas, EventId
|
||||||
from .Options import is_option_enabled, get_option_value, timespinner_options
|
from .Options import is_option_enabled, get_option_value, timespinner_options
|
||||||
from .PreCalculatedWeights import PreCalculatedWeights
|
from .PreCalculatedWeights import PreCalculatedWeights
|
||||||
|
@ -70,6 +71,7 @@ class TimespinnerWorld(World):
|
||||||
excluded_items: Set[str] = self.get_excluded_items()
|
excluded_items: Set[str] = self.get_excluded_items()
|
||||||
|
|
||||||
self.assign_starter_items(excluded_items)
|
self.assign_starter_items(excluded_items)
|
||||||
|
self.place_first_progression_item(excluded_items)
|
||||||
|
|
||||||
self.multiworld.itempool += self.get_item_pool(excluded_items)
|
self.multiworld.itempool += self.get_item_pool(excluded_items)
|
||||||
|
|
||||||
|
@ -241,9 +243,32 @@ class TimespinnerWorld(World):
|
||||||
def assign_starter_item(self, excluded_items: Set[str], location: str, item_list: Tuple[str, ...]) -> None:
|
def assign_starter_item(self, excluded_items: Set[str], location: str, item_list: Tuple[str, ...]) -> None:
|
||||||
item_name = self.multiworld.random.choice(item_list)
|
item_name = self.multiworld.random.choice(item_list)
|
||||||
|
|
||||||
excluded_items.add(item_name)
|
self.place_locked_item(excluded_items, location, item_name)
|
||||||
|
|
||||||
item = self.create_item(item_name)
|
def place_first_progression_item(self, excluded_items: Set[str]) -> None:
|
||||||
|
if self.is_option_enabled("QuickSeed") or self.is_option_enabled("Inverted") \
|
||||||
|
or self.precalculated_weights.flood_lake_desolation:
|
||||||
|
return
|
||||||
|
|
||||||
|
for item in self.multiworld.precollected_items[self.player]:
|
||||||
|
if item.name in starter_progression_items and not item.name in excluded_items:
|
||||||
|
return
|
||||||
|
|
||||||
|
local_starter_progression_items = tuple(
|
||||||
|
item for item in starter_progression_items
|
||||||
|
if item not in excluded_items and item not in self.multiworld.non_local_items[self.player].value)
|
||||||
|
|
||||||
|
if not local_starter_progression_items:
|
||||||
|
return
|
||||||
|
|
||||||
|
progression_item = self.multiworld.random.choice(local_starter_progression_items)
|
||||||
|
|
||||||
|
self.multiworld.local_early_items[self.player][progression_item] = 1
|
||||||
|
|
||||||
|
def place_locked_item(self, excluded_items: Set[str], location: str, item: str) -> None:
|
||||||
|
excluded_items.add(item)
|
||||||
|
|
||||||
|
item = self.create_item(item)
|
||||||
|
|
||||||
self.multiworld.get_location(location, self.player).place_locked_item(item)
|
self.multiworld.get_location(location, self.player).place_locked_item(item)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue