mirror of
https://gitgud.io/lutepickle/rjw_menstruation.git
synced 2024-08-14 22:46:52 +00:00
59 lines
2 KiB
C#
59 lines
2 KiB
C#
using RimWorld;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using Verse;
|
|
|
|
namespace RJW_Menstruation
|
|
{
|
|
public class FilthMaker_Colored
|
|
{
|
|
|
|
public static bool TryMakeFilth(IntVec3 c, Map map, ThingDef filthDef, IEnumerable<string> sources, Color color, bool shouldPropagate, FilthSourceFlags additionalFlags = FilthSourceFlags.None)
|
|
{
|
|
Filth_Colored filth = (Filth_Colored)(from t in c.GetThingList(map)
|
|
where t.def == filthDef
|
|
select t).FirstOrDefault<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, color, false, FilthSourceFlags.None))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
if (filth != null)
|
|
{
|
|
filth.AddSources(sources);
|
|
}
|
|
return false;
|
|
}
|
|
if (filth != null)
|
|
{
|
|
filth.ThickenFilth();
|
|
filth.AddSources(sources);
|
|
}
|
|
else
|
|
{
|
|
if (!FilthMaker.CanMakeFilth(c, map, filthDef, additionalFlags))
|
|
{
|
|
return false;
|
|
}
|
|
Filth_Colored filth2 = (Filth_Colored)ThingMaker.MakeThing(filthDef, null);
|
|
filth2.DrawColor = color;
|
|
filth2.AddSources(sources);
|
|
GenSpawn.Spawn(filth2, c, map, WipeMode.Vanish);
|
|
}
|
|
//FilthMonitor.Notify_FilthSpawned();
|
|
return true;
|
|
}
|
|
|
|
|
|
}
|
|
}
|