97 lines
2.7 KiB
C#
97 lines
2.7 KiB
C#
|
using Wonderking.GameData.Item;
|
||
|
|
||
|
namespace Wonderking.Game.Data.Item;
|
||
|
|
||
|
public static class ItemReaderExtensions
|
||
|
{
|
||
|
public static Stats ReadStats(this BinaryReader reader)
|
||
|
{
|
||
|
return new Stats()
|
||
|
{
|
||
|
Strength = reader.ReadInt32(), //125
|
||
|
Dexterity = reader.ReadInt32(), //129
|
||
|
Intelligence = reader.ReadInt32(), //133
|
||
|
Vitality = reader.ReadInt32(), //137
|
||
|
Luck = reader.ReadInt32(), //141
|
||
|
Wisdom = reader.ReadInt32(), //145
|
||
|
};
|
||
|
}
|
||
|
|
||
|
public static ElementalStats ReadElementalStats(this BinaryReader reader)
|
||
|
{
|
||
|
return new ElementalStats()
|
||
|
{
|
||
|
MinimumFireDamage = reader.ReadInt32(), //149
|
||
|
MinimumWaterDamage = reader.ReadInt32(), //153
|
||
|
MinimumDarkDamage = reader.ReadInt32(), //157
|
||
|
MinimumHolyDamage = reader.ReadInt32(), //161
|
||
|
MaximumFireDamage = reader.ReadInt32(), //165
|
||
|
MaximumWaterDamage = reader.ReadInt32(), //169
|
||
|
MaximumDarkDamage = reader.ReadInt32(), //173
|
||
|
MaximumHolyDamage = reader.ReadInt32(), //177
|
||
|
ElementFire = reader.ReadUInt32(), //181
|
||
|
ElementWater = reader.ReadUInt32(), //185
|
||
|
ElementDark = reader.ReadUInt32(), //189
|
||
|
ElementHoly = reader.ReadUInt32(), //193
|
||
|
FireResistance = reader.ReadInt32(), //197
|
||
|
WaterResistance = reader.ReadInt32(), //201
|
||
|
DarkResistance = reader.ReadInt32(), //205
|
||
|
HolyResistance = reader.ReadInt32(), //209
|
||
|
};
|
||
|
}
|
||
|
|
||
|
public static ContainedItem[] ReadContainedItems(this BinaryReader reader)
|
||
|
{
|
||
|
var list = new ContainedItem[5];
|
||
|
//893
|
||
|
for (var i = 0; i < 5; i++)
|
||
|
{
|
||
|
list[i].ID = reader.ReadInt16();
|
||
|
}
|
||
|
|
||
|
//903
|
||
|
for (var i = 0; i < 5; i++)
|
||
|
{
|
||
|
list[i].ObtainChance = reader.ReadSingle();
|
||
|
}
|
||
|
|
||
|
return list;
|
||
|
}
|
||
|
|
||
|
public static CraftMaterial[] ReadCraftMaterial(this BinaryReader reader)
|
||
|
{
|
||
|
var mats = new CraftMaterial[4];
|
||
|
//329
|
||
|
for (var i = 0; i < 4; ++i)
|
||
|
{
|
||
|
mats[i].ID = reader.ReadUInt32();
|
||
|
}
|
||
|
|
||
|
//345
|
||
|
for (var i = 0; i < 4; ++i)
|
||
|
{
|
||
|
mats[i].ID = reader.ReadUInt32();
|
||
|
}
|
||
|
|
||
|
return mats;
|
||
|
}
|
||
|
|
||
|
public static ItemOptions ReadItemOptions(this BinaryReader reader)
|
||
|
{
|
||
|
var options = new ItemOptions();
|
||
|
|
||
|
options.OptionAvailable = reader.ReadInt32() == 1; //819
|
||
|
|
||
|
var optionIDs = new List<byte>(4);
|
||
|
//823
|
||
|
for (var i = 0; i < 3; i++)
|
||
|
{
|
||
|
optionIDs.Add((byte)reader.ReadUInt32());
|
||
|
}
|
||
|
|
||
|
options.OptionIDs = optionIDs;
|
||
|
|
||
|
return options;
|
||
|
}
|
||
|
}
|