 3acbe9ece1
			
		
	
	3acbe9ece1
	
	
	
		
			
			* 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>
		
			
				
	
	
		
			191 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			191 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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,
 | |
| }
 |