Compare commits

..

1 Commits

Author SHA1 Message Date
NewSoupVi
5e8af01cca Update options.py 2024-11-24 21:39:53 +01:00
12 changed files with 12 additions and 27 deletions

View File

@@ -53,7 +53,7 @@
<table class="range-rows" data-option="{{ option_name }}"> <table class="range-rows" data-option="{{ option_name }}">
<tbody> <tbody>
{{ RangeRow(option_name, option, option.range_start, option.range_start, True) }} {{ RangeRow(option_name, option, option.range_start, option.range_start, True) }}
{% if option.default is number and option.range_start < option.default < option.range_end %} {% if option.range_start < option.default < option.range_end %}
{{ RangeRow(option_name, option, option.default, option.default, True) }} {{ RangeRow(option_name, option, option.default, option.default, True) }}
{% endif %} {% endif %}
{{ RangeRow(option_name, option, option.range_end, option.range_end, True) }} {{ RangeRow(option_name, option, option.range_end, option.range_end, True) }}

View File

@@ -103,7 +103,7 @@ def _install_apworld(apworld_src: str = "") -> Optional[Tuple[pathlib.Path, path
try: try:
import zipfile import zipfile
zip = zipfile.ZipFile(apworld_path) zip = zipfile.ZipFile(apworld_path)
directories = [f.name for f in zipfile.Path(zip).iterdir() if f.is_dir()] directories = [f.filename.strip('/') for f in zip.filelist if f.CRC == 0 and f.file_size == 0 and f.filename.count('/') == 1]
if len(directories) == 1 and directories[0] in apworld_path.stem: if len(directories) == 1 and directories[0] in apworld_path.stem:
module_name = directories[0] module_name = directories[0]
apworld_name = module_name + ".apworld" apworld_name = module_name + ".apworld"

View File

@@ -47,17 +47,6 @@ def get_flag(data, flag):
bit = int(0x80 / (2 ** (flag % 8))) bit = int(0x80 / (2 ** (flag % 8)))
return (data[byte] & bit) > 0 return (data[byte] & bit) > 0
def validate_read_state(data1, data2):
validation_array = bytes([0x01, 0x46, 0x46, 0x4D, 0x51, 0x52])
if data1 is None or data2 is None:
return False
for i in range(6):
if data1[i] != validation_array[i] or data2[i] != validation_array[i]:
return False;
return True
class FFMQClient(SNIClient): class FFMQClient(SNIClient):
game = "Final Fantasy Mystic Quest" game = "Final Fantasy Mystic Quest"
@@ -78,11 +67,11 @@ class FFMQClient(SNIClient):
async def game_watcher(self, ctx): async def game_watcher(self, ctx):
from SNIClient import snes_buffered_write, snes_flush_writes, snes_read from SNIClient import snes_buffered_write, snes_flush_writes, snes_read
check_1 = await snes_read(ctx, 0xF53749, 6) check_1 = await snes_read(ctx, 0xF53749, 1)
received = await snes_read(ctx, RECEIVED_DATA[0], RECEIVED_DATA[1]) received = await snes_read(ctx, RECEIVED_DATA[0], RECEIVED_DATA[1])
data = await snes_read(ctx, READ_DATA_START, READ_DATA_END - READ_DATA_START) data = await snes_read(ctx, READ_DATA_START, READ_DATA_END - READ_DATA_START)
check_2 = await snes_read(ctx, 0xF53749, 6) check_2 = await snes_read(ctx, 0xF53749, 1)
if not validate_read_state(check_1, check_2): if check_1 != b'\x01' or check_2 != b'\x01':
return return
def get_range(data_range): def get_range(data_range):

View File

@@ -231,7 +231,7 @@ class HKWorld(World):
all_event_names.update(set(godhome_event_names)) all_event_names.update(set(godhome_event_names))
# Link regions # Link regions
for event_name in sorted(all_event_names): for event_name in all_event_names:
#if event_name in wp_exclusions: #if event_name in wp_exclusions:
# continue # continue
loc = HKLocation(self.player, event_name, None, menu_region) loc = HKLocation(self.player, event_name, None, menu_region)

View File

@@ -34,7 +34,7 @@ def create_locations(player: int, regions_table: Dict[str, LandstalkerRegion], n
for data in WORLD_PATHS_JSON: for data in WORLD_PATHS_JSON:
if "requiredNodes" in data: if "requiredNodes" in data:
regions_with_entrance_checks.extend([region_id for region_id in data["requiredNodes"]]) regions_with_entrance_checks.extend([region_id for region_id in data["requiredNodes"]])
regions_with_entrance_checks = sorted(set(regions_with_entrance_checks)) regions_with_entrance_checks = list(set(regions_with_entrance_checks))
for region_id in regions_with_entrance_checks: for region_id in regions_with_entrance_checks:
region = regions_table[region_id] region = regions_table[region_id]
location = LandstalkerLocation(player, 'event_visited_' + region_id, None, region, "event") location = LandstalkerLocation(player, 'event_visited_' + region_id, None, region, "event")

View File

@@ -118,7 +118,7 @@ class L2ACWorld(World):
L2ACItem("Progressive chest access", ItemClassification.progression, None, self.player)) L2ACItem("Progressive chest access", ItemClassification.progression, None, self.player))
chest_access.show_in_spoiler = False chest_access.show_in_spoiler = False
ancient_dungeon.locations.append(chest_access) ancient_dungeon.locations.append(chest_access)
for iris in sorted(self.item_name_groups["Iris treasures"]): for iris in self.item_name_groups["Iris treasures"]:
treasure_name: str = f"Iris treasure {self.item_name_to_id[iris] - self.item_name_to_id['Iris sword'] + 1}" treasure_name: str = f"Iris treasure {self.item_name_to_id[iris] - self.item_name_to_id['Iris sword'] + 1}"
iris_treasure: Location = \ iris_treasure: Location = \
L2ACLocation(self.player, treasure_name, self.location_name_to_id[treasure_name], ancient_dungeon) L2ACLocation(self.player, treasure_name, self.location_name_to_id[treasure_name], ancient_dungeon)

View File

@@ -1387,7 +1387,7 @@ def get_locations(world: Optional[World]) -> Tuple[LocationData, ...]:
lambda state: logic.templars_return_requirement(state)), lambda state: logic.templars_return_requirement(state)),
LocationData("The Host", "The Host: Victory", SC2LOTV_LOC_ID_OFFSET + 2100, LocationType.VICTORY, LocationData("The Host", "The Host: Victory", SC2LOTV_LOC_ID_OFFSET + 2100, LocationType.VICTORY,
lambda state: logic.the_host_requirement(state)), lambda state: logic.the_host_requirement(state)),
LocationData("The Host", "The Host: Southeast Void Shard", SC2LOTV_LOC_ID_OFFSET + 2101, LocationType.EXTRA, LocationData("The Host", "The Host: Southeast Void Shard", SC2LOTV_LOC_ID_OFFSET + 2101, LocationType.VICTORY,
lambda state: logic.the_host_requirement(state)), lambda state: logic.the_host_requirement(state)),
LocationData("The Host", "The Host: South Void Shard", SC2LOTV_LOC_ID_OFFSET + 2102, LocationType.EXTRA, LocationData("The Host", "The Host: South Void Shard", SC2LOTV_LOC_ID_OFFSET + 2102, LocationType.EXTRA,
lambda state: logic.the_host_requirement(state)), lambda state: logic.the_host_requirement(state)),

View File

@@ -43,9 +43,6 @@ class SC2Campaign(Enum):
self.goal_priority = goal_priority self.goal_priority = goal_priority
self.race = race self.race = race
def __lt__(self, other: "SC2Campaign"):
return self.id < other.id
GLOBAL = 0, "Global", SC2CampaignGoalPriority.NONE, SC2Race.ANY GLOBAL = 0, "Global", SC2CampaignGoalPriority.NONE, SC2Race.ANY
WOL = 1, "Wings of Liberty", SC2CampaignGoalPriority.VERY_HARD, SC2Race.TERRAN WOL = 1, "Wings of Liberty", SC2CampaignGoalPriority.VERY_HARD, SC2Race.TERRAN
PROPHECY = 2, "Prophecy", SC2CampaignGoalPriority.MINI_CAMPAIGN, SC2Race.PROTOSS PROPHECY = 2, "Prophecy", SC2CampaignGoalPriority.MINI_CAMPAIGN, SC2Race.PROTOSS

View File

@@ -50,7 +50,7 @@ def create_vanilla_regions(
names: Dict[str, int] = {} names: Dict[str, int] = {}
# Generating all regions and locations for each enabled campaign # Generating all regions and locations for each enabled campaign
for campaign in sorted(enabled_campaigns): for campaign in enabled_campaigns:
for region_name in vanilla_mission_req_table[campaign].keys(): for region_name in vanilla_mission_req_table[campaign].keys():
regions.append(create_region(world, locations_per_region, location_cache, region_name)) regions.append(create_region(world, locations_per_region, location_cache, region_name))
world.multiworld.regions += regions world.multiworld.regions += regions

View File

@@ -138,7 +138,7 @@ This means that, for these specific mods, if you decide to include them in your
with the assumption that you will install and play with these mods. The multiworld will contain related items and locations with the assumption that you will install and play with these mods. The multiworld will contain related items and locations
for these mods, the specifics will vary from mod to mod for these mods, the specifics will vary from mod to mod
[Supported Mods Documentation](https://github.com/agilbert1412/StardewArchipelago/blob/6.x.x/Documentation/Supported%20Mods.md) [Supported Mods Documentation](https://github.com/agilbert1412/StardewArchipelago/blob/5.x.x/Documentation/Supported%20Mods.md)
List of supported mods: List of supported mods:

View File

@@ -12,7 +12,7 @@
- Archipelago from the [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases) - Archipelago from the [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases)
* (Only for the TextClient) * (Only for the TextClient)
- Other Stardew Valley Mods [Nexus Mods](https://www.nexusmods.com/stardewvalley) - Other Stardew Valley Mods [Nexus Mods](https://www.nexusmods.com/stardewvalley)
* There are [supported mods](https://github.com/agilbert1412/StardewArchipelago/blob/6.x.x/Documentation/Supported%20Mods.md) * There are [supported mods](https://github.com/agilbert1412/StardewArchipelago/blob/5.x.x/Documentation/Supported%20Mods.md)
that you can add to your yaml to include them with the Archipelago randomization that you can add to your yaml to include them with the Archipelago randomization
* It is **not** recommended to further mod Stardew Valley with unsupported mods, although it is possible to do so. * It is **not** recommended to further mod Stardew Valley with unsupported mods, although it is possible to do so.

View File

@@ -233,7 +233,6 @@ class ZillionSkill(Range):
range_start = 0 range_start = 0
range_end = 5 range_end = 5
default = 2 default = 2
display_name = "skill"
class ZillionStartingCards(NamedRange): class ZillionStartingCards(NamedRange):