rimworld-animations/1.5/Source/Utilities/AnimationUtility.cs

136 lines
3.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using rjw.Modules.Interactions.Helpers;
using rjw.Modules.Interactions.Objects;
using UnityEngine;
using Verse;
using Verse.AI;
using rjw.Modules.Interactions.Enums;
namespace Rimworld_Animations {
public static class AnimationUtility {
public static bool GenitalCheckForPawn(List<string> requiredGenitals, Pawn pawn, out string failReason)
{
failReason = null;
if (requiredGenitals != null)
{
if (requiredGenitals.Contains("Vagina"))
{
if (!rjw.Genital_Helper.has_vagina(pawn))
{
failReason = "missing vagina";
return false;
}
}
if (requiredGenitals.Contains("Penis"))
{
if (!(rjw.Genital_Helper.has_multipenis(pawn) || rjw.Genital_Helper.has_penis_infertile(pawn) || rjw.Genital_Helper.has_penis_fertile(pawn) || rjw.Genital_Helper.has_ovipositorM(pawn) || rjw.Genital_Helper.has_ovipositorF(pawn)))
{
failReason = "missing penis";
return false;
}
}
if (requiredGenitals.Contains("Mouth"))
{
if (!rjw.Genital_Helper.has_mouth(pawn))
{
failReason = "missing mouth";
return false;
}
}
if (requiredGenitals.Contains("Anus"))
{
if (!rjw.Genital_Helper.has_anus(pawn))
{
failReason = "missing anus";
return false;
}
}
if (requiredGenitals.Contains("Breasts"))
{
if (!rjw.Genital_Helper.can_do_breastjob(pawn))
{
failReason = "missing breasts";
return false;
}
}
if (requiredGenitals.Contains("NoVagina"))
{
if (rjw.Genital_Helper.has_vagina(pawn))
{
failReason = "has vagina";
return false;
}
}
if (requiredGenitals.Contains("NoPenis"))
{
if ((rjw.Genital_Helper.has_multipenis(pawn) || rjw.Genital_Helper.has_penis_infertile(pawn) || rjw.Genital_Helper.has_penis_fertile(pawn)))
{
failReason = "has penis";
return false;
}
}
if (requiredGenitals.Contains("NoMouth"))
{
if (rjw.Genital_Helper.has_mouth(pawn))
{
failReason = "has mouth";
return false;
}
}
if (requiredGenitals.Contains("NoAnus"))
{
if (rjw.Genital_Helper.has_anus(pawn))
{
failReason = "has anus";
return false;
}
}
if (requiredGenitals.Contains("NoBreasts"))
{
if (rjw.Genital_Helper.can_do_breastjob(pawn))
{
failReason = "has breasts";
return false;
}
}
}
return true;
}
}
}