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); } }
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); }
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; }
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); } }