public static void SetValue(SC.BaseParam baseParam, JObject attr, double amount_base, int max, bool isAction) { var key = baseParam.Name.ToString(); object amount = amount_base; if (Math.Floor(amount_base) == amount_base) { amount = (int)amount_base; } else { amount = Math.Round((decimal)amount_base, 2); } if (isAction && max > 0) { dynamic obj = new JObject(); obj.rate = (int)(amount_base * 100); obj.limit = max; attr[key] = (JObject)obj; } else { attr[key] = new JValue(amount); } }
/// <summary> /// Add a value to a specific <see cref="BaseParam" />. /// </summary> /// <param name="baseParam"><see cref="BaseParam" /> to which to add a value.</param> /// <param name="value"><see cref="ParameterValue" /> to add to <c>baseParam</c>.</param> public void AddParameterValue(BaseParam baseParam, ParameterValue value) { Parameter param; if (!_Parameters.TryGetValue(baseParam, out param)) { _Parameters.Add(baseParam, param = new Parameter(baseParam)); } param.AddValue(value); }
/// <summary> /// Build a <see cref="ParameterCollection" /> for the bonuses granted by the current consumable. /// </summary> /// <returns>A <see cref="ParameterCollection" /> for the bonuses granted by the current consumable.</returns> private ParameterCollection BuildParameters() { const int Count = 3; ParameterCollection parameters = new ParameterCollection(); for (int i = 0; i < Count; ++i) { BaseParam param = As <BaseParam>(i); if (param.Key == 0) { continue; } bool isRel = AsBoolean("IsRelative", i); int val = AsInt32("Value", i); int valHq = AsInt32("Value{HQ}", i); if (isRel) { int max = AsInt32("Max", i); int maxHq = AsInt32("Max{HQ}", i); parameters.AddParameterValue(param, max == 0 ? new ParameterValueRelative(ParameterType.Base, val / 100.0, i) : new ParameterValueRelativeLimited(ParameterType.Base, val / 100.0, max, i)); if (maxHq == max && valHq == val) { continue; } parameters.AddParameterValue(param, maxHq == 0 ? new ParameterValueRelative(ParameterType.Hq, valHq / 100.0, i) : new ParameterValueRelativeLimited(ParameterType.Hq, valHq / 100.0, maxHq, i)); } else { parameters.AddParameterValue(param, new ParameterValueFixed(ParameterType.Base, val, i)); if (val != valHq) { parameters.AddParameterValue(param, new ParameterValueFixed(ParameterType.Hq, valHq, i)); } } } return(parameters); }
public static void SetMaxValue(SC.Items.Equipment equipment, SC.BaseParam baseParam, dynamic attr_max) { if (equipment.FreeMateriaSlots == 0) { return; } var meldCap = equipment.GetMateriaMeldCap(baseParam, true); if (meldCap > 0) { var paramMax = equipment.GetMaximumParamValue(baseParam); SetValue(baseParam, attr_max, paramMax, 0, false); } }
/// <summary> /// Initializes a new instance of the <see cref="Parameter" /> class. /// </summary> /// <param name="baseParam"><see cref="BaseParam" /> to associate with the <see cref="Parameter" />.</param> public Parameter(BaseParam baseParam) { BaseParam = baseParam; }
/// <summary> /// Get the maximum for a <see cref="BaseParam" /> at the current item level. /// </summary> /// <remarks> /// The value returned by this method is just the base on which further calculations are performed. /// </remarks> /// <param name="baseParam">The <see cref="BaseParam" /> for which to get the maximum.</param> /// <returns>The maximum value of <c>baseParam</c> at the current item level.</returns> public int GetMaximum(BaseParam baseParam) { const int Offset = -1; return baseParam.Key == 0 ? 0 : Convert.ToInt32(this[Offset + baseParam.Key]); }
/// <summary> /// Get the maximum for a <see cref="BaseParam" /> at the current item level. /// </summary> /// <remarks> /// The value returned by this method is just the base on which further calculations are performed. /// </remarks> /// <param name="baseParam">The <see cref="BaseParam" /> for which to get the maximum.</param> /// <returns>The maximum value of <c>baseParam</c> at the current item level.</returns> public int GetMaximum(BaseParam baseParam) { const int Offset = -1; return(baseParam.Key == 0 ? 0 : Convert.ToInt32(this[Offset + baseParam.Key])); }