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);
        }
Beispiel #2
0
 /// <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();
 }