Exemple #1
0
        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);
            }
        }
Exemple #2
0
        /// <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);
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
 /// <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]);
 }
Exemple #7
0
        /// <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]));
        }