public override bool MoreChecks(Pawn pawn, Thing t, bool forced = false) { //Log.Message("[RJW]" + this.GetType().ToString() + " base checks: pass"); Building_Bed target = t as Building_Bed; if (target == null) { if (RJWSettings.DevMode) { JobFailReason.Is("not a bed"); } return(false); } if (!target.AssignedPawns.Contains(pawn)) { if (RJWSettings.DevMode) { JobFailReason.Is("not pawn bed"); } return(false); } /* * if (!target.AssignedPawns.Contains(pawn)) * if (!pawn.CanReserve(target, target.SleepingSlotsCount, 0) && (!target.AnyUnownedSleepingSlot)) * { * if (RJWSettings.DevMode) JobFailReason.Is("no space in bed"); * return false; * } */ if (!pawn.IsDesignatedHero()) { if (!RJWSettings.WildMode) { if (!xxx.is_nympho(pawn)) { if ((xxx.need_some_sex(pawn) < 2f)) { if (RJWSettings.DevMode) { JobFailReason.Is("not horny enough"); } return(false); } } if (target.CurOccupants.Count() != 0) { if (target.CurOccupants.Count() == 1 && !target.CurOccupants.Contains(pawn)) { if (RJWSettings.DevMode) { JobFailReason.Is("bed not empty"); } return(false); } if (target.CurOccupants.Count() > 1) { if (RJWSettings.DevMode) { JobFailReason.Is("bed not empty"); } return(false); } } //TODO: more exhibitionsts checks? bool canbeseen = false; foreach (Pawn bystander in pawn.Map.mapPawns.AllPawnsSpawned.Where(x => xxx.is_human(x) && x != pawn)) { // dont see through walls, dont see whole map, only 15 cells around if (target.CanSee(bystander) && target.Position.DistanceToSquared(bystander.Position) < 15) { //if (!LovePartnerRelationUtility.LovePartnerRelationExists(pawn, bystander)) canbeseen = true; } } if (!xxx.has_quirk(pawn, "Exhibitionist") && canbeseen) { if (RJWSettings.DevMode) { JobFailReason.Is("can be seen"); } return(false); } if (xxx.has_quirk(pawn, "Exhibitionist") && !canbeseen) { if (RJWSettings.DevMode) { JobFailReason.Is("can not be seen"); } return(false); } } } //experimental change textures of bed to w***e bed //Log.Message("[RJW] bed " + t.GetType().ToString() + " path " + t.Graphic.data.texPath); //t.Graphic.data.texPath = "Things/Building/Furniture/Bed/DoubleBedWhore"; //t.Graphic.path = "Things/Building/Furniture/Bed/DoubleBedWhore"; //t.DefaultGraphic.data.texPath = "Things/Building/Furniture/Bed/DoubleBedWhore"; //t.DefaultGraphic.path = "Things/Building/Furniture/Bed/DoubleBedWhore"; //Log.Message("[RJW] bed " + t.GetType().ToString() + " texPath " + t.Graphic.data.texPath); //Log.Message("[RJW] bed " + t.GetType().ToString() + " drawSize " + t.Graphic.data.drawSize); //t.Draw(); //t.ExposeData(); //Scribe_Values.Look(ref t.Graphic.data.texPath, t.Graphic.data.texPath, "Things/Building/Furniture/Bed/DoubleBedWhore", true); //Log.Message("[RJW]" + this.GetType().ToString() + " extended checks: can start sex"); return(true); }