private void OnSapienceLevelChanges() { SapienceTracker fTracker = pawn.GetSapienceTracker(); if (fTracker == null) { Log.Error($"{pawn.Name} has the sapience need but not tracker!"); return; } fTracker.SapienceLevel = _currentLevel; if (pawn.needs != null) { pawn.needs.AddOrRemoveNeedsAsAppropriate(); } else { Log.Warning($"{pawn.Name} does not have needs!"); } PawnComponentsUtility.AddAndRemoveDynamicComponents(pawn); if (pawn.Faction == Faction.OfPlayer) { Find.ColonistBar?.MarkColonistsDirty(); } SapienceLevelChanged?.Invoke(this, pawn, _currentLevel); }
/// <summary> /// Initializes this instance with the specified sapience tracker. /// </summary> /// <param name="sapienceTracker">The sapience tracker.</param> public void Init([NotNull] SapienceTracker sapienceTracker) { Tracker = sapienceTracker; Init(); }