Exemplo n.º 1
0
 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");
     }
 }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
 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);
 }