public override bool Test(Sim a, RestockItem target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { //If restock from inventory, check does the item exist StoreSetBase sBase = RestockItemHelperClass.FindParentShopBase(target); if (sBase == null) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayNeedsPedestal", new object[0] { })); return(false); } if (sBase.Charred) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayCharred", new object[0] { })); return(false); } if (RestockItemHelperClass.RestockFromInventory(target, sBase.Info.RestockCraftable)) { if (sBase.Info.RegisterId == ObjectGuid.InvalidObjectGuid && !sBase.Info.RestockCraftable) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayNeedsRegister", new object[0] { })); return(false); } if (sBase.Info.RegisterId != ObjectGuid.InvalidObjectGuid && RestockItemHelperClass.ReturnRestocableObjectFromRegister(target, sBase.Info.RegisterId) == null) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayInventoryEmpty", new object[0] { })); return(false); } } else { //Should restock buy items be disabled if (target.info.Type == ItemType.Buy && !sBase.Info.RestockBuyMode) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayRestockBuyModeDisabled", new object[0] { })); return(false); } } return(true); }
public override bool Run() { if (!this.Actor.RouteToObjectRadialRange(this.Target, UniversityWelcomeKit.kMinRouteDistance, UniversityWelcomeKit.kMaxRouteDistance)) { return(false); } base.StandardEntry(); base.BeginCommodityUpdates(); base.EnterStateMachine("UniversityWelcomeKit", "EnterUniversity", "x"); base.AnimateSim("LoopTest"); bool flag = base.DoTimedLoop(2f, ExitReason.Default); base.AnimateSim("ExitAptituteTest"); base.EndCommodityUpdates(flag); base.StandardExit(); //Replace restock item with the restocked item StoreSetBase b = RestockItemHelperClass.FindParentShopBase(this.Target); GameObject o = RestockItemHelperClass.RecreateSoldObject(this.Target, this.Actor.SimDescription); //If the sim is tending the register, make him go back to tending if (b != null) { b.AddInteractionsToChildObjects(); List <StoreSetRegister> registers = new List <StoreSetRegister>(Sims3.Gameplay.Queries.GetObjects <StoreSetRegister>(b.LotCurrent)); if (registers != null) { foreach (var register in registers) { //Push hired clerk to go back to work. if (CMStoreSet.IsStoreOpen(register) && register.mPreferredClerk == this.Actor.SimDescription.SimDescriptionId) { base.TryPushAsContinuation(StoreSetRegister.PostureIdle.Singleton, register); break; } } } } return(true); }
public static GameObject CreateRestockItem(GameObject src, int value, bool isRug) { try { RestockItem item = null; if (isRug) { item = GlobalFunctions.CreateObject(ResourceKey.FromString("319e4f1d:00000000:4d2d76202832ac21"), src.PositionOnFloor, src.mLevel, src.ForwardVector) as RestockItem; } else { item = GlobalFunctions.CreateObject(ResourceKey.FromString("319e4f1d:00000000:74eadf6231a9cf5e"), src.PositionOnFloor, src.mLevel, src.ForwardVector) as RestockItem; } item.info.Key = src.GetResourceKeyForClone(true); item.info.Type = RestockItemHelperClass.GetItemType(src); item.info.Name = src.GetLocalizedName(); item.info.Price = value; switch (item.info.Type) { case ItemType.Buy: case ItemType.Craftable: item.info.DesignPreset = ObjectDesigner.GetObjectDesignPreset(src.ObjectId); break; case ItemType.Ingredient: //item.info.IngData = (IngredientData)((Ingredient)src).Data; // item.info.Key = ((Ingredient)src).GetResourceKey(); //item.info.IngredientKey = ((Ingredient)src).IngredientKey; break; case ItemType.Fish: item.info.FType = ((Fish)src).mFishType; break; case ItemType.Herb: //item.info.PlantData = ((PlantableNonIngredient)src).mData; // item.info.Key = ((Herb)src).GetResourceKey(); break; case ItemType.Metal: item.info.RockData = ((Metal)src).mGuid; item.info.Key = ((Metal)src).GetResourceKey(); break; case ItemType.Gem: item.info.RockData = ((Gem)src).mGuid; item.info.Key = ((Gem)src).GetResourceKey(); break; case ItemType.Nectar: item.info.Key = ((NectarBottle)src).GetResourceKey(); item.info.NectarAge = ((NectarBottle)src).mBottleInfo.DateNum; if (item.info.NectarAge == 0) { item.info.NectarAge = 1; } item.info.NectarFruitHash = ((NectarBottle)src).mBottleInfo.FruitHash; item.info.NectarIngredients = ((NectarBottle)src).Ingredients; //.in.mBottleInfo; break; case ItemType.AlchemyPotion: break; case ItemType.Bug: item.info.BugType = ((NormalTerrarium)src).mInsectType; break; case ItemType.Food: item.info.cookingProcess = ((ServingContainer)src).CookingProcess; break; case ItemType.Flowers: item.info.TypeOfWildFlower = ((Wildflower)src).TypeOfWildFlower; break; case ItemType.BookAlchemyRecipe_: case ItemType.BookComic_: case ItemType.BookFish_: case ItemType.BookGeneral_: case ItemType.BookRecipe_: case ItemType.BookSkill_: case ItemType.BookToddler_: case ItemType.SheetMusic_: case ItemType.AcademicTextBook_: item.info.Name = ((Book)src).CatalogName; break; case ItemType.JamJar: Type tInfo = src.GetType(); BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic; FieldInfo ingredientDataField = tInfo.GetField("mData", flags); FieldInfo ingredientKeyField = tInfo.GetField("mIngredientKey", flags); FieldInfo qualityField = tInfo.GetField("mQuality", flags); FieldInfo preservesField = tInfo.GetField("mIsPreserves", flags); item.info.IngData = (IngredientData)ingredientDataField.GetValue(src); item.info.IngredientKey = (string)ingredientKeyField.GetValue(src); item.info.JamQuality = (Quality)qualityField.GetValue(src); item.info.JamIsPreserve = (bool)preservesField.GetValue(src); break; default: break; } return(item); } catch (System.Exception ex) { CMStoreSet.PrintMessage("CreateRestockItem: " + ex.Message); return(null); } }