This commit is contained in:
Putoo
2026-07-18 11:24:44 +08:00
parent e4d39f3f2f
commit 723a6861a0
9 changed files with 158 additions and 41 deletions

View File

@@ -0,0 +1,65 @@
namespace Application.Domain;
public class FightTool
{
/// <summary>
/// 攻击冷却时间
/// </summary>
/// <param name="atk"></param>
/// <param name="def"></param>
/// <param name="loads"></param>
/// <returns></returns>
public static int GetFightCool(long atk, long def, List<unit_user_load> 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;
}
/// <summary>
/// 战斗预计时间
/// </summary>
/// <param name="atkUser"></param>
/// <param name="defUser"></param>
/// <returns></returns>
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;
}
}