Beispiel #1
0
 public static void RestoreFutureTrait(SimDescription desc)
 {
     if (Register.Settings.mFutureSims.Contains(desc.SimDescriptionId) && desc.TraitManager != null && !desc.HasTrait(TraitNames.FutureSim))
     {
         Trait trait = TraitManager.GetTraitFromDictionary(TraitNames.FutureSim);
         if (trait != null)
         {
             desc.AddTrait(trait);
         }
     }
 }
Beispiel #2
0
        protected override bool Run(SimDescription me, bool singleSelection)
        {
            List<SimTrait.Item> allOptions = new List<SimTrait.Item>();
            foreach (Sims3.Gameplay.ActorSystems.Trait trait in TraitManager.GetDictionaryTraits)
            {
                if (trait.IsReward) continue;

                if (trait.Guid == TraitNames.DescendantHiddenTrait) continue;

                if (!trait.TraitValidForAgeSpecies(me.GetCASAGSAvailabilityFlags())) continue;

                if (trait.RobotOnly) continue;                

                int count = 0;
                if (me.TraitManager.HasElement(trait.Guid))
                {
                    count = 1;
                }

                allOptions.Add(new SimTrait.Item (trait.Guid, count));
            }

            CommonSelection<SimTrait.Item>.Results selection = new CommonSelection<SimTrait.Item>(Name, me.FullName, allOptions, new SimTrait.AuxillaryColumn()).SelectMultiple();
            if (selection.Count == 0) return false;

            foreach (SimTrait.Item item in selection)
            {
                if (item == null) continue;

                TraitNames traitName = item.Value;

                Sims3.Gameplay.ActorSystems.Trait trait = TraitManager.GetTraitFromDictionary(traitName);
                if (trait != null)
                {
                    if (me.TraitManager.HasElement(traitName))
                    {
                        if (me.TraitManager.mSocialGroupTraitGuid == traitName)
                        {
                            me.RemoveSocialGroupTrait();
                        }
                        else if (me.TraitManager.mUniversityGraduateTraitGuid == traitName)
                        {
                            me.RemoveUniversityGraduateTrait();
                        }
                        else
                        {
                            me.RemoveTrait(trait);
                        }
                    }
                    else
                    {
                        int iTraitsForBabiesAndToddlers = TraitManager.kTraitsForBabiesAndToddlers;
                        int iTraitsForChildren = TraitManager.kTraitsForChildren;
                        int iTraitsForTeens = TraitManager.kTraitsForTeens;
                        int iTraitsForYoungAdultAndOlder = TraitManager.kTraitsForYoungAdultAndOlder;

                        try
                        {
                            // Don't use MaxValue as EA adds to this number for [[University]] purposes
                            TraitManager.kTraitsForBabiesAndToddlers = 10000000;
                            TraitManager.kTraitsForChildren = 10000000;
                            TraitManager.kTraitsForTeens = 10000000;
                            TraitManager.kTraitsForYoungAdultAndOlder = 10000000;

                            if (trait.IsHidden)
                            {
                                me.TraitManager.AddHiddenElement(traitName);
                            }
                            else
                            {
                                me.AddTrait(trait);
                            }
                        }
                        finally
                        {
                            TraitManager.kTraitsForBabiesAndToddlers = iTraitsForBabiesAndToddlers;
                            TraitManager.kTraitsForChildren = iTraitsForChildren;
                            TraitManager.kTraitsForTeens = iTraitsForTeens;
                            TraitManager.kTraitsForYoungAdultAndOlder = iTraitsForYoungAdultAndOlder;
                        }
                    }
                }
            }

            if ((me.CreatedSim != null) && (me.CreatedSim.SocialComponent != null))
            {
                me.CreatedSim.SocialComponent.UpdateTraits();
            }

            if (me.TraitManager.CountVisibleTraits() > me.TraitManager.NumTraitsForAge())
            {
                Common.Notify(Common.Localize("ChangeTraits:MaxExceeded", me.IsFemale, new object[] { me, me.TraitManager.CountVisibleTraits(), me.TraitManager.NumTraitsForAge() }));
            }

            return true;
        }
Beispiel #3
0
        public static void RestoreFutureTrait(SimDescription desc)
        {
            if (desc == null)
            {
                return;
            }

            if (Register.Settings.mFutureSims.Contains(desc.SimDescriptionId) && desc.TraitManager != null && !desc.HasTrait(TraitNames.FutureSim))
            {
                Trait trait = TraitManager.GetTraitFromDictionary(TraitNames.FutureSim);
                if (trait != null)
                {
                    desc.AddTrait(trait);
                }
            }
        }
Beispiel #4
0
        protected string SetTraits(SimDescription me, IEnumerable<SimTrait.Item> choices)
        {
            string result = Name + Common.NewLine + me.FullName;

            bool success = false;

            foreach (SimTrait.Item selection in choices)
            {
                if (me.TraitManager.HasElement(selection.Value)) continue;

                Trait selected = TraitManager.GetTraitFromDictionary(selection.Value);
                if (selected != null)
                {
                    if (!selected.TraitValidForAgeSpecies(CASUtils.CASAGSAvailabilityFlagsFromCASAgeGenderFlags(CASAgeGenderFlags.Adult | me.Species))) continue;

                    if (me.mSpendableHappiness < selected.Score) continue;

                    me.mSpendableHappiness -= selected.Score;

                    result += Common.NewLine + "  " + selected.TraitName(me.IsFemale);

                    success = true;

                    if (Traits.IsObjectBaseReward(selected.Guid))
                    {
                        if (me.Household == null) continue;

                        if (me.CreatedSim == null) continue;

                        HudModel hudModel = Sims3.UI.Responder.Instance.HudModel as HudModel;
                        if (hudModel != null)
                        {
                            bool showTNS = SimTypes.IsSelectable(me);
                            bool inHouseInventory = false;
                            Sim rewardedSim = me.CreatedSim;
                            hudModel.GiveRewardObjects(me.CreatedSim, selected.Guid, selected.ProductVersion, ref showTNS, ref inHouseInventory, ref rewardedSim);
                        }
                    }
                    else
                    {
                        switch (selected.Guid)
                        {
                            case TraitNames.ForeverYoung:
                                me.AgingEnabled = false;
                                break;
                            default:
                                if (selected.Guid == TraitNames.SuperVampire)
                                {
                                    me.AgingEnabled = false;
                                }

                                if (!me.AddTrait(selected))
                                {
                                    me.mSpendableHappiness += selected.Score;
                                }
                                break;
                        }
                    }
                }
            }

            if (!success)
            {
                result += Common.NewLine + "  " + Common.Localize(GetTitlePrefix() + ":None");
            }

            return result;
        }
Beispiel #5
0
        protected string SetTraits(SimDescription me, IEnumerable <SimTrait.Item> choices)
        {
            string result = Name + Common.NewLine + me.FullName;

            bool success = false;

            foreach (SimTrait.Item selection in choices)
            {
                if (me.TraitManager.HasElement(selection.Value))
                {
                    continue;
                }

                Trait selected = TraitManager.GetTraitFromDictionary(selection.Value);
                if (selected != null)
                {
                    if (!selected.TraitValidForAgeSpecies(CASUtils.CASAGSAvailabilityFlagsFromCASAgeGenderFlags(CASAgeGenderFlags.Adult | me.Species)))
                    {
                        continue;
                    }

                    if (me.mSpendableHappiness < selected.Score)
                    {
                        continue;
                    }

                    me.mSpendableHappiness -= selected.Score;

                    result += Common.NewLine + "  " + selected.TraitName(me.IsFemale);

                    success = true;

                    if (Traits.IsObjectBaseReward(selected.Guid))
                    {
                        if (me.Household == null)
                        {
                            continue;
                        }

                        if (me.CreatedSim == null)
                        {
                            continue;
                        }

                        HudModel hudModel = Sims3.UI.Responder.Instance.HudModel as HudModel;
                        if (hudModel != null)
                        {
                            bool showTNS          = SimTypes.IsSelectable(me);
                            bool inHouseInventory = false;
                            Sim  rewardedSim      = me.CreatedSim;
                            hudModel.GiveRewardObjects(me.CreatedSim, selected.Guid, selected.ProductVersion, ref showTNS, ref inHouseInventory, ref rewardedSim);
                        }
                    }
                    else
                    {
                        switch (selected.Guid)
                        {
                        case TraitNames.ForeverYoung:
                            me.AgingEnabled = false;
                            break;

                        default:
                            if (selected.Guid == TraitNames.SuperVampire)
                            {
                                me.AgingEnabled = false;
                            }

                            if (!me.AddTrait(selected))
                            {
                                me.mSpendableHappiness += selected.Score;
                            }
                            break;
                        }
                    }
                }
            }

            if (!success)
            {
                result += Common.NewLine + "  " + Common.Localize(GetTitlePrefix() + ":None");
            }

            return(result);
        }
Beispiel #6
0
        protected override bool Run(SimDescription me, bool singleSelection)
        {
            List <SimTrait.Item> allOptions = new List <SimTrait.Item>();

            foreach (Sims3.Gameplay.ActorSystems.Trait trait in TraitManager.GetDictionaryTraits)
            {
                if (trait.IsReward)
                {
                    continue;
                }

                if (trait.Guid == TraitNames.DescendantHiddenTrait)
                {
                    continue;
                }

                if (!trait.TraitValidForAgeSpecies(me.GetCASAGSAvailabilityFlags()))
                {
                    continue;
                }

                if (trait.RobotOnly)
                {
                    continue;
                }

                int count = 0;
                if (me.TraitManager.HasElement(trait.Guid))
                {
                    count = 1;
                }

                allOptions.Add(new SimTrait.Item(trait.Guid, count));
            }

            CommonSelection <SimTrait.Item> .Results selection = new CommonSelection <SimTrait.Item>(Name, me.FullName, allOptions, new SimTrait.AuxillaryColumn()).SelectMultiple();
            if (selection.Count == 0)
            {
                return(false);
            }

            foreach (SimTrait.Item item in selection)
            {
                if (item == null)
                {
                    continue;
                }

                TraitNames traitName = item.Value;

                Sims3.Gameplay.ActorSystems.Trait trait = TraitManager.GetTraitFromDictionary(traitName);
                if (trait != null)
                {
                    if (me.TraitManager.HasElement(traitName))
                    {
                        if (me.TraitManager.mSocialGroupTraitGuid == traitName)
                        {
                            me.RemoveSocialGroupTrait();
                        }
                        else if (me.TraitManager.mUniversityGraduateTraitGuid == traitName)
                        {
                            me.RemoveUniversityGraduateTrait();
                        }
                        else
                        {
                            me.RemoveTrait(trait);
                        }
                    }
                    else
                    {
                        int iTraitsForBabiesAndToddlers  = TraitManager.kTraitsForBabiesAndToddlers;
                        int iTraitsForChildren           = TraitManager.kTraitsForChildren;
                        int iTraitsForTeens              = TraitManager.kTraitsForTeens;
                        int iTraitsForYoungAdultAndOlder = TraitManager.kTraitsForYoungAdultAndOlder;

                        try
                        {
                            // Don't use MaxValue as EA adds to this number for [[University]] purposes
                            TraitManager.kTraitsForBabiesAndToddlers  = 10000000;
                            TraitManager.kTraitsForChildren           = 10000000;
                            TraitManager.kTraitsForTeens              = 10000000;
                            TraitManager.kTraitsForYoungAdultAndOlder = 10000000;

                            if (trait.IsHidden)
                            {
                                me.TraitManager.AddHiddenElement(traitName);
                            }
                            else
                            {
                                me.AddTrait(trait);
                            }
                        }
                        finally
                        {
                            TraitManager.kTraitsForBabiesAndToddlers  = iTraitsForBabiesAndToddlers;
                            TraitManager.kTraitsForChildren           = iTraitsForChildren;
                            TraitManager.kTraitsForTeens              = iTraitsForTeens;
                            TraitManager.kTraitsForYoungAdultAndOlder = iTraitsForYoungAdultAndOlder;
                        }
                    }
                }
            }

            if ((me.CreatedSim != null) && (me.CreatedSim.SocialComponent != null))
            {
                me.CreatedSim.SocialComponent.UpdateTraits();
            }

            if (me.TraitManager.CountVisibleTraits() > me.TraitManager.NumTraitsForAge())
            {
                Common.Notify(Common.Localize("ChangeTraits:MaxExceeded", me.IsFemale, new object[] { me, me.TraitManager.CountVisibleTraits(), me.TraitManager.NumTraitsForAge() }));
            }

            return(true);
        }