Beispiel #1
0
        public bool IsValid()
        {
            SimDescription description  = SimDescription.Find(mMom);
            SimDescription description2 = SimDescription.Find(mDad);

            return(((mHouseholdId != 0x0L) && (mSim != null)) && ((description != null) && (description2 != null)));
        }
Beispiel #2
0
        public static void SkinnyDippersReactToTeenOrBelow(List <ulong> skinnyDipperIDList)
        {
            new InteractionPriority(InteractionPriorityLevel.High);
            foreach (ulong num in skinnyDipperIDList)
            {
                SimDescription description = SimDescription.Find(num);
                if (description == null)
                {
                    continue;
                }

                // Custom
                Sim createdSim = description.CreatedSim;
                if (createdSim == null)
                {
                    continue;
                }

                // Custom
                if (createdSim.Posture == null)
                {
                    continue;
                }

                if (!createdSim.Posture.HasBeenCanceled)
                {
                    createdSim.Posture.CancelPosture(createdSim);
                }
            }
        }
Beispiel #3
0
        public override bool InRabbitHole()
        {
            base.Target.ClearAmbientSounds(base.Target);
            if (GameUtils.IsFutureWorld())
            {
                base.Target.AddAmbientSound("rhole_hospital_future_lp");
            }
            else
            {
                base.Target.AddAmbientSound("rhole_hospital_loop");
            }

            base.Target.AddAmbientSound("rhole_hospital_future_oneshot");
            base.Target.StartAmbientSounds(base.Actor, base.Target);
            if (SimDescription.Find(this.mTargetDescription) != null)
            {
                Sim createdSim = SimDescription.Find(this.mTargetDescription).CreatedSim;
                if (base.SelectedObjects.Count >= 1)
                {
                    while (!base.Actor.WaitForExitReason(Sim.kWaitForExitReasonDefaultTime, ExitReason.CancelExternal))
                    {
                        if (((createdSim != null) && (createdSim.CurrentInteraction is Hospital.BeForcedToMakeBabyWith)) && ((createdSim.SimInRabbitHolePosture && (base.SimFollowers != null)) && base.SimFollowers.Contains(createdSim)))
                        {
                            break;
                        }
                        if (((createdSim != null) && (createdSim.InteractionQueue != null)) && (createdSim.InteractionQueue.GetNumVisibleInteractions() == 0))
                        {
                            return(false);
                        }
                    }
                    if (base.Actor.HasExitReason(ExitReason.CancelExternal))
                    {
                        createdSim.AddExitReason(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached));
                        return(false);
                    }
                    base.BeginCommodityUpdates();
                    base.StartStages();
                    Definition interactionDefinition = base.InteractionDefinition as Definition;
                    Common.Notify("Customize: " + interactionDefinition.customize.ToString());
                    if (interactionDefinition.customize && (!CustomizeBabyDNAModel.ShowCreateCustomizeBabyDNAUIDialog(base.Actor) || base.Actor.HasExitReason(ExitReason.CancelExternal)))
                    {
                        base.Actor.AddExitReason(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached));
                        createdSim.AddExitReason(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached));
                        return(false);
                    }
                    bool succeeded = base.DoLoop(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached));
                    base.EndCommodityUpdates(succeeded);
                    if (base.Actor.HasExitReason(ExitReason.CancelExternal))
                    {
                        createdSim.AddExitReason(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached));
                        return(false);
                    }
                    this.MakeBaby(base.Actor.SimDescription, SimDescription.Find(this.mTargetDescription), interactionDefinition.customize);
                    this.mBabyIsMade = true;
                    base.Actor.Household.ModifyFamilyFunds(-kCostOfBabyMaking);
                    return(succeeded);
                }
            }
            return(false);
        }
Beispiel #4
0
        public static void ReactToSkinnyDippers(Sim sim, GameObject objectSkinnyDippedIn, InteractionDefinition skinnyDipInteraction, List <ulong> skinnyDipperList)
        {
            if (!sim.SimDescription.TeenOrBelow && ((skinnyDipperList != null) && (skinnyDipperList.Count != 0x0)))
            {
                List <ulong> skinnyDippers = new List <ulong>(skinnyDipperList);
                skinnyDippers.Remove(sim.SimDescription.SimDescriptionId);
                if (skinnyDippers.Count != 0x0)
                {
                    bool flag  = Pool.ShouldReactPositiveToSkinnyDipper(sim, skinnyDippers);
                    bool flag2 = false;
                    if (flag && !sim.HasTrait(TraitNames.Hydrophobic))
                    {
                        flag2 = RandomUtil.RandomChance(Pool.kChancePositiveReactionSimsJoin);
                    }

                    SimDescription simDesc = SimDescription.Find(RandomUtil.GetRandomObjectFromList(skinnyDippers));
                    if (simDesc != null)
                    {
                        Sim createdSim = simDesc.CreatedSim;

                        Pool.ReactToSkinnyDipper instance = Pool.ReactToSkinnyDipper.Singleton.CreateInstance(createdSim, sim, new InteractionPriority(InteractionPriorityLevel.UserDirected), false, true) as Pool.ReactToSkinnyDipper;
                        instance.IsPositive           = flag;
                        instance.ShouldJoin           = flag2;
                        instance.DippingObject        = objectSkinnyDippedIn;
                        instance.SkinnyDipInteraction = skinnyDipInteraction;
                        sim.InteractionQueue.AddNextIfPossible(instance);
                    }
                }
            }
        }
Beispiel #5
0
            public void Dispose()
            {
                if (this.mPush != null && this.mPush.Valid)
                {
                    this.mPush.Dispose();
                }

                if (this.mLotPush != null && this.mLotPush.Valid)
                {
                    this.mLotPush.Dispose();
                }

                if (this.mProfessional != 0)
                {
                    SimDescription desc = SimDescription.Find(this.mProfessional);
                    if (desc != null && desc.CreatedSim != null && desc.CreatedSim.Autonomy != null)
                    {
                        if (!this.autonomyWasDisabled && desc.CreatedSim.Autonomy.mAutonomyDisabledCount > 0)
                        {
                            desc.CreatedSim.Autonomy.mAutonomyDisabledCount = 0;
                        }

                        SetupDisposeAlarm();
                    }
                }
            }
Beispiel #6
0
        public static List <IMiniSimDescription> GetSimsMatchingFilterAsMinis(string name, ulong sim)
        {
            List <IMiniSimDescription> results = new List <IMiniSimDescription>();

            SavedFilter filter = GetFilter(name);

            if (sim == 0 && PlumbBob.SelectedActor != null)
            {
                sim = PlumbBob.SelectedActor.SimDescription.SimDescriptionId;
            }

            if (filter != null && sim != 0)
            {
                bool okayed;
                IMiniSimDescription mini = SimDescription.Find(sim);
                if (mini != null)
                {
                    List <SimSelection.ICriteria> crit = new List <SimSelection.ICriteria>();
                    crit.Add(new SavedFilter.Item(filter));

                    SimSelection selection = SimSelection.Create("", mini, null, crit, true, false, out okayed);
                    if (selection.All != null && selection.All.Count > 0)
                    {
                        results.AddRange(selection.All);
                    }
                }
            }

            return(results);
        }
Beispiel #7
0
        private static void UpdateInWorldRelationships(MiniSimDescription ths, SimDescription myDesc)
        {
            foreach (MiniRelationship relationship in ths.mMiniRelationships)
            {
                MiniSimDescription description = Find(relationship.SimDescriptionId);
                if ((description != null) && description.Instantiated)
                {
                    SimDescription y = SimDescription.Find(relationship.SimDescriptionId);
                    if (y == null)
                    {
                        description.Instantiated = false;
                    }
                    else
                    {
                        Relationship     unsafely;
                        MiniRelationship mrB = description.FindMiniRelationship(ths, false);

                        // Custom
                        if (mrB != null)
                        {
                            if (GameStates.IsTravelling)
                            {
                                unsafely = Relationship.GetUnsafely(myDesc, y);
                            }
                            else
                            {
                                unsafely = Relationship.Get(myDesc, y, true);
                            }
                            unsafely.UpdateFromMiniRelationship(relationship, mrB);
                        }
                    }
                }
            }
        }
Beispiel #8
0
        public static SimDescription ImportWithCheck(MiniSimDescription miniSim)
        {
            // Custom
            //   Importing a sim that already exists in town causes issues with the long-term relationship system, don't do it
            SimDescription simDescription = SimDescription.Find(miniSim.SimDescriptionId);

            if (simDescription == null)
            {
                simDescription = UnpackSimAndUpdateRel(miniSim);
                if (simDescription != null)
                {
                    Household.CreateTouristHousehold();
                    Household.TouristHousehold.AddTemporary(simDescription);

                    miniSim.Instantiated = true;

                    (Sims3.UI.Responder.Instance.HudModel as Sims3.Gameplay.UI.HudModel).OnSimCurrentWorldChanged(true, miniSim);

                    if (simDescription.AgingState == null)
                    {
                        simDescription.AgingState = new AgingState(simDescription);
                    }
                    simDescription.AgingState.MergeTravelInformation(miniSim);

                    simDescription.PushAgingEnabledToAgingManager();
                }
            }

            return(simDescription);
        }
Beispiel #9
0
        public override void Perform(Sim sim, DiseaseVector vector)
        {
            if (sim.SimDescription.IsPregnant)
            {
                return;
            }

            if (mClone)
            {
                Pregnancies.Start(sim, sim.SimDescription, mHandlePlantSim);
            }
            else if (vector.Infector != 0)
            {
                SimDescription other = SimDescription.Find(vector.Infector);
                if (other != null)
                {
                    if (!mAllowCloseRelations)
                    {
                        if (Relationships.IsCloselyRelated(sim.SimDescription, other, false))
                        {
                            return;
                        }
                    }

                    Pregnancies.Start(sim, other, mHandlePlantSim);
                }
            }
        }
Beispiel #10
0
            public void CheckArrival()
            {
                if (this.mLotPushAttempts >= 5)
                {
                    this.Dispose();
                    return;
                }

                if (this.mProfessional != 0)
                {
                    SimDescription desc = SimDescription.Find(this.mProfessional);
                    if (desc != null)
                    {
                        if (desc.CreatedSim == null)
                        {
                            Instantiation.Perform(desc, null);
                        }

                        if (desc.CreatedSim != null)
                        {
                            SimDescription descClient = SimDescription.Find(this.mRequester);
                            if (descClient != null && descClient.LotHome != null && desc.CreatedSim.LotCurrent != descClient.LotHome)
                            {
                                SimEx.GetSimToSimHome(desc, descClient.CreatedSim, new Callback(GoToLotSuccessEx));
                                this.mLotPushAttempts++;
                            }
                        }
                    }
                    else
                    {
                        this.Dispose();
                        return;
                    }
                }
            }
Beispiel #11
0
        public static List <IDescendantHouseholdUiData> GetTimeAlamanacDescendantHouseholdData(FutureDescendantService instance)
        {
            // custom
            BuildDescendantHouseholdSpecs(instance);
            List <IDescendantHouseholdUiData> list = new List <IDescendantHouseholdUiData>();
            List <ulong> remove = new List <ulong>();

            foreach (ulong num in FutureDescendantService.sPersistableData.DescendantHouseholdsMap.Keys)
            {
                // Overwatch does this too but no harm in doing it here too
                if (SimDescription.Find(num) == null && MiniSims.Find(num) == null)
                {
                    remove.Add(num);
                }

                FutureDescendantService.DescendantHouseholdUiData item = new FutureDescendantService.DescendantHouseholdUiData
                {
                    mAncestorSimId = num
                };
                int  householdWealthScore = 0;
                int  numberOfMembers      = 0;
                bool flag = false;
                foreach (FutureDescendantService.FutureDescendantHouseholdInfo info in FutureDescendantService.sPersistableData.DescendantHouseholdsMap[num])
                {
                    if (remove.Contains(num) && info.IsSimAnAncestor(num))
                    {
                        FutureDescendantService.sPersistableData.InvalidDescendantHouseholdsInfo.Add(info);
                        flag = true;
                        continue;
                    }

                    if (!info.HasAncestorFromHousehold(Household.ActiveHousehold))
                    {
                        flag = true;
                        continue;
                    }

                    foreach (ulong num4 in info.mHouseholdMembers)
                    {
                        IMiniSimDescription iMiniSimDescription = SimDescription.GetIMiniSimDescription(num4);
                        if ((iMiniSimDescription != null) && !item.mHouseholdMembers.Contains(iMiniSimDescription))
                        {
                            item.mHouseholdMembers.Add(iMiniSimDescription);
                        }
                    }
                    householdWealthScore += info.mCurrentHouseholdWealthScore;
                    numberOfMembers      += info.mCurrentDesiredHouseholdSize;
                }
                householdWealthScore /= Math.Max(1, FutureDescendantService.sPersistableData.DescendantHouseholdsMap[num].Count);
                numberOfMembers      /= Math.Max(1, FutureDescendantService.sPersistableData.DescendantHouseholdsMap[num].Count);
                item.mHouseholdWorth  = FutureDescendantService.GetWealthTypeString(householdWealthScore);
                item.mHouseholdSize   = FutureDescendantService.GetHouseholdSizeString(numberOfMembers);
                if (item != null && !flag)
                {
                    list.Add(item);
                }
            }
            return(list);
        }
Beispiel #12
0
        public static void PackUpToMiniSimDescription(SimDescription ths)
        {
            if (ths.CreatedSim != null)
            {
                ths.CreatedSim.Destroy();
                Common.Sleep();
            }
            if (Find(ths.SimDescriptionId) != null)
            {
                SimDescription father = null;

                if (ths.Pregnancy != null)
                {
                    if ((ths.Pregnancy.mDad == null) || ths.Pregnancy.mDad.HasBeenDestroyed)
                    {
                        if (SimDescription.Find(ths.Pregnancy.DadDescriptionId) == null)
                        {
                            MiniSimDescription description = Find(ths.Pregnancy.DadDescriptionId);
                            if (description != null)
                            {
                                father = UnpackSim(description);
                                father.Genealogy.SetSimDescription(father);

                                Household.TouristHousehold.AddTemporary(father);
                            }
                        }
                    }
                }

                PackSim(ths);

                if (father != null)
                {
                    father.Dispose(true, true);
                }
            }
            else
            {
                MiniSimDescription.AddMiniSim(ths);
                ths.Household.RemoveTemporary(ths);

                MiniSimDescription miniSim;
                if (MiniSimDescription.sMiniSims.TryGetValue(ths.SimDescriptionId, out miniSim))
                {
                    GenerateCrossWorldThumbnail(miniSim, ths, true);
                }

                ths.Dispose(true, true);
            }

            ths.mPackingDescriptionTask = null;
            if (!GameStates.IsTravelling)
            {
                (Sims3.Gameplay.UI.Responder.Instance.HudModel as Sims3.Gameplay.UI.HudModel).OnSimCurrentWorldChanged(false, ths);
            }

            ths.ClearOutfits(true);
        }
Beispiel #13
0
        public override void OnAddition(BuffManager bm, BuffInstance bi, bool travelReaddition)
        {
            BuffInstanceXenogenesis instance = bi as BuffInstanceXenogenesis;

            instance.Abductee  = bm.Actor;
            instance.Pregnancy = bm.Actor.SimDescription.Pregnancy;
            instance.Alien     = SimDescription.Find(instance.Pregnancy.DadDescriptionId);
            instance.StartPregnancy();
        }
Beispiel #14
0
        public new void CheckForDad()
        {
            SimDescription description = SimDescription.Find(DadDescriptionId);

            if (description != null && description.TeenOrAbove)
            {
                mDad = description.CreatedSim;
            }
        }
Beispiel #15
0
        public override void GetNewBorns()
        {
            mNewborns = new List <Sim>();
            Sims3.Gameplay.Gameflow.Singleton.DisableSave(this, "Gameplay/ActorSystems/Pregnancy:DisableSave");
            bool keepBaby = false;

            //if (Actor.Household.NumActorMembersCountingPregnancy < 0x8)
            {
                // Custom
                if (SimTypes.IsSelectable(Actor))
                {
                    keepBaby = TwoButtonDialog.Show(AlienUtils.LocalizeString("MalePregnancyConfirmationDialog", new object[] { Actor }), AlienUtils.LocalizeString("MalePregnancyConfirmationDialogAccept", new object[0x0]), AlienUtils.LocalizeString("MalePregnancyConfirmationDialogReject", new object[0x0]));
                }
                else
                {
                    keepBaby = true;
                }
            }

            /*else
             * {
             *  Actor.ShowTNSIfSelectable(AlienUtils.LocalizeString("MalePregnancyHouseholdFullTNS", new object[] { Actor }), StyledNotification.NotificationStyle.kGameMessagePositive, ObjectGuid.InvalidObjectGuid, Actor.ObjectId);
             * }*/

            CASAgeGenderFlags gender       = RandomUtil.CoinFlip() ? CASAgeGenderFlags.Male : CASAgeGenderFlags.Female;
            SimDescription    description2 = SimDescription.Find(this.AlienParentID);
            SimDescription    newSim       = Genetics.MakeAlien(CASAgeGenderFlags.Baby, gender, GameUtils.GetCurrentWorld(), 1f, false);

            newSim.LastName = Actor.LastName;
            if ((keepBaby) && (SimTypes.IsSelectable(Actor)))
            {
                newSim.FirstName = string.Empty;
            }

            Genetics.AssignTraits(newSim, null, Actor.SimDescription, (keepBaby) && (SimTypes.IsSelectable(Actor)), (float)Actor.MoodManager.MoodValue, new Random());
            Actor.Genealogy.AddChild(newSim.Genealogy);
            if (description2 != null)
            {
                description2.Genealogy.AddChild(newSim.Genealogy);
            }

            if (keepBaby)
            {
                Actor.Household.Add(newSim);
            }
            else
            {
                Household.AlienHousehold.Add(newSim);
            }

            Sim babyToHide = newSim.Instantiate(Vector3.Empty);

            babyToHide.GreetSimOnLot(Actor.LotCurrent);
            babyToHide.SetPosition(Actor.Position);
            Pregnancy.TotallyHideBaby(babyToHide);
            mNewborns.Add(babyToHide);
        }
Beispiel #16
0
        public new List <SimDescription> CreateNewbornsBeforePacking(float bonusMoodPoints, bool bAddToFamily, int householdSimMembers, int householdPetMembers)
        {
            MiniSimDescription miniDescription = null;
            SimDescription     description;

            if (mDad == null || mDad.HasBeenDestroyed)
            {
                description = SimDescription.Find(DadDescriptionId);

                if (description == null)
                {
                    miniDescription = MiniSimDescription.Find(DadDescriptionId);

                    if (miniDescription != null)
                    {
                        description = miniDescription.UnpackSim();
                        description.Genealogy.SetSimDescription(description);
                    }
                }
            }
            else
            {
                description = mDad.SimDescription;
            }

            float  averageMoodForBirth = GetAverageMoodForBirth(description, bonusMoodPoints);
            Random pregoRandom         = new Random(mRandomGenSeed);
            int    numForBirth         = GetNumForBirth(description, pregoRandom, householdSimMembers, householdPetMembers);
            Random gen = new Random(mRandomGenSeed);
            List <SimDescription> list = new List <SimDescription>();

            for (int i = 0; i < numForBirth; i++)
            {
                DetermineGenderOfBaby(gen);
                CASAgeGenderFlags gender = mGender;
                mGender = CASAgeGenderFlags.None;
                SimDescription description2 = AlienUtilsEx.MakeAlienBaby(description, mMom.SimDescription, gender, averageMoodForBirth, pregoRandom, false);
                description2.WasCasCreated = false;

                if (bAddToFamily)
                {
                    mMom.Household.Add(description2);
                    Sim sim = description2.Instantiate(mMom.Position);
                    CheckForGhostBaby(sim);
                }

                list.Add(description2);
            }

            if (miniDescription != null)
            {
                description.Dispose(true, true);
            }

            return(list);
        }
Beispiel #17
0
            public static void GoToLotSuccessEx(Sim sim, float f)
            {
                if (sim.LotCurrent == null)
                {
                    return;
                }

                ServiceData data    = KamaSimtra.Settings.FindServiceDataInvolvingProfessionalAndLot(sim.SimDescription.SimDescriptionId, sim.LotCurrent.LotId);
                bool        proceed = false;

                if (data != null)
                {
                    SimDescription client = SimDescription.Find(data.mRequester);
                    if (client != null && client.CreatedSim != null)
                    {
                        Relationship relationship = Relationship.Get(client, sim.SimDescription, true);
                        if (relationship != null)
                        {
                            data.DisableAutonomy();
                            relationship.STC.Set(client.CreatedSim, sim, CommodityTypes.Amorous, 500f);
                            client.CreatedSim.InteractionQueue.CancelAllInteractions();
                            while (client.CreatedSim.CurrentInteraction != null)
                            {
                                Common.Sleep(0);
                            }

                            data.SetupAlarm();

                            client.CreatedSim.GreetSimOnMyLotIfPossible(sim);
                            CommonWoohoo.WoohooStyle style = CommonWoohoo.WoohooStyle.Safe;
                            if (!Woohooer.Settings.ReplaceWithRisky && client.CreatedSim.IsSelectable && TwoButtonDialog.Show(Woohooer.Localize("FriskyConfirm:Prompt", sim.IsFemale, new object[] { sim, client.CreatedSim }), Woohooer.Localize("FriskyConfirm:Yes", sim.IsFemale, new object[] { sim, client.CreatedSim }), Woohooer.Localize("FriskyConfirm:No", sim.IsFemale, new object[] { sim, client.CreatedSim })))
                            {
                                style = CommonWoohoo.WoohooStyle.Risky;
                            }
                            data.mStyle = style;
                            KamaSimtra.Settings.SetServiceData(data.mRequester, data);

                            new CommonWoohoo.PushWoohoo(sim, client.CreatedSim, false, style);
                            proceed = true;

                            if (client.CreatedSim.IsSelectable)
                            {
                                StyledNotification.Format format = new StyledNotification.Format(Common.Localize("OrderServices:Arrived", sim.IsFemale), sim.ObjectId, client.CreatedSim.ObjectId, StyledNotification.NotificationStyle.kSimTalking);
                                StyledNotification.Show(format);
                            }
                        }
                    }
                }

                if (!proceed && data != null)
                {
                    data.Dispose();
                }
            }
Beispiel #18
0
 public static void EnsureForeignFather(Pregnancy pregnancy)
 {
     if (SimDescription.Find(pregnancy.DadDescriptionId) == null)
     {
         SimDescription dad = MiniSims.UnpackSim(MiniSimDescription.Find(pregnancy.DadDescriptionId));
         if (dad != null)
         {
             Household.CreateTouristHousehold();
             Household.TouristHousehold.AddTemporary(dad);
         }
     }
 }
Beispiel #19
0
        public override void OnAddition(BuffManager bm, BuffInstance bi, bool travelReaddition)
        {
            Sim abductee = bm.Actor;

            if (abductee.TraitManager.HasElement(AlienUtilsEx.sAlienPregnancy))
            {
                BuffInstanceAbductedEx instance = bi as BuffInstanceAbductedEx;
                instance.Abductee         = abductee;
                instance.Alien            = SimDescription.Find(abductee.SimDescription.Pregnancy.DadDescriptionId);
                instance.IsAlienPregnancy = true;
                EventTracker.SendEvent(EventTypeId.kGotPregnant, abductee);
                abductee.TraitManager.RemoveElement(AlienUtilsEx.sAlienPregnancy);
            }
        }
Beispiel #20
0
        public static void MergeTravelInformation(SimDescription ths, MiniSimDescription msd, Dictionary <ulong, SimDescription> allSims)
        {
            Common.StringBuilder msg = new Common.StringBuilder("MergeTravelInformation " + ths.FullName + Common.NewLine);

            msg += "A";
            Traveler.InsanityWriteLog(msg);

            foreach (MiniRelationship relationship in msd.MiniRelationships)
            {
                SimDescription y = null;
                if (!allSims.TryGetValue(relationship.SimDescriptionId, out y))
                {
                    y = SimDescription.Find(relationship.SimDescriptionId);
                }

                if (y != null)
                {
                    Relationship unsafely = null;

                    try
                    {
                        unsafely = Relationship.GetUnsafely(ths, y);
                    }
                    catch (Exception e)
                    {
                        Common.Exception(ths, e);
                    }

                    if (unsafely != null)
                    {
                        float change = relationship.Value - unsafely.LTR.Liking;
                        if (change != 0f)
                        {
                            unsafely.LTR.UpdateLiking(change);
                        }
                        RomanceVisibilityState.MergeTravelInformationOnTravelBackHome(relationship, unsafely);
                    }
                }
            }

            msg += "B";
            Traveler.InsanityWriteLog(msg);

            ths.CASGenealogy = msd.CASGenealogy;

            AgingCheckTask.Add(ths, msd);

            msg += "C";
            Traveler.InsanityWriteLog(msg);
        }
Beispiel #21
0
        public static SimDescription CreateProgenitor(ulong id, out bool unpacked)
        {
            unpacked = false;

            if (id == 0)
            {
                return(null);
            }

            if (FutureDescendantServiceEx.UnpackedSims.ContainsKey(id))
            {
                return(FutureDescendantServiceEx.UnpackedSims[id]);
            }

            SimDescription sim = SimDescription.Find(id);

            if (sim == null)
            {
                MiniSimDescription msd = MiniSimDescription.Find(id);
                if (msd == null)
                {
                    return(null);
                }

                // Custom
                sim = MiniSims.UnpackSimAndUpdateRel(msd);
                if (sim == null)
                {
                    return(null);
                }

                Household.CreateTouristHousehold();
                Household.TouristHousehold.AddTemporary(sim);
                msd.Instantiated = true;

                if (sim.AgingState != null)
                {
                    sim.AgingState.MergeTravelInformation(msd);
                }

                FutureDescendantServiceEx.UnpackedSims.Add(id, sim);

                SpeedTrap.Sleep();
                unpacked = true;
            }

            sim.Fixup();

            return(sim);
        }
Beispiel #22
0
        public static SimDescription ReturnCreaotrSimDescription(GameObject craftedObject)
        {
            Type t = craftedObject.GetType();

            // StyledNotification.Show(new StyledNotification.Format("Type: " + t.BaseType.ToString(), StyledNotification.NotificationStyle.kGameMessagePositive));


            if (t == typeof(PreparedFood))
            {
                return(SimDescription.Find(((PreparedFood)craftedObject).CookingProcess.Preparer.SimDescriptionId));
            }

            if (t == typeof(Fish))
            {
                return(((Fish)craftedObject).FishingSim);
            }
            if (t == typeof(NectarBottle))
            {
                return(((NectarBottle)craftedObject).Creator);
            }

            if (t == typeof(Photograph))
            {
                return(((Photograph)craftedObject).Artist);
            }

            if (t == typeof(Sculpture))
            {
                return(((Sculpture)craftedObject).SculptureComponent.Artist);
            }

            //If an invention
            Widget wid = craftedObject as Widget;

            if (wid != null)
            {
                return(wid.Inventor);
            }

            Invention inv = craftedObject as Invention;

            if (inv != null)
            {
                return(inv.Inventor);
            }

            return(null);
        }
Beispiel #23
0
        public ServiceData FindServiceDataInvolvingProfessionalAndLot(ulong professionalID, ulong lotID)
        {
            foreach (KeyValuePair <ulong, ServiceData> data in sRequests)
            {
                if (data.Value.mProfessional == professionalID)
                {
                    SimDescription desc = SimDescription.Find(data.Key);
                    if (desc != null && desc.LotHomeId == lotID)
                    {
                        return(data.Value);
                    }
                }
            }

            return(null);
        }
        public static void OnWorldLoadFinished(object sender, EventArgs e)
        {
            if (alreadyParsed)
            {
                Ferry <PersistedData> .UnloadCargo();
            }
            alreadyParsed = false;
            ObjectLoader.FindAndSortAllExistingSewables();

            for (int i = 0; i < Sims3.Gameplay.Queries.GetObjects <PhoneSmart>().Length; i++)
            {
                if (Sims3.Gameplay.Queries.GetObjects <PhoneSmart>()[i] != null)
                {
                    AddInteractionsPhone(Sims3.Gameplay.Queries.GetObjects <PhoneSmart>()[i]);
                }
            }

            foreach (Computer computer in Sims3.Gameplay.Queries.GetObjects <Computer>())
            {
                if (computer != null)
                {
                    AddInteractionsComputer(computer);
                }
            }

            // Save/cache our loaded key to make discovery quicker. Rather than always looping through it.
            for (int i = 0; i < ObjectLoader.sewableSettings.Count; i++)
            {
                Pattern.mStoredPatternsKeySettingsList.Add(ObjectLoader.sewableSettings[i].key);
            }

            foreach (KeyValuePair <ulong, bool> keyvalues in GlobalOptionsSewingTable.retrieveData.whoIsInPatternClub)
            {
                print("Re-assigned the mailbox alarm!");
                SimDescription description = SimDescription.Find(keyvalues.Key);
                Mailbox        mailbox     = Mailbox.GetMailboxOnLot(description.LotHome);
                mailbox.AddAlarmDay(1f, DaysOfTheWeek.Thursday, GlobalOptionsSewingTable.SendPatterns, "Mailbox:  Pattern club " + description.mSimDescriptionId.ToString(), AlarmType.AlwaysPersisted);
            }
            //mPatternClubAlarm = AlarmManager.Global.AddAlarmDay(1f, DaysOfTheWeek.Thursday, GlobalOptionsSewingTable.SendPatterns, "Mailbox:  Pattern club", AlarmType.NeverPersisted, null);

            //mWearClothing = AlarmManager.Global.AddAlarmRepeating(24f, TimeUnit.Hours, WearGiftedClothing, 1f, TimeUnit.Days, "Wear gifted clothing", AlarmType.AlwaysPersisted, null);

            EventTracker.AddListener(EventTypeId.kBoughtObject, new ProcessEventDelegate(OnObjectChanged));
            EventTracker.AddListener(EventTypeId.kInventoryObjectAdded, new ProcessEventDelegate(OnObjectChanged));
            EventTracker.AddListener(EventTypeId.kObjectStateChanged, new ProcessEventDelegate(OnObjectChanged));
        }
Beispiel #25
0
        public void Execute()
        {
            Household      household      = Household.Find(mHouseholdId);
            SimDescription mom            = SimDescription.Find(mMom);
            SimDescription dad            = SimDescription.Find(mDad);
            SimDescription simDescription = mSim.Instantiate(dad, mom);

            if (simDescription != null)
            {
                household.Add(simDescription);
                simDescription.SendSimHome();
                if (((mom != null) && (dad != null)) && (mom.Partner != dad))
                {
                    SimUtils.HouseholdCreationSpec.InitializeRomance(mom, dad, simDescription, simDescription.LastName);
                }
            }
        }
Beispiel #26
0
            public void Cleanup()
            {
                if (this.mProfessional != 0)
                {
                    SimDescription desc = SimDescription.Find(this.mProfessional);
                    if (desc != null && desc.CreatedSim != null)
                    {
                        VisitSituation.MakeSimExitToYard(desc.CreatedSim.LotCurrent, desc.CreatedSim);
                        Sim.MakeSimGoHome(desc.CreatedSim, false, new InteractionPriority(InteractionPriorityLevel.UserDirected));
                    }
                }

                if (this.mRequester != 0)
                {
                    KamaSimtra.Settings.sRequests.Remove(this.mRequester);
                }
            }
        public static void OnWorldQuit(object sender, EventArgs e)
        {
            Ferry <PersistedData> .LoadCargo();

            foreach (KeyValuePair <ulong, bool> keyvalues in GlobalOptionsSewingTable.retrieveData.whoIsInPatternClub)
            {
                print("Re-assigned the mailbox alarm!");
                SimDescription description = SimDescription.Find(keyvalues.Key);
                Mailbox        mailbox     = Mailbox.GetMailboxOnLot(description.LotHome);
                mailbox.RemoveAlarm(1f, DaysOfTheWeek.Thursday, GlobalOptionsSewingTable.SendPatterns, "Mailbox:  Pattern club " + description.mSimDescriptionId.ToString(), AlarmType.AlwaysPersisted);
            }
            //AlarmManager.Global.RemoveAlarm(mPatternClubAlarm);
            //mPatternClubAlarm = AlarmHandle.kInvalidHandle;

            //AlarmManager.Global.RemoveAlarm(mWearClothing);
            //mWearClothing = AlarmHandle.kInvalidHandle;
        }
Beispiel #28
0
        public new void CheckForDad()
        {
            SimDescription simDescription;

            if (RobotDadDescriptionID != 0uL)
            {
                simDescription = SimDescription.Find(RobotDadDescriptionID);
            }
            else
            {
                simDescription = SimDescription.Find(DadDescriptionId);
            }

            if (simDescription != null && simDescription.IsMale && simDescription.TeenOrAbove)
            {
                mDad = simDescription.CreatedSim;
            }
        }
Beispiel #29
0
        // externalized to Register and MasterController
        public static WorldName GetSimHomeworld(ulong sim)
        {
            MiniSimDescription desc = MiniSims.Find(sim);

            if (desc != null)
            {
                return(Traveler.Settings.GetHomeWorld(desc));
            }

            SimDescription desc2 = SimDescription.Find(sim);

            if (desc2 != null)
            {
                return(Traveler.Settings.GetHomeWorld(desc2 as IMiniSimDescription));
            }

            return(WorldName.Undefined);
        }
Beispiel #30
0
            public void DisableAutonomy()
            {
                if (this.mProfessional != 0)
                {
                    SimDescription desc = SimDescription.Find(this.mProfessional);
                    if (desc != null && desc.CreatedSim != null && desc.CreatedSim.Autonomy != null)
                    {
                        if (desc.CreatedSim.Autonomy.mAutonomyDisabledCount > 0)
                        {
                            // already disabled by the user
                            this.autonomyWasDisabled = true;
                            return;
                        }

                        desc.CreatedSim.Autonomy.mAutonomyDisabledCount = int.MaxValue / 2;
                    }
                }
            }