private bool FinishAdoption(Sim pet) { if (pet != null) { pet.InteractionQueue.CancelAllInteractions(); pet.SetObjectToReset(); SpeedTrap.Sleep(); pet.UpdateBlockTime(); Actor.ShowTNSAndPlayStingIfSelectable("sting_pet_adopt", TNSNames.AdoptLitterTNS, Target, pet, null, null, pet.IsFemale, false, new object[] { pet }); if (pet == Sim.ActiveActor) { LotManager.SelectNextSim(); } if (pet.Household != null) { pet.Household.Remove(pet.SimDescription); } Actor.Household.Add(pet.SimDescription); Relationships.CheckAddHumanParentFlagOnAdoption(Actor.SimDescription, pet.SimDescription); if (Actor.Partner != null) { Relationships.CheckAddHumanParentFlagOnAdoption(Actor.Partner, pet.SimDescription); } InteractionInstance entry = new SocialInteractionA.Definition("Talk To Pet", new string[0x0], null, false).CreateInstance(pet, Actor, GetPriority(), false, false); List <Sim> list = new List <Sim>(); list.Add(pet); GoHome home = GoHome.Singleton.CreateInstance(Actor.LotHome, Actor, GetPriority(), false, false) as GoHome; home.SimFollowers = list; Actor.InteractionQueue.AddNext(home); return(Actor.InteractionQueue.AddNext(entry)); } return(false); }
protected override bool Run(SimDescription me, bool singleSelection) { SimDescription pet = PetAdoption.ShowAdoptPetPicker(true); if (pet == null) { Common.Notify(Common.Localize("AdoptPet:Failure")); return(false); } string titleText = Common.LocalizeEAString(pet.IsFemale, "Gameplay/Actors/Sim/StrayPets:AdoptStrayNameTitle"); string promptText = Common.LocalizeEAString(pet.IsFemale, "Gameplay/Actors/Sim/StrayPets:AdoptStrayNameDescription"); pet.FirstName = StringInputDialog.Show(titleText, promptText, pet.FirstName, 256, StringInputDialog.Validation.SimNameText); pet.LastName = me.LastName; PetAdoption.GetPetOutOfPool(pet); if (pet.Household != null) { pet.Household.Remove(pet, false); } me.Household.Add(pet); pet.IsNeverSelectable = false; pet.WasAdopted = true; Relationships.CheckAddHumanParentFlagOnAdoption(me, pet); if (me.Partner != null) { Relationships.CheckAddHumanParentFlagOnAdoption(me.Partner, pet); } Instantiation.Perform(pet, null); return(true); }
protected override bool PrivateUpdate(ScenarioFrame frame) { if (mNewSim != null) { mSpecies = mNewSim.Species; } if (HouseholdsEx.IsFull(this, Sim.Household, mSpecies, 0, true, true)) { IncStat("Full"); return(false); } bool created = false; if (mNewSim == null) { using (SimFromBin <ManagerLot> simBin = new SimFromBin <ManagerLot>(this, Lots)) { CASAgeGenderFlags gender = BabyGenderScenario.GetGenderByFirstBorn(Manager, GetValue <ImmigrateScenario.GenderOption, BabyGenderScenario.FirstBornGender>(), false); mNewSim = simBin.CreateNewSim(Ages, gender, mSpecies); created = true; } } if (mNewSim != null) { if (Households.MoveSim(mNewSim, Sim.Household)) { mNewSim.LastName = Sim.LastName; mNewSim.WasAdopted = true; Relationship relation = ManagerSim.GetRelationship(Sim, mNewSim); if (relation != null) { relation.LTR.SetLiking(Delta); } Relationships.CheckAddHumanParentFlagOnAdoption(Sim, mNewSim); if (Sim.Partner != null) { Relationships.CheckAddHumanParentFlagOnAdoption(Sim.Partner, mNewSim); } if (SimTypes.IsEquivalentSpecies(mNewSim, Sim)) { Sim.Genealogy.AddChild(mNewSim.Genealogy); } UpdateDayOfLastOption(Sim); if ((Sim.Partner != null) && (Sim.IsMarried)) { if (SimTypes.IsEquivalentSpecies(mNewSim, Sim)) { Sim.Partner.Genealogy.AddChild(mNewSim.Genealogy); } UpdateDayOfLastOption(Sim.Partner); } return(true); } else if (created) { mNewSim.Dispose(); mNewSim = null; } } IncStat("No New Sim"); return(false); }