还原技术得分算法,优化了突破、升级信息的材料提示

This commit is contained in:
milimoe 2025-07-20 02:18:11 +08:00
parent d7aee8b9ed
commit afe506793b
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
2 changed files with 26 additions and 36 deletions

View File

@ -1370,7 +1370,7 @@ namespace Oshima.FunGame.OshimaServers.Service
} }
strings.Add($"{key} * {value}{count} / {value}"); strings.Add($"{key} * {value}{count} / {value}");
} }
return string.Join("", needy.Select(kv => kv.Key + " * " + kv.Value)); return string.Join("", strings);
} }
return ""; return "";
} }
@ -1728,7 +1728,7 @@ namespace Oshima.FunGame.OshimaServers.Service
} }
// 伤害贡献 // 伤害贡献
double damageContribution = Math.Log(1 + stats.DamagePerSecond / 40); double damageContribution = Math.Log(1 + Math.Min(2, (stats.TotalDamage / (stats.TotalTakenDamage + 1.75))));
if (team != null && teammateStats != null) if (team != null && teammateStats != null)
{ {
// 考虑团队伤害排名,优先高伤害的 // 考虑团队伤害排名,优先高伤害的
@ -1742,7 +1742,7 @@ namespace Oshima.FunGame.OshimaServers.Service
} }
// 存活时间贡献 // 存活时间贡献
double liveTimeContribution = Math.Log(1 + stats.LiveTime / ((stats.TotalTakenDamage == 0 ? stats.TotalTakenDamage : 500) + stats.Deaths + 1) * 60); double liveTimeContribution = Math.Log(1 + (stats.LiveTime / (stats.TotalTakenDamage + 0.01) * 100));
// 团队模式参团率加成 // 团队模式参团率加成
double teamContribution = 0; double teamContribution = 0;
@ -1757,7 +1757,7 @@ namespace Oshima.FunGame.OshimaServers.Service
} }
// 权重设置 // 权重设置
double k = stats.Deaths > 0 ? 0.2 : 0.06; // 伤害贡献权重 double k = stats.Deaths > 0 ? 0.2 : 0.075; // 伤害贡献权重
double l = stats.Deaths > 0 ? 0.2 : 0.05; // 存活时间权重 double l = stats.Deaths > 0 ? 0.2 : 0.05; // 存活时间权重
double t = stats.Deaths > 0 ? 0.2 : 0.075; // 参团率权重 double t = stats.Deaths > 0 ? 0.2 : 0.075; // 参团率权重
@ -2010,10 +2010,11 @@ namespace Oshima.FunGame.OshimaServers.Service
public static string CheckDailyStore(EntityModuleConfig<Store> stores, User user) public static string CheckDailyStore(EntityModuleConfig<Store> stores, User user)
{ {
if (stores.Count == 0) Store? daily = stores.Get("daily");
if (daily is null)
{ {
// 生成每日商店 // 生成每日商店
Store daily = new($"{user.Username}的每日商店"); daily = new($"{user.Username}的每日商店");
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
{ {
Item item; Item item;
@ -2061,15 +2062,8 @@ namespace Oshima.FunGame.OshimaServers.Service
} }
else else
{ {
if (stores.Count > 0 && stores.Where(kv => kv.Key == "daily").Select(kv => kv.Value).FirstOrDefault() is Store daily) SetLastStore(user, true, "", "");
{ return daily.ToString();
SetLastStore(user, true, "", "");
return daily.ToString();
}
else
{
return "商品列表为空,请使用【每日商店】指令来获取商品列表!";
}
} }
} }
@ -2139,7 +2133,7 @@ namespace Oshima.FunGame.OshimaServers.Service
foreach (Item item in goods.Items) foreach (Item item in goods.Items)
{ {
if (item is ) if (item.Name == nameof())
{ {
int exploreTimes = FunGameConstant.MaxExploreTimes + count; int exploreTimes = FunGameConstant.MaxExploreTimes + count;
if (pc.TryGetValue("exploreTimes", out object? value) && int.TryParse(value.ToString(), out exploreTimes)) if (pc.TryGetValue("exploreTimes", out object? value) && int.TryParse(value.ToString(), out exploreTimes))

View File

@ -2636,7 +2636,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
return $"角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}" + return $"角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}" +
$"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级,所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1, user); $"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级(当前 {character.Level} 级),所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1, user);
} }
else else
{ {
@ -2689,7 +2689,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
else else
{ {
return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足突破条件!"; return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足突破条件!所需材料:\r\n{FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1, user)}";
} }
} }
else else
@ -2707,7 +2707,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
else else
{ {
return $"你的物品【{key}】数量不足 {needCount} 呢,不满足突破条件!"; return $"你的物品【{key}】数量不足 {needCount} 呢,不满足突破条件!所需材料:\r\n{FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1, user)}";
} }
} }
} }
@ -2719,7 +2719,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
if (originalBreak == character.LevelBreak) if (originalBreak == character.LevelBreak)
{ {
return $"突破失败!角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}。" + return $"突破失败!角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}。" +
$"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级,所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1, user); $"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级(当前 {character.Level} 级),所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1, user);
} }
else else
{ {
@ -2729,7 +2729,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
return $"突破成功!角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}。" + return $"突破成功!角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}。" +
$"{(character.LevelBreak + 1 == General.GameplayEquilibriumConstant.LevelBreakList.Count ? $"{(character.LevelBreak + 1 == General.GameplayEquilibriumConstant.LevelBreakList.Count ?
"\r\n该角色已完成全部的突破阶段恭喜" : "\r\n该角色已完成全部的突破阶段恭喜" :
$"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级,所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1, user))}"; $"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级(当前 {character.Level} 级),所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1, user))}";
} }
} }
else else
@ -3571,14 +3571,14 @@ namespace Oshima.FunGame.WebAPI.Controllers
{ {
if (character.Level < needCount) if (character.Level < needCount)
{ {
return $"角色 [ {character} ] 等级不足 {needCount} 级,无法{isStudy}此技能!"; return $"角色 [ {character} ] 等级不足 {needCount} 级(当前 {character.Level} 级),无法{isStudy}此技能!";
} }
} }
else if (key == "角色突破进度") else if (key == "角色突破进度")
{ {
if (character.LevelBreak + 1 < needCount) if (character.LevelBreak + 1 < needCount)
{ {
return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶,无法{isStudy}此技能!"; return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶(当前 {character.LevelBreak + 1} 等阶),无法{isStudy}此技能!";
} }
} }
else if (key == General.GameplayEquilibriumConstant.InGameCurrency) else if (key == General.GameplayEquilibriumConstant.InGameCurrency)
@ -3589,7 +3589,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
else else
{ {
return $"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {needCount} 呢,不满足{isStudy}条件!"; return $"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {needCount} 呢,不满足{isStudy}条件!所需材料:\r\n{FunGameService.GetSkillLevelUpNeedy(skill.Level + 1, user, character)}";
} }
} }
else if (key == General.GameplayEquilibriumConstant.InGameMaterial) else if (key == General.GameplayEquilibriumConstant.InGameMaterial)
@ -3600,7 +3600,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
else else
{ {
return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足{isStudy}条件!"; return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足{isStudy}条件!所需材料:\r\n{FunGameService.GetSkillLevelUpNeedy(skill.Level + 1, user, character)}";
} }
} }
else else
@ -3618,7 +3618,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
else else
{ {
return $"你的物品【{key}】数量不足 {needCount} 呢,不满足{isStudy}条件!"; return $"你的物品【{key}】数量不足 {needCount} 呢,不满足{isStudy}条件!所需材料:\r\n{FunGameService.GetSkillLevelUpNeedy(skill.Level + 1, user, character)}";
} }
} }
} }
@ -3744,14 +3744,14 @@ namespace Oshima.FunGame.WebAPI.Controllers
{ {
if (character.Level < needCount) if (character.Level < needCount)
{ {
return $"角色 [ {character} ] 等级不足 {needCount} 级,无法升级此技能!"; return $"角色 [ {character} ] 等级不足 {needCount} 级(当前 {character.Level} 级),无法升级此技能!";
} }
} }
else if (key == "角色突破进度") else if (key == "角色突破进度")
{ {
if (character.LevelBreak + 1 < needCount) if (character.LevelBreak + 1 < needCount)
{ {
return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶,无法升级此技能!"; return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶(当前 {character.LevelBreak + 1} 等阶),无法升级此技能!";
} }
} }
else if (key == General.GameplayEquilibriumConstant.InGameCurrency) else if (key == General.GameplayEquilibriumConstant.InGameCurrency)
@ -3762,7 +3762,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
else else
{ {
return $"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {needCount} 呢,不满足升级条件!"; return $"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {needCount} 呢,不满足升级条件!所需材料:\r\n{FunGameService.GetSkillLevelUpNeedy(na.Level + 1, user, character)}";
} }
} }
else if (key == General.GameplayEquilibriumConstant.InGameMaterial) else if (key == General.GameplayEquilibriumConstant.InGameMaterial)
@ -3773,7 +3773,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
else else
{ {
return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足升级条件!"; return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足升级条件!所需材料:\r\n{FunGameService.GetSkillLevelUpNeedy(na.Level + 1, user, character)}";
} }
} }
else else
@ -3791,7 +3791,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
else else
{ {
return $"你的物品【{key}】数量不足 {needCount} 呢,不满足升级条件!"; return $"你的物品【{key}】数量不足 {needCount} 呢,不满足升级条件!所需材料:\r\n{FunGameService.GetSkillLevelUpNeedy(na.Level + 1, user, character)}";
} }
} }
} }
@ -5627,7 +5627,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
// 检查探索许可 // 检查探索许可
int exploreTimes = 0; int exploreTimes = FunGameConstant.MaxExploreTimes;
int reduce = 1; int reduce = 1;
if (regionid > 0 && regionid <= FunGameConstant.Regions.Count && FunGameConstant.Regions.FirstOrDefault(r => r.Id == regionid) is OshimaRegion region) if (regionid > 0 && regionid <= FunGameConstant.Regions.Count && FunGameConstant.Regions.FirstOrDefault(r => r.Id == regionid) is OshimaRegion region)
{ {
@ -5653,10 +5653,6 @@ namespace Oshima.FunGame.WebAPI.Controllers
$"\r\n需要注意探索难度星级一比一兑换探索许可并且参与探索的角色都需要消耗相同数量的探索许可。"; $"\r\n需要注意探索难度星级一比一兑换探索许可并且参与探索的角色都需要消耗相同数量的探索许可。";
} }
} }
else
{
exploreTimes = FunGameConstant.MaxExploreTimes;
}
} }
else else
{ {