diff --git a/src/static/img/save_state_autoload.svg b/src/static/img/save_state_autoload.svg new file mode 100644 index 0000000..5c738c9 --- /dev/null +++ b/src/static/img/save_state_autoload.svg @@ -0,0 +1,70 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/training/save_states.rs b/src/training/save_states.rs index adf05b5..76facb8 100644 --- a/src/training/save_states.rs +++ b/src/training/save_states.rs @@ -191,9 +191,13 @@ pub unsafe fn save_states(module_accessor: &mut app::BattleObjectModuleAccessor) .contains(&fighter_kind); // Grab + Dpad up: reset state - if ControlModule::check_button_on(module_accessor, *CONTROL_PAD_BUTTON_CATCH) - && ControlModule::check_button_trigger(module_accessor, *CONTROL_PAD_BUTTON_APPEAL_HI) - && !fighter_is_nana + if (MENU.save_state_autoload == OnOff::On + && !fighter_is_ptrainer + && save_state.state == NoAction + && is_dead(module_accessor)) + || (ControlModule::check_button_on(module_accessor, *CONTROL_PAD_BUTTON_CATCH) + && ControlModule::check_button_trigger(module_accessor, *CONTROL_PAD_BUTTON_APPEAL_HI)) + && !fighter_is_nana { if save_state.state == NoAction { SAVE_STATE_PLAYER.state = KillPlayer; diff --git a/training_mod_consts/src/lib.rs b/training_mod_consts/src/lib.rs index 0a9d22d..b6e904f 100644 --- a/training_mod_consts/src/lib.rs +++ b/training_mod_consts/src/lib.rs @@ -987,6 +987,7 @@ url_params! { pub save_state_mirroring: SaveStateMirroring, pub frame_advantage: OnOff, pub save_state_enable: OnOff, + pub save_state_autoload: OnOff, pub throw_state: ThrowOption, pub throw_delay: MedDelay, pub pummel_delay: MedDelay, @@ -1049,6 +1050,7 @@ impl TrainingModpackMenu { frame_advantage = OnOff::from_val(val), save_state_mirroring = num::FromPrimitive::from_u32(val), save_state_enable = OnOff::from_val(val), + save_state_autoload = OnOff::from_val(val), throw_state = ThrowOption::from_bits(val), throw_delay = MedDelay::from_bits(val), pummel_delay = MedDelay::from_bits(val), @@ -1113,6 +1115,7 @@ pub static DEFAULTS_MENU: TrainingModpackMenu = TrainingModpackMenu { save_state_mirroring: SaveStateMirroring::None, frame_advantage: OnOff::Off, save_state_enable: OnOff::On, + save_state_autoload: OnOff::Off, throw_state: ThrowOption::NONE, throw_delay: MedDelay::empty(), pummel_delay: MedDelay::empty(), @@ -1453,6 +1456,12 @@ pub unsafe fn get_menu() -> UiMenu<'static> { "Save States: Enable save states! Save a state with Grab+Down Taunt, load it with Grab+Up Taunt.", true, ); + misc_tab.add_submenu_with_toggles::( + "Autoload Save States", + "save_state_autoload", + "Save States Autoload: Load save state when any fighter dies", + true, + ); misc_tab.add_submenu_with_toggles::( "Frame Advantage", "frame_advantage",