public static void GetConstantStats(int itemId, int rarity, out List <NormalStat> normalStats, out List <SpecialStat> specialStats) { normalStats = new List <NormalStat>(); specialStats = new List <SpecialStat>(); // Get Constant Stats int constantId = ItemMetadataStorage.GetOptionConstant(itemId); ItemOptionsConstant basicOptions = ItemOptionConstantMetadataStorage.GetMetadata(constantId, rarity); if (basicOptions == null) { return; } foreach (ParserStat stat in basicOptions.Stats) { normalStats.Add(new NormalStat(stat.Id, stat.Flat, stat.Percent)); } foreach (ParserSpecialStat stat in basicOptions.SpecialStats) { specialStats.Add(new SpecialStat(stat.Id, stat.Flat, stat.Percent)); } if (basicOptions.HiddenDefenseAdd > 0) { AddHiddenNormalStat(normalStats, ItemAttribute.Defense, basicOptions.HiddenDefenseAdd, basicOptions.DefenseCalibrationFactor); } if (basicOptions.HiddenWeaponAtkAdd > 0) { AddHiddenNormalStat(normalStats, ItemAttribute.MinWeaponAtk, basicOptions.HiddenWeaponAtkAdd, basicOptions.WeaponAtkCalibrationFactor); AddHiddenNormalStat(normalStats, ItemAttribute.MaxWeaponAtk, basicOptions.HiddenWeaponAtkAdd, basicOptions.WeaponAtkCalibrationFactor); } }
public static void GetStats(Item item, int optionId, float optionLevelFactor, out Dictionary <StatAttribute, ItemStat> constantStats) { constantStats = new(); int constantId = ItemMetadataStorage.GetOptionMetadata(item.Id).Constant; ItemOptionsConstant basicOptions = ItemOptionConstantMetadataStorage.GetMetadata(constantId, item.Rarity); if (basicOptions == null) { GetDefault(item, constantStats, optionId, optionLevelFactor); return; } foreach (ParserStat stat in basicOptions.Stats) { constantStats[stat.Attribute] = new BasicStat(stat); } foreach (ParserSpecialStat stat in basicOptions.SpecialStats) { constantStats[stat.Attribute] = new SpecialStat(stat); } // TODO: Implement Hidden ndd (defense) and wapmax (Max Weapon Attack) if (optionLevelFactor > 50) { GetDefault(item, constantStats, optionId, optionLevelFactor); } }