diff --git a/Defs/ThingDefs/Items_Resource_Cum.xml b/Defs/ThingDefs/Items_Resource_Cum.xml
index d01cc7e..3c6d538 100644
--- a/Defs/ThingDefs/Items_Resource_Cum.xml
+++ b/Defs/ThingDefs/Items_Resource_Cum.xml
@@ -128,4 +128,24 @@
+
+
+ AllowWithCum
+
+ Allow food that was spiced up by adding sexual fluids.
+ Foods
+ true
+ allowWithCum
+ RJWSexperience.SpecialThingFilterWorker_Cum
+
+
+
+ AllowWithoutCum
+
+ Allow food normal food.
+ Foods
+ true
+ allowWithoutCum
+ RJWSexperience.SpecialThingFilterWorker_NoCum
+
\ No newline at end of file
diff --git a/RJWSexperience/RJWSexperience/FilterWorkers/SpecialThingFilterWorker_Cum.cs b/RJWSexperience/RJWSexperience/FilterWorkers/SpecialThingFilterWorker_Cum.cs
new file mode 100644
index 0000000..f79349a
--- /dev/null
+++ b/RJWSexperience/RJWSexperience/FilterWorkers/SpecialThingFilterWorker_Cum.cs
@@ -0,0 +1,12 @@
+using Verse;
+
+namespace RJWSexperience
+{
+ public class SpecialThingFilterWorker_Cum : SpecialThingFilterWorker_CumBase
+ {
+ public override bool Matches(Thing t)
+ {
+ return IsCum(t) || IsFoodWithCum(t);
+ }
+ }
+}
diff --git a/RJWSexperience/RJWSexperience/FilterWorkers/SpecialThingFilterWorker_CumBase.cs b/RJWSexperience/RJWSexperience/FilterWorkers/SpecialThingFilterWorker_CumBase.cs
new file mode 100644
index 0000000..e1e5747
--- /dev/null
+++ b/RJWSexperience/RJWSexperience/FilterWorkers/SpecialThingFilterWorker_CumBase.cs
@@ -0,0 +1,33 @@
+using RimWorld;
+using Verse;
+
+namespace RJWSexperience
+{
+ public abstract class SpecialThingFilterWorker_CumBase : SpecialThingFilterWorker
+ {
+ public override bool CanEverMatch(ThingDef def)
+ {
+ return def.IsIngestible && def.IsProcessedFood;
+ }
+
+ protected bool IsCum(Thing t) => IsCum(t.def);
+
+ protected bool IsCum(ThingDef t) => t == VariousDefOf.GatheredCum;
+
+ protected bool IsFoodWithCum(Thing food)
+ {
+ CompIngredients compIngredients = food.TryGetComp();
+
+ if (compIngredients == null)
+ return false;
+
+ foreach (ThingDef ingredient in compIngredients.ingredients)
+ {
+ if (IsCum(ingredient))
+ return true;
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/RJWSexperience/RJWSexperience/FilterWorkers/SpecialThingFilterWorker_NoCum.cs b/RJWSexperience/RJWSexperience/FilterWorkers/SpecialThingFilterWorker_NoCum.cs
new file mode 100644
index 0000000..99b469c
--- /dev/null
+++ b/RJWSexperience/RJWSexperience/FilterWorkers/SpecialThingFilterWorker_NoCum.cs
@@ -0,0 +1,12 @@
+using Verse;
+
+namespace RJWSexperience
+{
+ public class SpecialThingFilterWorker_NoCum : SpecialThingFilterWorker_CumBase
+ {
+ public override bool Matches(Thing t)
+ {
+ return !IsCum(t) && !IsFoodWithCum(t);
+ }
+ }
+}
diff --git a/RJWSexperience/RJWSexperience/RJWSexperience.csproj b/RJWSexperience/RJWSexperience/RJWSexperience.csproj
index 078d258..7bfcf8b 100644
--- a/RJWSexperience/RJWSexperience/RJWSexperience.csproj
+++ b/RJWSexperience/RJWSexperience/RJWSexperience.csproj
@@ -70,6 +70,8 @@
+
+
@@ -89,6 +91,7 @@
+