mirror of
				https://gitgud.io/c0ffeeeeeeee/rjw-toys-and-masturbation.git
				synced 2024-08-15 00:43:44 +00:00 
			
		
		
		
	anim comp and features
This commit is contained in:
		
							parent
							
								
									00e8d5cf4e
								
							
						
					
					
						commit
						456888cdfa
					
				
					 6 changed files with 50 additions and 6 deletions
				
			
		
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
      <li>
 | 
					      <li>
 | 
				
			||||||
        <compClass>CompQuality</compClass>
 | 
					        <compClass>CompQuality</compClass>
 | 
				
			||||||
      </li>
 | 
					      </li>
 | 
				
			||||||
      <li Class="RJW_ToysAndMasturbation.CompProperties_SexToy" />
 | 
					 | 
				
			||||||
    </comps>
 | 
					    </comps>
 | 
				
			||||||
    <selectable>true</selectable>
 | 
					    <selectable>true</selectable>
 | 
				
			||||||
    <generateCommonality>0.0</generateCommonality>
 | 
					    <generateCommonality>0.0</generateCommonality>
 | 
				
			||||||
| 
						 | 
					@ -19,7 +18,7 @@
 | 
				
			||||||
    <drawGUIOverlay>true</drawGUIOverlay>
 | 
					    <drawGUIOverlay>true</drawGUIOverlay>
 | 
				
			||||||
    <pathCost>8</pathCost>
 | 
					    <pathCost>8</pathCost>
 | 
				
			||||||
    <altitudeLayer>Item</altitudeLayer>
 | 
					    <altitudeLayer>Item</altitudeLayer>
 | 
				
			||||||
    <tickerType>Never</tickerType>
 | 
					    <tickerType>Normal</tickerType>
 | 
				
			||||||
    <tradeTags>
 | 
					    <tradeTags>
 | 
				
			||||||
      <li>Exotic</li>
 | 
					      <li>Exotic</li>
 | 
				
			||||||
    </tradeTags>
 | 
					    </tradeTags>
 | 
				
			||||||
| 
						 | 
					@ -32,7 +31,14 @@
 | 
				
			||||||
    <defName>SexToysDildo</defName>
 | 
					    <defName>SexToysDildo</defName>
 | 
				
			||||||
    <label>dildo</label>
 | 
					    <label>dildo</label>
 | 
				
			||||||
    <description>A simple dildo for masturbation.</description>
 | 
					    <description>A simple dildo for masturbation.</description>
 | 
				
			||||||
 | 
					    <comps>
 | 
				
			||||||
 | 
						    <li Class="RJW_ToysAndMasturbation.CompProperties_SexToy">
 | 
				
			||||||
 | 
							    <requiredBodyParts>
 | 
				
			||||||
 | 
								    <li>vagina</li>
 | 
				
			||||||
 | 
							    </requiredBodyParts>
 | 
				
			||||||
 | 
						    </li>
 | 
				
			||||||
 | 
						    <li Class="Rimworld_Animations.CompProperties_ThingAnimator" />
 | 
				
			||||||
 | 
					    </comps>
 | 
				
			||||||
    <graphicData>
 | 
					    <graphicData>
 | 
				
			||||||
      <texPath>Things/SexToys/Dildo</texPath>
 | 
					      <texPath>Things/SexToys/Dildo</texPath>
 | 
				
			||||||
      <shaderType>CutoutComplex</shaderType>
 | 
					      <shaderType>CutoutComplex</shaderType>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
<?xml version="1.0" encoding="utf-8" ?>
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
<Patch>
 | 
					<Patch>
 | 
				
			||||||
 | 
						<!--
 | 
				
			||||||
  <Operation Class="PatchOperationSequence">
 | 
					  <Operation Class="PatchOperationSequence">
 | 
				
			||||||
    <operations>
 | 
					    <operations>
 | 
				
			||||||
      <li Class="PatchOperationAdd">
 | 
					      <li Class="PatchOperationAdd">
 | 
				
			||||||
| 
						 | 
					@ -10,4 +11,5 @@
 | 
				
			||||||
      </li>
 | 
					      </li>
 | 
				
			||||||
    </operations>
 | 
					    </operations>
 | 
				
			||||||
  </Operation>
 | 
					  </Operation>
 | 
				
			||||||
 | 
					  -->
 | 
				
			||||||
</Patch>
 | 
					</Patch>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +24,9 @@ namespace RJW_ToysAndMasturbation {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if(findSexToyOnMap(pawn, out Thing sexToy)) {
 | 
								if(findSexToyOnMap(pawn, out Thing sexToy)) {
 | 
				
			||||||
				if ((SexUtility.ReadyForLovin(pawn) && (!xxx.is_whore(pawn) || pawn.IsPrisoner || xxx.is_slave(pawn))) || xxx.is_frustrated(pawn)) {
 | 
									if ((SexUtility.ReadyForLovin(pawn) && (!xxx.is_whore(pawn) || pawn.IsPrisoner || xxx.is_slave(pawn))) || xxx.is_frustrated(pawn)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										IntVec3 fapLocation = FapLocation(pawn);
 | 
				
			||||||
 | 
										
 | 
				
			||||||
					if (RJWPreferenceSettings.FapInBed && pawn.jobs.curDriver is JobDriver_LayDown) {
 | 
										if (RJWPreferenceSettings.FapInBed && pawn.jobs.curDriver is JobDriver_LayDown) {
 | 
				
			||||||
						Building_Bed bed = ((JobDriver_LayDown)pawn.jobs.curDriver).Bed;
 | 
											Building_Bed bed = ((JobDriver_LayDown)pawn.jobs.curDriver).Bed;
 | 
				
			||||||
						if (bed != null) {
 | 
											if (bed != null) {
 | 
				
			||||||
| 
						 | 
					@ -34,8 +37,9 @@ namespace RJW_ToysAndMasturbation {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					else if (RJWPreferenceSettings.FapEverywhere && (xxx.is_frustrated(pawn) || xxx.has_quirk(pawn, "Exhibitionist"))) {
 | 
										else if (RJWPreferenceSettings.FapEverywhere && (xxx.is_frustrated(pawn) || xxx.has_quirk(pawn, "Exhibitionist")) 
 | 
				
			||||||
						Job j = JobMaker.MakeJob(MasturbateToyDefOf.MasturbateWithToy, sexToy, null, FapLocation(pawn));
 | 
											&& ReachabilityUtility.CanReach(pawn, fapLocation, PathEndMode.OnCell, Danger.Some)) {
 | 
				
			||||||
 | 
											Job j = JobMaker.MakeJob(MasturbateToyDefOf.MasturbateWithToy, sexToy, null, fapLocation);
 | 
				
			||||||
						j.count = 1;
 | 
											j.count = 1;
 | 
				
			||||||
						return j;
 | 
											return j;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
| 
						 | 
					@ -51,6 +55,8 @@ namespace RJW_ToysAndMasturbation {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public static bool findSexToyOnMap(Pawn p, out Thing sexToy) {
 | 
							public static bool findSexToyOnMap(Pawn p, out Thing sexToy) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								sexToy = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			Predicate<Thing> validator = delegate (Thing t) {
 | 
								Predicate<Thing> validator = delegate (Thing t) {
 | 
				
			||||||
				if(t.TryGetComp<CompSexToy>() == null) {
 | 
									if(t.TryGetComp<CompSexToy>() == null) {
 | 
				
			||||||
					return false;
 | 
										return false;
 | 
				
			||||||
| 
						 | 
					@ -66,8 +72,33 @@ namespace RJW_ToysAndMasturbation {
 | 
				
			||||||
				return false;
 | 
									return false;
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								Predicate<Thing> validatorForBed = delegate (Thing t) {
 | 
				
			||||||
 | 
									if (t.TryGetComp<CompSexToy>() == null)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										return false;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									//homo check
 | 
				
			||||||
 | 
									if (t.TryGetComp<CompSexToy>().Props.primaryGender == p.gender ||
 | 
				
			||||||
 | 
										(t.TryGetComp<CompSexToy>().Props.primaryGender == Gender.Male && xxx.can_fuck(p) && (RJWPreferenceSettings.FeMalesex == RJWPreferenceSettings.AllowedSex.All || RJWPreferenceSettings.FeMalesex == RJWPreferenceSettings.AllowedSex.Homo)) ||
 | 
				
			||||||
 | 
										(t.TryGetComp<CompSexToy>().Props.primaryGender == Gender.Female && xxx.can_be_fucked(p) && (RJWPreferenceSettings.Malesex == RJWPreferenceSettings.AllowedSex.All || RJWPreferenceSettings.Malesex == RJWPreferenceSettings.AllowedSex.Homo))
 | 
				
			||||||
 | 
										&& t.GetRoom(RegionType.Set_All) == p.CurrentBed().GetRoom(RegionType.Set_All))
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										return true;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									return false;
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (p.CurrentBed() != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									sexToy = GenClosest.ClosestThingReachable(p.Position, p.Map, ThingRequest.ForGroup(ThingRequestGroup.HaulableAlways), PathEndMode.OnCell, TraverseParms.For(p), validator: validatorForBed, maxDistance: 100);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								if(sexToy == null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									sexToy = GenClosest.ClosestThingReachable(p.Position, p.Map, ThingRequest.ForGroup(ThingRequestGroup.HaulableAlways), PathEndMode.OnCell, TraverseParms.For(p), validator: validator, maxDistance: 100);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			sexToy = GenClosest.ClosestThingReachable(p.Position, p.Map, ThingRequest.ForGroup(ThingRequestGroup.HaulableAlways), PathEndMode.OnCell, TraverseParms.For(p), validator: validator, maxDistance: 100);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (sexToy != null)
 | 
								if (sexToy != null)
 | 
				
			||||||
				return true;
 | 
									return true;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,12 +5,14 @@ using System.Text;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using RimWorld;
 | 
					using RimWorld;
 | 
				
			||||||
using Verse;
 | 
					using Verse;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace RJW_ToysAndMasturbation {
 | 
					namespace RJW_ToysAndMasturbation {
 | 
				
			||||||
    public class CompProperties_SexToy : CompProperties {
 | 
					    public class CompProperties_SexToy : CompProperties {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Gender primaryGender = Gender.Female;
 | 
					        public Gender primaryGender = Gender.Female;
 | 
				
			||||||
        public float satisfactionModifier = 1.5f;
 | 
					        public float satisfactionModifier = 1.5f;
 | 
				
			||||||
 | 
					        public List<string> requiredBodyParts;
 | 
				
			||||||
        public CompProperties_SexToy() {
 | 
					        public CompProperties_SexToy() {
 | 
				
			||||||
            compClass = typeof(CompSexToy);
 | 
					            compClass = typeof(CompSexToy);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@ namespace RJW_ToysAndMasturbation {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public CompProperties_SexToy Props => (CompProperties_SexToy)props;
 | 
							public CompProperties_SexToy Props => (CompProperties_SexToy)props;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public override IEnumerable<FloatMenuOption> CompFloatMenuOptions(Pawn pawn) {
 | 
							public override IEnumerable<FloatMenuOption> CompFloatMenuOptions(Pawn pawn) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (!pawn.CanReach(parent, PathEndMode.Touch, Danger.Deadly)) {
 | 
								if (!pawn.CanReach(parent, PathEndMode.Touch, Danger.Deadly)) {
 | 
				
			||||||
| 
						 | 
					@ -54,6 +55,8 @@ namespace RJW_ToysAndMasturbation {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		private string FloatMenuOptionLabel(Pawn pawn) {
 | 
							private string FloatMenuOptionLabel(Pawn pawn) {
 | 
				
			||||||
			return "Masturbate with toy";
 | 
								return "Masturbate with toy";
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue