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 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); } }
protected static OptionResult ApplyOutfit(SimDescription sim, OutfitCategories category) { ResourceKey newOutfitKey = ResourceKey.kInvalidResourceKey; if (sim.IsMummy) { newOutfitKey = OccultMummy.CreateMummyUniform(sim.Age, sim.Gender).Key; } else if (sim.IsFrankenstein) { newOutfitKey = OccultBaseClass.CreateUniform(OccultFrankenstein.CreateUniformName(sim, sim.OccultManager.mIsLifetimeReward), sim.Age, ProductVersion.EP2, CASSkinTones.NoSkinTone, 0f).Key; } else if (sim.IsImaginaryFriend) { OccultImaginaryFriend friend = sim.OccultManager.GetOccultType(OccultTypes.ImaginaryFriend) as OccultImaginaryFriend; string name; newOutfitKey = OccultImaginaryFriend.CreateImaginaryFriendUniform(sim.Age, friend.Pattern, out name).Key; } else { SimOutfit source = null; if (sim.GetOutfitCount(OutfitCategories.Naked) > 0) { source = sim.GetOutfit(OutfitCategories.Naked, 0); } else if (sim.GetOutfitCount(category) > 0) { source = sim.GetOutfit(category, 0); } if (source != null) { using (SimBuilder builder = new SimBuilder()) { OutfitUtils.SetOutfit(builder, source, sim); OutfitUtils.MakeCategoryAppropriate(builder, category, sim); newOutfitKey = builder.CacheOutfit(CASParts.GetOutfitName(sim, category, sim.IsUsingMaternityOutfits)); } } } if (newOutfitKey == ResourceKey.kInvalidResourceKey) { return(OptionResult.Failure); } sim.AddOutfit(new SimOutfit(newOutfitKey), category, false); int index = sim.GetOutfitCount(category) - 1; ArrayList list = sim.GetCurrentOutfits()[category] as ArrayList; object a = list[0]; object b = list[index]; list[0] = b; list[index] = a; return(OptionResult.SuccessClose); }