public override bool Parse(XmlDbRow row, ref string error) { if (!base.Parse(row, ref error)) { return(false); } if (!row.Exists("Trait")) { error = "Trait missing"; return(false); } else { ToTraitName converter = new ToTraitName(); List <TraitNames> traits = converter.Convert(row.GetString("Trait")); if ((traits == null) || (traits.Count == 0)) { error = converter.mError; return(false); } if (!sPlumbotAntiEquivalents.TryGetValue(traits[0], out mAntiTrait)) { mAntiTrait = TraitNames.Unknown; } mTraits = traits.ToArray(); } return(true); }
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 Allow(TraitNames value) { if (Traits.IsObjectBaseReward(value)) { return(false); } return(base.Allow(value)); }
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); }
public static void ApplyTrait(SimDescription sim, OccultTypes type) { TraitNames trait = TraitFromOccult(type); if (trait == TraitNames.Unknown) { return; } // Apply the trait using both functions, just in case the user has a tuning mod that mod the trait visible sim.TraitManager.AddHiddenElement(trait); sim.TraitManager.AddElement(trait); }
public static bool IsObjectBaseReward(TraitNames trait) { switch (trait) { case TraitNames.MapToTheStars: case TraitNames.Teleporter: case TraitNames.CollectionHelper: case TraitNames.FoodReplicator: case TraitNames.BodySculptor: case TraitNames.MoodModifier: case TraitNames.CloneMe: case TraitNames.CloneMePet: case TraitNames.HoverBed: case TraitNames.Inheritance: case TraitNames.MotiveMobile: case TraitNames.YoungAgain: case TraitNames.YoungAgainPet: case TraitNames.ChangeLifetimeWish: case TraitNames.ChangeOfTaste: case TraitNames.BottomlessPetBowlPet: case TraitNames.BoxStallSuperPet: case TraitNames.PetHygienatorPet: case TraitNames.PetBedSuperPet: case TraitNames.SelfCleaningStallPet: case TraitNames.GenieLamp: case TraitNames.Aromainator: case TraitNames.FlyingVacuum: case TraitNames.PhilosophersStone: case TraitNames.CleanSlate: case TraitNames.WitchMagicHands: case TraitNames.MyBestFriend: case TraitNames.MidLifeCrisis: case TraitNames.MidlifeCrisisPet: case TraitNames.CloudRayGun: case TraitNames.WeatherMachine: case TraitNames.RebelInfluence: case TraitNames.SocialiteInfluence: case TraitNames.NerdInfluence: case TraitNames.SocialGroupTrait: case TraitNames.HonoraryDegree: case TraitNames.MermadicKelp: case TraitNames.HiddenIslandMap: case TraitNames.DreamPodHiddenTrait: return true; } return false; }
public static OccultTypes OccultFromTrait(TraitNames trait) { switch (trait) { case TraitNames.VampireHiddenTrait: return(OccultTypes.Vampire); case TraitNames.MummyHiddenTrait: return(OccultTypes.Mummy); case TraitNames.FrankensteinHiddenTrait: return(OccultTypes.Frankenstein); case TraitNames.ImaginaryFriendHiddenTrait: return(OccultTypes.ImaginaryFriend); case TraitNames.UnicornHiddenTrait: return(OccultTypes.Unicorn); case TraitNames.GenieHiddenTrait: return(OccultTypes.Genie); case TraitNames.WitchHiddenTrait: return(OccultTypes.Witch); case TraitNames.LycanthropyHuman: return(OccultTypes.Werewolf); case TraitNames.FairyHiddenTrait: return(OccultTypes.Fairy); case TraitNames.PlantSim: return(OccultTypes.PlantSim); case TraitNames.MermaidHiddenTrait: return(OccultTypes.Mermaid); case TraitNames.TimeTravelerHiddenTrait: return(OccultTypes.TimeTraveler); case TraitNames.RobotHiddenTrait: return(OccultTypes.Robot); default: return(OccultTypes.None); } }
public static bool IsObjectBaseReward(TraitNames trait) { switch (trait) { case TraitNames.MapToTheStars: case TraitNames.Teleporter: case TraitNames.CollectionHelper: case TraitNames.FoodReplicator: case TraitNames.BodySculptor: case TraitNames.MoodModifier: case TraitNames.CloneMe: case TraitNames.CloneMePet: case TraitNames.HoverBed: case TraitNames.Inheritance: case TraitNames.MotiveMobile: case TraitNames.YoungAgain: case TraitNames.YoungAgainPet: case TraitNames.ChangeLifetimeWish: case TraitNames.ChangeOfTaste: case TraitNames.BottomlessPetBowlPet: case TraitNames.BoxStallSuperPet: case TraitNames.PetHygienatorPet: case TraitNames.PetBedSuperPet: case TraitNames.SelfCleaningStallPet: case TraitNames.GenieLamp: case TraitNames.Aromainator: case TraitNames.FlyingVacuum: case TraitNames.PhilosophersStone: case TraitNames.CleanSlate: case TraitNames.WitchMagicHands: case TraitNames.MyBestFriend: case TraitNames.MidLifeCrisis: case TraitNames.MidlifeCrisisPet: case TraitNames.CloudRayGun: case TraitNames.WeatherMachine: case TraitNames.RebelInfluence: case TraitNames.SocialiteInfluence: case TraitNames.NerdInfluence: case TraitNames.SocialGroupTrait: case TraitNames.HonoraryDegree: case TraitNames.MermadicKelp: case TraitNames.HiddenIslandMap: case TraitNames.DreamPodHiddenTrait: return(true); } return(false); }
public static string ProperName(TraitNames value, bool isFemale) { string name = null; Trait trait = TraitManager.GetTraitFromDictionary(value); if (trait != null) { name = trait.TraitName(isFemale); if (trait.IsHidden) { string result; if (Common.Localize("HiddenTrait:" + value, isFemale, new object[0], out result)) { name = result; } } } name += (Common.kDebugging ? " (" + value + ")" : ""); return name; }
public static string ProperName(TraitNames value, bool isFemale) { string name = null; Trait trait = TraitManager.GetTraitFromDictionary(value); if (trait != null) { name = trait.TraitName(isFemale); if (trait.IsHidden) { string result; if (Common.Localize("HiddenTrait:" + value, isFemale, new object[0], out result)) { name = result; } } } name += (Common.kDebugging ? " (" + value + ")" : ""); return(name); }
public new static void DoAcceptReject(Sim actor, Sim target, Sim.GiveGift inst) { GameObject gift = inst.Gift; string message = ""; string stingName = null; if (inst.RejectFromSpoiled) { if (DoesSimAlreadyOwnObject(target, gift)) { message = GiveGiftLocalizeString(target.IsFemale, "SpoiledAlreadyHave", new object[0x0]); } else { message = GiveGiftLocalizeString(target.IsFemale, "SpoiledTooCheap", new object[0x0]); } InteractionInstance instance = Sim.GiveGiftTantrum.Singleton.CreateInstance(target, target, target.InheritedPriority(), false, true); target.InteractionQueue.PushAsContinuation(instance, true); } else { Relationship relationship = actor.GetRelationship(target, false); float liking = relationship.LTR.Liking; float num2 = 0f; List <TraitNames> randomList = new List <TraitNames>(); TraitNames unknown = TraitNames.Unknown; GiveGiftTraitData data = null; InformationLearnedAboutSim sim = relationship.InformationAbout(target); foreach (Trait trait in target.TraitManager.List) { if (sTraitToTraitDataMap.TryGetValue(trait.Guid, out data) && data.DoesTraitCareAboutObject(gift)) { randomList.Add(trait.Guid); num2 += data.Score; if ((unknown == TraitNames.Unknown) && !sim.KnowsTrait(trait.Guid)) { unknown = trait.Guid; } } } if (randomList.Count > 0x0) { if (unknown == TraitNames.Unknown) { unknown = RandomUtil.GetRandomObjectFromList <TraitNames>(randomList); } else { sim.LearnTrait(unknown, actor.SimDescription, target.SimDescription); } message = sTraitToTraitDataMap[unknown].GetTNS(target); } float num3 = liking + num2; if (num3 >= Sim.GiveGiftTuning.kLTRToAcceptGift) { stingName = "sting_give_gift_accept"; if (num3 >= Sim.GiveGiftTuning.kLTRToSuperAcceptGift) { message = GiveGiftLocalizeString(target.IsFemale, "UberAcceptGiftTNS", new object[0x0]); stingName = "sting_give_gift_accept_super"; } else if (liking >= Sim.GiveGiftTuning.kLTRToAcceptGift) { message = GiveGiftLocalizeString(target.IsFemale, "AcceptGiftTNS", new object[0x0]); } TransferGiftFromActorToTarget(actor, target, gift); } else { if (liking < Sim.GiveGiftTuning.kLTRToAcceptGift) { message = GiveGiftLocalizeString(target.IsFemale, "RejectGiftTNS", new object[0x0]); } EventTracker.SendEvent(new SocialEvent(EventTypeId.kSocialInteraction, actor, target, "PillowFight", false, false, false, CommodityTypes.Undefined)); } } if (stingName != null) { actor.ShowTNSAndPlayStingIfSelectable(message, StyledNotification.NotificationStyle.kSimTalking, target.ObjectId, gift.ObjectId, stingName); } else { actor.ShowTNSIfSelectable(message, StyledNotification.NotificationStyle.kSimTalking, target.ObjectId, gift.ObjectId); } }
public static SimDescription DGSMakeSSimDescription(SimBuilder builder, CASAgeGenderFlags age, CASAgeGenderFlags gender, ResourceKey skinTone, float skinToneIndex, Color[] hairColors, WorldName homeWorld, uint outfitCategoriesToBuild, bool isAlien) { if (age == CASAgeGenderFlags.None) { return(null); } if (builder == null) { builder = new SimBuilder(); builder.Age = age; builder.Gender = gender; builder.Species = CASAgeGenderFlags.Human; builder.SkinTone = skinTone; builder.SkinToneIndex = skinToneIndex; builder.TextureSize = 1024u; builder.UseCompression = true; } if (hairColors.Length == 9) { Color[] array = new Color[10]; hairColors.CopyTo(array, 0); array[9] = hairColors[0]; hairColors = array; } if (hairColors.Length != 10) { hairColors = Genetics.Black1; } Color[] array2 = new Color[4]; Array.Copy(hairColors, 5, array2, 0, 4); Color activeEyebrowColor = hairColors[4]; SimDescriptionCore simDescriptionCore = new SimDescriptionCore(); simDescriptionCore.HomeWorld = homeWorld; bool useDyeColor = age == CASAgeGenderFlags.Elder; GeneticColor[] hairColors2 = simDescriptionCore.HairColors; for (int i = 0; i < 4; i++) { hairColors2[i].UseDyeColor = useDyeColor; } simDescriptionCore.HairColors = hairColors2; simDescriptionCore.ActiveHairColors = hairColors; simDescriptionCore.EyebrowColor.UseDyeColor = useDyeColor; simDescriptionCore.ActiveEyebrowColor = activeEyebrowColor; simDescriptionCore.BodyHairColor.UseDyeColor = useDyeColor; simDescriptionCore.ActiveBodyHairColor = hairColors[9]; GeneticColor[] facialHairColors = simDescriptionCore.FacialHairColors; for (int j = 0; j < 4; j++) { facialHairColors[j].UseDyeColor = useDyeColor; } simDescriptionCore.FacialHairColors = facialHairColors; simDescriptionCore.ActiveFacialHairColors = array2; Dictionary <ResourceKey, float> dictionary = new Dictionary <ResourceKey, float>(); if (LocaleConstraints.GetFacialShape(ref dictionary, homeWorld)) { foreach (KeyValuePair <ResourceKey, float> keyValuePair in dictionary) { builder.SetFacialBlend(keyValuePair.Key, keyValuePair.Value); } } OutfitUtils.AddMissingParts(builder, (OutfitCategories)2097154u, true, simDescriptionCore, isAlien); Genetics.SleepIfPossible(); OutfitUtils.AddMissingParts(builder, OutfitCategories.Everyday, true, simDescriptionCore, isAlien); Genetics.SleepIfPossible(); ResourceKey key = default(ResourceKey); if (LocaleConstraints.GetUniform(ref key, homeWorld, age, gender, OutfitCategories.Everyday)) { OutfitUtils.SetOutfit(builder, new SimOutfit(key), simDescriptionCore); } OutfitUtils.SetAutomaticModifiers(builder); ResourceKey key2 = builder.CacheOutfit(string.Format("Genetics.MakeSim_{0}_{1}_{2}", builder.Age, Simulator.TicksElapsed(), OutfitCategories.Everyday)); if (key2.InstanceId == 0UL) { return(null); } OutfitCategories[] array3 = new OutfitCategories[] { OutfitCategories.Naked, OutfitCategories.Athletic, OutfitCategories.Formalwear, OutfitCategories.Sleepwear, OutfitCategories.Swimwear }; SimOutfit simOutfit = new SimOutfit(key2); SimDescription simDescription = new SimDescription(simOutfit); simDescription.HairColors = simDescriptionCore.HairColors; simDescription.FacialHairColors = simDescriptionCore.FacialHairColors; simDescription.EyebrowColor = simDescriptionCore.EyebrowColor; simDescription.BodyHairColor = simDescriptionCore.BodyHairColor; simDescription.AddOutfit(simOutfit, OutfitCategories.Everyday, true); foreach (OutfitCategories outfitCategories in array3) { if ((outfitCategoriesToBuild & (uint)outfitCategories) != 0u) { OutfitUtils.MakeCategoryAppropriate(builder, outfitCategories, simDescription); if (LocaleConstraints.GetUniform(ref key, homeWorld, age, gender, outfitCategories)) { OutfitUtils.SetOutfit(builder, new SimOutfit(key), simDescriptionCore); } ResourceKey key3 = builder.CacheOutfit(string.Format("Genetics.MakeSim_{0}_{1}_{2}", builder.Age, Simulator.TicksElapsed(), outfitCategories)); simDescription.AddOutfit(new SimOutfit(key3), outfitCategories); Genetics.SleepIfPossible(); } } simDescription.RandomizePreferences(); TraitNames cultureSpecificTrait = Genetics.GetCultureSpecificTrait(homeWorld); if (cultureSpecificTrait == TraitNames.FutureSim) { simDescription.TraitManager.AddHiddenElement(cultureSpecificTrait); Skill skill = simDescription.SkillManager.AddElement(SkillNames.Future); if ((skill.AvailableAgeSpecies & simDescription.GetCASAGSAvailabilityFlags()) != CASAGSAvailabilityFlags.None) { while (simDescription.SkillManager.GetSkillLevel(SkillNames.Future) < skill.MaxSkillLevel) { simDescription.SkillManager.ForceGainPointsForLevelUp(SkillNames.Future); } } } else if (cultureSpecificTrait != TraitNames.Unknown) { simDescription.TraitManager.AddHiddenElement(cultureSpecificTrait); } builder.Dispose(); builder = null; simDescription.HomeWorld = GameUtils.GetCurrentWorld(); return(simDescription); }
protected override bool PrivateUpdate(ScenarioFrame frame) { foreach (Trait trait in new List <Trait>(Sim.TraitManager.List)) { if (trait.IsReward) { continue; } if (HasValue <ForceTraitOption, TraitNames>(Sim, trait.Guid)) { IncStat("Forced Trait Found"); return(false); } } IncStat("Necessary"); TraitNames removedTrait = TraitNames.Unknown; int available = Sim.TraitManager.NumTraitsForAge() - Sim.TraitManager.CountVisibleTraits(); if (available == 0) { foreach (Trait trait in new List <Trait>(Sim.TraitManager.List)) { if (HasValue <DisallowTraitOption, TraitNames>(Sim, trait.Guid)) { Sim.TraitManager.RemoveElement(trait.Guid); if ((trait.IsHidden) || (trait.IsReward)) { continue; } removedTrait = trait.Guid; IncStat("Disallowed Trait Removed"); available = 1; break; } } } if (available <= 0) { List <Trait> traits = new List <Trait>(Sim.TraitManager.List); RandomUtil.RandomizeListOfObjects(traits); foreach (Trait trait in traits) { if ((trait.IsHidden) || (trait.IsReward)) { continue; } Sim.TraitManager.RemoveElement(trait.Guid); removedTrait = trait.Guid; IncStat("Removed One"); break; } } List <TraitNames> choices = new List <TraitNames>(GetValue <ForceTraitOption, List <TraitNames> >(Sim)); RandomUtil.RandomizeListOfObjects(choices); bool readdTrait = true; bool result = false; foreach (TraitNames traitName in choices) { Trait trait = TraitManager.GetTraitFromDictionary(traitName); if (trait == null) { continue; } if (!trait.TraitValidForAgeSpecies(Sim.GetCASAGSAvailabilityFlags())) { continue; } bool success = false; if (trait.IsHidden) { success = Sim.TraitManager.AddElement(traitName, true); } else { success = Sim.AddTrait(trait); } if (success) { IncStat("Success"); result = true; GetData(Sim).InvalidateCache(); if ((!trait.IsHidden) && (!trait.IsReward)) { readdTrait = false; } break; } } if ((readdTrait) && (removedTrait != TraitNames.Unknown)) { Sim.AddTrait(TraitManager.GetTraitFromDictionary(removedTrait)); IncStat("Trait Readded"); } return(result); }
public static void AddSocials(string name, SocialComponent ths, CommodityTypes commodity, Sim actor, Sim target, List<SocialInteractionCandidate> socials, bool isAutonomous, int maxNumSocials, List<InteractionObjectPair> results, string[] inlineParentMenu, TraitNames trait) { sMsg += Common.NewLine + "AddSocials " + name + " " + commodity + " " + socials.Count; int num = 0x0; InteractionPriority priority = new InteractionPriority(isAutonomous ? InteractionPriorityLevel.Autonomous : InteractionPriorityLevel.UserDirected); GreyedOutTooltipCallback greyedOutTooltipCallback = null; foreach (SocialInteractionCandidate candidate in socials) { string[] strArray = inlineParentMenu; bool flag = true; if (num >= maxNumSocials) { break; } sMsg += Common.NewLine + " Testing " + candidate.Name; ActiveTopic topic = candidate.Topic; if (topic != null) { ActiveTopicData data = topic.Data; if (data.HasPieMenuOverride()) { flag = false; strArray = new string[] { data.GetText(actor, new object[0x0]) }; } } ActionData data2 = ActionData.Get(candidate.Name); if (data2.AppearsOnTopLevel) { strArray = new string[0x0]; } if (!ths.DoesSocialAppear(candidate.Name, results, strArray)) { InteractionObjectPair iop = null; if (((data2.IntendedCommodityString == CommodityTypes.Friendly) && ((actor.Posture is ISeatedSocialPosture) || (target.Posture is ISeatedSocialPosture))) && data2.AllowCarryChild) { InteractionDefinition interaction = new SeatedSocialInteractionA.SeatedDefinition(candidate.Name, strArray, candidate.Topic, false, trait, false); iop = new InteractionObjectPair(interaction, target); InteractionInstanceParameters parameters = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true); if (!IUtil.IsPass(interaction.Test(ref parameters, ref greyedOutTooltipCallback))) { iop = null; } if (((candidate.Name == "Chat") && !actor.CanBeInSameGroupTalkAsMe(target)) && (actor.Posture is ISeatedSocialPosture)) { string[] strArray2 = new string[0x0]; if (!ths.DoesSocialAppear(candidate.Name, results, strArray2)) { interaction = new SeatedSocialInteractionA.SeatedDefinition(candidate.Name, strArray2, candidate.Topic, false, trait, true); InteractionObjectPair pair2 = new InteractionObjectPair(interaction, target); parameters = new InteractionInstanceParameters(pair2, actor, priority, isAutonomous, true); if (IUtil.IsPass(interaction.Test(ref parameters, ref greyedOutTooltipCallback))) { results.Add(pair2); } } } } if (iop == null) { iop = new InteractionObjectPair(new SocialInteractionA.Definition(candidate.Name, strArray, candidate.Topic, false, trait), target); } InteractionInstanceParameters parameters2 = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true); InteractionTestResult result = iop.InteractionDefinition.Test(ref parameters2, ref greyedOutTooltipCallback); sMsg += Common.NewLine + " " + candidate.Name + " = " + result; if ((IUtil.IsPass(result) || (greyedOutTooltipCallback != null)) || Sims3.Gameplay.UI.PieMenu.PieMenuShowFailureReason) { results.Add(iop); if (flag) { num++; } } } } }
public static bool Remove(SimDescription sim, OccultTypes type, bool alterOutfit) { if (sim.OccultManager == null) { return(false); } if (sim.CreatedSim != null) { try { if (sim.CreatedSim.CurrentOutfitCategory == OutfitCategories.Special) { sim.CreatedSim.SwitchToOutfitWithoutSpin(OutfitCategories.Everyday); } } catch { } } OccultVampire vampire = sim.OccultManager.GetOccultType(type) as OccultVampire; if (vampire != null) { if ((vampire.mOwningSim == null) || (vampire.mOwningSim.MapTagManager == null)) { vampire.mPreyMapTag = null; } } if (sim.GetOutfitCount(OutfitCategories.Everyday) == 1) { SimOutfit outfit = sim.GetOutfit(OutfitCategories.Everyday, 0); using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(sim, new CASParts.Key(OutfitCategories.Everyday, 1), outfit)) { } } if (type == OccultTypes.Unicorn) { OccultUnicornEx.OnRemoval(sim); } bool success = false; OccultManager occultManager = sim.OccultManager; try { if (occultManager.HasOccultType(type)) { occultManager.mCurrentOccultTypes ^= type; foreach (OccultBaseClass occultClass in occultManager.mOccultList) { if (type == occultClass.ClassOccultType) { if ((occultManager.mOwnerDescription.SupernaturalData != null) && (occultManager.mOwnerDescription.SupernaturalData.OccultType == type)) { occultManager.mOwnerDescription.RemoveSupernaturalData(); } OccultGenie genie = occultClass as OccultGenie; if (genie != null) { OccultGenieEx.OnRemoval(genie, occultManager.mOwnerDescription, alterOutfit); } else { OccultPlantSim plantSim = occultClass as OccultPlantSim; if (plantSim != null) { OccultPlantSimEx.OnRemoval(plantSim, occultManager.mOwnerDescription, alterOutfit); } else { occultClass.OnRemoval(occultManager.mOwnerDescription); } } occultManager.mOccultList.Remove(occultClass); occultManager.mIsLifetimeReward = false; if (occultManager.mOccultList.Count == 0x0) { occultManager.mOccultList = null; } break; } } (Responder.Instance.HudModel as Sims3.Gameplay.UI.HudModel).OnSimDaysPerAgingYearChanged(); occultManager.UpdateOccultUI(); EventTracker.SendEvent(EventTypeId.kLostOccult, occultManager.mOwnerDescription.CreatedSim); } //occultManager.RemoveOccultType(type); success = true; } catch (Exception e) { bool showError = true; switch (type) { case OccultTypes.Genie: case OccultTypes.ImaginaryFriend: if (sim.CreatedSim == null) { showError = false; } break; } if (showError) { Common.Exception(sim, e); } } if (!success) { for (int i = occultManager.mOccultList.Count - 1; i >= 0; i--) { if (type == occultManager.mOccultList[i].ClassOccultType) { occultManager.mOccultList.RemoveAt(i); } (Sims3.UI.Responder.Instance.HudModel as Sims3.Gameplay.UI.HudModel).OnSimDaysPerAgingYearChanged(); sim.OccultManager.UpdateOccultUI(); } } TraitNames trait = TraitFromOccult(type); if (trait != TraitNames.Unknown) { sim.TraitManager.RemoveElement(trait); } return(success); }
public static OccultTypes OccultFromTrait(TraitNames trait) { switch (trait) { case TraitNames.VampireHiddenTrait: return OccultTypes.Vampire; case TraitNames.MummyHiddenTrait: return OccultTypes.Mummy; case TraitNames.FrankensteinHiddenTrait: return OccultTypes.Frankenstein; case TraitNames.ImaginaryFriendHiddenTrait: return OccultTypes.ImaginaryFriend; case TraitNames.UnicornHiddenTrait: return OccultTypes.Unicorn; case TraitNames.GenieHiddenTrait: return OccultTypes.Genie; case TraitNames.WitchHiddenTrait: return OccultTypes.Witch; case TraitNames.LycanthropyHuman: return OccultTypes.Werewolf; case TraitNames.FairyHiddenTrait: return OccultTypes.Fairy; case TraitNames.PlantSim: return OccultTypes.PlantSim; case TraitNames.MermaidHiddenTrait: return OccultTypes.Mermaid; case TraitNames.TimeTravelerHiddenTrait: return OccultTypes.TimeTraveler; case TraitNames.RobotHiddenTrait: return OccultTypes.Robot; default: return OccultTypes.None; } }
public static void AddSocials(SocialComponent ths, Sim actor, Sim target, List <SocialInteractionCandidate> socials, bool isAutonomous, int maxNumSocials, List <InteractionObjectPair> results, string[] inlineParentMenu, TraitNames trait, ref string msg) { int num = 0x0; InteractionPriority priority = new InteractionPriority(isAutonomous ? InteractionPriorityLevel.Autonomous : InteractionPriorityLevel.UserDirected); GreyedOutTooltipCallback greyedOutTooltipCallback = null; foreach (SocialInteractionCandidate candidate in socials) { using (Common.TestSpan span = new Common.TestSpan(TimeSpanLogger.Bin, candidate.Name, Common.DebugLevel.Stats)) { string[] strArray = inlineParentMenu; bool flag = true; if (num >= maxNumSocials) { break; } ActiveTopic topic = candidate.Topic; if (topic != null) { ActiveTopicData data = topic.Data; if (data.HasPieMenuOverride()) { flag = false; strArray = new string[] { data.GetText(actor, new object[0x0]) }; } } ActionData data2 = ActionData.Get(candidate.Name); if (data2.AppearsOnTopLevel) { strArray = new string[0x0]; } if (!ths.DoesSocialAppear(candidate.Name, results, strArray)) { InteractionObjectPair iop = null; if (((data2.IntendedCommodityString == CommodityTypes.Friendly) && ((actor.Posture is ISeatedSocialPosture) || (target.Posture is ISeatedSocialPosture))) && data2.AllowCarryChild) { InteractionDefinition interaction = new SeatedSocialInteractionA.SeatedDefinition(candidate.Name, strArray, candidate.Topic, false, trait, false); iop = new InteractionObjectPair(interaction, target); InteractionInstanceParameters parameters = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true); if (!IUtil.IsPass(interaction.Test(ref parameters, ref greyedOutTooltipCallback))) { iop = null; } if (((candidate.Name == "Chat") && !actor.CanBeInSameGroupTalkAsMe(target)) && (actor.Posture is ISeatedSocialPosture)) { string[] strArray2 = new string[0x0]; if (!ths.DoesSocialAppear(candidate.Name, results, strArray2)) { interaction = new SeatedSocialInteractionA.SeatedDefinition(candidate.Name, strArray2, candidate.Topic, false, trait, true); InteractionObjectPair pair2 = new InteractionObjectPair(interaction, target); parameters = new InteractionInstanceParameters(pair2, actor, priority, isAutonomous, true); if (IUtil.IsPass(interaction.Test(ref parameters, ref greyedOutTooltipCallback))) { results.Add(pair2); } } } } if (iop == null) { iop = new InteractionObjectPair(new SocialInteractionA.Definition(candidate.Name, strArray, candidate.Topic, false, trait), target); } InteractionInstanceParameters parameters2 = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true); InteractionTestResult result = iop.InteractionDefinition.Test(ref parameters2, ref greyedOutTooltipCallback); msg += Common.NewLine + parameters2.InteractionDefinition.GetInteractionName(ref parameters2) + ": " + result; if ((IUtil.IsPass(result) || (greyedOutTooltipCallback != null)) || Sims3.Gameplay.UI.PieMenu.PieMenuShowFailureReason) { results.Add(iop); if (flag) { num++; } } } } } }
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); }
public Item(TraitNames guid, int count) : base(guid, count) { }
public Definition(TraitNames trait, int level) { mTrait = trait; mLevel = level; }