Core/DB: Some DB improvements

This commit is contained in:
hondacrx
2018-05-22 11:05:16 -04:00
parent 0be2dc08e2
commit dbd62e5c6f
23 changed files with 360 additions and 294 deletions
+21 -10
View File
@@ -421,11 +421,13 @@ namespace Game.Entities
var tokens = new StringArray(fields.Read<string>(6), ' ');
if (tokens.Length == ItemConst.MaxProtoSpells)
{
for (byte i = 0; i < ItemConst.MaxProtoSpells; ++i)
{
if (int.TryParse(tokens[i], out int value))
SetSpellCharges(i, value);
}
}
SetUInt32Value(ItemFields.Flags, itemFlags);
@@ -466,10 +468,13 @@ namespace Game.Entities
SetUInt32Value(ItemFields.Context, fields.Read<byte>(19));
var bonusListIDs = new StringArray(fields.Read<string>(20), ' ');
for (var i = 0; i < bonusListIDs.Length; ++i)
if (!tokens.IsEmpty())
{
if (uint.TryParse(tokens[i], out uint bonusListID))
AddBonuses(bonusListID);
for (var i = 0; i < bonusListIDs.Length; ++i)
{
if (uint.TryParse(tokens[i], out uint bonusListID))
AddBonuses(bonusListID);
}
}
SetModifier(ItemModifier.TransmogAppearanceAllSpecs, fields.Read<uint>(21));
@@ -491,11 +496,14 @@ namespace Game.Entities
gemData[i] = new ItemDynamicFieldGems();
gemData[i].ItemId = fields.Read<uint>(31 + i * gemFields);
var gemBonusListIDs = new StringArray(fields.Read<string>(32 + i * gemFields), ' ');
uint b = 0;
foreach (string token in gemBonusListIDs)
if (!gemBonusListIDs.IsEmpty())
{
if (uint.TryParse(token, out uint bonusListID) && bonusListID != 0)
gemData[i].BonusListIDs[b++] = (ushort)bonusListID;
uint b = 0;
foreach (string token in gemBonusListIDs)
{
if (uint.TryParse(token, out uint bonusListID) && bonusListID != 0)
gemData[i].BonusListIDs[b++] = (ushort)bonusListID;
}
}
gemData[i].Context = fields.Read<byte>(33 + i * gemFields);
@@ -1920,10 +1928,13 @@ namespace Game.Entities
loot_item.context = item_result.Read<byte>(11);
StringArray bonusLists = new StringArray(item_result.Read<string>(12), ' ');
foreach (string line in bonusLists)
if (!bonusLists.IsEmpty())
{
if (uint.TryParse(line, out uint id))
loot_item.BonusListIDs.Add(id);
foreach (string line in bonusLists)
{
if (uint.TryParse(line, out uint id))
loot_item.BonusListIDs.Add(id);
}
}
// Copy the extra loot conditions from the item in the loot template