public override bool Test(Sim actor, Phone target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { if (base.Test(actor, target, isAutonomous, ref greyedOutTooltipCallback)) { if (isAutonomous) { if (!Woohooer.Settings.mWoohootyTextAutonomous[PersistedSettings.GetSpeciesIndex(actor)]) { return(false); } } if (!actor.IsAtHome) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(TravelUtil.LocalizeString(actor.IsFemale, "NotAtHome", new object[] { actor })); return(false); } if (!base.CanSimInviteOver(actor, isAutonomous) || !base.CanInviteOverToLot(actor.LotCurrent, isAutonomous)) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(TravelUtil.LocalizeString(actor.IsFemale, "CannotInviteOver", new object[] { actor })); return(false); } if (actor.SimDescription.IsEP11Bot) { if ((actor.TraitManager == null) || !actor.TraitManager.HasElement(TraitNames.CapacityToLoveChip)) { return(false); } } bool flag = false; bool flag2 = false; if (actor.SimDescription.Teen && Woohooer.Settings.AllowTeen(true)) { flag = true; } if (actor.SimDescription.Teen && Woohooer.Settings.AllowTeenAdult(true)) { flag2 = true; } bool locationTest = false; foreach (IMiniRelationship relationship in Relationship.GetMiniRelationships(actor.SimDescription)) { SimDescription description = SimDescription.Find(relationship.GetOtherSimDescriptionId(actor.SimDescription)); if (description != null && description.CreatedSim != null && description.CreatedSim.LotCurrent != actor.LotCurrent && !description.ChildOrBelow && description.IsHuman) { if (!flag && actor.SimDescription.Teen && description.Teen) { continue; } if (!flag2 && actor.SimDescription.Teen && description.YoungAdultOrAbove) { continue; } if (isAutonomous && !CommonSocials.CheckAutonomousGenderPreference(actor.SimDescription, description)) { continue; } if (isAutonomous && !CommonWoohoo.SatisfiesCooldown(actor, description.CreatedSim, isAutonomous, ref greyedOutTooltipCallback)) { continue; } if (!locationTest) { // only humans can use this so we don't need to keep scanning the lot each loop if (!CommonWoohoo.HasWoohooableObject(actor.LotHome, actor, description.CreatedSim)) { return(false); } else { locationTest = true; } } return(true); } } } return(false); }
protected static void GetPotentials(Sim actor, Computer target, bool autonomous, bool ignoreGender, List <Sim> unknown, List <Sim> known) { foreach (Sim sim in LotManager.Actors) { if (sim == null) { continue; } if (actor.Household == sim.Household) { continue; } //msg += Common.NewLine + sim.FullName; string reason; GreyedOutTooltipCallback callback = null; if (!CommonSocials.CanGetRomantic(sim, actor, autonomous, true, true, ref callback, out reason)) { //msg += Common.NewLine + " " + callback(); continue; } if (!ignoreGender) { if (!CommonSocials.CheckAutonomousGenderPreference(sim.SimDescription, actor.SimDescription)) { //msg += Common.NewLine + " Not Gender Preference"; continue; } } if (!target.CanSimBeChattedWith(actor, sim)) { //msg += Common.NewLine + " Not CanBeChatted"; continue; } if (unknown != null) { int score = ScoringLookup.GetScore("LikeCyberWoohoo", sim.SimDescription) + KamaSimtra.Settings.mCyberWoohooBaseChanceScoring; if (score < 0) { //msg += Common.NewLine + " Score Fail " + score; continue; } } if (Relationship.Get(actor, sim, false) == null) { if (unknown != null) { unknown.Add(sim); } } else { known.Add(sim); } } }