234 lines
12 KiB
C#
234 lines
12 KiB
C#
|
|
namespace Application.Domain;
|
|
|
|
public class GameAttrTool
|
|
{
|
|
public static UserAttrModel GetRoleAttrTemp(UserAttrModel temp, List<AttrItem> attrData)
|
|
{
|
|
UserAttrModel result = new UserAttrModel();
|
|
result.minAtk =
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Atk.ToString(), attrData, temp.minAtk));
|
|
result.maxAtk =
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Atk.ToString(), attrData, temp.maxAtk));
|
|
result.defense =
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Defense.ToString(), attrData, temp.defense));
|
|
result.agility =
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Agility.ToString(), attrData, temp.agility));
|
|
result.upBlood =
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Blood.ToString(), attrData, temp.upBlood));
|
|
result.upMorale =
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Morale.ToString(), attrData, temp.upMorale));
|
|
result.InBlood = GetAttrItemValue(GameEnum.AttrCode.InBlood.ToString(), attrData, temp.InBlood);
|
|
result.Crit = GetAttrItemValue(GameEnum.AttrCode.Crit.ToString(), attrData, temp.Crit);
|
|
result.NoHarm = GetAttrItemValue(GameEnum.AttrCode.NoHarm.ToString(), attrData, temp.NoHarm);
|
|
result.Dodge = GetAttrItemValue(GameEnum.AttrCode.Dodge.ToString(), attrData, temp.Dodge);
|
|
result.Rebound = GetAttrItemValue(GameEnum.AttrCode.Rebound.ToString(), attrData, temp.Rebound);
|
|
result.ReboundLess =
|
|
GetAttrItemValue(GameEnum.AttrCode.ReboundLess.ToString(), attrData, temp.ReboundLess);
|
|
result.Punish = GetAttrItemValue(GameEnum.AttrCode.Punish.ToString(), attrData, temp.Punish);
|
|
result.Slow = GetAttrItemValue(GameEnum.AttrCode.Slow.ToString(), attrData, temp.Slow);
|
|
result.SlowLess = GetAttrItemValue(GameEnum.AttrCode.SlowLess.ToString(), attrData, temp.SlowLess);
|
|
result.Poison = GetAttrItemValue(GameEnum.AttrCode.Poison.ToString(), attrData, temp.Poison);
|
|
result.PoisonLess =
|
|
GetAttrItemValue(GameEnum.AttrCode.PoisonLess.ToString(), attrData, temp.PoisonLess);
|
|
result.Curse = GetAttrItemValue(GameEnum.AttrCode.Curse.ToString(), attrData, temp.Curse);
|
|
result.CurseLess = GetAttrItemValue(GameEnum.AttrCode.CurseLess.ToString(), attrData, temp.CurseLess);
|
|
result.Weaken = GetAttrItemValue(GameEnum.AttrCode.Weaken.ToString(), attrData, temp.Weaken);
|
|
result.WeakenLess =
|
|
GetAttrItemValue(GameEnum.AttrCode.WeakenLess.ToString(), attrData, temp.WeakenLess);
|
|
result.Deadly = GetAttrItemValue(GameEnum.AttrCode.Deadly.ToString(), attrData, temp.Deadly);
|
|
result.DeadlyLess =
|
|
GetAttrItemValue(GameEnum.AttrCode.DeadlyLess.ToString(), attrData, temp.DeadlyLess);
|
|
result.Depressed = GetAttrItemValue(GameEnum.AttrCode.Depressed.ToString(), attrData, temp.Depressed);
|
|
result.DepressedLess =
|
|
GetAttrItemValue(GameEnum.AttrCode.DepressedLess.ToString(), attrData, temp.DepressedLess);
|
|
result.Breach = GetAttrItemValue(GameEnum.AttrCode.Breach.ToString(), attrData, temp.Breach);
|
|
result.BreachLess =
|
|
GetAttrItemValue(GameEnum.AttrCode.BreachLess.ToString(), attrData, temp.BreachLess);
|
|
result.Del_Fashion =
|
|
GetAttrItemValue(GameEnum.AttrCode.Del_Fashion.ToString(), attrData, temp.Del_Fashion);
|
|
result.Atk_Next = GetAttrItemValue(GameEnum.AttrCode.Atk_Next.ToString(), attrData, temp.Atk_Next);
|
|
result.Harm_Add = GetAttrItemValue(GameEnum.AttrCode.Harm_Add.ToString(), attrData, temp.Harm_Add);
|
|
result.PalsyAtk = GetAttrItemValue(GameEnum.AttrCode.PalsyAtk.ToString(), attrData, temp.PalsyAtk);
|
|
result.PalsyAtkLess =
|
|
GetAttrItemValue(GameEnum.AttrCode.PalsyAtkLess.ToString(), attrData, temp.PalsyAtk);
|
|
|
|
result.addExp =
|
|
GetAttrItemValue(nameof(GameEnum.AttrCode.AddExp), attrData, temp.addExp);
|
|
result.addGold =
|
|
GetAttrItemValue(nameof(GameEnum.AttrCode.AddGold), attrData, temp.addGold);
|
|
result.burst =
|
|
GetAttrItemValue(nameof(GameEnum.AttrCode.Burst), attrData, temp.burst);
|
|
result.luck =
|
|
GetAttrItemValue(nameof(GameEnum.AttrCode.Luck), attrData, temp.luck);
|
|
result.weight = Convert.ToInt32(GetAttrItemValue(nameof(GameEnum.AttrCode.Weight), attrData, temp.weight));
|
|
|
|
return result;
|
|
}
|
|
|
|
public static UserAttrModel GetRoleAttrTempMerge(UserAttrModel result, List<AttrItem> attrData)
|
|
{
|
|
result.minAtk +=
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Atk.ToString(), attrData, result.minAtk));
|
|
result.maxAtk +=
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Atk.ToString(), attrData, result.maxAtk));
|
|
result.defense +=
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Defense.ToString(), attrData, result.defense));
|
|
result.agility +=
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Agility.ToString(), attrData, result.agility));
|
|
result.upBlood +=
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Blood.ToString(), attrData, result.upBlood));
|
|
result.upMorale +=
|
|
Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Morale.ToString(), attrData, result.upMorale));
|
|
result.InBlood += GetAttrItemValue(GameEnum.AttrCode.InBlood.ToString(), attrData, 0);
|
|
result.Crit += GetAttrItemValue(GameEnum.AttrCode.Crit.ToString(), attrData, 0);
|
|
result.NoHarm += GetAttrItemValue(GameEnum.AttrCode.NoHarm.ToString(), attrData, 0);
|
|
result.Dodge += GetAttrItemValue(GameEnum.AttrCode.Dodge.ToString(), attrData, 0);
|
|
result.Rebound += GetAttrItemValue(GameEnum.AttrCode.Rebound.ToString(), attrData, 0);
|
|
result.ReboundLess += GetAttrItemValue(GameEnum.AttrCode.ReboundLess.ToString(), attrData, 0);
|
|
result.Punish += GetAttrItemValue(GameEnum.AttrCode.Punish.ToString(), attrData, 0);
|
|
result.Slow += GetAttrItemValue(GameEnum.AttrCode.Slow.ToString(), attrData, 0);
|
|
result.SlowLess += GetAttrItemValue(GameEnum.AttrCode.SlowLess.ToString(), attrData, 0);
|
|
result.Poison += GetAttrItemValue(GameEnum.AttrCode.Poison.ToString(), attrData, 0);
|
|
result.PoisonLess += GetAttrItemValue(GameEnum.AttrCode.PoisonLess.ToString(), attrData, 0);
|
|
result.Curse += GetAttrItemValue(GameEnum.AttrCode.Curse.ToString(), attrData, 0);
|
|
result.CurseLess += GetAttrItemValue(GameEnum.AttrCode.CurseLess.ToString(), attrData, 0);
|
|
result.Weaken += GetAttrItemValue(GameEnum.AttrCode.Weaken.ToString(), attrData, 0);
|
|
result.WeakenLess += GetAttrItemValue(GameEnum.AttrCode.WeakenLess.ToString(), attrData, 0);
|
|
result.Deadly += GetAttrItemValue(GameEnum.AttrCode.Deadly.ToString(), attrData, 0);
|
|
result.DeadlyLess += GetAttrItemValue(GameEnum.AttrCode.DeadlyLess.ToString(), attrData, 0);
|
|
result.Depressed += GetAttrItemValue(GameEnum.AttrCode.Depressed.ToString(), attrData, 0);
|
|
result.DepressedLess += GetAttrItemValue(GameEnum.AttrCode.DepressedLess.ToString(), attrData, 0);
|
|
result.Breach += GetAttrItemValue(GameEnum.AttrCode.Breach.ToString(), attrData, 0);
|
|
result.BreachLess += GetAttrItemValue(GameEnum.AttrCode.BreachLess.ToString(), attrData, 0);
|
|
result.Del_Fashion += GetAttrItemValue(GameEnum.AttrCode.Del_Fashion.ToString(), attrData, 0);
|
|
result.Atk_Next += GetAttrItemValue(GameEnum.AttrCode.Atk_Next.ToString(), attrData, 0);
|
|
result.Harm_Add += GetAttrItemValue(GameEnum.AttrCode.Harm_Add.ToString(), attrData, 0);
|
|
result.PalsyAtk += GetAttrItemValue(GameEnum.AttrCode.PalsyAtk.ToString(), attrData, 0);
|
|
result.PalsyAtkLess += GetAttrItemValue(GameEnum.AttrCode.PalsyAtkLess.ToString(), attrData, 0);
|
|
|
|
result.addExp += GetAttrItemValue(GameEnum.AttrCode.AddExp.ToString(), attrData, 0);
|
|
result.addGold += GetAttrItemValue(GameEnum.AttrCode.AddGold.ToString(), attrData, 0);
|
|
result.burst += GetAttrItemValue(GameEnum.AttrCode.Burst.ToString(), attrData, 0);
|
|
result.luck += GetAttrItemValue(GameEnum.AttrCode.Luck.ToString(), attrData, 0);
|
|
result.weight += Convert.ToInt32(GetAttrItemValue(GameEnum.AttrCode.Weight.ToString(), attrData, 0)) ;
|
|
|
|
return result;
|
|
}
|
|
|
|
public static UserAttrModel GetRoleAttrTempMerge(UserAttrModel main, UserAttrModel vice)
|
|
{
|
|
main.minAtk += vice.minAtk;
|
|
main.maxAtk += vice.maxAtk;
|
|
main.defense += vice.defense;
|
|
main.agility += vice.agility;
|
|
main.upBlood += vice.upBlood;
|
|
main.upMorale += vice.upMorale;
|
|
main.InBlood += vice.InBlood;
|
|
main.Crit += vice.Crit;
|
|
main.NoHarm += vice.NoHarm;
|
|
main.Dodge += vice.Dodge;
|
|
main.Rebound += vice.Rebound;
|
|
main.ReboundLess += vice.ReboundLess;
|
|
main.Punish += vice.Punish;
|
|
main.Slow += vice.Slow;
|
|
main.Poison += vice.Poison;
|
|
main.PoisonLess += vice.PoisonLess;
|
|
main.Curse += vice.Curse;
|
|
main.CurseLess += vice.CurseLess;
|
|
main.Weaken += vice.Weaken;
|
|
main.WeakenLess += vice.WeakenLess;
|
|
main.Deadly += vice.Deadly;
|
|
main.DeadlyLess += vice.DeadlyLess;
|
|
main.Depressed += vice.Depressed;
|
|
main.DepressedLess += vice.DepressedLess;
|
|
main.Breach += vice.Breach;
|
|
main.BreachLess += vice.BreachLess;
|
|
main.Del_Fashion += vice.Del_Fashion;
|
|
main.Atk_Next += vice.Atk_Next;
|
|
main.Harm_Add += vice.Harm_Add;
|
|
main.PalsyAtk += vice.PalsyAtk;
|
|
main.PalsyAtkLess += vice.PalsyAtkLess;
|
|
|
|
main.addExp += vice.addExp;
|
|
main.addGold += vice.addGold;
|
|
main.burst += vice.burst;
|
|
main.luck += vice.luck;
|
|
main.weight += vice.weight;
|
|
return main;
|
|
}
|
|
|
|
public static decimal GetAttrItemValue(string attrCode, List<AttrItem> AttrData, decimal unit)
|
|
{
|
|
decimal result = 0.00M;
|
|
foreach (var item in AttrData)
|
|
{
|
|
if (attrCode == item.code)
|
|
{
|
|
if (string.IsNullOrEmpty(item.compute))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if (item.compute == nameof(GameEnum.ComputeType.Ride))
|
|
{
|
|
result += unit * Convert.ToDecimal(item.parameter);
|
|
}
|
|
else if (item.compute == nameof(GameEnum.ComputeType.Plus))
|
|
{
|
|
result += Convert.ToDecimal(item.parameter);
|
|
}
|
|
else if (item.compute == nameof(GameEnum.ComputeType.Reduce))
|
|
{
|
|
result = unit - Convert.ToDecimal(item.parameter);
|
|
}
|
|
else if (item.compute == nameof(GameEnum.ComputeType.Except))
|
|
{
|
|
result = unit / Convert.ToDecimal(item.parameter);
|
|
}
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public static async Task<UserAttrModel> CheckRoleLoadBuff(UserAttrModel temp, List<unit_user_load> loadBuff)
|
|
{
|
|
foreach (var item in loadBuff)
|
|
{
|
|
if (item.code == nameof(GameEnum.AttrCode.Slow))
|
|
{
|
|
decimal radio = item.count * 0.05M;
|
|
temp.agility = Convert.ToInt32(temp.agility * (1.0M - radio));
|
|
}
|
|
else if (item.code == nameof(GameEnum.AttrCode.Poison))
|
|
{
|
|
decimal radio = item.count * 0.08M;
|
|
temp.upBlood = Convert.ToInt32(temp.upBlood * (1.0M - radio));
|
|
}
|
|
else if (item.code == nameof(GameEnum.AttrCode.Curse))
|
|
{
|
|
decimal radio = item.count * 0.08M;
|
|
temp.minAtk = Convert.ToInt32(temp.minAtk * (1.0M - radio));
|
|
temp.maxAtk = Convert.ToInt32(temp.maxAtk * (1.0M - radio));
|
|
}
|
|
else if (item.code == nameof(GameEnum.AttrCode.Weaken))
|
|
{
|
|
decimal radio = item.count * 0.02M;
|
|
temp.Crit = temp.Crit - radio;
|
|
}
|
|
else if (item.code == nameof(GameEnum.AttrCode.Depressed))
|
|
{
|
|
decimal radio = item.count * 0.07M;
|
|
temp.upMorale = Convert.ToInt32(temp.upMorale * (1.0M - radio));
|
|
}
|
|
else if (item.code == nameof(GameEnum.AttrCode.Breach))
|
|
{
|
|
decimal radio = item.count * 0.04M;
|
|
temp.defense = Convert.ToInt32(temp.defense * (1.0M - radio));
|
|
}
|
|
}
|
|
|
|
return temp;
|
|
}
|
|
} |