@@ -59,9 +59,13 @@ void ZChaosManager::CheckAndAddEffects()
5959 effectData.CustomTime = effect->defaultTime / 1000 ;
6060 }
6161
62- if ((!IsEffectEnabled || IsEffectEnabled (effect, false )))
62+ if ((!IsEffectEnabled || IsEffectEnabled (effect, false )) && effect-> enabledManually )
6363 {
64- g_dictEnabledEffects.emplace (effectId, effectData);
64+ if (!g_dictEnabledEffects.contains (effectId))
65+ {
66+ g_dictEnabledEffects.emplace (effectId, effectData);
67+ LOG (" Effect " << effect->name << " has been enabled" );
68+ }
6569 }
6670 else if (g_dictEnabledEffects.contains (effectId))
6771 {
@@ -222,6 +226,57 @@ void ZChaosManager::OnRun()
222226
223227void ZChaosManager::OnModPauseCleanup ()
224228{
229+ for (int i = 0 ; i < m_iEffectCount; ++i)
230+ {
231+ ZChaosEffect *effect = m_rgEffectsArray[i];
232+
233+ if (!effect)
234+ {
235+ LOG (" No effect at index " << i);
236+ continue ;
237+ }
238+
239+ std::ostringstream oss;
240+ oss << " zchaos_" << i << " _" ;
241+ char *ptr = effect->name ;
242+ for (char c = *ptr; c; c = *++ptr)
243+ {
244+ if (' a' <= c && c <= ' z' )
245+ {
246+ oss << c;
247+ }
248+ if (' A' <= c && c <= ' Z' )
249+ {
250+ oss << (char )(c - ' A' + ' a' );
251+ }
252+ }
253+
254+ std::string effectId = oss.str ();
255+
256+ EffectData effectData;
257+ effectData.Name = effect->name ;
258+ effectData.Id = effectId;
259+ effectData.TimedType = effect->m_OnTick ? EEffectTimedType::Custom : EEffectTimedType::NotTimed;
260+ if (effect->m_OnTick )
261+ {
262+ effectData.CustomTime = effect->defaultTime / 1000 ;
263+ }
264+
265+ if (g_dictEnabledEffects.contains (effectId))
266+ {
267+ g_dictEnabledEffects.erase (effectId);
268+ }
269+
270+ if (auto reg = GetRegisteredEffect (effectId))
271+ {
272+ g_RegisteredEffects.erase (std::remove_if (g_RegisteredEffects.begin (), g_RegisteredEffects.end (),
273+ [effectId](RegisteredEffect e)
274+ { return e.GetIndentifier ().GetEffectId () == effectId; }),
275+ g_RegisteredEffects.end ());
276+ }
277+ }
278+
279+
225280 m_rgEffectsArray = 0 ;
226281 m_iEffectCount = 0 ;
227282}
0 commit comments