This commit is contained in:
2026-07-14 21:15:27 +08:00
parent 73850ff7a2
commit 77fcf4ea47
4 changed files with 130 additions and 116 deletions

View File

@@ -448,7 +448,7 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
List<TowerGet> AddMapGoods = new List<TowerGet>();
var opGoods = JsonConvert.DeserializeObject<List<TowerGet>>(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<IUnitUserWeight>();
bool auto = true;

View File

@@ -8,127 +8,135 @@ public class UnitUserAttrService(ISqlSugarClient DbClient, IRedisCache redis) :
public async Task<UserAttrModel> GetUserAttrModel(string userId, string scene = "Default")
{
UserAttrModel result = new UserAttrModel();
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)
try
{
int teamCount = MyTeam.user.Count(it => it.isOnline == 1);
if (teamCount > 0)
UserAttrModel result = new UserAttrModel();
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;
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<UserAttrModel> ReviseUserRoleAttr(UserAttrModel result)

View File

@@ -112,6 +112,11 @@ public class UnitUserWeight(ISqlSugarClient DbClient, IRedisCache redis) : IUnit
public async Task<bool> CheckUserWeight(string userId, int useWeight)
{
if (useWeight <= 0)
{
return true;
}
bool result = false;
var weightInfo = await GetUserWeightInfo(userId);
if (weightInfo != null)