protected override bool Run(SimDescription me, bool singleSelection) { if (!ApplyAll) { List <SimTrait.Item> allOptions = new List <SimTrait.Item>(); foreach (Sims3.Gameplay.ActorSystems.Trait trait in TraitManager.GetDictionaryTraits) { if (!me.TraitManager.HasElement(trait.Guid)) { continue; } if (!trait.IsReward) { continue; } allOptions.Add(new SimTrait.Item(trait.Guid, 1)); } mSelection = new CommonSelection <SimTrait.Item>(Name, me.FullName, allOptions).SelectMultiple(); if ((mSelection == null) || (mSelection.Count == 0)) { return(false); } } foreach (SimTrait.Item item in mSelection) { if (item == null) { continue; } TraitNames traitName = item.Value; if (!me.TraitManager.HasElement(traitName)) { continue; } Sims3.Gameplay.ActorSystems.Trait trait = TraitManager.GetTraitFromDictionary(traitName); if (trait != null) { me.RemoveTrait(trait); me.mSpendableHappiness += trait.Score; } } if ((me.CreatedSim != null) && (me.CreatedSim.SocialComponent != null)) { me.CreatedSim.SocialComponent.UpdateTraits(); } return(true); }
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.TraitValidForAgeSpecies(me.GetCASAGSAvailabilityFlags())) { continue; } int count = 0; if (me.TraitManager.mSocialGroupTraitGuid == trait.Guid) { count = 1; } else if (me.HasTrait(trait.Guid)) { continue; } allOptions.Add(new SimTrait.Item(trait.Guid, count)); } SimTrait.Item selection = new CommonSelection <SimTrait.Item>(Name, me.FullName, allOptions, new SimTrait.AuxillaryColumn()).SelectSingle(); if (selection == null) { return(false); } TraitNames traitName = selection.Value; me.RemoveSocialGroupTrait(); if (traitName != me.TraitManager.mSocialGroupTraitGuid) { Sims3.Gameplay.ActorSystems.Trait selTrait = TraitManager.GetTraitFromDictionary(traitName); if (selTrait != null) { me.TraitManager.mSocialGroupTraitEnabled = true; me.AddSocialGroupTrait(selTrait); } } if ((me.CreatedSim != null) && (me.CreatedSim.SocialComponent != null)) { me.CreatedSim.SocialComponent.UpdateTraits(); } return(true); }
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); }