public void Blocks() { ItemDataBlock[] all = DatablockDictionary.All; for (int i = 0; i < all.Length; i++) { ItemDataBlock itemDataBlock = all[i]; File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Name : " + itemDataBlock.name + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "ID : " + itemDataBlock.uniqueID + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Flags : " + itemDataBlock._itemFlags.ToString() + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Max Condition : " + itemDataBlock._maxCondition + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Loose Condition : " + itemDataBlock.doesLoseCondition + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Max Uses : " + itemDataBlock._maxUses + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Mins Uses (Display) : " + itemDataBlock._minUsesForDisplay + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Spawn Uses Max : " + itemDataBlock._spawnUsesMax + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Spawn Uses Min : " + itemDataBlock._spawnUsesMin + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Splittable : " + itemDataBlock._splittable + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Category : " + itemDataBlock.category.ToString() + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Combinations :\n"); ItemDataBlock.CombineRecipe[] combinations = itemDataBlock.Combinations; for (int j = 0; j < combinations.Length; j++) { ItemDataBlock.CombineRecipe combineRecipe = combinations[j]; File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "\t" + combineRecipe.ToString() + "\n"); } File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Icon : " + itemDataBlock.icon + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "IsRecycleable : " + itemDataBlock.isRecycleable + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "IsRepairable : " + itemDataBlock.isRepairable + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "IsResearchable : " + itemDataBlock.isResearchable + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Description : " + itemDataBlock.itemDescriptionOverride + "\n"); if (itemDataBlock is BulletWeaponDataBlock) { BulletWeaponDataBlock bulletWeaponDataBlock = (BulletWeaponDataBlock)itemDataBlock; File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Min Damage : " + bulletWeaponDataBlock.damageMin + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Max Damage : " + bulletWeaponDataBlock.damageMax + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Ammo : " + bulletWeaponDataBlock.ammoType.ToString() + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Recoil Duration : " + bulletWeaponDataBlock.recoilDuration + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "RecoilPitch Min : " + bulletWeaponDataBlock.recoilPitchMin + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "RecoilPitch Max : " + bulletWeaponDataBlock.recoilPitchMax + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "RecoilYawn Min : " + bulletWeaponDataBlock.recoilYawMin + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "RecoilYawn Max : " + bulletWeaponDataBlock.recoilYawMax + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Bullet Range : " + bulletWeaponDataBlock.bulletRange + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Sway : " + bulletWeaponDataBlock.aimSway + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "SwaySpeed : " + bulletWeaponDataBlock.aimSwaySpeed + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Aim Sensitivity : " + bulletWeaponDataBlock.aimSensitivtyPercent + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "FireRate : " + bulletWeaponDataBlock.fireRate + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "FireRate Secondary : " + bulletWeaponDataBlock.fireRateSecondary + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Max Clip Ammo : " + bulletWeaponDataBlock.maxClipAmmo + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Reload Duration : " + bulletWeaponDataBlock.reloadDuration + "\n"); File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "Attachment Point : " + bulletWeaponDataBlock.attachmentPoint + "\n"); } File.AppendAllText(Util.GetAbsoluteFilePath("BlocksData.txt"), "------------------------------------------------------------\n\n"); } }
public override InventoryItem.MergeResult TryCombine(IInventoryItem other) { ItemDataBlock datablock = other.datablock; ItemDataBlock.CombineRecipe matchingRecipe = this.datablock.GetMatchingRecipe(datablock); if (matchingRecipe != null) { int uses = other.uses; if (uses < matchingRecipe.amountToLoseOther) { return(InventoryItem.MergeResult.Failed); } if (base.uses < matchingRecipe.amountToLose) { return(InventoryItem.MergeResult.Failed); } Inventory inventory = other.inventory; int amount = 0; int a = base.uses / matchingRecipe.amountToLose; int b = uses / matchingRecipe.amountToLoseOther; amount = Mathf.Min(a, b); int num5 = 0; if (matchingRecipe.resultItem.IsSplittable()) { num5 = Mathf.CeilToInt(((float)amount) / ((float)num5)); } else { num5 = amount; } int vacantSlotCount = inventory.vacantSlotCount; if (num5 <= vacantSlotCount) { int count = amount * matchingRecipe.amountToLoseOther; if (other.Consume(ref count)) { inventory.RemoveItem(other.slot); } inventory.AddItemAmount(matchingRecipe.resultItem, amount, Inventory.AmountMode.Default); int numWant = amount * matchingRecipe.amountToLose; if (base.Consume(ref numWant)) { base.inventory.RemoveItem(base.slot); } } } return(InventoryItem.MergeResult.Failed); }
public override InventoryItem.MergeResult TryCombine(IInventoryItem other) { ItemDataBlock itemDataBlock = other.datablock; ItemDataBlock.CombineRecipe matchingRecipe = this.datablock.GetMatchingRecipe(itemDataBlock); if (matchingRecipe == null) { return(InventoryItem.MergeResult.Failed); } int num = other.uses; if (num < matchingRecipe.amountToLoseOther) { return(InventoryItem.MergeResult.Failed); } if (base.uses < matchingRecipe.amountToLose) { return(InventoryItem.MergeResult.Failed); } Inventory inventory = other.inventory; int num1 = 0; int num2 = base.uses / matchingRecipe.amountToLose; num1 = Mathf.Min(num2, num / matchingRecipe.amountToLoseOther); int num3 = 0; num3 = (!matchingRecipe.resultItem.IsSplittable() ? num1 : Mathf.CeilToInt((float)num1 / (float)num3)); if (num3 > inventory.vacantSlotCount) { return(InventoryItem.MergeResult.Failed); } int num4 = num1 * matchingRecipe.amountToLoseOther; if (other.Consume(ref num4)) { inventory.RemoveItem(other.slot); } inventory.AddItemAmount(matchingRecipe.resultItem, num1, Inventory.AmountMode.Default); int num5 = num1 * matchingRecipe.amountToLose; if (base.Consume(ref num5)) { base.inventory.RemoveItem(base.slot); } return(InventoryItem.MergeResult.Failed); }
public ItemDataBlock.CombineRecipe GetMatchingRecipe(ItemDataBlock db) { if (this.Combinations == null || (int)this.Combinations.Length == 0) { return(null); } ItemDataBlock.CombineRecipe[] combinations = this.Combinations; for (int i = 0; i < (int)combinations.Length; i++) { ItemDataBlock.CombineRecipe combineRecipe = combinations[i]; if (combineRecipe.droppedOnType == db) { return(combineRecipe); } } return(null); }