mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-07-11 21:19:36 -07:00
f110a7efbc
* Update GauntletLegendsClient.py * Continuation of obelisk update * APPP Implementation Groundwork. * Continuation of APPP Implementation * Create Pain.asm * ROM verification modified since crc32 hash can no longer be calculated. * Initial upload of barrel/chest locations. * Finished adding and naming all chests/barrels. * Continued locations. * Added new yaml options * Work on mirror shards * Python 3.8 compatibility * Finalized location names. Fixed lambda bug. * v1.0 * Removed excess Docs and Changed item counts. * Update Archipelago Unittests.run.xml * Started working on Docs. * Updated item arrays for client * Fix client bugs * Flake8 fixes + Yaml fix * Update speed boots * v1.1 * Update GauntletLegendsClient.py * Update GauntletLegendsClient.py * Update GauntletLegendsClient.py * Update GauntletLegendsClient.py * v1.0.4 * Initial Ruff format * Formatting part-2 * More formatting + Doc changes * Updated Docs * Move client to root * Update Client Name * Make Imports Relative * Add new yaml options + rename obelisks * v1.1 Initial Upload * v1.1.0 + some additions * Client Update * Client Updates * pre-v1.1.1 * Update GauntletLegendsClient.py * pre-1.2 * 1.2.0 * v1.2.1 * Client fixes * v1.3.0 * v1.4.0 * v1.4.1 * Merged Changes * Experimental * pre-v1.5.0 * Changes * v1.5.0 * Update GauntletLegendsClient.py * Death Update * pre v1.5.1 * Obelisk rule changes * pre-v1.5.1 * Update GauntletLegendsClient.py * v1.5.1 * v1.5.1 * Update GauntletLegendsClient.py * Small fix * Update GauntletLegendsClient.py * v1.5.2 * pre-v1.6.0 * pre-v1.6.0 * v1.6.0 * Update * Update GauntletLegendsClient.py * Test * pre-v1.6.0 * Client Updtaes * Update GauntletLegendsClient.py * Update GauntletLegendsClient.py * Update GauntletLegendsClient.py * Update Rom.py * Update GauntletLegendsClient.py * Update Rom.py * Added Logging on stage enter * v1.6.2 * v1.6.2 * Update Rom.py * Update GauntletLegendsClient.py * v1.6.3 * Small Update * Update GauntletLegendsClient.py * Update GauntletLegendsClient.py * Update GauntletLegendsClient.py * Changes ready for review * Update Rom.py * Remove root client * Update inno_setup.iss * Update client * Initial Review Refactor * Update Arrays.py * Review refactor * Update __init__.py * Small tweaks after test generations * Update GauntletLegendsClient.py * Implement new check_locations() function * Add name for Skorn to level_names Dict * Fix for #4671 * Update __init__.py * Adjust item frequency + Place 50% of filler as local * Oops I modified the itempool after create_items teehee * Update __init__.py * Check MD5 hash before patching ROM * Update __init__.py * Fix get_filler_item_name() * Update MD5 check to built in method in FilePath * Update Rom.py * Update worlds/gl/Rom.py Co-authored-by: qwint <qwint.42@gmail.com> * WIP Generation fixes * v1.7.1 * Update Archipelago Unittests.run.xml * 0.7.2 * Update GauntletLegendsClient.py * Review Edits * Update World description * Fuzz fixes * Update GauntletLegendsClient.py * Make static data immutable * Update option comparisons since no longer a Choice * Update worlds/gl/Rom.py Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com> * Update __init__.py * Initial Update commit * Progress * Remove un-used import + Add manifest * Add missing docstring for client command * Progress * pre-v2.0.0-BETA * Updates * Progress * Working Generations * Working IN-Game * v2.0.0-BETA * Create archipelago.json * v2.0.1 * v2.0.1 FINAL * pre v2.0.2 * Delete report.json * Cleanup * pre v2.0.2 * v2.0.2 * PR Ready * Update Items.py * Delete fuzz.py * Update Items.py * Update GauntletLegendsClient.py * Fix scouting disabled locations * Client Updates * v2.0.3 * Increment World Version * Docstring + slot_data updates * Option name update + Remove redundant option * Code Cleanup * Trenches is level 24 * Frequencies * More cleanup and removal of stale code. MISSING BASEPATCH * v2.1.0 * Minor enemy changes * Small fix * Update Rom.py * v2.1.1 * Small fixes * Update basepatch.bsdiff4 * Update GauntletLegendsClient.py * Socket error clarity * Delete settings.local.json * Update GauntletLegendsClient.py * v2.1.2 fixes * Boss portal fix * Small client fix + Item Frequencies * Update archipelago.json * Fix for games playing with max difficulty lower than 4 not sending locations * Update archipelago.json * v2.1.5 * Fix for Chimera's lair mirror shard * Update archipelago.json * Mod Re-Base + Queue limits + Item Receiving fixes * Options cleanup and newlines for some files * Include v2.x features in docs * Make sure players has at least 1 item * v2.1.6 * Update archipelago.json * Review Edits + Client Tweaks --------- Co-authored-by: qwint <qwint.42@gmail.com> Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com> Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
248 lines
6.8 KiB
Python
248 lines
6.8 KiB
Python
from dataclasses import dataclass
|
|
|
|
from Options import Choice, PerGameCommonOptions, StartInventoryPool, Toggle, Range, DefaultOnToggle, \
|
|
OptionSet, DeathLink
|
|
|
|
|
|
class IncludedAreas(OptionSet):
|
|
"""
|
|
Select which areas will have their locations included in the randomization pool.
|
|
Each selected area's stages and checks will be accessible in your world.
|
|
Unselected areas will not be included in the location pool.
|
|
Mountain is always available and cannot be excluded.
|
|
"""
|
|
display_name = "Included Areas"
|
|
valid_keys = ["Castle", "Town", "Ice", "Battlefield"]
|
|
default = ["Castle", "Town", "Ice", "Battlefield"]
|
|
|
|
|
|
class ChestBarrels(Choice):
|
|
"""
|
|
Choose how you want Chests and Barrels to be randomized.
|
|
None: Neither Chests nor Barrels will be added as locations.
|
|
All Chests: Chests will be added as locations, Barrels will not.
|
|
All Barrels: Barrels will be added as locations, Chests will not.
|
|
All Both: Both Chests and Barrels will be added as locations.
|
|
"""
|
|
display_name = "Chests and Barrels"
|
|
option_none = 0
|
|
option_all_chests = 1
|
|
option_all_barrels = 2
|
|
option_all_both = 3
|
|
default = 3
|
|
|
|
|
|
class Obelisks(DefaultOnToggle):
|
|
"""
|
|
Obelisks will be added to the random pool as items.
|
|
Activating all the obelisks in an area will unlock access to the next.
|
|
Disabling this will lock obelisks in their original locations.
|
|
"""
|
|
|
|
display_name = "Obelisks"
|
|
|
|
|
|
class MirrorShards(DefaultOnToggle):
|
|
"""
|
|
Mirror Shards will be added to the random pool as items.
|
|
Collecting all four mirror shards will unlock access to the Desecrated Temple.
|
|
Disabling this will lock mirror shards in their original locations.
|
|
"""
|
|
|
|
display_name = "Mirror Shards"
|
|
|
|
|
|
class Portals(DefaultOnToggle):
|
|
"""
|
|
Level portals will be added to the random pool as items.
|
|
Getting a portal item will unlock access to that level.
|
|
Levels will no longer unlock in succession when clearing the previous level.
|
|
"""
|
|
display_name = "Portals"
|
|
|
|
|
|
class Goal(Choice):
|
|
"""
|
|
Choose your objective required to goal.
|
|
Defeat Skorne: Collect all 13 stones to unlock and defeat Skorne in the Underworld.
|
|
Defeat X Bosses: Defeat X number of bosses to goal.
|
|
"""
|
|
|
|
display_name = "Goal"
|
|
option_defeat_skorne = 1
|
|
option_defeat_x_bosses = 2
|
|
default = 1
|
|
|
|
|
|
class BossGoalCount(Range):
|
|
"""
|
|
Choose how many bosses you must defeat to goal if 'Defeat X Bosses' is selected as your goal.
|
|
This includes both Temple and Underworld Skorne.
|
|
"""
|
|
|
|
display_name = "Boss Goal Count"
|
|
range_start = 1
|
|
range_end = 6
|
|
default = 4
|
|
|
|
|
|
class MaxDifficulty(Range):
|
|
"""
|
|
Select the difficulty value you want to be the maximum.
|
|
This will affect the amount of checks in each level as well as enemy strength and number of spawners.
|
|
"""
|
|
|
|
display_name = "Max Difficulty Value"
|
|
range_start = 1
|
|
range_end = 4
|
|
default = 4
|
|
|
|
|
|
class InstantMaxDifficulty(DefaultOnToggle):
|
|
"""
|
|
All stages will load with their max difficulty on the first run through.
|
|
By default, stages increase in difficulty by 1 at a set interval that changes per zone.
|
|
The starting level for each zone increases gradually as you would progress in vanilla.
|
|
"""
|
|
|
|
display_name = "Instant Max Difficulty"
|
|
|
|
|
|
class PermaSpeed(Toggle):
|
|
"""
|
|
You will be given speed boots with a permanent duration.
|
|
"""
|
|
|
|
display_name = "Permanent Speed Boots"
|
|
|
|
|
|
class InfiniteKeys(Toggle):
|
|
"""
|
|
You will be given more keys than you could ever use.
|
|
"""
|
|
|
|
display_name = "Infinite Keys"
|
|
|
|
|
|
class IncludedTraps(OptionSet):
|
|
"""
|
|
Choose what traps will be put in the item pool.
|
|
Valid Keys: Death, Poison Fruit, Crossbow Shooter, Bomb Thrower, Bomb Runner, Golem
|
|
"""
|
|
|
|
display_name = "Included Traps"
|
|
valid_keys = ["Death", "Poison Fruit", "Crossbow Shooter", "Bomb Thrower", "Bomb Runner", "Golem"]
|
|
default = ["Death", "Poison Fruit", "Crossbow Shooter", "Bomb Thrower", "Bomb Runner", "Golem"]
|
|
|
|
|
|
class TrapsFrequency(Range):
|
|
"""
|
|
Choose the frequency of traps added into the item pool
|
|
This range is a percentage of all items in the pool that will be traps.
|
|
"""
|
|
|
|
display_name = "Trap Frequency"
|
|
range_start = 0
|
|
range_end = 90
|
|
default = 10
|
|
|
|
|
|
class LocalFillerFrequency(Range):
|
|
"""
|
|
Choose the frequency of filler items that will be placed locally in your world.
|
|
This range is a percentage of how many filler items will be locally placed before generation occurs.
|
|
"""
|
|
|
|
display_name = "Local Filler Frequency"
|
|
range_start = 0
|
|
range_end = 90
|
|
default = 50
|
|
|
|
|
|
class UnlockCharacterOne(Choice):
|
|
"""
|
|
Unlock a secret character for Player 1 from the start.
|
|
None: No secret characters will be unlocked.
|
|
Chosen Character: The selected character will be available from a new save.
|
|
"""
|
|
|
|
option_none = 0
|
|
option_minotaur = 1
|
|
option_falconess = 2
|
|
option_jackal = 3
|
|
option_tigress = 4
|
|
option_sumner = 5
|
|
default = 0
|
|
|
|
|
|
class UnlockCharacterTwo(Choice):
|
|
"""
|
|
Unlock a secret character for Player 2 from the start.
|
|
None: No secret characters will be unlocked.
|
|
Chosen Character: The selected character will be available from a new save.
|
|
"""
|
|
|
|
option_none = 0
|
|
option_minotaur = 1
|
|
option_falconess = 2
|
|
option_jackal = 3
|
|
option_tigress = 4
|
|
option_sumner = 5
|
|
default = 0
|
|
|
|
|
|
class UnlockCharacterThree(Choice):
|
|
"""
|
|
Unlock a secret character for Player 3 from the start.
|
|
None: No secret characters will be unlocked.
|
|
Chosen Character: The selected character will be available from a new save.
|
|
"""
|
|
|
|
option_none = 0
|
|
option_minotaur = 1
|
|
option_falconess = 2
|
|
option_jackal = 3
|
|
option_tigress = 4
|
|
option_sumner = 5
|
|
default = 0
|
|
|
|
|
|
class UnlockCharacterFour(Choice):
|
|
"""
|
|
Unlock a secret character for Player 4 from the start.
|
|
None: No secret characters will be unlocked.
|
|
Chosen Character: The selected character will be available from a new save.
|
|
"""
|
|
|
|
option_none = 0
|
|
option_minotaur = 1
|
|
option_falconess = 2
|
|
option_jackal = 3
|
|
option_tigress = 4
|
|
option_sumner = 5
|
|
default = 0
|
|
|
|
|
|
@dataclass
|
|
class GLOptions(PerGameCommonOptions):
|
|
death_link: DeathLink
|
|
start_inventory_from_pool: StartInventoryPool
|
|
included_areas: IncludedAreas
|
|
chests_barrels: ChestBarrels
|
|
obelisks: Obelisks
|
|
mirror_shards: MirrorShards
|
|
portals: Portals
|
|
goal: Goal
|
|
boss_goal_count: BossGoalCount
|
|
max_difficulty: MaxDifficulty
|
|
instant_max: InstantMaxDifficulty
|
|
infinite_keys: InfiniteKeys
|
|
permanent_speed: PermaSpeed
|
|
included_traps: IncludedTraps
|
|
traps_frequency: TrapsFrequency
|
|
local_filler_frequency: LocalFillerFrequency
|
|
unlock_character_one: UnlockCharacterOne
|
|
unlock_character_two: UnlockCharacterTwo
|
|
unlock_character_three: UnlockCharacterThree
|
|
unlock_character_four: UnlockCharacterFour
|