fix(Core/Items): Special bags cannot be stored inside other special b… (#12032)
fix(Core/Items): Special bags cannot be stored inside other special bags. Fixes #11946
This commit is contained in:
@@ -183,46 +183,64 @@ bool ItemCanGoIntoBag(ItemTemplate const* pProto, ItemTemplate const* pBagProto)
|
|||||||
switch (pBagProto->Class)
|
switch (pBagProto->Class)
|
||||||
{
|
{
|
||||||
case ITEM_CLASS_CONTAINER:
|
case ITEM_CLASS_CONTAINER:
|
||||||
switch (pBagProto->SubClass)
|
{
|
||||||
|
if (pBagProto->SubClass == ITEM_SUBCLASS_CONTAINER)
|
||||||
{
|
{
|
||||||
case ITEM_SUBCLASS_CONTAINER:
|
return true;
|
||||||
return true;
|
|
||||||
case ITEM_SUBCLASS_SOUL_CONTAINER:
|
|
||||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_SOUL_SHARDS))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
case ITEM_SUBCLASS_HERB_CONTAINER:
|
|
||||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_HERBS))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
case ITEM_SUBCLASS_ENCHANTING_CONTAINER:
|
|
||||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_ENCHANTING_SUPP))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
case ITEM_SUBCLASS_MINING_CONTAINER:
|
|
||||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_MINING_SUPP))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
case ITEM_SUBCLASS_ENGINEERING_CONTAINER:
|
|
||||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_ENGINEERING_SUPP))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
case ITEM_SUBCLASS_GEM_CONTAINER:
|
|
||||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_GEMS))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
case ITEM_SUBCLASS_LEATHERWORKING_CONTAINER:
|
|
||||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_LEATHERWORKING_SUPP))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
case ITEM_SUBCLASS_INSCRIPTION_CONTAINER:
|
|
||||||
if (!(pProto->BagFamily & BAG_FAMILY_MASK_INSCRIPTION_SUPP))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pProto->Class == ITEM_CLASS_CONTAINER)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (pBagProto->SubClass)
|
||||||
|
{
|
||||||
|
case ITEM_SUBCLASS_SOUL_CONTAINER:
|
||||||
|
if (!(pProto->BagFamily & BAG_FAMILY_MASK_SOUL_SHARDS))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
case ITEM_SUBCLASS_HERB_CONTAINER:
|
||||||
|
if (!(pProto->BagFamily & BAG_FAMILY_MASK_HERBS))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
case ITEM_SUBCLASS_ENCHANTING_CONTAINER:
|
||||||
|
if (!(pProto->BagFamily & BAG_FAMILY_MASK_ENCHANTING_SUPP))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
case ITEM_SUBCLASS_MINING_CONTAINER:
|
||||||
|
if (!(pProto->BagFamily & BAG_FAMILY_MASK_MINING_SUPP))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
case ITEM_SUBCLASS_ENGINEERING_CONTAINER:
|
||||||
|
if (!(pProto->BagFamily & BAG_FAMILY_MASK_ENGINEERING_SUPP))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
case ITEM_SUBCLASS_GEM_CONTAINER:
|
||||||
|
if (!(pProto->BagFamily & BAG_FAMILY_MASK_GEMS))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
case ITEM_SUBCLASS_LEATHERWORKING_CONTAINER:
|
||||||
|
if (!(pProto->BagFamily & BAG_FAMILY_MASK_LEATHERWORKING_SUPP))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
case ITEM_SUBCLASS_INSCRIPTION_CONTAINER:
|
||||||
|
if (!(pProto->BagFamily & BAG_FAMILY_MASK_INSCRIPTION_SUPP))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
case ITEM_CLASS_QUIVER:
|
case ITEM_CLASS_QUIVER:
|
||||||
|
{
|
||||||
|
if (pProto->Class == ITEM_CLASS_QUIVER)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
switch (pBagProto->SubClass)
|
switch (pBagProto->SubClass)
|
||||||
{
|
{
|
||||||
case ITEM_SUBCLASS_QUIVER:
|
case ITEM_SUBCLASS_QUIVER:
|
||||||
@@ -236,7 +254,9 @@ bool ItemCanGoIntoBag(ItemTemplate const* pProto, ItemTemplate const* pBagProto)
|
|||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user