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); }
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); }
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); }