Esempio n. 1
0
        private int EvaluateStat(D2Stat stat, D2ItemStatCost statCost)
        {
            if (statCost.Op < 2 || statCost.Op > 5)
            {
                return(stat.Value >> statCost.ValShift);
            }

            if (statCost.OpBase < 0 || statCost.OpBase >= ItemStatCost.Length)
            {
                return(0);
            }

            var player = GetPlayer();

            if (player == null)
            {
                return(0);
            }

            // Get the player stat.
            int playerStat = GetStatValue(player, statCost.OpBase) ?? 0;

            playerStat >>= ItemStatCost[statCost.OpBase].ValShift;

            // Evaluate based on the player stat (e.g. player level)
            int value = (stat.Value * playerStat) >> statCost.OpParam;

            return(value >> statCost.ValShift);
        }
Esempio n. 2
0
        private int EvaluateStat(D2Stat stat, D2ItemStatCost statCost, D2Unit unit)
        {
            if (statCost.Op < 2 || statCost.Op > 5)
            {
                return(stat.Value >> statCost.ValShift);
            }

            if (statCost.OpBase < 0 || statCost.OpBase >= ItemStatCost.Length)
            {
                return(0);
            }

            if (unit == null)
            {
                return(0);
            }

            // Get the unit stat.
            int unitStat = GetStatValue(unit, statCost.OpBase) ?? 0;

            unitStat >>= ItemStatCost[statCost.OpBase].ValShift;

            // Evaluate based on the unit stat (e.g. player level)
            int value = (stat.Value * unitStat) >> statCost.OpParam;

            return(value >> statCost.ValShift);
        }
Esempio n. 3
0
        private int EvaluateStat(D2Stat stat, D2ItemStatCost statCost)
        {
            int value = stat.Value;

            if (statCost.Op >= 2 && statCost.Op <= 5)
            {
                if (statCost.OpBase < 0 || statCost.OpBase >= ItemStatCost.Length)
                {
                    return(0);
                }
                D2ItemStatCost baseStatCost = ItemStatCost[statCost.OpBase];

                // Get the player stat.
                D2Unit player     = GetPlayer();
                int    playerStat = GetStatValue(player, statCost.OpBase) ?? 0;
                playerStat >>= baseStatCost.ValShift;

                // Evaluate based on the player stat (e.g. player level)
                value = (value * playerStat) >> statCost.OpParam;
            }

            return(value >> statCost.ValShift);
        }