public static Pattern GetRandomClothingPattern(Sim sim) { ResourceKey reskeyPattern; SewingSkill sewingSkill = sim.SkillManager.AddElement(SewingSkill.kSewingSkillGUID) as SewingSkill; do { reskeyPattern = RandomUtil.GetRandomObjectFromList(ObjectLoader.mStoredClothingPattern); if (!SewingSkill.HasAlreadyDiscoveredThis(sim.mSimDescription.mSimDescriptionId, reskeyPattern)) { break; } }while (true); if (reskeyPattern != ResourceKey.kInvalidResourceKey) { PatternInfo mPatternInfoInit = new PatternInfo(); mPatternInfoInit.resKeyPattern = reskeyPattern; ObjectLoader.sewableSetting sSetting = ObjectLoader.dictSettings[reskeyPattern]; mPatternInfoInit.fabricsNeeded = sSetting.typeFabric; mPatternInfoInit.IsMagic = sSetting.isMagicProject; mPatternInfoInit.amountOfFabricToRemove = sSetting.amountRemoveFabric; mPatternInfoInit.isClothing = sSetting.isClothing; mPatternInfoInit.mClothingName = sSetting.clothingName; mPatternInfoInit.mWasPatternGifted = false; if (mPatternInfoInit.isClothing) { mPatternInfoInit.mSimOutfit = new CASPart(mPatternInfoInit.resKeyPattern); } ResourceKey reskey1 = new ResourceKey(0x19D4F5930F26B2D8, 0x319E4F1D, 0x00000000); Pattern.PatternObjectInitParams initData = new Pattern.PatternObjectInitParams(mPatternInfoInit.fabricsNeeded, mPatternInfoInit.IsMagic, mPatternInfoInit.amountOfFabricToRemove, mPatternInfoInit.mSkilllevel, mPatternInfoInit.resKeyPattern, mPatternInfoInit.isClothing, mPatternInfoInit.mSimOutfit, mPatternInfoInit.mClothingName, mPatternInfoInit.mWasPatternGifted); Pattern pattern = (Pattern)GlobalFunctions.CreateObjectOutOfWorld(reskey1, null, initData); mPatternInfoInit.Name = mPatternInfoInit.mClothingName; pattern.NameComponent.SetName(mPatternInfoInit.mClothingName); pattern.mPatternInfo = mPatternInfoInit; sim.Inventory.TryToAdd(pattern); sewingSkill.AddPatternCount(1); return(pattern); } return(null); }
public static Pattern DiscoverPattern(Sim actor) { //int skillLevel = actor.SkillManager.GetSkillLevel(SewingSkill.kSewingSkillGUID); ResourceKey getPattern = GetUnregisteredpattern(actor, false); ResourceKey emptyRes = new ResourceKey(0uL, 0u, 0u); PatternInfo mPatternInfoInit = new PatternInfo(); SewingSkill sewingSkill = actor.SkillManager.AddElement(SewingSkill.kSewingSkillGUID) as SewingSkill; try { ObjectLoader.sewableSetting sSetting = ObjectLoader.dictSettings[getPattern]; mPatternInfoInit.resKeyPattern = getPattern; mPatternInfoInit.fabricsNeeded = sSetting.typeFabric; mPatternInfoInit.IsMagic = sSetting.isMagicProject; mPatternInfoInit.amountOfFabricToRemove = sSetting.amountRemoveFabric; mPatternInfoInit.isClothing = sSetting.isClothing; mPatternInfoInit.mClothingName = sSetting.clothingName; mPatternInfoInit.mWasPatternGifted = false; //mPatternInfoInit.mSkilllevel = 0; if (mPatternInfoInit.isClothing) { mPatternInfoInit.mSimOutfit = new CASPart(mPatternInfoInit.resKeyPattern); } // Pattern OBJD key. ResourceKey reskey1 = new ResourceKey(0x19D4F5930F26B2D8, 0x319E4F1D, 0x00000000); Pattern.PatternObjectInitParams initData = new Pattern.PatternObjectInitParams(mPatternInfoInit.fabricsNeeded, mPatternInfoInit.IsMagic, mPatternInfoInit.amountOfFabricToRemove, mPatternInfoInit.mSkilllevel, mPatternInfoInit.resKeyPattern, mPatternInfoInit.isClothing, mPatternInfoInit.mSimOutfit, mPatternInfoInit.mClothingName, mPatternInfoInit.mWasPatternGifted); Pattern pattern = (Pattern)GlobalFunctions.CreateObjectOutOfWorld(reskey1, null, initData); if (pattern.GetType() == typeof(FailureObject)) { return(null); } if (pattern != null) { IGameObject getname = (GameObject)GlobalFunctions.CreateObjectOutOfWorld(mPatternInfoInit.resKeyPattern, null, initData); if (getname != null) { // Currently uses the pattern object's name. We need to concatinate the sewable's name here as well. Since EA never made a function to get the name direction from the resource key, we need to do this. mPatternInfoInit.Name = pattern.GetLocalizedName() + ": " + getname.GetLocalizedName(); pattern.NameComponent.SetName(pattern.GetLocalizedName() + ": " + getname.GetLocalizedName()); // Now we finally got the name and can destroy the object. getname.Destroy(); } SimDescription desc = actor.SimDescription; pattern.mPatternInfo = mPatternInfoInit; SewingSkill.AddItemsToDiscoveredList(desc.mSimDescriptionId, mPatternInfoInit.resKeyPattern); actor.Inventory.TryToAdd(pattern); sewingSkill.AddPatternCount(1); return(pattern); } else if (pattern != null && mPatternInfoInit.isClothing) { mPatternInfoInit.Name = mPatternInfoInit.mClothingName; pattern.NameComponent.SetName(mPatternInfoInit.mClothingName); pattern.mPatternInfo = mPatternInfoInit; actor.Inventory.TryToAdd(pattern); sewingSkill.AddPatternCount(1); return(pattern); } else { GlobalOptionsSewingTable.print("Lyralei's Sewing table: \n \n The pattern doesn't exist! Did you delete things from the sewing table .package? Else, contact Lyralei."); return(null); } } catch (Exception ex2) { GlobalOptionsSewingTable.print("Lyralei's Sewing table: \n \n REPORT THIS TO LYRALEI: " + ex2.ToString()); return(null); } }