diff --git a/Service/Application.Domain/Enum/GoodsEnum.cs b/Service/Application.Domain/Enum/GoodsEnum.cs index 34be1c5..ec55b1f 100644 --- a/Service/Application.Domain/Enum/GoodsEnum.cs +++ b/Service/Application.Domain/Enum/GoodsEnum.cs @@ -24,6 +24,7 @@ public static class GoodsEnum Practise,//修炼道具 Durability,//耐久道具 AddExp,//扣除经验获得道具 + Collect,//收集的物品 GetExp//使用后获得经验 } diff --git a/Service/Application.Domain/Services/Service/Fight/GameFightService.cs b/Service/Application.Domain/Services/Service/Fight/GameFightService.cs index 94b4ef6..88afc10 100644 --- a/Service/Application.Domain/Services/Service/Fight/GameFightService.cs +++ b/Service/Application.Domain/Services/Service/Fight/GameFightService.cs @@ -448,7 +448,7 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa List AddMapGoods = new List(); var opGoods = JsonConvert.DeserializeObject>(fightAward.award.ToString()); string addGoodsUser = fightData.areaCode == nameof(GameEnum.AreaCode.Public) ? "0" : fightData.winUser; - if (userConfig.autoBag == 1) + if (userConfig.autoBag != 0) { var weightService = App.GetService(); bool auto = true; diff --git a/Service/Application.Domain/Services/Service/User/UnitUserAttrService.cs b/Service/Application.Domain/Services/Service/User/UnitUserAttrService.cs index 72c6ada..0a5b677 100644 --- a/Service/Application.Domain/Services/Service/User/UnitUserAttrService.cs +++ b/Service/Application.Domain/Services/Service/User/UnitUserAttrService.cs @@ -8,127 +8,135 @@ public class UnitUserAttrService(ISqlSugarClient DbClient, IRedisCache redis) : public async Task GetUserAttrModel(string userId, string scene = "Default") { - UserAttrModel result = new UserAttrModel(); - result.id = userId; - var userService = App.GetService(); - 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 ExtendAttrData = new List(); - - #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(); - 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(); - var MyTeam = await teamService.GetUserTeamInfo(userId); - if (MyTeam.state == 1) + try { - int teamCount = MyTeam.user.Count(it => it.isOnline == 1); - if (teamCount > 0) + UserAttrModel result = new UserAttrModel(); + result.id = userId; + var userService = App.GetService(); + 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 ExtendAttrData = new List(); + + #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(); + 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(); + var MyTeam = await teamService.GetUserTeamInfo(userId); + if (MyTeam.state == 1) { - decimal teamAdd = 0.05m * teamCount; - teamAdd = teamAdd > 0.2m ? 0.2m : teamAdd; - minAtk += Convert.ToInt32(temp.minAtk * teamAdd); - maxAtk += Convert.ToInt32(temp.maxAtk * teamAdd); - Defense += Convert.ToInt32(temp.defense * teamAdd); - result.atkTips += $"(队+{Convert.ToInt32(teamAdd * 100)}%)"; - result.defTips += $"(队+{Convert.ToInt32(teamAdd * 100)}%)"; + int teamCount = MyTeam.user.Count(it => it.isOnline == 1); + if (teamCount > 0) + { + decimal teamAdd = 0.05m * teamCount; + teamAdd = teamAdd > 0.2m ? 0.2m : teamAdd; + minAtk += Convert.ToInt32(temp.minAtk * teamAdd); + 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; } - - #endregion - - - #region Buff加层 - - var MyState = await GetUserStateData(userId, scene); - if (MyState.Count > 0) + catch (Exception e) { - foreach (var item in MyState) - { - ExtendAttrData.AddRange(item.attr); - } + Console.WriteLine($"错误ID:{userId},错误信息:{e.Message}"); + throw; } - - #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 ReviseUserRoleAttr(UserAttrModel result) diff --git a/Service/Application.Domain/Services/Service/User/UnitUserWeight.cs b/Service/Application.Domain/Services/Service/User/UnitUserWeight.cs index 467a278..9ab4b17 100644 --- a/Service/Application.Domain/Services/Service/User/UnitUserWeight.cs +++ b/Service/Application.Domain/Services/Service/User/UnitUserWeight.cs @@ -112,6 +112,11 @@ public class UnitUserWeight(ISqlSugarClient DbClient, IRedisCache redis) : IUnit public async Task CheckUserWeight(string userId, int useWeight) { + if (useWeight <= 0) + { + return true; + } + bool result = false; var weightInfo = await GetUserWeightInfo(userId); if (weightInfo != null)