mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 12:11:33 -06:00

* fix estus shard/bone shard numbers there are only 11 estus shards in the pool, so fixed number of estus shards so everything can be collected, and upped the number of bone shards in the pool to fix datapackage numbers. new counts went from: 15(estus) + 5(bones) = 20(total) TO 11(estus) + 9(bones) = 20(total) * Update locations_data.py changed estus shard/bone shard counts to match the counts in items_data.py. same reasoning as the commit for that, only 11 estus in game * added new options "Late DLC" revampled "Late Basin of Vows" option added the Fire Demon location in Undead Sanctuary * first file dump added new settings for customizing pool options sorted all the item pools code clean up fixed estus/bone shard counts still need to figure out location excluding * bunch of changes added new locations put locations into specific lists made DarkSouls3Locations for each list of items still need to figure out how to exclude * excluded locations from generating without options, created gotthard_region, update how the pool fills additional items, update location/item tables, create more tables * code cleanup, remove extra tables, add grave key/eyes of a firekeeper back to key pool * fixed some logging * add more detailed options descriptions * forgot to update progressive locations updates too whoops * remove irina's tower key from items/location list. the current ID's dont work to shuffle * fixed item-to-locations, added new weapons, added new armors, added new rings, added "eyes of a fire keeper" to key locations list to balance, adjusted tables * added HWL: broken straight sword location, moved Greirat's ashes to NPC items * remove hwl: broken short sword location/item from pool (does not exist), fix item/location counts in options, general code clean up * more code cleanup, fix Havels Ring +3 location/properly renamed item, changed Estus/Bone Shard names to not include a +| added a missing undead bone shard * fixed npc rule, added a bunch of ring locations, fixed ring tables * updated options * cleaned up more code, edited some option names * start of new items system * DS3: Major refactor (allows for defining more items than those in vanilla locations) * DS3: Repair changes overwritten by refactor * DS3: Re-implement new options for location categories * DS3: Make replacement item lists for most unique item types * DS3: Remove accidentally added apworld * DS3: Make option names more consistent * DS3: Fix Pyromancer's Parting Flame location category * DS3: Add new items * DS3: Fix access rule for DLC/Contraption Key * DS3: Only replace unrandomized progression items with events Also fix some location names/categories * DS3: Change some location names to be in line with their items * DS3: Add randomized infusion code (only works for Broadsword) * DS3: Make varied item pool an option * added remaining weapons, shields, armors, rings, spells, dlc equivalents | added remaining dlc ring locations (2 in dreg heap, 5 in ringed city) * adjusted 'Progressive Locations' counts and added new table * added more souls + upgrade gems * added the rest of consumables * reverted adding an additional 'progressive location 4' table and added bulk progression locations to prog. location 3 table * DS3: Add infusion categories and some cleanup of items * DS3: Fix item ordering * DS3: Fix infusion/upgrade code extra if * DS3: Disable some unmarked cut content items * DS3: Rename blessed red and white shield+1 * DS3: Implement guaranteed_items option * DS3: Remove print statement * DS3: Add extra check for trying to remove items from an empty list * add unused content item id's * DS3: Move cut content to its own list * DS3: Classify spells and healing upgrades as useful * DS3: Implement get_filler_item_name * DS3: Change lower bounds for upgrades from +1 to +0 * DS3: Move Ancient Dragon Greatshield back to vanilla and recategorize some useful consumables * DS3: Guaranteed items checks for number of existing items before replacing * added remaining progressive items, fixed npc rules, adjusted option location counts * delete extra items, add rule for dancer/late basin * seperate PW into two parts (can access first half w/o contraption key | SKIP more unused items * DS3: Minor linting changes * DS3: Update required_client_version * DS3: Remove rule for bell tower access The key can always be purchased from the shop * DS3: Move location category option checks to generate_early * added "Boss Soul" option to pool * DS3: Fix rules for boss souls and update misc location count * DS3: Address minor review comments * DS3: Change category enums to IntEnum * DS3: Make apworld --------- Co-authored-by: Brooty Johnson <83629348+Br00ty@users.noreply.github.com>
225 lines
7.9 KiB
Python
225 lines
7.9 KiB
Python
import typing
|
|
|
|
from Options import Toggle, DefaultOnToggle, Option, Range, Choice, ItemDict, DeathLink
|
|
|
|
|
|
class RandomizeWeaponLocations(DefaultOnToggle):
|
|
"""Randomizes weapons (+76 locations)"""
|
|
display_name = "Randomize Weapon Locations"
|
|
|
|
|
|
class RandomizeShieldLocations(DefaultOnToggle):
|
|
"""Randomizes shields (+24 locations)"""
|
|
display_name = "Randomize Shield Locations"
|
|
|
|
|
|
class RandomizeArmorLocations(DefaultOnToggle):
|
|
"""Randomizes armor pieces (+97 locations)"""
|
|
display_name = "Randomize Armor Locations"
|
|
|
|
|
|
class RandomizeRingLocations(DefaultOnToggle):
|
|
"""Randomizes rings (+49 locations)"""
|
|
display_name = "Randomize Ring Locations"
|
|
|
|
|
|
class RandomizeSpellLocations(DefaultOnToggle):
|
|
"""Randomizes spells (+18 locations)"""
|
|
display_name = "Randomize Spell Locations"
|
|
|
|
|
|
class RandomizeKeyLocations(DefaultOnToggle):
|
|
"""Randomizes items which unlock doors or bypass barriers"""
|
|
display_name = "Randomize Key Locations"
|
|
|
|
|
|
class RandomizeBossSoulLocations(DefaultOnToggle):
|
|
"""Randomizes Boss Souls (+18 Locations)"""
|
|
display_name = "Randomize Boss Soul Locations"
|
|
|
|
|
|
class RandomizeNPCLocations(Toggle):
|
|
"""Randomizes friendly NPC drops (meaning you will probably have to kill them) (+14 locations)"""
|
|
display_name = "Randomize NPC Locations"
|
|
|
|
|
|
class RandomizeMiscLocations(Toggle):
|
|
"""Randomizes miscellaneous items (ashes, tomes, scrolls, etc.) to the pool. (+36 locations)"""
|
|
display_name = "Randomize Miscellaneous Locations"
|
|
|
|
|
|
class RandomizeHealthLocations(Toggle):
|
|
"""Randomizes health upgrade items. (+21 locations)"""
|
|
display_name = "Randomize Health Upgrade Locations"
|
|
|
|
|
|
class RandomizeProgressiveLocationsOption(Toggle):
|
|
"""Randomizes upgrade materials and consumables such as the titanite shards, firebombs, resin, etc...
|
|
|
|
Instead of specific locations, these are progressive, so Titanite Shard #1 is the first titanite shard
|
|
you pick up, regardless of whether it's from an enemy drop late in the game or an item on the ground in the
|
|
first 5 minutes."""
|
|
display_name = "Randomize Progressive Locations"
|
|
|
|
|
|
class PoolTypeOption(Choice):
|
|
"""Changes which non-progression items you add to the pool
|
|
|
|
Shuffle: Items are picked from the locations being randomized
|
|
Various: Items are picked from a list of all items in the game, but are the same type of item they replace"""
|
|
display_name = "Pool Type"
|
|
option_shuffle = 0
|
|
option_various = 1
|
|
|
|
|
|
class GuaranteedItemsOption(ItemDict):
|
|
"""Guarantees that the specified items will be in the item pool"""
|
|
display_name = "Guaranteed Items"
|
|
|
|
|
|
class AutoEquipOption(Toggle):
|
|
"""Automatically equips any received armor or left/right weapons."""
|
|
display_name = "Auto-Equip"
|
|
|
|
|
|
class LockEquipOption(Toggle):
|
|
"""Lock the equipment slots so you cannot change your armor or your left/right weapons. Works great with the
|
|
Auto-equip option."""
|
|
display_name = "Lock Equipment Slots"
|
|
|
|
|
|
class NoWeaponRequirementsOption(Toggle):
|
|
"""Disable the weapon requirements by removing any movement or damage penalties.
|
|
Permitting you to use any weapon early"""
|
|
display_name = "No Weapon Requirements"
|
|
|
|
|
|
class NoSpellRequirementsOption(Toggle):
|
|
"""Disable the spell requirements permitting you to use any spell"""
|
|
display_name = "No Spell Requirements"
|
|
|
|
|
|
class NoEquipLoadOption(Toggle):
|
|
"""Disable the equip load constraint from the game"""
|
|
display_name = "No Equip Load"
|
|
|
|
|
|
class RandomizeInfusionOption(Toggle):
|
|
"""Enable this option to infuse a percentage of the pool of weapons and shields."""
|
|
display_name = "Randomize Infusion"
|
|
|
|
|
|
class RandomizeInfusionPercentageOption(Range):
|
|
"""The percentage of weapons/shields in the pool to be infused if Randomize Infusion is toggled"""
|
|
display_name = "Percentage of Infused Weapons"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 33
|
|
|
|
|
|
class RandomizeWeaponLevelOption(Choice):
|
|
"""Enable this option to upgrade a percentage of the pool of weapons to a random value between the minimum and
|
|
maximum levels defined.
|
|
|
|
All: All weapons are eligible, both basic and epic
|
|
Basic: Only weapons that can be upgraded to +10
|
|
Epic: Only weapons that can be upgraded to +5"""
|
|
display_name = "Randomize Weapon Level"
|
|
option_none = 0
|
|
option_all = 1
|
|
option_basic = 2
|
|
option_epic = 3
|
|
|
|
|
|
class RandomizeWeaponLevelPercentageOption(Range):
|
|
"""The percentage of weapons in the pool to be upgraded if randomize weapons level is toggled"""
|
|
display_name = "Percentage of Randomized Weapons"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 33
|
|
|
|
|
|
class MinLevelsIn5WeaponPoolOption(Range):
|
|
"""The minimum upgraded value of a weapon in the pool of weapons that can only reach +5"""
|
|
display_name = "Minimum Level of +5 Weapons"
|
|
range_start = 0
|
|
range_end = 5
|
|
default = 1
|
|
|
|
|
|
class MaxLevelsIn5WeaponPoolOption(Range):
|
|
"""The maximum upgraded value of a weapon in the pool of weapons that can only reach +5"""
|
|
display_name = "Maximum Level of +5 Weapons"
|
|
range_start = 0
|
|
range_end = 5
|
|
default = 5
|
|
|
|
|
|
class MinLevelsIn10WeaponPoolOption(Range):
|
|
"""The minimum upgraded value of a weapon in the pool of weapons that can reach +10"""
|
|
display_name = "Minimum Level of +10 Weapons"
|
|
range_start = 0
|
|
range_end = 10
|
|
default = 1
|
|
|
|
|
|
class MaxLevelsIn10WeaponPoolOption(Range):
|
|
"""The maximum upgraded value of a weapon in the pool of weapons that can reach +10"""
|
|
display_name = "Maximum Level of +10 Weapons"
|
|
range_start = 0
|
|
range_end = 10
|
|
default = 10
|
|
|
|
|
|
class LateBasinOfVowsOption(Toggle):
|
|
"""This option makes it so the Basin of Vows is still randomized, but guarantees you that you wont have to venture into
|
|
Lothric Castle to find your Small Lothric Banner to get out of High Wall of Lothric. So you may find Basin of Vows early,
|
|
but you wont have to fight Dancer to find your Small Lothric Banner."""
|
|
display_name = "Late Basin of Vows"
|
|
|
|
|
|
class LateDLCOption(Toggle):
|
|
"""This option makes it so you are guaranteed to find your Small Doll without having to venture off into the DLC,
|
|
effectively putting anything in the DLC in logic after finding both Contraption Key and Small Doll,
|
|
and being able to get into Irithyll of the Boreal Valley."""
|
|
display_name = "Late DLC"
|
|
|
|
|
|
class EnableDLCOption(Toggle):
|
|
"""To use this option, you must own both the ASHES OF ARIANDEL and the RINGED CITY DLC"""
|
|
display_name = "Enable DLC"
|
|
|
|
|
|
dark_souls_options: typing.Dict[str, Option] = {
|
|
"enable_weapon_locations": RandomizeWeaponLocations,
|
|
"enable_shield_locations": RandomizeShieldLocations,
|
|
"enable_armor_locations": RandomizeArmorLocations,
|
|
"enable_ring_locations": RandomizeRingLocations,
|
|
"enable_spell_locations": RandomizeSpellLocations,
|
|
"enable_key_locations": RandomizeKeyLocations,
|
|
"enable_boss_locations": RandomizeBossSoulLocations,
|
|
"enable_npc_locations": RandomizeNPCLocations,
|
|
"enable_misc_locations": RandomizeMiscLocations,
|
|
"enable_health_upgrade_locations": RandomizeHealthLocations,
|
|
"enable_progressive_locations": RandomizeProgressiveLocationsOption,
|
|
"pool_type": PoolTypeOption,
|
|
"guaranteed_items": GuaranteedItemsOption,
|
|
"auto_equip": AutoEquipOption,
|
|
"lock_equip": LockEquipOption,
|
|
"no_weapon_requirements": NoWeaponRequirementsOption,
|
|
"randomize_infusion": RandomizeInfusionOption,
|
|
"randomize_infusion_percentage": RandomizeInfusionPercentageOption,
|
|
"randomize_weapon_level": RandomizeWeaponLevelOption,
|
|
"randomize_weapon_level_percentage": RandomizeWeaponLevelPercentageOption,
|
|
"min_levels_in_5": MinLevelsIn5WeaponPoolOption,
|
|
"max_levels_in_5": MaxLevelsIn5WeaponPoolOption,
|
|
"min_levels_in_10": MinLevelsIn10WeaponPoolOption,
|
|
"max_levels_in_10": MaxLevelsIn10WeaponPoolOption,
|
|
"late_basin_of_vows": LateBasinOfVowsOption,
|
|
"late_dlc": LateDLCOption,
|
|
"no_spell_requirements": NoSpellRequirementsOption,
|
|
"no_equip_load": NoEquipLoadOption,
|
|
"death_link": DeathLink,
|
|
"enable_dlc": EnableDLCOption,
|
|
}
|