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

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}");
}
return string.Join("", needy.Select(kv => kv.Key + " * " + kv.Value));
return string.Join("", strings);
}
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)
{
// 考虑团队伤害排名,优先高伤害的
@ -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;
@ -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 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)
{
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++)
{
Item item;
@ -2060,17 +2061,10 @@ namespace Oshima.FunGame.OshimaServers.Service
return daily.ToString();
}
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();
}
else
{
return "商品列表为空,请使用【每日商店】指令来获取商品列表!";
}
}
}
public static void SetLastStore(User? user, bool isDaily, string storeRegion, string storeName)
@ -2139,7 +2133,7 @@ namespace Oshima.FunGame.OshimaServers.Service
foreach (Item item in goods.Items)
{
if (item is )
if (item.Name == nameof())
{
int exploreTimes = FunGameConstant.MaxExploreTimes + count;
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}" +
$"\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
{
@ -2689,7 +2689,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
else
{
return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足突破条件!";
return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足突破条件!所需材料:\r\n{FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1, user)}";
}
}
else
@ -2707,7 +2707,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
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)
{
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
{
@ -2729,7 +2729,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
return $"突破成功!角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}。" +
$"{(character.LevelBreak + 1 == General.GameplayEquilibriumConstant.LevelBreakList.Count ?
"\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
@ -3571,14 +3571,14 @@ namespace Oshima.FunGame.WebAPI.Controllers
{
if (character.Level < needCount)
{
return $"角色 [ {character} ] 等级不足 {needCount} 级,无法{isStudy}此技能!";
return $"角色 [ {character} ] 等级不足 {needCount} 级(当前 {character.Level} 级),无法{isStudy}此技能!";
}
}
else if (key == "角色突破进度")
{
if (character.LevelBreak + 1 < needCount)
{
return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶,无法{isStudy}此技能!";
return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶(当前 {character.LevelBreak + 1} 等阶),无法{isStudy}此技能!";
}
}
else if (key == General.GameplayEquilibriumConstant.InGameCurrency)
@ -3589,7 +3589,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
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)
@ -3600,7 +3600,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
else
{
return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足{isStudy}条件!";
return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足{isStudy}条件!所需材料:\r\n{FunGameService.GetSkillLevelUpNeedy(skill.Level + 1, user, character)}";
}
}
else
@ -3618,7 +3618,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
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)
{
return $"角色 [ {character} ] 等级不足 {needCount} 级,无法升级此技能!";
return $"角色 [ {character} ] 等级不足 {needCount} 级(当前 {character.Level} 级),无法升级此技能!";
}
}
else if (key == "角色突破进度")
{
if (character.LevelBreak + 1 < needCount)
{
return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶,无法升级此技能!";
return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶(当前 {character.LevelBreak + 1} 等阶),无法升级此技能!";
}
}
else if (key == General.GameplayEquilibriumConstant.InGameCurrency)
@ -3762,7 +3762,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
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)
@ -3773,7 +3773,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
else
{
return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足升级条件!";
return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足升级条件!所需材料:\r\n{FunGameService.GetSkillLevelUpNeedy(na.Level + 1, user, character)}";
}
}
else
@ -3791,7 +3791,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
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;
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需要注意探索难度星级一比一兑换探索许可并且参与探索的角色都需要消耗相同数量的探索许可。";
}
}
else
{
exploreTimes = FunGameConstant.MaxExploreTimes;
}
}
else
{