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 @@
+
+
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",