diff --git a/Glamourer/State/ActorState.cs b/Glamourer/State/ActorState.cs
index a770ee3..29b188c 100644
--- a/Glamourer/State/ActorState.cs
+++ b/Glamourer/State/ActorState.cs
@@ -62,6 +62,14 @@ public class ActorState
return !IsLocked;
}
+ /// Lock for temporary changes until after redrawing.
+ public bool TempLock()
+ => Lock(1337);
+
+ /// Unlock temp locks.
+ public bool TempUnlock()
+ => Unlock(1337);
+
/// This contains whether a change to the base data was made by the game, the user via manual input or through automatic application.
private readonly StateChanged.Source[] _sources = Enumerable
.Repeat(StateChanged.Source.Game, EquipFlagExtensions.NumEquipFlags + CustomizationExtensions.NumIndices + 5).ToArray();
diff --git a/Glamourer/State/StateListener.cs b/Glamourer/State/StateListener.cs
index 7b81365..c53b4c7 100644
--- a/Glamourer/State/StateListener.cs
+++ b/Glamourer/State/StateListener.cs
@@ -131,6 +131,8 @@ public class StateListener : IDisposable
break;
}
+
+ state.TempUnlock();
}
_funModule.ApplyFun(actor, new Span((void*)equipDataPtr, 10), ref customize);
diff --git a/Glamourer/State/StateManager.cs b/Glamourer/State/StateManager.cs
index ec207e9..e6a5b63 100644
--- a/Glamourer/State/StateManager.cs
+++ b/Glamourer/State/StateManager.cs
@@ -377,6 +377,7 @@ public class StateManager : IReadOnlyDictionary
var actors = _applier.ChangeWetness(state, true);
if (redraw)
{
+ state.TempLock();
_applier.ForceRedraw(actors);
}
else