static void Postfix(SimGameState __instance)
        {
            List <FactionValue> alliedFactions = new List <FactionValue>();

            foreach (string factionName in __instance.GetAllCareerAllies())
            {
                alliedFactions.Add(FactionEnumeration.GetFactionByName(factionName));
            }

            foreach (Pilot pilot in __instance.PilotRoster)
            {
                CrewDetails details = ModState.GetCrewDetails(pilot.pilotDef);

                // Decay positive attitude
                if (details.Attitude > 0)
                {
                    int decayAmount = (int)Math.Ceiling(details.Attitude * Mod.Config.Attitude.Monthly.Decay);
                    Mod.Log.Debug?.Write($"Decaying positive attitude from {details.Attitude} by {decayAmount}");
                    details.Attitude -= decayAmount;
                }

                // Apply the morale modifier
                int econMod = Mod.Config.Attitude.Monthly.EconomyNormalMod;
                if (__instance.ExpenditureLevel == EconomyScale.Spartan)
                {
                    econMod = Mod.Config.Attitude.Monthly.EconSpartanMod;
                }
                else if (__instance.ExpenditureLevel == EconomyScale.Restrictive)
                {
                    econMod = Mod.Config.Attitude.Monthly.EconRestrictiveMod;
                }
                else if (__instance.ExpenditureLevel == EconomyScale.Generous)
                {
                    econMod = Mod.Config.Attitude.Monthly.EconomyGenerousMod;
                }
                else if (__instance.ExpenditureLevel == EconomyScale.Extravagant)
                {
                    econMod = Mod.Config.Attitude.Monthly.EconomyExtravagantMod;
                }
                details.Attitude += econMod;

                // Check pilots to see if they favor or hate an allied faction
                if (details.FavoredFactionId > 0 && !details.IsPlayer)
                {
                    foreach (FactionValue faction in alliedFactions)
                    {
                        if (faction.FactionID == details.FavoredFactionId)
                        {
                            Mod.Log.Debug?.Write($"Pilot {pilot.Name} favors allied faction: {faction.FriendlyName}, " +
                                                 $"applying attitude mod: {Mod.Config.Attitude.Monthly.FavoredEmployerAlliedMod}");
                            details.Attitude += Mod.Config.Attitude.Monthly.FavoredEmployerAlliedMod;
                            ModState.UpdateOrCreateCrewDetails(pilot.pilotDef, details);
                        }
                    }
                }

                if (details.HatedFactionId > 0 && !details.IsPlayer)
                {
                    foreach (FactionValue faction in alliedFactions)
                    {
                        if (faction.FactionID == details.HatedFactionId)
                        {
                            Mod.Log.Debug?.Write($"Pilot {pilot.Name} hates allied faction: {faction.FriendlyName}, " +
                                                 $"applying attitude mod: {Mod.Config.Attitude.Monthly.HatedEmployerAlliedMod}");
                            details.Attitude += Mod.Config.Attitude.Monthly.HatedEmployerAlliedMod;
                            ModState.UpdateOrCreateCrewDetails(pilot.pilotDef, details);
                        }
                    }
                }

                // Clamp values
                details.Attitude = Mathf.Clamp(details.Attitude, Mod.Config.Attitude.ThresholdMin, Mod.Config.Attitude.ThresholdMax);

                ModState.UpdateOrCreateCrewDetails(pilot.pilotDef, details);
            }
        }