public static void SetupTraitHook(Trait trait, StatusEffects parent) { bool debug = RogueFramework.IsDebugEnabled(DebugFlags.Traits); bool updateable = false; trait.__RogueLibsContainer = parent; foreach (IHookFactory <Trait> factory in RogueFramework.TraitFactories) { if (factory.TryCreate(trait, out IHook <Trait> hook)) { if (debug) { if (hook is CustomTrait) { RogueFramework.LogDebug($"Initializing custom trait {hook} ({trait.traitName}, {parent.agent.agentName})."); } else { RogueFramework.LogDebug($"Initializing trait hook {hook} ({trait.traitName}, {parent.agent.agentName})."); } } trait.AddHook(hook); if (hook is CustomTrait && hook is ITraitUpdateable) { updateable = true; } } } if (updateable && parent.agent.name != "DummyAgent" && !parent.agent.name.Contains("Backup")) { parent.StartCoroutine(parent.UpdateTrait(trait)); trait.requiresUpdates = true; } }