添加团队死斗模式

This commit is contained in:
milimoe 2024-11-03 23:16:09 +08:00
parent 896aadf3f2
commit cb09bca88d
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
5 changed files with 58 additions and 19 deletions

View File

@ -60,12 +60,12 @@ namespace Oshima.Core.Controllers
builder.AppendLine($"总计前三数:{stats.Top3s}");
builder.AppendLine($"总计败场数:{stats.Loses}");
List<string> names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())];
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%#{names.IndexOf(character.GetName())}");
List<string> names = [.. FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())];
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%#{names.IndexOf(character.GetName()) + 1}");
builder.AppendLine($"前三率:{stats.Top3rates * 100:0.##}%");
names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())];
builder.AppendLine($"技术得分:{stats.Rating:0.##}#{names.IndexOf(character.GetName())}");
names = [.. FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())];
builder.AppendLine($"技术得分:{stats.Rating:0.##}#{names.IndexOf(character.GetName()) + 1}");
builder.AppendLine($"上次排名:{stats.LastRank} / 场均名次:{stats.AvgRank}");
@ -112,9 +112,9 @@ namespace Oshima.Core.Controllers
builder.AppendLine($"总计败场数:{stats.Loses}");
List<string> names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())];
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%#{names.IndexOf(character.GetName())}");
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%#{names.IndexOf(character.GetName()) + 1}");
names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())];
builder.AppendLine($"技术得分:{stats.Rating:0.##}#{names.IndexOf(character.GetName())}");
builder.AppendLine($"技术得分:{stats.Rating:0.##}#{names.IndexOf(character.GetName()) + 1}");
return NetworkUtility.JsonSerialize(builder.ToString());
}

View File

@ -33,7 +33,6 @@ namespace Oshima.Core.Utils
if (IsRuning) return ["游戏正在模拟中,请勿重复请求!"];
List<string> result = [];
int deaths = 0;
Msg = "";
IsRuning = true;
@ -283,6 +282,11 @@ namespace Oshima.Core.Utils
// 创建顺序表并排序
ActionQueue actionQueue = new(characters, isTeam, WriteLine);
if (isTeam)
{
actionQueue.MaxRespawnTimes = -1;
actionQueue.MaxScoreToWin = 30;
}
if (PrintOut) Console.WriteLine();
// 总游戏时长
@ -296,7 +300,7 @@ namespace Oshima.Core.Utils
int = 0;
(actionQueue, , , , );
if (isWeb) result.Add("=== 空投 ===\r\n" + Msg);
double = 40;
double = isTeam ? 80 : 40;
if ( < 4)
{
++;
@ -362,11 +366,12 @@ namespace Oshima.Core.Utils
if (PrintOut) Console.WriteLine();
// 总回合数
int maxRound = isTeam ? 9999 : 999;
int i = 1;
while (i < 999)
while (i < maxRound)
{
Msg = "";
if (i == 998)
if (i == maxRound - 1)
{
if (isTeam)
{
@ -426,7 +431,7 @@ namespace Oshima.Core.Utils
Msg = "";
(actionQueue, , , , );
if (isWeb) result.Add("=== 空投 ===\r\n" + Msg);
= 40;
= isTeam ? 100 : 40;
if ( < 4)
{
++;
@ -445,9 +450,8 @@ namespace Oshima.Core.Utils
}
}
if (actionQueue.Eliminated.Count > deaths)
if (actionQueue.LastRound.Targets.Any(c => c.HP <= 0))
{
deaths = actionQueue.Eliminated.Count;
if (!isWeb)
{
string roundMsg = Msg;
@ -489,7 +493,7 @@ namespace Oshima.Core.Utils
CharacterStatistics stats = actionQueue.CharacterStatistics[character];
StringBuilder builder = new();
builder.AppendLine($"{(isWeb ? count + "." : (isTeam ? "[ " + actionQueue.GetTeamFromEliminated(character)?.Name + " ]" ?? "" : ""))} [ {character.ToStringWithLevel()} ]");
builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}");
builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / " + stats.Deaths : "")}");
builder.AppendLine($"存活时长:{stats.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
@ -511,7 +515,7 @@ namespace Oshima.Core.Utils
StringBuilder builder = new();
CharacterStatistics stats = actionQueue.CharacterStatistics[character];
builder.AppendLine($"{(isWeb ? count + "." : ("[ " + actionQueue.GetTeamFromEliminated(character)?.Name + " ]" ?? ""))} [ {character.ToStringWithLevel()} ]");
builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}");
builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / " + stats.Deaths : "")}");
builder.AppendLine($"存活时长:{stats.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
@ -539,7 +543,7 @@ namespace Oshima.Core.Utils
StringBuilder builder = new();
CharacterStatistics stats = actionQueue.CharacterStatistics[character];
builder.AppendLine($"{(isWeb ? count + ". " : "")}[ {character.ToStringWithLevel()} ]");
builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}");
builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / " + stats.Deaths : "")}");
builder.AppendLine($"存活时长:{stats.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
@ -681,8 +685,9 @@ namespace Oshima.Core.Utils
if (d != null) .Add(d);
foreach (Item item in )
{
Item realItem = item.Copy(1);
Item realItem = item.Copy();
realItem.SetGamingQueue(queue);
realItem.SetLevel(1);
queue.Equip(character, realItem);
}
}

View File

@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"每次造成伤害都会随机减少对方 [ 10~25 ] 点能量值,对能量值低于一半的角色额外造成 30% 伤害。对于枯竭打击而言能量值大于100且小于150时视为低于一半。";
public override string Description => $"每次造成伤害都会随机减少对方 [ 7~15 ] 点能量值,对能量值低于一半的角色额外造成 30% 伤害。对于枯竭打击而言能量值大于100且小于150时视为低于一半。";
public override bool TargetSelf => true;
private bool = false;
@ -34,7 +34,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
if (character == Skill.Character && damageResult != DamageResult.Evaded && !)
{
// 减少能量
double EP = Random.Shared.Next(10, 25);
double EP = Random.Shared.Next(7, 15);
enemy.EP -= EP;
WriteLine($"[ {character} ] 发动了枯竭打击![ {enemy} ] 的能量值被减少了 {EP:0.##} 点!现有能量:{enemy.EP:0.##}。");
// 额外伤害

View File

@ -17,6 +17,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
Effects.Add(new (this));
}
public override List<Character> SelectTargets(Character caster, List<Character> enemys, List<Character> teammates)
{
return [.. enemys];
}
}
public class (Skill skill) : Effect(skill)

View File

@ -1,5 +1,34 @@
namespace Oshima.FunGame.OshimaModules.Skills
{
/**
* =
* =
* =
* =
* =
* =
* =
* =
*
* = ·,
* = ·,
* = ·+,
* = ·+,
* = ·,
* = ,
* = +,
* = +,
* = ,
* = ,
* = ,
*
* = ·,
* = ·,
* = ·/,
* = ·/,
* = ·,
* = ·//
*/
public enum MagicID : long
{
= 1001,