예제 #1
0
        protected static void OnTravelHouseholdChanged(HouseholdEvent householdEvent, IActor member, Household oldHousehold)
        {
            try
            {
                if (oldHousehold != null)
                {
                    if (GameStates.TravelHousehold == null)
                    {
                        oldHousehold.HouseholdSimsChanged -= OnTravelHouseholdChanged;
                        return;
                    }

                    if (householdEvent == HouseholdEvent.kSimRemoved)
                    {
                        if (Households.NumSims(oldHousehold) == 0)
                        {
                            oldHousehold.HouseholdSimsChanged -= OnTravelHouseholdChanged;

                            if (GameStates.sTravelData != null)
                            {
                                GameStates.sTravelData.mTravelHouse = Household.ActiveHousehold;
                            }

                            LinkToTravelHousehold();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Common.Exception("OnTravelHouseholdChanged", e);
            }
        }
예제 #2
0
        protected override bool Allow(SimDescription sim)
        {
            if (!base.Allow(sim))
            {
                return(false);
            }

            if (!GetValue <AllowAdoptionOption, bool>(sim))
            {
                IncStat("Adoption Denied");
                return(false);
            }
            else if (!Households.Allow(this, sim, 0))
            {
                IncStat("User Denied");
                return(false);
            }
            else if (AddScoring("Adoption Cooldown", TestElapsedTime <DayOfLastPetOption, MinTimeBetweenAdoptionOption>(sim)) < 0)
            {
                AddStat("Too Soon After Adoption", GetElapsedTime <DayOfLastPetOption>(sim));
                return(false);
            }
            else if (Situation.GetSituations <SocialWorkerPetAdoptionSituation>().Count > 0)
            {
                IncStat("Adoption Situation");
                return(false);
            }
            else if ((sim.IsHorse) && (sim.Child))
            {
                IncStat("Foal");
                return(false);
            }

            return(true);
        }
예제 #3
0
파일: RummageEx.cs 프로젝트: yakoder/NRaas
        protected new void JournalismRummage(Sim rummager, IOutdoorAcceptsGarbage can)
        {
            Journalism job = OmniCareer.Career <Journalism>(rummager.Occupation);

            Common.DebugNotify("RummageEx:JournalismRummage");

            List <SimDescription> choices = new List <SimDescription>();

            foreach (SimDescription sim in Households.Humans(can.LotCurrent.Household))
            {
                if (sim.YoungAdultOrAbove && !job.SimsTrashScoped.Contains(sim))
                {
                    choices.Add(sim);
                }
            }
            if (choices.Count != 0x0)
            {
                SimDescription choice = RandomUtil.GetRandomObjectFromList(choices);

                Common.DebugNotify("JournalismRummage: " + choice.FullName);

                job.SimsTrashScoped.Add(choice);
                rummager.ShowTNSIfSelectable(Common.LocalizeEAString(rummager.IsFemale, "Gameplay/Objects/Miscellaneous/TrashcanOutside:RummageForInfo" + RandomUtil.GetInt(0x1, 0x3), new object[] { rummager, choice }), StyledNotification.NotificationStyle.kGameMessagePositive, ObjectGuid.InvalidObjectGuid, rummager.ObjectId);
            }
        }
예제 #4
0
        protected override bool Allow()
        {
            if ((mMovers == null) || (mMovers.Count == 0))
            {
                return(false);
            }

            foreach (SimDescription sim in mMovers)
            {
                if ((sim.Household != null) && (TestAllow) && (!Households.Allow(this, sim)))
                {
                    IncStat("User Denied");
                    return(false);
                }
                else if (SimTypes.IsDead(sim))
                {
                    IncStat("Dead");
                    return(false);
                }
                else if (!sim.Marryable)
                {
                    IncStat("Not Marryable");
                    return(false);
                }
                else if (SimTypes.InServicePool(sim, ServiceType.GrimReaper))
                {
                    IncStat("Reaper Denied");
                    return(false);
                }
            }

            return(base.Allow());
        }
예제 #5
0
            public override void PopulatePieMenuPicker(ref InteractionInstanceParameters parameters, out List <ObjectPicker.TabInfo> listObjs, out List <ObjectPicker.HeaderInfo> headers, out int NumSelectableRows)
            {
                if (GameUtils.IsFutureWorld())
                {
                    base.PopulatePieMenuPicker(ref parameters, out listObjs, out headers, out NumSelectableRows);
                }
                else
                {
                    listObjs = null;
                    headers  = null;
                    Sim        actor = parameters.Actor as Sim;
                    List <Sim> sims  = new List <Sim>();
                    foreach (Sim sim2 in Households.AllSims(actor.Household))
                    {
                        GreyedOutTooltipCallback callback = null;
                        if (TravelerSpace.Helpers.TravelUtilEx.CanSimTriggerTravelToFutureWorld(sim2, true, ref callback))
                        {
                            sims.Add(sim2);
                        }
                    }

                    NumSelectableRows = sims.Count - 0x1;
                    if (NumSelectableRows > 0x0)
                    {
                        base.PopulateSimPicker(ref parameters, out listObjs, out headers, sims, false);
                    }
                }
            }
예제 #6
0
        protected override bool Allow(Household house)
        {
            if (SimTypes.IsSpecial(house))
            {
                IncStat("Special");
                return(false);
            }
            else if (house == Household.ActiveHousehold)
            {
                IncStat("Active");
                return(false);
            }
            else if (house.LotHome == null)
            {
                IncStat("Homeless");
                return(false);
            }
            else if (!Households.Allow(this, house, GetValue <ManagerHousehold.MinTimeBetweenMovesOption, int>()))
            {
                IncStat("Cooldown");
                return(false);
            }
            else if (GetValue <IsAncestralOption, bool>(house))
            {
                IncStat("Ancestral");
                return(false);
            }
            else if (Lots.AllowCastes(this, house.LotHome, HouseholdsEx.All(house)))
            {
                IncStat("Unnecessary");
                return(false);
            }

            return(base.Allow(house));
        }
예제 #7
0
        protected override bool PrivateUpdate(ScenarioFrame frame)
        {
            HouseholdBreakdown breakdown = new HouseholdBreakdown(Manager, this, UnlocalizedName, Sim, ChildMove, false);

            if (!breakdown.SimGoing)
            {
                IncStat("Staying");
                return(false);
            }
            else if ((breakdown.NoneStaying) && (Sim.LotHome != null))
            {
                IncStat("None Staying");
                return(false);
            }
            else if (breakdown.NoneGoing)
            {
                IncStat("None Going");
                return(false);
            }
            else if ((mStay != null) && (breakdown.Going.Contains(mStay)))
            {
                IncStat("Both Going");
                return(false);
            }

            if (Households.AllowSoloMove(Sim))
            {
                Add(frame, GetMoveInLotScenario(breakdown.Going), ScenarioResult.Failure);
            }

            Add(frame, GetMoveInScenario(breakdown.Going), ScenarioResult.Failure);
            return(false);
        }
예제 #8
0
        protected override bool Allow(SimDescription sim)
        {
            if (sim.LotHome == null)
            {
                IncStat("Homeless");
                return(false);
            }
            else if (!Households.AllowGuardian(sim))
            {
                IncStat("Too Young");
                return(false);
            }
            else if (AddScoring("Popularity", sim) <= 0)
            {
                IncStat("Unpopular");
                return(false);
            }
            else if (AddScoring("Friendly", sim) <= 0)
            {
                IncStat("Score Fail");
                return(false);
            }

            return(base.Allow(sim));
        }
예제 #9
0
        public static List <Sim> GetPotentials(Sim actor, Sim target)
        {
            Lot lotHome = actor.LotHome;

            bool allowHorses = ((lotHome == null) || (!lotHome.HasVirtualResidentialSlots));

            List <Sim> results = new List <Sim>();

            if (target.Household != null)
            {
                foreach (Sim sim in Households.AllPets(target.Household))
                {
                    if (!sim.SimDescription.ChildOrBelow)
                    {
                        continue;
                    }

                    if (sim.IsHorse)
                    {
                        if (!allowHorses)
                        {
                            continue;
                        }
                    }

                    results.Add(sim);
                }
            }

            return(results);
        }
        public void DeleteHousehold(int householdInternalId)
        {
            var personQuery = People.Where(a => a.InternalParentId == householdInternalId);

            if (personQuery.Any())
            {
                foreach (var person in personQuery)
                {
                    DeletePerson(person.InternalId);
                }
            }

            var incomeSourceQuery = IncomeSources.Where(a => a.InternalParentId == householdInternalId);

            if (incomeSourceQuery.Any())
            {
                foreach (var incomeSource in incomeSourceQuery)
                {
                    DeleteIncomeSource(incomeSource.InternalId);
                }
            }

            DeleteHouseholdCustomValues(householdInternalId);
            var householdQuery = Households.Where(a => a.InternalId == householdInternalId);

            if (householdQuery.Any())
            {
                Households.RemoveRange(householdQuery);
            }
        }
예제 #11
0
        public List <SimDescription> GetDeedOwner(RabbitHole hole)
        {
            List <SimDescription> owners = new List <SimDescription>();

            if (hole != null)
            {
                foreach (Household house in Household.GetHouseholdsLivingInWorld())
                {
                    if (house.RealEstateManager == null)
                    {
                        continue;
                    }

                    PropertyData data = house.RealEstateManager.FindProperty(hole);
                    if (data == null)
                    {
                        continue;
                    }

                    foreach (SimDescription sim in HouseholdsEx.Humans(house))
                    {
                        if (Households.AllowGuardian(sim))
                        {
                            owners.Add(sim);
                        }
                    }
                }
            }

            return(owners);
        }
예제 #12
0
        public new static Relationship GetRelationshipToHostedSituation(SimDescription hostSim, SimDescription simToCheck)
        {
            Relationship relationship2 = Relationship.Get(hostSim, simToCheck, false);

            float liking2 = 0;

            if (relationship2 != null)
            {
                liking2 = relationship2.LTR.Liking;
            }

            foreach (SimDescription description in Households.Humans(hostSim.Household))
            {
                Relationship relationship = Relationship.Get(description, simToCheck, false);

                float liking = 0;
                if (relationship != null)
                {
                    liking = relationship.LTR.Liking;
                }

                if (liking > liking2)
                {
                    relationship2 = relationship;
                }
            }
            return(relationship2);
        }
예제 #13
0
        protected override bool Allow(SimDescription sim)
        {
            if (Deaths.IsDying(sim))
            {
                IncStat("Dying");
                return(false);
            }
            else if (sim.Household == null)
            {
                IncStat("No Home");
                return(false);
            }
            else if (!Households.AllowGuardian(sim))
            {
                IncStat("Too Young");
                return(false);
            }
            else if (sim.Genealogy == null)
            {
                IncStat("No Gene");
                return(false);
            }
            else if (!Money.Allow(this, sim))
            {
                IncStat("User Denied");
                return(false);
            }
            else if (sim.TraitManager.HasElement(TraitNames.NoBillsEver))
            {
                IncStat("No Bills");
                return(false);
            }

            return(base.Allow(sim));
        }
예제 #14
0
        public static bool SatisfiesMaximumOccupants(Sim sim, bool autonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback)
        {
            if (autonomous)
            {
                return(true);
            }

            int count = 0;

            if (sim.IsHuman)
            {
                count = Households.NumHumansIncludingPregnancy(sim.Household);
            }
            else
            {
                count = Households.NumPetsIncludingPregnancy(sim.Household);
            }

            int maximum = Woohooer.Settings.mTryForBabyUserMaximum[PersistedSettings.GetSpeciesIndex(sim)];

            if ((maximum > 0) && (count > maximum))
            {
                greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:UserMaximum", sim.IsFemale)); };
                return(false);
            }

            return(true);
        }
예제 #15
0
        public static string Perform(Household house, bool ignorePlaceholders)
        {
            if (house.LotHome == null)
            {
                return(null);
            }

            string msg = null;

            if (Households.NumSims(house) != Households.AllSims(house).Count)
            {
                List <SimDescription> sims = new List <SimDescription>(Households.All(house));
                foreach (SimDescription description in sims)
                {
                    bool flag = true;
                    foreach (Sim sim in Households.AllSims(house))
                    {
                        if (sim.SimDescription == description)
                        {
                            flag = false;
                            break;
                        }
                    }

                    if (flag)
                    {
                        FixInvisibleTask.Perform(description, false);

                        msg += RecoverMissingSimTask.Perform(description, ignorePlaceholders);
                    }
                }
            }

            return(msg);
        }
예제 #16
0
        public int GetSpeed(DaysOfTheWeek day, int hour, int overrideSpeed)
        {
            if (mDisable)
            {
                return(Relativity.sOneMinute);
            }

            if (overrideSpeed > 0)
            {
                return(overrideSpeed);
            }

            int speed = 0;

            if (mSpeedOverride != 0)
            {
                if (mSpeedOverride < 0)
                {
                    speed = 0;
                }
                else
                {
                    speed = mSpeedOverride;
                }
            }
            else
            {
                Dictionary <DaysOfTheWeek, Dictionary <int, int> > days;

                if ((!Speeds.TryGetValue(GameUtils.GetCurrentWorld(), out days)) && (!Speeds.TryGetValue(WorldName.Undefined, out days)))
                {
                    speed = Relativity.sOneMinute;
                }
                else
                {
                    Dictionary <int, int> hours;
                    if (!days.TryGetValue(day, out hours))
                    {
                        speed = Relativity.sOneMinute;
                    }
                    else if (!hours.TryGetValue(hour, out speed))
                    {
                        speed = Relativity.sOneMinute;
                    }
                }
            }

            int activeSize = Households.NumSims(Household.ActiveHousehold) - mActiveSimFactorMinimum;

            if (activeSize > 0)
            {
                speed -= (int)(speed * activeSize * (mActiveSimFactorReduction / 100f));
                if (speed <= 0)
                {
                    speed = 1;
                }
            }

            return(speed);
        }
예제 #17
0
        protected override bool Allow(Household house)
        {
            if (!Households.Allow(this, house, 0))
            {
                IncStat("User Denied");
                return(false);
            }
            else if (!GetValue <AllowAdoptionOption, bool>(SimTypes.HeadOfFamily(house)))
            {
                IncStat("Adoption Denied");
                return(false);
            }
            else
            {
                SimDescription head = SimTypes.HeadOfFamily(house);
                if (AddScoring("Cooldown: Between Adoptions", TestElapsedTime <DayOfLastPetOption, PetAdoptionScenario.MinTimeBetweenAdoptionOption>(head)) < 0)
                {
                    AddStat("Too Soon After Adoption", GetElapsedTime <DayOfLastPetOption>(head));
                    return(false);
                }
            }

            mPassedInspection = Lots.PassesHomeInspection(this, House.LotHome, HouseholdsEx.Pets(House), ManagerLot.FindLotFlags.InspectPets);

            if ((mPassedInspection) && (!HouseholdsEx.IsFull(this, House, CASAgeGenderFlags.Dog, GetValue <RoomToLeaveOption, int>(), false)))
            {
                IncStat("Score Fail");
                return(false);
            }

            return(base.Allow(house));
        }
예제 #18
0
        protected override bool Allow(SimDescription sim)
        {
            if ((sim.Household == null) || (sim.LotHome == null))
            {
                IncStat("Homeless");
                return(false);
            }

            int count = 0;

            foreach (SimDescription member in sim.Household.AllSimDescriptions)
            {
                if (!Households.AllowGuardian(member))
                {
                    continue;
                }

                if (Deaths.IsDying(member))
                {
                    continue;
                }

                count++;
            }

            if (count > 0)
            {
                IncStat("Remaining");
                return(false);
            }

            return(base.Allow(sim));
        }
예제 #19
0
        protected override void PrivatePerformAction(bool prompt)
        {
            try
            {
                Overwatch.Log("Turn Off Televisions");

                int count = 0;

                List <TV> televisions = new List <TV>(Sims3.Gameplay.Queries.GetObjects <TV>());
                foreach (TV obj in televisions)
                {
                    if ((!NRaas.Overwatch.Settings.mAffectActiveLot) && (Household.ActiveHousehold != null))
                    {
                        if (obj.LotCurrent.Household == Household.ActiveHousehold)
                        {
                            continue;
                        }

                        bool found = false;
                        foreach (Sim sim in Households.AllSims(Household.ActiveHousehold))
                        {
                            if (sim.LotCurrent == obj.LotCurrent)
                            {
                                found = true;
                                break;
                            }
                        }

                        if (found)
                        {
                            continue;
                        }
                    }

                    if (obj.TurnedOn)
                    {
                        try
                        {
                            obj.ClearStateInformation();
                            obj.TurnOff();
                            count++;
                        }
                        catch
                        {
                            obj.SetObjectToReset();
                        }
                    }
                }

                if (count > 0)
                {
                    Overwatch.AlarmNotify(Common.Localize("TurnOffTelevisions:Success", false, new object[] { count }));
                }
            }
            catch (Exception exception)
            {
                Common.Exception(Name, exception);
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            Households households = db.Households.Find(id);

            db.Households.Remove(households);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #21
0
 public Repository(string host)
 {
     UsersRepository      = new Users(host, Path);
     HouseholdsRepository = new Households(host, Path);
     MessagesRepository   = new Messages(host, Path);
     CategoriesRepository = new Categories(host, Path);
     CashFlowsRepository  = new CashFlows(host, Path);
 }
예제 #22
0
        protected static void UpdateAttractionControllers(Household newHouse, Household oldHouse)
        {
            Dictionary <Relationship, bool> toDispose = new Dictionary <Relationship, bool>();

            if (oldHouse != null)
            {
                foreach (SimDescription sim in Households.All(oldHouse))
                {
                    foreach (Relationship relation in Relationship.Get(sim))
                    {
                        if (relation.AttractionNPCController != null)
                        {
                            if (!toDispose.ContainsKey(relation))
                            {
                                toDispose.Add(relation, true);
                            }
                        }
                    }
                }
            }

            if (newHouse != null)
            {
                foreach (SimDescription sim in Households.All(newHouse))
                {
                    foreach (Relationship relation in Relationship.Get(sim))
                    {
                        if ((!SimTypes.IsSelectable(relation.SimDescriptionA)) && (!SimTypes.IsSelectable(relation.SimDescriptionB)))
                        {
                            continue;
                        }

                        // don't blow up when one Sim is selectable but out of world (boinked parents vacation, boarding school)
                        if ((relation.SimDescriptionA.CreatedSim == null) && (relation.SimDescriptionB.CreatedSim == null))
                        {
                            continue;
                        }

                        if (relation.AreAttracted)
                        {
                            if (TestEnableAttractionNPCController(relation))
                            {
                                toDispose.Remove(relation);
                                if (relation.AttractionNPCController == null)
                                {
                                    relation.AttractionNPCController = new AttractionNPCBehaviorController(relation);
                                }
                            }
                        }
                    }
                }
            }

            foreach (Relationship relation in toDispose.Keys)
            {
                relation.AttractionNPCController.Dispose();
            }
        }
예제 #23
0
        public CareerStore(Household house, SafeStore.Flag flags)
        {
            mSafeStore = new Dictionary <ulong, SafeStore>();

            foreach (SimDescription sim in Households.All(house))
            {
                mSafeStore[sim.SimDescriptionId] = new SafeStore(sim, flags);
            }
        }
예제 #24
0
        protected override bool PrivateUpdate(ScenarioFrame frame)
        {
            if (Households.MatchesAlertLevel(HouseholdsEx.All(House)))
            {
                mHead = SimTypes.HeadOfFamily(House);
            }

            return(Households.EliminateHousehold(UnlocalizedName, House));
        }
예제 #25
0
        protected bool TestMoveInLot()
        {
            bool nonRoomie = false;

            bool hasAdult = false;

            foreach (SimDescription sim in mMovers)
            {
                if (!Households.Allow(this, sim, GetValue <ManagerHousehold.MinTimeBetweenMovesOption, int>()))
                {
                    IncStat("User Denied");
                    return(false);
                }
                else if ((TestDead) && (SimTypes.IsDead(sim)))
                {
                    IncStat("Dead");
                    return(false);
                }
                else if (!sim.Marryable)
                {
                    IncStat("Not Marryable");
                    return(false);
                }
                else if (SimTypes.InServicePool(sim, ServiceType.GrimReaper))
                {
                    IncStat("Reaper Denied");
                    return(false);
                }

                if (!Household.RoommateManager.IsNPCRoommate(sim))
                {
                    nonRoomie = true;
                }

                if (Households.AllowGuardian(sim))
                {
                    hasAdult = true;
                }

                Lots.PackupVehicles(sim.CreatedSim, true);
            }

            if (!nonRoomie)
            {
                IncStat("All Roomies");
                return(false);
            }

            if (!hasAdult)
            {
                IncStat("No adult");
                return(false);
            }

            return(true);
        }
예제 #26
0
        protected override bool PrivateUpdate(ScenarioFrame frame)
        {
            if (GetValue <SplitOpposingClanOption, bool>())
            {
                mOpposing = !Households.Allow(this, Sim, Target, Managers.Manager.AllowCheck.None);
            }

            Add(frame, new BrokenHomeMoveOutScenario(Sim, Target), ScenarioResult.Start);
            return(false);
        }
예제 #27
0
        protected override bool CommonAllow(SimDescription sim)
        {
            if (!Households.AllowGuardian(sim))
            {
                IncStat("Too Young");
                return(false);
            }

            return(base.CommonAllow(sim));
        }
예제 #28
0
        protected override bool Allow(SimDescription sim)
        {
            if (!Households.Allow(this, sim))
            {
                IncStat("User Denied");
                return(false);
            }

            return(base.Allow(sim));
        }
예제 #29
0
        protected override bool Allow(SimDescription sim)
        {
            if (Households.AllowGuardian(sim))
            {
                IncStat("Too Old");
                return(false);
            }

            return(base.Allow(sim));
        }
 public ActionResult Edit([Bind(Include = "Id,Name")] Households households)
 {
     if (ModelState.IsValid)
     {
         db.Entry(households).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(households));
 }