public override bool Test(Sim a, EquestrianCenter target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { if (target.IsActorUsingMe(a)) { return(false); } Posture posture = a.Posture as RidingPosture; if (posture == null) { posture = a.Posture as LeadingHorsePosture; if (posture == null) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(EquestrianCenter.OfferStallionAsStud.LocalizeString(a.IsFemale, "NeedHorse", new object[] { a })); return(false); } } Sim container = posture.Container as Sim; if (!container.IsSelectable) { return(false); } if (container.SimDescription.IsFemale) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(EquestrianCenter.OfferStallionAsStud.LocalizeString(a.IsFemale, "NeedMaleHorse", new object[] { a })); return(false); } else if (container.SimDescription.Child) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(EquestrianCenter.OfferStallionAsStud.LocalizeString(a.IsFemale, "NeedAdultHorse", new object[] { a })); return(false); } else if (container.SimDescription.Elder) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(EquestrianCenter.OfferStallionAsStud.LocalizeString(container.IsFemale, "ElderPetsTooOldForBreed", new object[] { container })); return(false); } /* * if (container.SimDescription.IsUnicorn) * { * greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(EquestrianCenter.OfferStallionAsStud.LocalizeString(a.IsFemale, "UnicornCannotBeOffered", new object[] { a })); * return false; * } */ Motives motives = container.Motives; if (motives.HasMotive(CommodityKind.StallionOffered) && (motives.GetValue(CommodityKind.StallionOffered) >= EquestrianCenter.kOfferStallionMotiveThreshold)) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(EquestrianCenter.OfferStallionAsStud.LocalizeString(a.IsFemale, "Cooldown", new object[] { a, container })); return(false); } return(true); }
public void motive_motive_distress(Sim sim, CommodityKind commodity) { if (commodity == (CommodityKind)0x44440444) { return; } SimDescription simd = sim.SimDescription; BuffManager buffManager = sim.BuffManager; Motives moves = sim.Motives; switch (commodity) { case CommodityKind.Bladder: { bool flag = true; InteractionDefinition interactionDefinition; switch (simd.Species) { case CASAgeGenderFlags.Horse: interactionDefinition = Sim.HorsePee.Singleton; break; case CASAgeGenderFlags.Dog: case CASAgeGenderFlags.LittleDog: interactionDefinition = (InteractionDefinition)Sim.DogPeeStart.Singleton; break; case CASAgeGenderFlags.Cat: interactionDefinition = (InteractionDefinition)Sim.CatPeeStart.Singleton; break; default: interactionDefinition = Sim.BladderFailure.Singleton; break; } foreach (InteractionInstance interaction in sim.InteractionQueue.InteractionList) { if (interaction is Sim.DogPee || interaction is Sim.CatPee || interaction.InteractionDefinition == interactionDefinition) { flag = false; break; } } if (flag) { SwimmingInPool swimmingInPool = sim.Posture as SwimmingInPool; if (swimmingInPool == null) { InteractionInstance interactionInstance = interactionDefinition.CreateInstance(sim, sim, new InteractionPriority(InteractionPriorityLevel.High), false, false); Sim.DogPeeStart dogPeeStart = interactionInstance as Sim.DogPeeStart; if (dogPeeStart != null) { dogPeeStart.DoNotRoute = true; } else { Sim.CatPeeStart catPeeStart = interactionInstance as Sim.CatPeeStart; if (catPeeStart != null) { catPeeStart.DoNotRoute = true; } } if (sim.InteractionQueue.AddNext(interactionInstance) && simd.IsRaccoon) { sim.AddExitReason(ExitReason.BuffFailureState); } else { BuffInstance buffOfSolveCommodity = buffManager.GetBuffOfSolveCommodity(commodity); if (buffOfSolveCommodity != null && buffOfSolveCommodity.EffectValue <= 0) { ThoughtBalloonManager.BalloonData balloonData = new ThoughtBalloonManager.BalloonData(buffOfSolveCommodity.ThumbString); if (balloonData.IsValid) { balloonData.BalloonType = ThoughtBalloonTypes.kScreamBalloon; balloonData.mCoolDown = ThoughtBalloonCooldown.None; sim.ThoughtBalloonManager.ShowBalloon(balloonData); } } moves.SetMax(CommodityKind.Bladder); if (!simd.IsPet) { PuddleManager.AddPuddle(sim.Position); moves.SetValue(CommodityKind.Hygiene, -100f); if (GlobalFunctions.AreOtherSimsNearby(sim, BuffEmbarrassed.DistanceForEmbarrassedBuff)) { buffManager.AddElement(BuffNames.Embarrassed, Origin.FromPeeingSelf); } ActiveTopic.AddToSim(sim, "Embarrassment"); } else { MetaAutonomyVenueType metaAutonomyVenueType = sim.LotCurrent.GetMetaAutonomyVenueType(); if ((!simd.IsADogSpecies || metaAutonomyVenueType != MetaAutonomyVenueType.DogPark) && World.GetTerrainType(sim.Position) == TerrainType.LotFloor) { PuddleManager.AddPuddle(sim.Position); } } EventTracker.SendEvent(EventTypeId.kBladderFailure, sim); } Motive motive = moves.GetMotive(CommodityKind.Bladder); if (motive != null) { motive.PotionBladderDecayOverride = false; } } else { swimmingInPool.ContainerPool.PeeInPool(sim); } } break; } case CommodityKind.Hunger: case CommodityKind.VampireThirst: if (simd.IsFrankenstein) { OccultFrankenstein.PushFrankensteinShortOut(sim); } else if (!simd.IsGhost && !simd.IsDead && !IsCheckKillSimInteraction(sim)) { if (sim.Posture.Satisfies(CommodityKind.ScubaDiving, null) && !simd.IsMermaid) { sim.Kill(SimDescription.DeathType.ScubaDrown); } else if (sim.Posture.Satisfies(CommodityKind.SwimmingInPool, null) && !simd.IsMermaid) { sim.Kill(SimDescription.DeathType.Drown); } else if (SimTemperature.HasFrozenSolidInteraction(sim)) { sim.Kill(SimDescription.DeathType.Freeze, null, false); } else if (OccultMermaid.IsDehydrated(sim)) { sim.Kill(SimDescription.DeathType.MermaidDehydrated, null, false); } else { sim.Kill(sim.SimDescription.IsVampire ? SimDescription.DeathType.Thirst : SimDescription.DeathType.Starve); } } break; case CommodityKind.Temperature: { float value = moves.GetValue(CommodityKind.Temperature); if (value > 0f) { SimTemperature.PushSpontaneouslyCombustInteraction(sim); } else { SimTemperature.PushFreezeInteraction(sim); } break; } case CommodityKind.MermaidDermalHydration: OccultMermaid.CollapseFromDehydration(sim); break; } }