public static void SetupEffectHook(StatusEffect effect, StatusEffects parent) { bool debug = RogueFramework.IsDebugEnabled(DebugFlags.Effects); effect.__RogueLibsContainer = parent; foreach (IHookFactory <StatusEffect> factory in RogueFramework.EffectFactories) { if (factory.TryCreate(effect, out IHook <StatusEffect> hook)) { if (debug) { if (hook is CustomEffect) { RogueFramework.LogDebug($"Initializing custom effect {hook} ({effect.statusEffectName}, {parent.agent.agentName})."); } else { RogueFramework.LogDebug($"Initializing effect hook {hook} ({effect.statusEffectName}, {parent.agent.agentName})."); } } effect.AddHook(hook); // CustomEffect does not call OnAdded when initialized, // because of the GetStatusEffectTime/Hate patches if (hook is CustomEffect custom) { custom.OnAdded(); } } } }