Archipelago/worlds/cvcotm/presets.py

191 lines
11 KiB
Python
Raw Normal View History

Castlevania: Circle of the Moon - Implement New Game (#3299) * Add the cotm package with working seed playthrough generation. * Add the proper event flag IDs for the Item codes. * Oooops. Put the world completion condition in! * Adjust the game name and abbreviations. * Implement more settings. * Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed. * Working (albeit very sloooooooooooow) ROM patching. * Screw you, bsdiff! AP Procedure Patch for life! * Nuke stage_assert_generate as the ROM is no longer needed for that. * Working item writing and position adjusting. * Fix the magic item graphics in Locations wherein they can be fixed. * Enable sub-weapon shuffle * Get the seed display working. * Get the enemy item drop randomization working. Phew! * Enemy drop rando and seed display fixes. * Functional Countdown + Early Double setting * Working multiworld (yay!) * Fix item links and demo shenanigans. * Add Wii U VC hash and a docs section explaining the rereleases. * Change all client read/writes to EWRAM instead of Combined WRAM. * Custom text insertion foundations. * Working text converter and word wrap detector. * More refinements to the text wrap system. * Well and truly working sent/received messages. * Add DeathLink and Battle Arena goal options. * Add tracker stuff, unittests, all locations countdown, presets. * Add to README, CODEOWNERS, and inno_setup * Add to README, CODEOWNERS, and inno_setup * Address some suggestions/problems. * Switch the Items and Locations to using dataclasses. * Add note about the alternate classes to the Game Page. * Oooops, typo! * Touch up the Options descriptions. * Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better. * Implement option groups * Swap the Lizard-man Locations into their correct Regions. * Local start inventory, better DeathLink message handling, handle receiving over 255 of an item. * Update the PopTracker pack links to no longer point to the Releases page. * Add Skip Dialogues option. * Update the presets for the accessibility rework. * Swap the choices in the accessibility preset options. * Uhhhhhhh...just see the apworld v4 changelog for this one. * Ooops, typo! * . * Bunch of small stuff * Correctly change "Fake" to "Breakable" in this comment. Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Make can_touch_water one line. Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Make broke_iron_maidens one line. Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Fix majors countdown and make can_open_ceremonial_door one line. * Make the Trap AP Item less obvious. * Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff. * Better option groups. * Change Early Double to Early Escape Item. * Update DeathLink description and ditch the Menu region. * Fix the Start Broken choice for Iron Maiden Behavior * Remove the forced option change with Arena goal + required All Bosses and Arena. * Update the Game Page with the removal of the forced option combination change. * Fix client potential to send packets nonstop. * More review addressing. * Fix the new select_drop code. * Fix the new select_drop code for REAL this time. * Send another LocationScout if we send Location checks without having the Location info. --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
2024-12-12 13:47:47 +00:00
from typing import Any, Dict
from Options import Accessibility, ProgressionBalancing
from .options import IgnoreCleansing, AutoRun, DSSPatch, AlwaysAllowSpeedDash, IronMaidenBehavior, BuffRangedFamiliars,\
BuffSubWeapons, BuffShooterStrength, ItemDropRandomization, HalveDSSCardsPlaced, Countdown, SubWeaponShuffle,\
DisableBattleArenaMPDrain, RequiredSkirmishes, EarlyEscapeItem, CVCotMDeathLink, CompletionGoal, SkipDialogues,\
NerfRocWing, SkipTutorials, BattleArenaMusic, PlutoGriffinAirSpeed
all_random_options = {
"progression_balancing": "random",
"accessibility": "random",
"ignore_cleansing": "random",
"auto_run": "random",
"dss_patch": "random",
"always_allow_speed_dash": "random",
"iron_maiden_behavior": "random",
"required_last_keys": "random",
"available_last_keys": "random",
"buff_ranged_familiars": "random",
"buff_sub_weapons": "random",
"buff_shooter_strength": "random",
"item_drop_randomization": "random",
"halve_dss_cards_placed": "random",
"countdown": "random",
"sub_weapon_shuffle": "random",
"disable_battle_arena_mp_drain": "random",
"required_skirmishes": "random",
"pluto_griffin_air_speed": "random",
"skip_dialogues": "random",
"skip_tutorials": "random",
"nerf_roc_wing": "random",
"early_escape_item": "random",
"battle_arena_music": "random",
"death_link": CVCotMDeathLink.option_off,
"completion_goal": "random",
}
beginner_mode_options = {
"progression_balancing": ProgressionBalancing.default,
"accessibility": Accessibility.option_full,
"ignore_cleansing": IgnoreCleansing.option_false,
"auto_run": AutoRun.option_true,
"dss_patch": DSSPatch.option_true,
"always_allow_speed_dash": AlwaysAllowSpeedDash.option_true,
"iron_maiden_behavior": IronMaidenBehavior.option_start_broken,
"required_last_keys": 3,
"available_last_keys": 6,
"buff_ranged_familiars": BuffRangedFamiliars.option_true,
"buff_sub_weapons": BuffSubWeapons.option_true,
"buff_shooter_strength": BuffShooterStrength.option_true,
"item_drop_randomization": ItemDropRandomization.option_normal,
"halve_dss_cards_placed": HalveDSSCardsPlaced.option_false,
"countdown": Countdown.option_majors,
"sub_weapon_shuffle": SubWeaponShuffle.option_false,
"disable_battle_arena_mp_drain": DisableBattleArenaMPDrain.option_true,
"required_skirmishes": RequiredSkirmishes.option_none,
"pluto_griffin_air_speed": PlutoGriffinAirSpeed.option_false,
"skip_dialogues": SkipDialogues.option_false,
"skip_tutorials": SkipTutorials.option_false,
"nerf_roc_wing": NerfRocWing.option_false,
"early_escape_item": EarlyEscapeItem.option_double,
"battle_arena_music": BattleArenaMusic.option_nothing,
"death_link": CVCotMDeathLink.option_off,
"completion_goal": CompletionGoal.option_dracula,
}
standard_competitive_options = {
"progression_balancing": ProgressionBalancing.default,
"accessibility": Accessibility.option_full,
"ignore_cleansing": IgnoreCleansing.option_false,
"auto_run": AutoRun.option_false,
"dss_patch": DSSPatch.option_true,
"always_allow_speed_dash": AlwaysAllowSpeedDash.option_true,
"iron_maiden_behavior": IronMaidenBehavior.option_start_broken,
"required_last_keys": 3,
"available_last_keys": 5,
"buff_ranged_familiars": BuffRangedFamiliars.option_true,
"buff_sub_weapons": BuffSubWeapons.option_true,
"buff_shooter_strength": BuffShooterStrength.option_false,
"item_drop_randomization": ItemDropRandomization.option_normal,
"halve_dss_cards_placed": HalveDSSCardsPlaced.option_true,
"countdown": Countdown.option_majors,
"sub_weapon_shuffle": SubWeaponShuffle.option_true,
"disable_battle_arena_mp_drain": DisableBattleArenaMPDrain.option_false,
"required_skirmishes": RequiredSkirmishes.option_none,
"pluto_griffin_air_speed": PlutoGriffinAirSpeed.option_false,
"skip_dialogues": SkipDialogues.option_true,
"skip_tutorials": SkipTutorials.option_true,
"nerf_roc_wing": NerfRocWing.option_false,
"early_escape_item": EarlyEscapeItem.option_double,
"battle_arena_music": BattleArenaMusic.option_nothing,
"death_link": CVCotMDeathLink.option_off,
"completion_goal": CompletionGoal.option_dracula,
}
randomania_2023_options = {
"progression_balancing": ProgressionBalancing.default,
"accessibility": Accessibility.option_full,
"ignore_cleansing": IgnoreCleansing.option_false,
"auto_run": AutoRun.option_false,
"dss_patch": DSSPatch.option_true,
"always_allow_speed_dash": AlwaysAllowSpeedDash.option_true,
"iron_maiden_behavior": IronMaidenBehavior.option_vanilla,
"required_last_keys": 3,
"available_last_keys": 5,
"buff_ranged_familiars": BuffRangedFamiliars.option_true,
"buff_sub_weapons": BuffSubWeapons.option_true,
"buff_shooter_strength": BuffShooterStrength.option_false,
"item_drop_randomization": ItemDropRandomization.option_normal,
"halve_dss_cards_placed": HalveDSSCardsPlaced.option_false,
"countdown": Countdown.option_majors,
"sub_weapon_shuffle": SubWeaponShuffle.option_true,
"disable_battle_arena_mp_drain": DisableBattleArenaMPDrain.option_false,
"required_skirmishes": RequiredSkirmishes.option_none,
"pluto_griffin_air_speed": PlutoGriffinAirSpeed.option_false,
"skip_dialogues": SkipDialogues.option_false,
"skip_tutorials": SkipTutorials.option_false,
"nerf_roc_wing": NerfRocWing.option_false,
"early_escape_item": EarlyEscapeItem.option_double,
"battle_arena_music": BattleArenaMusic.option_nothing,
"death_link": CVCotMDeathLink.option_off,
"completion_goal": CompletionGoal.option_dracula,
}
competitive_all_bosses_options = {
"progression_balancing": ProgressionBalancing.default,
"accessibility": Accessibility.option_full,
"ignore_cleansing": IgnoreCleansing.option_false,
"auto_run": AutoRun.option_false,
"dss_patch": DSSPatch.option_true,
"always_allow_speed_dash": AlwaysAllowSpeedDash.option_true,
"iron_maiden_behavior": IronMaidenBehavior.option_vanilla,
"required_last_keys": 8,
"available_last_keys": 8,
"buff_ranged_familiars": BuffRangedFamiliars.option_true,
"buff_sub_weapons": BuffSubWeapons.option_true,
"buff_shooter_strength": BuffShooterStrength.option_false,
"item_drop_randomization": ItemDropRandomization.option_tiered,
"halve_dss_cards_placed": HalveDSSCardsPlaced.option_true,
"countdown": Countdown.option_none,
"sub_weapon_shuffle": SubWeaponShuffle.option_true,
"disable_battle_arena_mp_drain": DisableBattleArenaMPDrain.option_false,
"required_skirmishes": RequiredSkirmishes.option_all_bosses,
"pluto_griffin_air_speed": PlutoGriffinAirSpeed.option_false,
"skip_dialogues": SkipDialogues.option_true,
"skip_tutorials": SkipTutorials.option_true,
"nerf_roc_wing": NerfRocWing.option_false,
"early_escape_item": EarlyEscapeItem.option_double,
"battle_arena_music": BattleArenaMusic.option_nothing,
"death_link": CVCotMDeathLink.option_off,
"completion_goal": CompletionGoal.option_dracula,
}
hardcore_mode_options = {
"progression_balancing": ProgressionBalancing.default,
"accessibility": Accessibility.option_minimal,
"ignore_cleansing": IgnoreCleansing.option_true,
"auto_run": AutoRun.option_false,
"dss_patch": DSSPatch.option_true,
"always_allow_speed_dash": AlwaysAllowSpeedDash.option_false,
"iron_maiden_behavior": IronMaidenBehavior.option_vanilla,
"required_last_keys": 9,
"available_last_keys": 9,
"buff_ranged_familiars": BuffRangedFamiliars.option_false,
"buff_sub_weapons": BuffSubWeapons.option_false,
"buff_shooter_strength": BuffShooterStrength.option_false,
"item_drop_randomization": ItemDropRandomization.option_tiered,
"halve_dss_cards_placed": HalveDSSCardsPlaced.option_true,
"countdown": Countdown.option_none,
"sub_weapon_shuffle": SubWeaponShuffle.option_true,
"disable_battle_arena_mp_drain": DisableBattleArenaMPDrain.option_false,
"required_skirmishes": RequiredSkirmishes.option_none,
"pluto_griffin_air_speed": PlutoGriffinAirSpeed.option_false,
"skip_dialogues": SkipDialogues.option_false,
"skip_tutorials": SkipTutorials.option_false,
"nerf_roc_wing": NerfRocWing.option_false,
"early_escape_item": EarlyEscapeItem.option_double,
"battle_arena_music": BattleArenaMusic.option_nothing,
"death_link": CVCotMDeathLink.option_off,
"completion_goal": CompletionGoal.option_battle_arena_and_dracula,
}
cvcotm_options_presets: Dict[str, Dict[str, Any]] = {
"All Random": all_random_options,
"Beginner Mode": beginner_mode_options,
"Standard Competitive": standard_competitive_options,
"Randomania 2023": randomania_2023_options,
"Competitive All Bosses": competitive_all_bosses_options,
"Hardcore Mode": hardcore_mode_options,
}