private Item GetBlueprint(ItemDefinition learnableItem, int amount = 1) { Item item = ItemManager.Create(ResearchTable.GetBlueprintTemplate(), amount); item.blueprintTarget = learnableItem.itemid; return(item); }
public void ResearchAttemptFinished() { Item targetItem = this.GetTargetItem(); Item scrapItem = this.GetScrapItem(); if (targetItem != null && scrapItem != null) { int num = this.ScrapForResearch(targetItem); object obj = Interface.CallHook("OnItemResearched", this, num); if (obj is int) { num = (int)obj; } if (scrapItem.amount >= num) { if (scrapItem.amount > num) { scrapItem.UseItem(num); } else { this.inventory.Remove(scrapItem); scrapItem.RemoveFromContainer(); scrapItem.Remove(0f); } this.inventory.Remove(targetItem); targetItem.Remove(0f); Item item = ItemManager.Create(ResearchTable.GetBlueprintTemplate(), 1, (ulong)0); item.blueprintTarget = targetItem.info.itemid; if (!item.MoveToContainer(this.inventory, 0, true)) { item.Drop(this.GetDropPosition(), this.GetDropVelocity(), new Quaternion()); } if (this.researchSuccessEffect.isValid) { Effect.server.Run(this.researchSuccessEffect.resourcePath, this, 0, Vector3.zero, Vector3.zero, null, false); } } } base.SendNetworkUpdateImmediate(false); if (this.user != null) { this.user.inventory.loot.SendImmediate(); } this.EndResearch(); }
public void ResearchAttemptFinished() { Item targetItem = this.GetTargetItem(); Item scrapItem = this.GetScrapItem(); if (targetItem != null && scrapItem != null) { int amountToConsume = this.ScrapForResearch(targetItem); object obj1 = Interface.CallHook("OnItemResearched", (object)this, (object)amountToConsume); if (obj1 is int) { amountToConsume = (int)obj1; } if (scrapItem.amount >= amountToConsume) { if (scrapItem.amount <= amountToConsume) { this.inventory.Remove(scrapItem); scrapItem.RemoveFromContainer(); scrapItem.Remove(0.0f); } else { scrapItem.UseItem(amountToConsume); } this.inventory.Remove(targetItem); targetItem.Remove(0.0f); Item obj2 = ItemManager.Create(ResearchTable.GetBlueprintTemplate(), 1, 0UL); obj2.blueprintTarget = targetItem.info.itemid; if (!obj2.MoveToContainer(this.inventory, 0, true)) { obj2.Drop(this.GetDropPosition(), this.GetDropVelocity(), (Quaternion)null); } if (this.researchSuccessEffect.isValid) { Effect.server.Run(this.researchSuccessEffect.resourcePath, (BaseEntity)this, 0U, Vector3.get_zero(), Vector3.get_zero(), (Connection)null, false); } } } this.SendNetworkUpdateImmediate(false); if (Object.op_Inequality((Object)this.user, (Object)null)) { this.user.inventory.loot.SendImmediate(); } this.EndResearch(); }