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