Fixing World of WarCraft’s legacy set item storage

With every World of WarCraft expansion, they introduce new storage bags that allow characters to store more items. These are generally two or four slots bigger, and if a character has six bank slots and four person slots, that’s 20 or 40 more items. But with the introduction of Void Storage, it seems like they’re looking for ways to save on database storage. I say this because when you store an item in Void Storage, they remove any enchantments and customization, so it’s clearly being stored as just an item ID, and the actual record for that specific item GUID is being removed from the database.

I was looking at Void Storage on the public test realms, and although it’s a great new feature, it doesn’t really serve me as a legacy tier packrat. I like to run old raids to collect my old item tiers, just for the sake of looking cool. With transmogrification being introduced, this is obviously intended behavior. So, where should we store our stuff?

I think that a feature for storing old sets should be allowed. It becomes unlocked when you have a single item from a set. You can store that item in there, Void Storage style. There’s a database table for the sets:

CREATE TABLE EQUIPMENT_SET (
  set_id int PRIMARY_KEY,
  name varchar2 NOT NULL,
  head_id int,
  shoulder_id int,
  chest_id int,
  wrist_id int,
  hand_id int,
  waist_id int,
  leg_id int,
  foot_id int,
  weapon_id int,
  weapon2_id int,
  ranged_id int,
  ring1_id int,
  ring2_id int,
  trinket1_id int,
  trinket2_id int
);

Also, a table for a character possessing a set:

CREATE TABLE CHARACTER_SET_STORAGE (
  character_id int NOT NULL,
  set_id int NOT NULL,
  head int,
  shoulder int,
  chest int,
  wrist int,
  hand int,
  waist int,
  leg int,
  foot int,
  weapon int,
  weapon2 int,
  ranged int,
  ring1 int,
  ring2 int,
  trinket1 int,
  trinket2 int
);

This allows that there’s no storage for characters who don’t have any items from a set, like my paladin doesn’t have a piece of tier 3 Redemption Armor. However, if I have a few piece of Judgement Armor, it’ll look like this:

INSERT INTO EQUIPMENT_SET (set_id, name,              head_id, shoulder_id, chest_id, wrist_id, hand_id, waist_id, leg_id, foot_id, weapon_id, weapon2_id, ranged_id, ring1_id, ring2_id, trinket1_id, trinket2_id)
                   VALUES (217,    "Judgement Armor", 16955,   16953,       16958,    16951,    16956,   16952,    16954,  16957,   0,         0,          0,         0,        0,        0,           0);
INSERT INTO CHARACTER_SET_STORAGE (character_id, set_id, head, shoulder, chest, wrist, hand, waist, leg, foot, weapon, weapon2, ranged, ring1, ring2, trinket1, trinket2)
                           VALUES (1234567890,   217,    1,    1,        1,     1,     0,    0,     0,   0,    0,      0,       0,      0,     0,     0,        0);

So, since item sets are already stored in the database (they have to be for set bonuses), this only really adds one table. I’m sure there’s already extensive triggering when an item is looted, so checking if the set storage should be unlocked won’t be significantly more processing, or perhaps that should be processed when a character visits the set storage vendor. But, this would allow more serious players to store all 12 tiers of their gear plus their millions of dungeon and PvP sets, and be an added reward for those who farmed the real items instead of the lookalikes for Transmogrification.