namespace Application.Domain; public class EquTool { public static unit_user_equ GetUserEquByIntensify(unit_user_equ equ) { //强化 equ = GetIntensifyAttr(equ); List AttrData = GetUserEquAttrData(equ); equ.minAtk += Convert.ToInt32(GameAttrTool.GetAttrItemValue(nameof(GameEnum.AttrCode.Atk), AttrData, (decimal)equ.minAtk)); equ.minAtk += Convert.ToInt32(GameAttrTool.GetAttrItemValue(nameof(GameEnum.AttrCode.MinAtk), AttrData, (decimal)equ.minAtk)); equ.maxAtk += Convert.ToInt32(GameAttrTool.GetAttrItemValue(nameof(GameEnum.AttrCode.Atk), AttrData, (decimal)equ.maxAtk)); equ.maxAtk += Convert.ToInt32(GameAttrTool.GetAttrItemValue(nameof(GameEnum.AttrCode.MaxAtk), AttrData, (decimal)equ.minAtk)); equ.Blood += Convert.ToInt32(GameAttrTool.GetAttrItemValue(nameof(GameEnum.AttrCode.Blood), AttrData, (decimal)equ.Blood)); equ.Defense += Convert.ToInt32(GameAttrTool.GetAttrItemValue(nameof(GameEnum.AttrCode.Defense), AttrData, (decimal)equ.Defense)); equ.Agility += Convert.ToInt32(GameAttrTool.GetAttrItemValue(nameof(GameEnum.AttrCode.Agility), AttrData, (decimal)equ.Agility)); equ.Morale += Convert.ToInt32(GameAttrTool.GetAttrItemValue(nameof(GameEnum.AttrCode.Morale), AttrData, (decimal)equ.Morale)); return equ; } private static unit_user_equ GetIntensifyAttr(unit_user_equ equ) { equ.minAtk = GetIntensifyAttrBase(equ.minAtk, equ.intensifyLev); equ.maxAtk = GetIntensifyAttrBase(equ.maxAtk, equ.intensifyLev); equ.Blood = GetIntensifyAttrBase(equ.Blood, equ.intensifyLev); equ.Defense = GetIntensifyAttrBase(equ.Defense, equ.intensifyLev); equ.Agility = GetIntensifyAttrBase(equ.Agility, equ.intensifyLev); return equ; } private static int GetIntensifyAttrBase(int? onV, int? lev) { if (onV < 1) { return 0; } int onAttr = Convert.ToInt32(onV); int onLev = Convert.ToInt32(lev); //当前强化等级 if (onLev < 1) { return onAttr; } int result = onLev * 3; result = result > 57 ? 57 : result; if (onLev > 19) { int addLev = onLev - 19; addLev = addLev > 10 ? 10 : addLev; result += addLev * 5; } if (onLev > 29) { int addLev = onLev - 29; addLev = addLev > 10 ? 10 : addLev; result += addLev * 10; } if (onLev > 39) { int addLev = onLev - 39; addLev = addLev > 10 ? 10 : addLev; result += addLev * 15; } if (onLev > 49) { int addLev = onLev - 49; addLev = addLev > 10 ? 10 : addLev; result += addLev * 20; } if (onLev > 59) { int addLev = onLev - 59; addLev = addLev > 10 ? 10 : addLev; result += addLev * 25; } if (onLev > 69) { int addLev = onLev - 69; addLev = addLev > 10 ? 10 : addLev; int unitAdd = Convert.ToInt32(onAttr * 0.05); unitAdd = unitAdd < 30 ? 30 : unitAdd; result += addLev * unitAdd; } if (onLev > 79) { int addLev = onLev - 79; addLev = addLev > 10 ? 10 : addLev; int unitAdd = Convert.ToInt32(onAttr * 0.1); unitAdd = unitAdd < 35 ? 35 : unitAdd; result += addLev * unitAdd; } if (onLev > 89) { int addLev = onLev - 89; addLev = addLev > 10 ? 10 : addLev; int unitAdd = Convert.ToInt32(onAttr * 0.15); unitAdd = unitAdd < 40 ? 40 : unitAdd; result += addLev * unitAdd; } if (onLev > 99) { int unitAdd = Convert.ToInt32(onAttr * 0.35); unitAdd = unitAdd < 100 ? 100 : unitAdd; result += unitAdd; } return Convert.ToInt32(result + onAttr); } public static List GetUserEquAttrData(unit_user_equ equ) { List AttrData = new List(); //装备本身特性 AttrData.AddRange(equ.EquAttr); //宝石 if (equ.GemMent.Count > 0) { foreach (var item in equ.GemMent) { AttrData.AddRange(item.gemItem.GemAttr); } } //附魔 if (equ.EquMent != null) { if (equ.EquMent.EquAttr != null) { AttrData.AddRange(equ.EquMent.EquAttr); } } //觉醒 if (equ.EquAwaken != null) { foreach (var item in equ.EquAwaken) { if (item.awaken != null) { AttrData.AddRange(item.awaken); } } } return AttrData; } }