示例#1
0
 public static void MakeupManagement(Sim sim, bool addRemove)
 {
     try
     {
         SimBuilder       builder               = new SimBuilder();
         SimDescription   simDescription        = sim.SimDescription;
         OutfitCategories currentOutfitCategory = sim.CurrentOutfitCategory;
         int currentOutfitIndex = sim.CurrentOutfitIndex;
         builder.Clear(false);
         SimOutfit currentOutfit = sim.CurrentOutfit;
         OutfitUtils.SetOutfit(builder, currentOutfit, simDescription);
         if (addRemove)
         {
             sendDebugMsg(sim.FullName + "\nAdding eyes.");
             string designPreset = CASUtils.PartDataGetPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex));
             builder.AddPart(ThirstMask);
             if (sim.SimDescription.YoungAdultOrAbove)
             {
                 sim.BuffManager.AddElement(0xB110CC43B0C44B1C, (Origin)ResourceUtils.HashString64("ByAppearanceOfRedEyes"));
             }
             CASUtils.ApplyPresetToPart(builder, ThirstMask, designPreset);
             builder.SetPartPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex), designPreset);
         }
         else
         {
             builder.RemovePart(ThirstMask);
             sim.BuffManager.RemoveElement(0xB110CC43B0C44B1C);
         }
         SimOutfit outfit = new SimOutfit(builder.CacheOutfit(simDescription.FullName + currentOutfitCategory.ToString() + currentOutfitIndex.ToString()));
         if (simDescription.GetOutfitCount(currentOutfitCategory) > currentOutfitIndex)
         {
             simDescription.RemoveOutfit(currentOutfitCategory, currentOutfitIndex, true);
         }
         simDescription.AddOutfit(outfit, currentOutfitCategory, currentOutfitIndex);
         if (simDescription.CreatedSim != null)
         {
             sendDebugMsg("Updated: " + currentOutfitCategory.ToString() + "-" + currentOutfitIndex.ToString());
             simDescription.CreatedSim.RefreshCurrentOutfit(false);
         }
         foreach (OutfitCategories categories2 in Enum.GetValues(typeof(OutfitCategories)))
         {
             if (categories2 != OutfitCategories.Special)
             {
                 ArrayList list = simDescription.GetCurrentOutfits()[categories2] as ArrayList;
                 if (list != null)
                 {
                     int count = list.Count;
                     for (int i = 0; i < count; i++)
                     {
                         if ((categories2 != currentOutfitCategory) || (i != currentOutfitIndex))
                         {
                             builder.Clear(false);
                             SimOutfit outfit3 = list[i] as SimOutfit;
                             OutfitUtils.SetOutfit(builder, outfit3, simDescription);
                             if (addRemove)
                             {
                                 string str2 = CASUtils.PartDataGetPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex));
                                 builder.AddPart(ThirstMask);
                                 sim.BuffManager.AddElement(0xB110CC43B0C44B1C, (Origin)ResourceUtils.HashString64("ByAppearanceOfRedEyes"));
                                 CASUtils.ApplyPresetToPart(builder, ThirstMask, str2);
                                 builder.SetPartPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex), str2);
                             }
                             else
                             {
                                 builder.RemovePart(ThirstMask);
                                 sim.BuffManager.RemoveElement(0xB110CC43B0C44B1C);
                             }
                             SimOutfit outfit4 = new SimOutfit(builder.CacheOutfit(simDescription.FullName + categories2.ToString() + i.ToString()));
                             if (simDescription.GetOutfitCount(categories2) > i)
                             {
                                 simDescription.RemoveOutfit(categories2, i, true);
                             }
                             simDescription.AddOutfit(outfit4, categories2, i);
                             sendDebugMsg("Updated: " + categories2.ToString() + "-" + i.ToString());
                             Sleep(0);
                         }
                     }
                 }
             }
         }
         SimOutfit outfit5 = simDescription.GetOutfit(OutfitCategories.Everyday, 0);
         if (outfit5 != null)
         {
             ThumbnailManager.GenerateHouseholdSimThumbnail(outfit5.Key, outfit5.Key.InstanceId, 0, ThumbnailSizeMask.Large | ThumbnailSizeMask.ExtraLarge | ThumbnailSizeMask.Medium | ThumbnailSizeMask.Small, ThumbnailTechnique.Default, true, false, simDescription.AgeGenderSpecies);
         }
     }
     catch (Exception exception)
     {
         SimpleMessageDialog.Show("Vampire Tweaker - Thirst Effect", sim.Name + "\nApply makeup failed!\n" + exception);
     }
 }
 public static void SetFeet(Sim sim, bool addRemove)
 {
     try
     {
         SimBuilder       builder               = new SimBuilder();
         SimDescription   simDescription        = sim.SimDescription;
         OutfitCategories currentOutfitCategory = sim.CurrentOutfitCategory;
         int currentOutfitIndex = sim.CurrentOutfitIndex;
         builder.Clear(false);
         SimOutfit currentOutfit = sim.CurrentOutfit;
         OutfitUtils.SetOutfit(builder, currentOutfit, simDescription);
         if (addRemove)
         {
             sendDebugMsg(sim.FullName + "\nAdding feets.");
             simDescription.AddOutfit(currentOutfit, OutfitCategories.Naked);
             if (simDescription.Child)
             {
                 builder.AddPart(WolfFeetMaskChildUnisex);
             }
             if (simDescription.Teen && simDescription.IsFemale)
             {
                 builder.AddPart(WolfFeetMaskTeenFemale);
             }
             if (simDescription.Teen && simDescription.IsMale)
             {
                 builder.AddPart(WolfFeetMaskTeenMale);
             }
             if (simDescription.Adult && simDescription.YoungAdult && simDescription.IsFemale)
             {
                 builder.AddPart(WolfFeetMaskAdultFemale);
             }
             if (simDescription.Adult && simDescription.YoungAdult && simDescription.IsMale)
             {
                 builder.AddPart(WolfFeetMaskAdultMale);
             }
             if (simDescription.Elder && simDescription.IsFemale)
             {
                 builder.AddPart(WolfFeetMaskElderFemale);
             }
             if (simDescription.Elder && simDescription.IsMale)
             {
                 builder.AddPart(WolfFeetMaskElderMale);
             }
         }
         else
         {
             if (simDescription.Child)
             {
                 builder.RemovePart(WolfFeetMaskChildUnisex);
             }
             if (simDescription.Teen && simDescription.IsFemale)
             {
                 builder.RemovePart(WolfFeetMaskChildUnisex);
             }
             if (simDescription.Teen && simDescription.IsMale)
             {
                 builder.RemovePart(WolfFeetMaskTeenMale);
             }
             if (simDescription.YoungAdult && simDescription.Adult && simDescription.IsMale)
             {
                 builder.RemovePart(WolfFeetMaskAdultMale);
             }
             if (simDescription.YoungAdult && simDescription.Adult && simDescription.IsFemale)
             {
                 builder.RemovePart(WolfFeetMaskAdultFemale);
             }
             if (simDescription.Elder && simDescription.IsFemale)
             {
                 builder.RemovePart(WolfFeetMaskElderFemale);
             }
             if (simDescription.Elder && simDescription.IsMale)
             {
                 builder.RemovePart(WolfFeetMaskElderMale);
             }
         }
         SimOutfit outfit = new SimOutfit(builder.CacheOutfit(simDescription.FullName + currentOutfitCategory.ToString() + currentOutfitIndex.ToString()));
         if (simDescription.GetOutfitCount(currentOutfitCategory) > currentOutfitIndex)
         {
             simDescription.RemoveOutfit(currentOutfitCategory, currentOutfitIndex, true);
         }
         simDescription.AddOutfit(outfit, currentOutfitCategory, currentOutfitIndex);
         if (simDescription.CreatedSim != null)
         {
             sendDebugMsg("Updated: " + currentOutfitCategory.ToString() + "-" + currentOutfitIndex.ToString());
             simDescription.CreatedSim.RefreshCurrentOutfit(false);
         }
         foreach (OutfitCategories categories2 in Enum.GetValues(typeof(OutfitCategories)))
         {
             if (categories2 != OutfitCategories.Special)
             {
                 ArrayList list = simDescription.GetCurrentOutfits()[categories2] as ArrayList;
                 if (list != null)
                 {
                     int count = list.Count;
                     for (int i = 0; i < count; i++)
                     {
                         if ((categories2 != currentOutfitCategory) || (i != currentOutfitIndex))
                         {
                             builder.Clear(false);
                             SimOutfit outfit3 = list[i] as SimOutfit;
                             OutfitUtils.SetOutfit(builder, outfit3, simDescription);
                             if (addRemove)
                             {
                                 simDescription.AddOutfit(currentOutfit, OutfitCategories.Naked);
                                 if (simDescription.Child)
                                 {
                                     builder.AddPart(WolfFeetMaskChildUnisex);
                                 }
                                 if (simDescription.Teen && simDescription.IsFemale)
                                 {
                                     builder.AddPart(WolfFeetMaskTeenFemale);
                                 }
                                 if (simDescription.Teen && simDescription.IsMale)
                                 {
                                     builder.AddPart(WolfFeetMaskTeenMale);
                                 }
                                 if (simDescription.Adult && simDescription.YoungAdult && simDescription.IsFemale)
                                 {
                                     builder.AddPart(WolfFeetMaskAdultFemale);
                                 }
                                 if (simDescription.Adult && simDescription.YoungAdult && simDescription.IsMale)
                                 {
                                     builder.AddPart(WolfFeetMaskAdultMale);
                                 }
                                 if (simDescription.Elder && simDescription.IsFemale)
                                 {
                                     builder.AddPart(WolfFeetMaskElderFemale);
                                 }
                                 if (simDescription.Elder && simDescription.IsMale)
                                 {
                                     builder.AddPart(WolfFeetMaskElderMale);
                                 }
                             }
                             else
                             {
                                 if (simDescription.Child)
                                 {
                                     builder.RemovePart(WolfFeetMaskChildUnisex);
                                 }
                                 if (simDescription.Teen && simDescription.IsFemale)
                                 {
                                     builder.RemovePart(WolfFeetMaskChildUnisex);
                                 }
                                 if (simDescription.Teen && simDescription.IsMale)
                                 {
                                     builder.RemovePart(WolfFeetMaskTeenMale);
                                 }
                                 if (simDescription.YoungAdult && simDescription.Adult && simDescription.IsMale)
                                 {
                                     builder.RemovePart(WolfFeetMaskAdultMale);
                                 }
                                 if (simDescription.YoungAdult && simDescription.Adult && simDescription.IsFemale)
                                 {
                                     builder.RemovePart(WolfFeetMaskAdultFemale);
                                 }
                                 if (simDescription.Elder && simDescription.IsFemale)
                                 {
                                     builder.RemovePart(WolfFeetMaskElderFemale);
                                 }
                                 if (simDescription.Elder && simDescription.IsMale)
                                 {
                                     builder.RemovePart(WolfFeetMaskElderMale);
                                 }
                             }
                             SimOutfit outfit4 = new SimOutfit(builder.CacheOutfit(simDescription.FullName + categories2.ToString() + i.ToString()));
                             if (simDescription.GetOutfitCount(categories2) > i)
                             {
                                 simDescription.RemoveOutfit(categories2, i, true);
                             }
                             simDescription.AddOutfit(outfit4, categories2, i);
                             sendDebugMsg("Updated: " + categories2.ToString() + "-" + i.ToString());
                             Sleep(0);
                         }
                     }
                 }
             }
         }
         SimOutfit outfit5 = simDescription.GetOutfit(OutfitCategories.Everyday, 0);
         if (outfit5 != null)
         {
             ThumbnailManager.GenerateHouseholdSimThumbnail(outfit5.Key, outfit5.Key.InstanceId, 0, ThumbnailSizeMask.Large | ThumbnailSizeMask.ExtraLarge | ThumbnailSizeMask.Medium | ThumbnailSizeMask.Small, ThumbnailTechnique.Default, true, false, simDescription.AgeGenderSpecies);
         }
     }
     catch (Exception exception)
     {
         SimpleMessageDialog.Show("Werewolf Tweaker - Wolf Feet", sim.Name + "\nApply feet failed!\n" + exception);
     }
 }
示例#3
0
        public static bool CopyGenetics(SimDescriptionCore source, SimDescriptionCore destination, bool onlyNonZero, bool onlySliders)
        {
            SimOutfit sourceOutfit = CASParts.GetOutfit(source, CASParts.sPrimary, false);

            if (sourceOutfit == null)
            {
                return(false);
            }

            SimOutfit sourceWerewolfOutfit = CASParts.GetOutfit(source, new CASParts.Key(OutfitCategories.Supernatural, 0), false);

            SimDescription sourceDesc = source as SimDescription;
            SimDescription destDesc   = destination as SimDescription;

            if ((!onlySliders) && (!SimTypes.IsSkinJob(sourceDesc)) && (!SimTypes.IsSkinJob(destDesc)))
            {
                destDesc.SkinToneKey   = sourceDesc.SkinToneKey;
                destDesc.SkinToneIndex = sourceDesc.SkinToneIndex;
            }

            destDesc.SecondaryNormalMapWeights = sourceDesc.SecondaryNormalMapWeights.Clone() as float[];

            using (SimBuilder sourceBuilder = new SimBuilder())
            {
                OutfitUtils.SetOutfit(sourceBuilder, sourceOutfit, source);

                using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(destination, CASParts.sPrimary))
                {
                    if (!builder.OutfitValid)
                    {
                        return(false);
                    }

                    if ((!onlySliders) && (destDesc != null))
                    {
                        builder.Builder.SkinTone      = destDesc.SkinToneKey;
                        builder.Builder.SkinToneIndex = destDesc.SkinToneIndex;
                    }

                    foreach (FacialBlend blend in FaceBlends)
                    {
                        float amount = GetBlendAmount(sourceBuilder, blend);

                        if (onlyNonZero)
                        {
                            if (amount == 0.0)
                            {
                                continue;
                            }
                        }

                        SetBlendAmount(builder.Builder, blend, amount);
                    }

                    foreach (FacialBlend blend in FurBlends)
                    {
                        float amount = GetBlendAmount(sourceBuilder, blend);

                        if (onlyNonZero)
                        {
                            if (amount == 0.0)
                            {
                                continue;
                            }
                        }

                        SetBlendAmount(builder.Builder, blend, amount);
                    }

                    if (!onlySliders)
                    {
                        builder.CopyGeneticParts(sourceOutfit);
                    }
                }

                sourceBuilder.Clear();

                if ((sourceWerewolfOutfit != null) && (destDesc.IsWerewolf))
                {
                    OutfitUtils.SetOutfit(sourceBuilder, sourceWerewolfOutfit, source);

                    using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(destination, new CASParts.Key(OutfitCategories.Supernatural, 0)))
                    {
                        if ((!onlySliders) && (destDesc != null))
                        {
                            builder.Builder.SkinTone      = destDesc.SkinToneKey;
                            builder.Builder.SkinToneIndex = destDesc.SkinToneIndex;
                        }

                        foreach (FacialBlend blend in FaceBlends)
                        {
                            float amount = GetBlendAmount(sourceBuilder, blend);

                            if (onlyNonZero)
                            {
                                if (amount == 0.0)
                                {
                                    continue;
                                }
                            }

                            SetBlendAmount(builder.Builder, blend, amount);
                        }

                        builder.Components = CASLogic.sWerewolfPreserveComponents;
                    }
                }
            }

            return(true);
        }
示例#4
0
        public static bool CopyGenetics(SimDescriptionCore source, SimDescriptionCore destination, bool onlyNonZero, bool onlySliders)
        {
            SimOutfit sourceOutfit = CASParts.GetOutfit(source, CASParts.sPrimary, false);
            if (sourceOutfit == null) return false;

            SimOutfit sourceWerewolfOutfit = CASParts.GetOutfit(source, new CASParts.Key(OutfitCategories.Supernatural, 0), false);

            SimDescription sourceDesc = source as SimDescription;
            SimDescription destDesc = destination as SimDescription;

            if ((!onlySliders) && (!SimTypes.IsSkinJob(sourceDesc)) && (!SimTypes.IsSkinJob(destDesc)))
            {
                destDesc.SkinToneKey = sourceDesc.SkinToneKey;
                destDesc.SkinToneIndex = sourceDesc.SkinToneIndex;
            }

            destDesc.SecondaryNormalMapWeights = sourceDesc.SecondaryNormalMapWeights.Clone() as float[];

            using (SimBuilder sourceBuilder = new SimBuilder())
            {
                OutfitUtils.SetOutfit(sourceBuilder, sourceOutfit, source);

                using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(destination, CASParts.sPrimary))
                {
                    if (!builder.OutfitValid) return false;

                    if ((!onlySliders) && (destDesc != null))
                    {
                        builder.Builder.SkinTone = destDesc.SkinToneKey;
                        builder.Builder.SkinToneIndex = destDesc.SkinToneIndex;
                    }

                    foreach (FacialBlend blend in FaceBlends)
                    {
                        float amount = GetBlendAmount(sourceBuilder, blend);

                        if (onlyNonZero)
                        {
                            if (amount == 0.0) continue;
                        }

                        SetBlendAmount(builder.Builder, blend, amount);
                    }

                    foreach (FacialBlend blend in FurBlends)
                    {
                        float amount = GetBlendAmount(sourceBuilder, blend);

                        if (onlyNonZero)
                        {
                            if (amount == 0.0) continue;
                        }

                        SetBlendAmount(builder.Builder, blend, amount);
                    }

                    if (!onlySliders)
                    {
                        builder.CopyGeneticParts(sourceOutfit);
                    }
                }

                sourceBuilder.Clear();

                if ((sourceWerewolfOutfit != null) && (destDesc.IsWerewolf))
                {
                    OutfitUtils.SetOutfit(sourceBuilder, sourceWerewolfOutfit, source);

                    using (CASParts.OutfitBuilder builder = new CASParts.OutfitBuilder(destination, new CASParts.Key(OutfitCategories.Supernatural, 0)))
                    {
                        if ((!onlySliders) && (destDesc != null))
                        {
                            builder.Builder.SkinTone = destDesc.SkinToneKey;
                            builder.Builder.SkinToneIndex = destDesc.SkinToneIndex;
                        }

                        foreach (FacialBlend blend in FaceBlends)
                        {
                            float amount = GetBlendAmount(sourceBuilder, blend);

                            if (onlyNonZero)
                            {
                                if (amount == 0.0) continue;
                            }

                            SetBlendAmount(builder.Builder, blend, amount);
                        }

                        builder.Components = CASLogic.sWerewolfPreserveComponents;
                    }
                }
            }

            return true;
        }
示例#5
0
        public static void OnRemoval(OccultPlantSim ths, SimDescription simDes, bool alterOutfit)
        {
            Sim createdSim = simDes.CreatedSim;
            int index      = simDes.HasOutfit(OutfitCategories.Everyday, ths.mOccultOutfitKey);

            if (index >= 0x0)
            {
                simDes.RemoveOutfit(OutfitCategories.Everyday, index, true);
            }
            if (createdSim != null)
            {
                createdSim.Motives.RemoveMotive(CommodityKind.BePlantSim);
                createdSim.Motives.EnableMotive(CommodityKind.Bladder);
                createdSim.Motives.EnableMotive(CommodityKind.Hunger);
                createdSim.BuffManager.RemoveElement(BuffNames.PlantSimDehydrated);
                createdSim.BuffManager.RemoveElement(BuffNames.PlantSimHydrated);
                createdSim.TraitManager.RemoveElement(TraitNames.PlantSim);
                ActiveTopic.RemoveTopicFromSim(createdSim, "PlantSim Trait Topic");
                createdSim.Motives.UpdateMotives(1f, createdSim);
                (createdSim.RoutingComponent as SimRoutingComponent).RemoveOccultWalkingEffects(OccultTypes.PlantSim);
                ResourceKey skinToneKey = new ResourceKey(0xe8a7d5f0fec3d90bL, 0x354796a, 0x0);
                if (ths.mOldSkinToneKey != ResourceKey.kInvalidResourceKey)
                {
                    skinToneKey = ths.mOldSkinToneKey;
                }

                if (alterOutfit)
                {
                    simDes.SetSkinAndHairForAllOutfits(simDes.Age, skinToneKey, ths.mOldSkinIndex, ResourceKey.kInvalidResourceKey, true, ths.mOldHairColor);
                    simDes.RemoveBodyTypeFromAllOutfits(BodyTypes.BirthMark);
                    simDes.RemoveBodyTypeFromAllOutfits(BodyTypes.Beard);
                }

                HudModel hudModel = Responder.Instance.HudModel as HudModel;
                if ((hudModel != null) && (hudModel.GetSimInfo(createdSim.ObjectId) != null))
                {
                    if (alterOutfit)
                    {
                        SimBuilder builder = new SimBuilder();
                        builder.Clear();
                        SimOutfit outfit = simDes.GetOutfit(OutfitCategories.Everyday, 0x0);
                        OutfitUtils.SetOutfit(builder, outfit, null);
                        OutfitUtils.ExtractOutfitHairColor(simDes, builder);
                        ths.mOutfitIsReady = false;
                        createdSim.SwitchToOutfitDelayed(outfit, new CASUtils.SwapReadyCallback(ths.PlayConcealEffectAndSwapOutfit));
                        for (int i = 0x0; !ths.mOutfitIsReady && (i < 0xc350); i++)
                        {
                            Common.Sleep(0xa);
                        }
                        ths.SwapOutfit();
                    }

                    hudModel.OnSimAppearanceChanged(createdSim.ObjectId);
                    hudModel.NotifyNameChanged(createdSim.ObjectId);
                }
                else
                {
                    createdSim.SwitchToOutfitWithoutSpin(Sim.ClothesChangeReason.Force, createdSim.CurrentOutfitCategory, true);
                }

                createdSim.Motives.RemoveMotive(CommodityKind.BePlantSim);
                createdSim.Motives.EnableMotive(CommodityKind.Bladder);
                createdSim.Motives.EnableMotive(CommodityKind.Hunger);
                createdSim.BuffManager.RemoveElement(BuffNames.PlantSimDehydrated);
                createdSim.BuffManager.RemoveElement(BuffNames.PlantSimHydrated);
                createdSim.TraitManager.RemoveElement(TraitNames.PlantSim);
                ActiveTopic.RemoveTopicFromSim(createdSim, "PlantSim Trait Topic");
                hudModel.NotifyNameChanged(createdSim.ObjectId);
                createdSim.Motives.UpdateMotives(1f, createdSim);
            }
        }