1222
This commit is contained in:
@@ -24,6 +24,7 @@ public static class GoodsEnum
|
|||||||
Practise,//修炼道具
|
Practise,//修炼道具
|
||||||
Durability,//耐久道具
|
Durability,//耐久道具
|
||||||
AddExp,//扣除经验获得道具
|
AddExp,//扣除经验获得道具
|
||||||
|
Collect,//收集的物品
|
||||||
GetExp//使用后获得经验
|
GetExp//使用后获得经验
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -448,7 +448,7 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
|
|||||||
List<TowerGet> AddMapGoods = new List<TowerGet>();
|
List<TowerGet> AddMapGoods = new List<TowerGet>();
|
||||||
var opGoods = JsonConvert.DeserializeObject<List<TowerGet>>(fightAward.award.ToString());
|
var opGoods = JsonConvert.DeserializeObject<List<TowerGet>>(fightAward.award.ToString());
|
||||||
string addGoodsUser = fightData.areaCode == nameof(GameEnum.AreaCode.Public) ? "0" : fightData.winUser;
|
string addGoodsUser = fightData.areaCode == nameof(GameEnum.AreaCode.Public) ? "0" : fightData.winUser;
|
||||||
if (userConfig.autoBag == 1)
|
if (userConfig.autoBag != 0)
|
||||||
{
|
{
|
||||||
var weightService = App.GetService<IUnitUserWeight>();
|
var weightService = App.GetService<IUnitUserWeight>();
|
||||||
bool auto = true;
|
bool auto = true;
|
||||||
|
|||||||
@@ -8,127 +8,135 @@ public class UnitUserAttrService(ISqlSugarClient DbClient, IRedisCache redis) :
|
|||||||
|
|
||||||
public async Task<UserAttrModel> GetUserAttrModel(string userId, string scene = "Default")
|
public async Task<UserAttrModel> GetUserAttrModel(string userId, string scene = "Default")
|
||||||
{
|
{
|
||||||
UserAttrModel result = new UserAttrModel();
|
try
|
||||||
result.id = userId;
|
|
||||||
var userService = App.GetService<IUnitUserService>();
|
|
||||||
var userInfo = await userService.GetUserInfoByUserId(userId);
|
|
||||||
result.viceId = userInfo.userNo;
|
|
||||||
result.name = userInfo.nick;
|
|
||||||
result.area = (int)userInfo.areaId;
|
|
||||||
result.IsSystem = (int)userInfo.isSystem;
|
|
||||||
result.sex = userInfo.sex;
|
|
||||||
result.code = nameof(UserEnum.AttrCode.Person);
|
|
||||||
var unitAttr = await GetUserAttr(userId);
|
|
||||||
result.lev = (int)unitAttr.lev;
|
|
||||||
result.minAtk = (int)unitAttr.minAtk;
|
|
||||||
result.maxAtk = (int)unitAttr.maxAtk;
|
|
||||||
result.defense = (int)unitAttr.defense;
|
|
||||||
result.agility = (int)unitAttr.agility;
|
|
||||||
result.upBlood = (int)unitAttr.upBlood;
|
|
||||||
result.upMorale = (int)unitAttr.upMorale;
|
|
||||||
|
|
||||||
List<AttrItem> ExtendAttrData = new List<AttrItem>();
|
|
||||||
|
|
||||||
#region 构造基础加层体系
|
|
||||||
|
|
||||||
UserAttrModel temp = new UserAttrModel();
|
|
||||||
temp.minAtk = (int)unitAttr.minAtk;
|
|
||||||
temp.maxAtk = (int)unitAttr.maxAtk;
|
|
||||||
temp.defense = (int)unitAttr.defense;
|
|
||||||
temp.agility = (int)unitAttr.agility;
|
|
||||||
temp.upBlood = (int)unitAttr.upBlood;
|
|
||||||
temp.upMorale = (int)unitAttr.upMorale;
|
|
||||||
|
|
||||||
var equService = App.GetService<IGameEquService>();
|
|
||||||
var equTemp = await equService.GetUserEquAttrModel(userId);
|
|
||||||
temp = GameAttrTool.GetRoleAttrTempMerge(temp, equTemp);
|
|
||||||
//套装加层
|
|
||||||
var suitAttr = await equService.GetUserEquSuitAttrInfo(userId);
|
|
||||||
ExtendAttrData.AddRange(suitAttr);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region 参数
|
|
||||||
|
|
||||||
int minAtk = 0;
|
|
||||||
int maxAtk = 0;
|
|
||||||
int Agility = 0;
|
|
||||||
int Defense = 0;
|
|
||||||
int upBlood = 0;
|
|
||||||
int upMorale = 0;
|
|
||||||
|
|
||||||
#endregion 参数
|
|
||||||
|
|
||||||
#region 队伍加层
|
|
||||||
|
|
||||||
var teamService = App.GetService<IGameTeamService>();
|
|
||||||
var MyTeam = await teamService.GetUserTeamInfo(userId);
|
|
||||||
if (MyTeam.state == 1)
|
|
||||||
{
|
{
|
||||||
int teamCount = MyTeam.user.Count(it => it.isOnline == 1);
|
UserAttrModel result = new UserAttrModel();
|
||||||
if (teamCount > 0)
|
result.id = userId;
|
||||||
|
var userService = App.GetService<IUnitUserService>();
|
||||||
|
var userInfo = await userService.GetUserInfoByUserId(userId);
|
||||||
|
result.viceId = userInfo.userNo;
|
||||||
|
result.name = userInfo.nick;
|
||||||
|
result.area = (int)userInfo.areaId;
|
||||||
|
result.IsSystem = (int)userInfo.isSystem;
|
||||||
|
result.sex = userInfo.sex;
|
||||||
|
result.code = nameof(UserEnum.AttrCode.Person);
|
||||||
|
var unitAttr = await GetUserAttr(userId);
|
||||||
|
result.lev = (int)unitAttr.lev;
|
||||||
|
result.minAtk = (int)unitAttr.minAtk;
|
||||||
|
result.maxAtk = (int)unitAttr.maxAtk;
|
||||||
|
result.defense = (int)unitAttr.defense;
|
||||||
|
result.agility = (int)unitAttr.agility;
|
||||||
|
result.upBlood = (int)unitAttr.upBlood;
|
||||||
|
result.upMorale = (int)unitAttr.upMorale;
|
||||||
|
|
||||||
|
List<AttrItem> ExtendAttrData = new List<AttrItem>();
|
||||||
|
|
||||||
|
#region 构造基础加层体系
|
||||||
|
|
||||||
|
UserAttrModel temp = new UserAttrModel();
|
||||||
|
temp.minAtk = (int)unitAttr.minAtk;
|
||||||
|
temp.maxAtk = (int)unitAttr.maxAtk;
|
||||||
|
temp.defense = (int)unitAttr.defense;
|
||||||
|
temp.agility = (int)unitAttr.agility;
|
||||||
|
temp.upBlood = (int)unitAttr.upBlood;
|
||||||
|
temp.upMorale = (int)unitAttr.upMorale;
|
||||||
|
|
||||||
|
var equService = App.GetService<IGameEquService>();
|
||||||
|
var equTemp = await equService.GetUserEquAttrModel(userId);
|
||||||
|
temp = GameAttrTool.GetRoleAttrTempMerge(temp, equTemp);
|
||||||
|
//套装加层
|
||||||
|
var suitAttr = await equService.GetUserEquSuitAttrInfo(userId);
|
||||||
|
ExtendAttrData.AddRange(suitAttr);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 参数
|
||||||
|
|
||||||
|
int minAtk = 0;
|
||||||
|
int maxAtk = 0;
|
||||||
|
int Agility = 0;
|
||||||
|
int Defense = 0;
|
||||||
|
int upBlood = 0;
|
||||||
|
int upMorale = 0;
|
||||||
|
|
||||||
|
#endregion 参数
|
||||||
|
|
||||||
|
#region 队伍加层
|
||||||
|
|
||||||
|
var teamService = App.GetService<IGameTeamService>();
|
||||||
|
var MyTeam = await teamService.GetUserTeamInfo(userId);
|
||||||
|
if (MyTeam.state == 1)
|
||||||
{
|
{
|
||||||
decimal teamAdd = 0.05m * teamCount;
|
int teamCount = MyTeam.user.Count(it => it.isOnline == 1);
|
||||||
teamAdd = teamAdd > 0.2m ? 0.2m : teamAdd;
|
if (teamCount > 0)
|
||||||
minAtk += Convert.ToInt32(temp.minAtk * teamAdd);
|
{
|
||||||
maxAtk += Convert.ToInt32(temp.maxAtk * teamAdd);
|
decimal teamAdd = 0.05m * teamCount;
|
||||||
Defense += Convert.ToInt32(temp.defense * teamAdd);
|
teamAdd = teamAdd > 0.2m ? 0.2m : teamAdd;
|
||||||
result.atkTips += $"(队+{Convert.ToInt32(teamAdd * 100)}%)";
|
minAtk += Convert.ToInt32(temp.minAtk * teamAdd);
|
||||||
result.defTips += $"(队+{Convert.ToInt32(teamAdd * 100)}%)";
|
maxAtk += Convert.ToInt32(temp.maxAtk * teamAdd);
|
||||||
|
Defense += Convert.ToInt32(temp.defense * teamAdd);
|
||||||
|
result.atkTips += $"(队+{Convert.ToInt32(teamAdd * 100)}%)";
|
||||||
|
result.defTips += $"(队+{Convert.ToInt32(teamAdd * 100)}%)";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region Buff加层
|
||||||
|
|
||||||
|
var MyState = await GetUserStateData(userId, scene);
|
||||||
|
if (MyState.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var item in MyState)
|
||||||
|
{
|
||||||
|
ExtendAttrData.AddRange(item.attr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 加层处理
|
||||||
|
|
||||||
|
var otTemp = GameAttrTool.GetRoleAttrTemp(temp, ExtendAttrData);
|
||||||
|
|
||||||
|
result = GameAttrTool.GetRoleAttrTempMerge(result, otTemp); //加层其他
|
||||||
|
result = GameAttrTool.GetRoleAttrTempMerge(result, temp); //加层其他
|
||||||
|
result.minAtk += minAtk;
|
||||||
|
result.maxAtk += maxAtk;
|
||||||
|
result.defense += Defense;
|
||||||
|
result.agility += Agility;
|
||||||
|
result.upBlood += upBlood;
|
||||||
|
result.upMorale += upMorale;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 数据效验
|
||||||
|
|
||||||
|
var userBlood = await GetUserBlood(userId);
|
||||||
|
result.blood = (int)userBlood.blood;
|
||||||
|
|
||||||
|
//士气
|
||||||
|
var userMorale = await GetUserMorale(userId);
|
||||||
|
result.morale = (int)userMorale.morale;
|
||||||
|
|
||||||
|
//负面状态处理
|
||||||
|
var loadState = await GetUserLoadState(userId);
|
||||||
|
result = await GameAttrTool.CheckRoleLoadBuff(result, loadState);
|
||||||
|
result = await ReviseUserRoleAttr(result);
|
||||||
|
return result;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region Buff加层
|
|
||||||
|
|
||||||
var MyState = await GetUserStateData(userId, scene);
|
|
||||||
if (MyState.Count > 0)
|
|
||||||
{
|
{
|
||||||
foreach (var item in MyState)
|
Console.WriteLine($"错误ID:{userId},错误信息:{e.Message}");
|
||||||
{
|
throw;
|
||||||
ExtendAttrData.AddRange(item.attr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region 加层处理
|
|
||||||
|
|
||||||
var otTemp = GameAttrTool.GetRoleAttrTemp(temp, ExtendAttrData);
|
|
||||||
|
|
||||||
result = GameAttrTool.GetRoleAttrTempMerge(result, otTemp); //加层其他
|
|
||||||
result = GameAttrTool.GetRoleAttrTempMerge(result, temp); //加层其他
|
|
||||||
result.minAtk += minAtk;
|
|
||||||
result.maxAtk += maxAtk;
|
|
||||||
result.defense += Defense;
|
|
||||||
result.agility += Agility;
|
|
||||||
result.upBlood += upBlood;
|
|
||||||
result.upMorale += upMorale;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region 数据效验
|
|
||||||
|
|
||||||
var userBlood = await GetUserBlood(userId);
|
|
||||||
result.blood = (int)userBlood.blood;
|
|
||||||
|
|
||||||
//士气
|
|
||||||
var userMorale = await GetUserMorale(userId);
|
|
||||||
result.morale = (int)userMorale.morale;
|
|
||||||
|
|
||||||
//负面状态处理
|
|
||||||
var loadState = await GetUserLoadState(userId);
|
|
||||||
result = await GameAttrTool.CheckRoleLoadBuff(result, loadState);
|
|
||||||
result = await ReviseUserRoleAttr(result);
|
|
||||||
return result;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<UserAttrModel> ReviseUserRoleAttr(UserAttrModel result)
|
private async Task<UserAttrModel> ReviseUserRoleAttr(UserAttrModel result)
|
||||||
|
|||||||
@@ -112,6 +112,11 @@ public class UnitUserWeight(ISqlSugarClient DbClient, IRedisCache redis) : IUnit
|
|||||||
|
|
||||||
public async Task<bool> CheckUserWeight(string userId, int useWeight)
|
public async Task<bool> CheckUserWeight(string userId, int useWeight)
|
||||||
{
|
{
|
||||||
|
if (useWeight <= 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool result = false;
|
bool result = false;
|
||||||
var weightInfo = await GetUserWeightInfo(userId);
|
var weightInfo = await GetUserWeightInfo(userId);
|
||||||
if (weightInfo != null)
|
if (weightInfo != null)
|
||||||
|
|||||||
Reference in New Issue
Block a user