private static void GetDefault(Item item, Dictionary <StatAttribute, ItemStat> stats, int optionId, float optionLevelFactor) { ItemOptionPick baseOptions = ItemOptionPickMetadataStorage.GetMetadata(optionId, item.Rarity); if (baseOptions is null) { return; } Script script = ScriptLoader.GetScript("Functions/calcItemValues"); foreach (StaticPick staticPickFlat in baseOptions.StaticValues) { SetStat(stats, staticPickFlat, item, script, optionLevelFactor); } foreach (StaticPick staticPickRate in baseOptions.StaticRates) { SetStat(stats, staticPickRate, item, script, optionLevelFactor); } }
private static void GetDefault(Item item, Dictionary <StatAttribute, ItemStat> constantStats, int optionId, float optionLevelFactor) { ItemOptionPick baseOptions = ItemOptionPickMetadataStorage.GetMetadata(optionId, item.Rarity); if (baseOptions is null) { return; } Script script = ScriptLoader.GetScript("Functions/calcItemValues"); foreach (ConstantPick constantPick in baseOptions.Constants) { string calcScript; switch (constantPick.Stat) { case StatAttribute.Hp: calcScript = "constant_value_hp"; break; case StatAttribute.Defense: calcScript = "constant_value_ndd"; break; case StatAttribute.MagicRes: calcScript = "constant_value_mar"; break; case StatAttribute.PhysicalRes: calcScript = "constant_value_par"; break; case StatAttribute.CritRate: calcScript = "constant_value_cap"; break; case StatAttribute.Str: calcScript = "constant_value_str"; break; case StatAttribute.Dex: calcScript = "constant_value_dex"; break; case StatAttribute.Int: calcScript = "constant_value_int"; break; case StatAttribute.Luk: calcScript = "constant_value_luk"; break; case StatAttribute.MagicAtk: calcScript = "constant_value_map"; break; case StatAttribute.MinWeaponAtk: calcScript = "constant_value_wapmin"; break; case StatAttribute.MaxWeaponAtk: calcScript = "constant_value_wapmax"; break; default: continue; } if (!constantStats.ContainsKey(constantPick.Stat)) { constantStats[constantPick.Stat] = new BasicStat(constantPick.Stat, 0, StatAttributeType.Flat); } float statValue = constantStats[constantPick.Stat].GetValue(); DynValue result = script.RunFunction(calcScript, statValue, constantPick.DeviationValue, (int)item.Type, (int)item.RecommendJobs.First(), optionLevelFactor, item.Rarity, item.Level); constantStats[constantPick.Stat].SetValue((float)result.Number); if (constantStats[constantPick.Stat].GetValue() <= 0.0000f) { constantStats.Remove(constantPick.Stat); } } }