12121
This commit is contained in:
65
Service/Application.Domain/Tool/Base/FightTool.cs
Normal file
65
Service/Application.Domain/Tool/Base/FightTool.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user