RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Master Looter 3.01.00 can use deeds multiple times

aarony14

Traveler
Hello all!

I have noticed an issue with Daat99's OWLTR with master looter version 3.00 and up. There are certain storage deeds that can be used an unlimited number of times causing the inventory screen to show multiples of the same storage type. For example, I can use the Tool Storage deed an unlimited number of times even though I already have the tool storage activated on the master storage, however other ones like the runic storage or tailor storage it tells me that I have already used it (which it should). Has anyone encountered this before? Any help is appreciated.
 

aarony14

Traveler
Here you go daat. Thanks for responding.


Code:
/*
 created by:
     /\            888                   888     .d8888b.   .d8888b.  
____/_ \____       888                   888    d88P  Y88b d88P  Y88b 
\  ___\ \  /       888                   888    888    888 888    888 
 \/ /  \/ /    .d88888  8888b.   8888b.  888888 Y88b. d888 Y88b. d888 
 / /\__/_/\   d88" 888     "88b     "88b 888     "Y888P888  "Y888P888 
/__\ \_____\  888  888 .d888888 .d888888 888           888        888 
    \  /      Y88b 888 888  888 888  888 Y88b.  Y88b  d88P Y88b  d88P 
     \/        "Y88888 "Y888888 "Y888888  "Y888  "Y8888P"   "Y8888P"  
*/
using Server;
using Server.Mobiles;

namespace daat99
{
    public class BaseStorageDeed : Item
    {
        private BaseStorage storage;
        [CommandProperty(AccessLevel.GameMaster)]
        public BaseStorage Storage { get { return storage; } private set { storage = value; } }

        [Constructable]
        public BaseStorageDeed(BaseStorage storage)
            : base(0x14F0)
        {
            Storage = storage;
            Weight = 1.0;
            Movable = true;
            Name = "Master Storage Deed: " + storage.Name;
        }

        public BaseStorageDeed(Serial serial) : base(serial) { }

        public override void OnDoubleClick(Mobile from)
        {
            if (!IsChildOf(from.Backpack))
                from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
            else
            {
                MasterStorage backpack = MasterStorageUtils.GetMasterStorage(from as PlayerMobile);
                if (backpack == null || backpack.Deleted)
                    from.SendMessage(1173, "You must have your Master Storage in your backpack!");
                else if (backpack.HasStorage(Storage))
                    from.SendMessage(1173, "You can store these items already.");
                else if (this.Deleted)
                    from.SendMessage(1173, "You can't use this deed anymore.");
                else
                {
                    backpack.AddStorage(storage);
                    this.Delete();
                    from.SendMessage(1173, "You can store {0} items now.", Storage.Name);
                }
            }
        }

        public override void Serialize(GenericWriter writer)
        {
            base.Serialize(writer);

            writer.Write((int)0);
            Storage.Serialize(writer);
        }

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();
            Storage = new BaseStorage(reader);
        }
    } 
}

Also here is the storage region from the MasterStorage.cs file.

Code:
#region Storage
        private List<BaseStorage> storageList;
        [CommandProperty(AccessLevel.GameMaster)]
        public List<BaseStorage> StorageList { get { return storageList; } set { storageList = value; } }
        private int storagePage = 0;
        public int StoragePage { get { return storagePage; } set { storagePage = value; } }
        private BaseStorage storageFilter = null;
        public BaseStorage StorageFilter { get { return storageFilter; } set { storageFilter = value; } }
        private Dictionary<Type, ulong> storedItems;
        public Dictionary<Type, ulong> StoredItems { get { return storedItems; } private set { storedItems = value; } }

        public bool HasStorage(BaseStorage storage)
        {
            return StorageList.Contains(storage);
        }
        public void AddStorage(BaseStorage storage)
        {
            if (!StorageList.Contains(storage))
                StorageList.Add(storage);
        }
        public bool CanStoreType(Type type)
        {
            Type currencyType = MasterStorageUtils.GetCurrencyType(type);
            if (currencyType == typeof(Gold))
                return GoldLedger;
#if USE_TOKENS
            if (currencyType == typeof(Daat99Tokens))
                return TokenLedger;
#endif
            foreach (BaseStorage storage in StorageList)
                if (storage.IsTypeStorable(type))
                    return true;
            return false;
        }

        public Dictionary<Type, int> GetStoreableType(Item item)
        {
            Dictionary<Type, int> types = new Dictionary<Type, int>(1);
            Type currencyType = MasterStorageUtils.GetCurrencyType(item.GetType());
            if (currencyType == typeof(Gold))
            {
                if (!GoldLedger)
                    return types;
                types.Add(currencyType, item.Amount);
            }
#if USE_TOKENS
            else if (currencyType == typeof(Daat99Tokens))
            {
                if (!TokenLedger)
                    return types;
                types.Add(currencyType, item.Amount);
            }
#endif
            else
            {
                foreach (BaseStorage storage in StorageList)
                {
                    types = storage.GetStorableTypesFromItem(item);
                    if (types.Count > 0)
                        return types;
                }
            }
            return types;
        }
        public List<Item> TryExtractType(Type type, int amount)
        {
            if (!TryConsume(type, amount))
                return new List<Item>(0);
            return MasterStorageUtils.CreateItemsFromType(type, amount);
        }


        public ulong GetStoredItemAmount(Type type)
        {
            if (StoredItems.ContainsKey(type))
                return StoredItems[type];
            return 0;
        }

        public bool TryStoreItem(Item item)
        {
            IUsesRemaining tool = item as IUsesRemaining;
            int amount = item.Amount;
            if (tool != null)
                amount = tool.UsesRemaining;
            return TryStoreItem(item, amount);
        }
        public bool TryStoreItem(Item item, int amount)
        {
            Dictionary<Type, int> types = GetStoreableType(item);
            if (types == null || types.Count == 0)
                return false;
            if (amount < 0)
                return false;
            //first make sure we can add them all
            //update the amount and make sure we don't have "negative" amounts
            foreach (Type type in types.Keys)
            {
                if ( types[type] <= 0 )
                    types[type] = amount;
                ulong usedAmount = (ulong)types[type];
                
                if (usedAmount < 0)
                    return false;

                if (usedAmount == 0)
                    continue;
                
                if (type == typeof(Gold) && GoldAmount + usedAmount < GoldAmount)
                    return false;
#if USE_TOKENS
                else if (type == typeof(Daat99Tokens) && TokensAmount + usedAmount < TokensAmount)
                    return false;
#endif
                else if (StoredItems.ContainsKey(type) && usedAmount + StoredItems[type] < usedAmount)
                    return false;
            }
            foreach (Type type in types.Keys)
            {
                int usedAmount = types[type];
                if (usedAmount == 0)
                    continue;
                
                if (type == typeof(Gold))
                    GoldAmount += (ulong)usedAmount;
#if USE_TOKENS
                else if (type == typeof(Daat99Tokens))
                    TokensAmount += (ulong)usedAmount;
#endif
                else
                {
                    if (!StoredItems.ContainsKey(type))
                        StoredItems[type] = 0;
                    StoredItems[type] += (ulong)usedAmount;
                }
            }
            if (Owner != null && Owner.HasGump(typeof(MasterStorageStorageGump)))
                MasterStorageStorageGump.SendGump(Owner, this, StoragePage, StorageFilter);
            return true;
        }
        public bool TryStoreItemType(Type type, int amount)
        {
            if (amount < 0)
                return false;
            if (amount == 0)
                return true;
            Type currencyType = MasterStorageUtils.GetCurrencyType(type);
            if (currencyType != null)
            {
                if (currencyType == typeof(Gold) && GoldLedger)
                {
                    GoldAmount += (ulong)amount;
                    return true;
                }
#if USE_TOKENS
                if (currencyType == typeof(Daat99Tokens) && TokenLedger)
                {
                    TokensAmount += (ulong)amount;
                    return true;
                }
#endif
                return false;
            }
            if (!CanStoreType(type))
                return false;
            if (!StoredItems.ContainsKey(type))
                StoredItems[type] = 0;
            if ((ulong)amount + StoredItems[type] >= (ulong)amount)
            {
                StoredItems[type] += (ulong)amount;
                if (Owner != null && Owner.HasGump(typeof(MasterStorageStorageGump)))
                    MasterStorageStorageGump.SendGump(Owner, this, StoragePage, StorageFilter);
                return true;
            }
            return false;
        }

        public MasterStorageStorageGump.StoredItemGumpObject[] GetStoredItemsForPage(int itemsCount, int page) { return GetStoredItemsForPage(itemsCount, page, null); }
        public MasterStorageStorageGump.StoredItemGumpObject[] GetStoredItemsForPage(int itemsCount, int page, BaseStorage filter)
        {
            MasterStorageStorageGump.StoredItemGumpObject[] types = new MasterStorageStorageGump.StoredItemGumpObject[itemsCount+1];
            StoragePage = page;
            StorageFilter = filter;
            int startIndex = StoragePage * itemsCount;
            if (startIndex < 0)
                startIndex = 0;
            int endIndex = startIndex + itemsCount+1;
            int current = 0;
            foreach (Type key in StoredItems.Keys)
            {
                if (StorageFilter != null && !StorageFilter.IsTypeStorable(key))
                    continue;
                if (current >= startIndex && current < endIndex)
                    types[current - startIndex] = new MasterStorageStorageGump.StoredItemGumpObject(key, StoredItems[key]);
                ++current;
            }
            return types;
        }

        public void RefillStorage( PlayerMobile player )
        {
            foreach (Item item in player.Backpack.FindItemsByType(typeof(Item)))
            {
                if (AddCurrency(item))
                    continue;
                if ( TryStoreItem(item ) )
                    item.Consume(item.Amount);
            }
            if (player.HasGump(typeof(MasterStorageStorageGump)))
                MasterStorageStorageGump.SendGump(player, this, StoragePage, StorageFilter);
        }
#endregion Storage
 

aarony14

Traveler
Hi Daat99, here's the info you requested. As you can see I have been testing it a bit previously. The last one I tested with was another tool storage deed.

Code:
before Storage: daat99.MageStorage
before Storage: daat99.MinerStorage
before Storage: daat99.JewelerStorage
before Storage: daat99.WoodworkerStorage
before Storage: daat99.JewelerStorage
before Storage: daat99.ToolStorage
before Storage: daat99.ToolStorage
before Storage: daat99.ToolStorage
before Storage: daat99.MageStorage
before Storage: daat99.ToolStorage
before Storage: daat99.RunicStorage
before Storage: daat99.MageStorage
before Storage: daat99.TailorStorage
before Storage: daat99.JewelerStorage
before Storage: daat99.MinerStorage
after Storage: daat99.MageStorage
after Storage: daat99.MinerStorage
after Storage: daat99.JewelerStorage
after Storage: daat99.WoodworkerStorage
after Storage: daat99.JewelerStorage
after Storage: daat99.ToolStorage
after Storage: daat99.ToolStorage
after Storage: daat99.ToolStorage
after Storage: daat99.MageStorage
after Storage: daat99.ToolStorage
after Storage: daat99.RunicStorage
after Storage: daat99.MageStorage
after Storage: daat99.TailorStorage
after Storage: daat99.JewelerStorage
after Storage: daat99.MinerStorage
after Storage: daat99.ToolStorage
 

daat99

Moderator
Staff member
I was distracted when I posted the other post and gave you the wrong code, my apologies :(

Please try this code instead:
Code:
        public void AddStorage(BaseStorage storage)
        {
            Console.WriteLine("====================");
            foreach ( BaseStorage st in StorageList )
                Console.WriteLine("before Storage: {0}, exist: {1}.", st.ToString(), StorageList.Contains(st));
            if (!StorageList.Contains(storage))
                StorageList.Add(storage);
            foreach ( BaseStorage st in StorageList )
                Console.WriteLine("after Storage: {0}, exist: {1}.", st.ToString(), StorageList.Contains(st));
            Console.WriteLine("====================");
        }
Again, I apologize for wasting your time with the wrong code :(
 

aarony14

Traveler
No need to apologize at all Daat. Here is the results from the console:

Code:
====================
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.MinerStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.WoodworkerStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.RunicStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.TailorStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.MinerStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.MinerStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.WoodworkerStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.RunicStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.TailorStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.MinerStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
====================
 

daat99

Moderator
Staff member
That's odd...
Can you add this line as the 2nd line in the method (after the first line that prints the equal signs and before the first loop) please?
Code:
Console.WriteLine("attempting to add {0}, exist already? {1}", storage, StorageList.Contains(storage));
 

Hammerhand

Knight
A little more to add to this Daat... I just tried to replicate it & it is happening. Not only that, but with 3 tool storage deeds in the master storage pack, I stored a single 50 use pickaxe that showed in Inventory as having 1000050 uses. Removing a 100 use pickaxe lowered the remaining uses by that much & storing that one again put the amount back to the 1 million & fifty uses. I never even thought to test to see if more than one of the same deed could be used in the pack. Now I wish I had... :oops:
 

daat99

Moderator
Staff member
A little more to add to this Daat... I just tried to replicate it & it is happening. Not only that, but with 3 tool storage deeds in the master storage pack, I stored a single 50 use pickaxe that showed in Inventory as having 1000050 uses. Removing a 100 use pickaxe lowered the remaining uses by that much & storing that one again put the amount back to the 1 million & fifty uses. I never even thought to test to see if more than one of the same deed could be used in the pack. Now I wish I had... :oops:
You know what that means, Right?
You'll have to release an updated OWLTR when we fix it :D
 

Hammerhand

Knight
You know what that means, Right?
You'll have to release an updated OWLTR when we fix it :D
Yup... once we get ALL the assorted bugs fixed... Theres only what.... 20 or so? Ok, maybe not THAT many, but 1 , 7 or 20.... bugs like to breed... :D
 

aarony14

Traveler
OK so now that Hammerhand has confirmed, I guess you don't need me to do the console testing right? I'll gladly test anything you need me to.

Thanks for confirming Hammerhand, glad to see you guys working together again lol.
 

daat99

Moderator
Staff member
I still need to see the console output with the last addition (including the prior additions) :(
 

Hammerhand

Knight
Added in the console writeline coding with a single existing tool storage deed in the master storage. This is after adding a 2nd & 3rd tool storage deed.
Code:
====================
attempting to add daat99.BaseStorage, exist already? False
before Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
====================
====================
attempting to add daat99.BaseStorage, exist already? False
before Storage: daat99.BaseStorage, exist: True.
before Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
====================
Should it be saying False on the exist already? There was already 1 tool storage deed in the master storage pack. Its like it isnt even registering the fact that there was already one there & continues to do so. I'll try it with a new pack & no storage deeds & add 1 and then a 2nd to see results.
 

Hammerhand

Knight
Pretty much the same result. 1st one is when I added the first tool storage deed, 2nd was for 2nd one.
Code:
====================
attempting to add daat99.BaseStorage, exist already? False
after Storage: daat99.BaseStorage, exist: True.
====================
====================
attempting to add daat99.BaseStorage, exist already? False
before Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
====================
 

Hammerhand

Knight
Ran the full course here... tried adding each storage deed 2x.. the only one that will do it is the ToolStorageDeed & its coming up as BaseStorage.
All others are saying you can already store those items. Started with an empty MasterStorageBackpack.
Code:
====================
attempting to add daat99.RunicStorage, exist already? False
before Storage: daat99.MinerStorage, exist: True.
before Storage: daat99.BaseStorage, exist: True.  // The Tool Storage Deed
before Storage: daat99.TailorStorage, exist: True.
before Storage: daat99.BardStorage, exist: True.
before Storage: daat99.MLResourceStorage, exist: True.
before Storage: daat99.CookStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.AlchemistStorage, exist: True.
before Storage: daat99.ScriberStorage, exist: True.
before Storage: daat99.WoodworkerStorage, exist: True.
after Storage: daat99.MinerStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.  // The Tool Storage Deed
after Storage: daat99.TailorStorage, exist: True.
after Storage: daat99.BardStorage, exist: True.
after Storage: daat99.MLResourceStorage, exist: True.
after Storage: daat99.CookStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.AlchemistStorage, exist: True.
after Storage: daat99.ScriberStorage, exist: True.
after Storage: daat99.WoodworkerStorage, exist: True.
after Storage: daat99.RunicStorage, exist: True.
====================
Oddly enough, when trying to add a 2nd & 3rd tool storage deed, they show AS ToolStorage..
Code:
====================
attempting to add daat99.ToolStorage, exist already? False
before Storage: daat99.MinerStorage, exist: True.
before Storage: daat99.BaseStorage, exist: True.
before Storage: daat99.TailorStorage, exist: True.
before Storage: daat99.BardStorage, exist: True.
before Storage: daat99.MLResourceStorage, exist: True.
before Storage: daat99.CookStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.AlchemistStorage, exist: True.
before Storage: daat99.ScriberStorage, exist: True.
before Storage: daat99.WoodworkerStorage, exist: True.
before Storage: daat99.RunicStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.MinerStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.TailorStorage, exist: True.
after Storage: daat99.BardStorage, exist: True.
after Storage: daat99.MLResourceStorage, exist: True.
after Storage: daat99.CookStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.AlchemistStorage, exist: True.
after Storage: daat99.ScriberStorage, exist: True.
after Storage: daat99.WoodworkerStorage, exist: True.
after Storage: daat99.RunicStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
====================
But can still be added multiple times.
 

aarony14

Traveler
Thanks for the results Hammerhand. I noticed that I got different results from you because I was able to add many different storage deeds more than once. I went back to testing and found that when I saved the server, then restarted, I was then able to add all of the deeds again. This is probably why we got varied results as I have been fiddling with different scripts as well and restarting often. Anyways here are my results in the console:

Code:
====================
attempting to add daat99.JewelerStorage, exist already? False
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.MinerStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.WoodworkerStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.RunicStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.TailorStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.MinerStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.AlchemistStorage, exist: True.
before Storage: daat99.BardStorage, exist: True.
before Storage: daat99.CookStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.MinerStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.WoodworkerStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.RunicStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.TailorStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.MinerStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.AlchemistStorage, exist: True.
after Storage: daat99.BardStorage, exist: True.
after Storage: daat99.CookStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
====================
====================
attempting to add daat99.AlchemistStorage, exist already? False
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.MinerStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.WoodworkerStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.RunicStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.TailorStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.MinerStorage, exist: True.
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.AlchemistStorage, exist: True.
before Storage: daat99.BardStorage, exist: True.
before Storage: daat99.CookStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
before Storage: daat99.MageStorage, exist: True.
before Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.MinerStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.WoodworkerStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.RunicStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.TailorStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.MinerStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.AlchemistStorage, exist: True.
after Storage: daat99.BardStorage, exist: True.
after Storage: daat99.CookStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.MageStorage, exist: True.
after Storage: daat99.JewelerStorage, exist: True.
after Storage: daat99.AlchemistStorage, exist: True.
====================

Please note that this was after a server restart. I tested and was not able to add the Jeweler and Alchemist storage before as it told me I already had it. Thanks Daat and Hammerhand, let me know if there's anything else I can help with.
 

daat99

Moderator
Staff member
Hmm.
Hammerhand can you check something for me please?
1. create 2 ToolStorageDeeds in your backpack.
2. Add one of them to the master storage and note which type it is adding (the "Attempting to add [type], exist already?..." output).
3. Restart the server while you have the 2nd in your backpack
4. Add the second deed to the master storage and note which type it is adding (the "Attempting to add [type], exist already?..." output).

Does it report the same type in both scenarios?
 

Hammerhand

Knight
Ok, done..
1st ToolStorageDeed addition into a fresh MasterStorage pack with a 2nd deed in backpack.
Code:
====================
attempting to add daat99.ToolStorage, exist already? False
after Storage: daat99.ToolStorage, exist: True.
====================
Saved & restarted tester.
Added 2nd ToolStorageDeed.
Code:
====================
attempting to add daat99.BaseStorage, exist already? False
before Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
====================
2nd deed listed as BaseStorage even though it was a ToolStorageDeed.
 

Hammerhand

Knight
3rd try after 2nd addition & save. Added new ToolStorageDeed to pack after reboot & got this.
Code:
====================
attempting to add daat99.ToolStorage, exist already? False
before Storage: daat99.ToolStorage, exist: True.
before Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
after Storage: daat99.BaseStorage, exist: True.
after Storage: daat99.ToolStorage, exist: True.
====================
Back to showing as ToolStorage.
 
Top