private static void CompletePostWorkLists() { if (Interlocked.Increment(ref workingOnDateNotifierTick) == 0) { try { Find.DateNotifier.DateNotifierTick(); } catch (Exception ex) { Log.Error(ex.ToString()); } } if (Interlocked.Increment(ref workingOnHistoryTick) == 0) { try { Find.History.HistoryTick(); } catch (Exception ex10) { Log.Error(ex10.ToString()); } } if (Interlocked.Increment(ref workingOnMiscellaneous) == 0) { try { Find.Scenario.TickScenario(); } catch (Exception ex2) { Log.Error(ex2.ToString()); } try { Find.StoryWatcher.StoryWatcherTick(); } catch (Exception ex4) { Log.Error(ex4.ToString()); } try { Find.GameEnder.GameEndTick(); } catch (Exception ex5) { Log.Error(ex5.ToString()); } try { Find.Storyteller.StorytellerTick(); } catch (Exception ex6) { Log.Error(ex6.ToString()); } try { Find.TaleManager.TaleManagerTick(); } catch (Exception ex7) { Log.Error(ex7.ToString()); } try { Find.QuestManager.QuestManagerTick(); } catch (Exception ex8) { Log.Error(ex8.ToString()); } try { Find.World.WorldPostTick(); } catch (Exception ex9) { Log.Error(ex9.ToString()); } GameComponentUtility.GameComponentTick(); try { Find.LetterStack.LetterStackTick(); } catch (Exception ex11) { Log.Error(ex11.ToString()); } try { Find.Autosaver.AutosaverTick(); } catch (Exception ex12) { Log.Error(ex12.ToString()); } try { FilthMonitor2.FilthMonitorTick(); } catch (Exception ex13) { Log.Error(ex13.ToString()); } } }
public static bool TryMakeFilth(ref bool __result, IntVec3 c, Map map, ThingDef filthDef, IEnumerable <string> sources, bool shouldPropagate, FilthSourceFlags additionalFlags = FilthSourceFlags.None) { Filth filth = null; List <Thing> thingList = c.GetThingList(map); for (int i = 0; i < thingList.Count; i++) { Thing thing; try { thing = thingList[i]; } catch (ArgumentOutOfRangeException) { break; } if (thing != null && thing.def == filthDef) { filth = (Filth)thing; break; } } if (filth == null) { filth = (Filth)default(Thing); } if (!c.Walkable(map) || (filth != null && !filth.CanBeThickened)) { if (shouldPropagate) { List <IntVec3> list = GenAdj.AdjacentCells8WayRandomized(); for (int i = 0; i < 8; i++) { IntVec3 c2 = c + list[i]; //if (c2.InBounds(map) && TryMakeFilth(c2, map, filthDef, sources, shouldPropagate: false)) if (c2.InBounds(map)) { bool tryMakeFilthResult = false; TryMakeFilth(ref tryMakeFilthResult, c2, map, filthDef, sources, shouldPropagate: false); if (tryMakeFilthResult) { __result = true; return(false); } } } } filth?.AddSources(sources); __result = false; return(false); } if (filth != null) { filth.ThickenFilth(); filth.AddSources(sources); } else { if (!FilthMaker.CanMakeFilth(c, map, filthDef, additionalFlags)) { __result = false; return(false); } Filth obj = (Filth)ThingMaker.MakeThing(filthDef); obj.AddSources(sources); GenSpawn.Spawn(obj, c, map); } FilthMonitor2.Notify_FilthSpawned(); __result = true; return(false); }