diff --git a/Glamourer/Automation/AutoDesignApplier.cs b/Glamourer/Automation/AutoDesignApplier.cs index aa808d1..52df3e9 100644 --- a/Glamourer/Automation/AutoDesignApplier.cs +++ b/Glamourer/Automation/AutoDesignApplier.cs @@ -274,7 +274,7 @@ public class AutoDesignApplier : IDisposable CustomizeParameterFlag totalParameterFlags = 0; byte totalMetaFlags = 0; if (set.BaseState == AutoDesignSet.Base.Game) - _state.ResetStateFixed(state); + _state.ResetStateFixed(state, respectManual); else if (!respectManual) state.RemoveFixedDesignSources(); diff --git a/Glamourer/State/StateManager.cs b/Glamourer/State/StateManager.cs index a8fc7b9..807f5c8 100644 --- a/Glamourer/State/StateManager.cs +++ b/Glamourer/State/StateManager.cs @@ -504,7 +504,7 @@ public class StateManager( _event.Invoke(StateChanged.Type.Reset, StateChanged.Source.Manual, state, actors, null); } - public void ResetStateFixed(ActorState state, uint key = 0) + public void ResetStateFixed(ActorState state, bool respectManualPalettes, uint key = 0) { if (!state.Unlock(key)) return; @@ -541,10 +541,13 @@ public class StateManager( foreach (var flag in CustomizeParameterExtensions.AllFlags) { - if (state[flag] is StateChanged.Source.Fixed) + switch (state[flag]) { - state[flag] = StateChanged.Source.Game; - state.ModelData.Parameters[flag] = state.BaseData.Parameters[flag]; + case StateChanged.Source.Fixed: + case StateChanged.Source.Manual when !respectManualPalettes: + state[flag] = StateChanged.Source.Game; + state.ModelData.Parameters[flag] = state.BaseData.Parameters[flag]; + break; } }