namespace Application.Domain; public class FightTool { /// /// 攻击冷却时间 /// /// /// /// /// public static int GetFightCool(long atk, long def, List loads = null) { int result = 1000; if (atk > def && def > 0) { decimal diff = atk - def; decimal bl = diff / def; result = Convert.ToInt32((1 - bl) * result); result = result < 300 ? 300 : result; result = result > 1000 ? 1000 : result; } if (loads != null) { //麻痹状态增加冷却时间 var atkCoolData = loads.Find(it => it.code == nameof(GameEnum.AttrCode.PalsyAtk)); if (atkCoolData != null) { result = Convert.ToInt32(result * (1 + atkCoolData.count * 0.1M)); } } return result; } /// /// 战斗预计时间 /// /// /// /// public static long GetFightDueTime(UserAttrModel atkUser, UserAttrModel defUser) { long result = 3 * 60 * 60 * 1000; if (atkUser.minAtk > defUser.defense && defUser.defense > 0) { decimal harmRide = (atkUser.minAtk - defUser.defense) / defUser.defense; harmRide = harmRide > 1.2M ? 1.2M : harmRide; decimal fight_Harm = harmRide * atkUser.maxAtk; if (fight_Harm >= defUser.blood) { return 0; } else { int cool = GetFightCool(atkUser.agility, defUser.agility); int count = Convert.ToInt32(defUser.blood / fight_Harm); result = count * cool; } } return result; } }