mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2025-08-02 12:02:56 +00:00
添加团队死斗模式
This commit is contained in:
parent
896aadf3f2
commit
cb09bca88d
@ -60,12 +60,12 @@ namespace Oshima.Core.Controllers
|
|||||||
builder.AppendLine($"总计前三数:{stats.Top3s}");
|
builder.AppendLine($"总计前三数:{stats.Top3s}");
|
||||||
builder.AppendLine($"总计败场数:{stats.Loses}");
|
builder.AppendLine($"总计败场数:{stats.Loses}");
|
||||||
|
|
||||||
List<string> names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.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())})");
|
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%(#{names.IndexOf(character.GetName()) + 1})");
|
||||||
builder.AppendLine($"前三率:{stats.Top3rates * 100:0.##}%");
|
builder.AppendLine($"前三率:{stats.Top3rates * 100:0.##}%");
|
||||||
|
|
||||||
names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())];
|
names = [.. FunGameSimulation.CharacterStatistics.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})");
|
||||||
|
|
||||||
builder.AppendLine($"上次排名:{stats.LastRank} / 场均名次:{stats.AvgRank}");
|
builder.AppendLine($"上次排名:{stats.LastRank} / 场均名次:{stats.AvgRank}");
|
||||||
|
|
||||||
@ -112,9 +112,9 @@ namespace Oshima.Core.Controllers
|
|||||||
builder.AppendLine($"总计败场数:{stats.Loses}");
|
builder.AppendLine($"总计败场数:{stats.Loses}");
|
||||||
|
|
||||||
List<string> names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())];
|
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())];
|
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());
|
return NetworkUtility.JsonSerialize(builder.ToString());
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,6 @@ namespace Oshima.Core.Utils
|
|||||||
if (IsRuning) return ["游戏正在模拟中,请勿重复请求!"];
|
if (IsRuning) return ["游戏正在模拟中,请勿重复请求!"];
|
||||||
|
|
||||||
List<string> result = [];
|
List<string> result = [];
|
||||||
int deaths = 0;
|
|
||||||
Msg = "";
|
Msg = "";
|
||||||
|
|
||||||
IsRuning = true;
|
IsRuning = true;
|
||||||
@ -283,6 +282,11 @@ namespace Oshima.Core.Utils
|
|||||||
|
|
||||||
// 创建顺序表并排序
|
// 创建顺序表并排序
|
||||||
ActionQueue actionQueue = new(characters, isTeam, WriteLine);
|
ActionQueue actionQueue = new(characters, isTeam, WriteLine);
|
||||||
|
if (isTeam)
|
||||||
|
{
|
||||||
|
actionQueue.MaxRespawnTimes = -1;
|
||||||
|
actionQueue.MaxScoreToWin = 30;
|
||||||
|
}
|
||||||
if (PrintOut) Console.WriteLine();
|
if (PrintOut) Console.WriteLine();
|
||||||
|
|
||||||
// 总游戏时长
|
// 总游戏时长
|
||||||
@ -296,7 +300,7 @@ namespace Oshima.Core.Utils
|
|||||||
int 发放的饰品品质 = 0;
|
int 发放的饰品品质 = 0;
|
||||||
空投(actionQueue, 发放的武器品质, 发放的防具品质, 发放的鞋子品质, 发放的饰品品质);
|
空投(actionQueue, 发放的武器品质, 发放的防具品质, 发放的鞋子品质, 发放的饰品品质);
|
||||||
if (isWeb) result.Add("=== 空投 ===\r\n" + Msg);
|
if (isWeb) result.Add("=== 空投 ===\r\n" + Msg);
|
||||||
double 下一次空投 = 40;
|
double 下一次空投 = isTeam ? 80 : 40;
|
||||||
if (发放的武器品质 < 4)
|
if (发放的武器品质 < 4)
|
||||||
{
|
{
|
||||||
发放的武器品质++;
|
发放的武器品质++;
|
||||||
@ -362,11 +366,12 @@ namespace Oshima.Core.Utils
|
|||||||
if (PrintOut) Console.WriteLine();
|
if (PrintOut) Console.WriteLine();
|
||||||
|
|
||||||
// 总回合数
|
// 总回合数
|
||||||
|
int maxRound = isTeam ? 9999 : 999;
|
||||||
int i = 1;
|
int i = 1;
|
||||||
while (i < 999)
|
while (i < maxRound)
|
||||||
{
|
{
|
||||||
Msg = "";
|
Msg = "";
|
||||||
if (i == 998)
|
if (i == maxRound - 1)
|
||||||
{
|
{
|
||||||
if (isTeam)
|
if (isTeam)
|
||||||
{
|
{
|
||||||
@ -426,7 +431,7 @@ namespace Oshima.Core.Utils
|
|||||||
Msg = "";
|
Msg = "";
|
||||||
空投(actionQueue, 发放的武器品质, 发放的防具品质, 发放的鞋子品质, 发放的饰品品质);
|
空投(actionQueue, 发放的武器品质, 发放的防具品质, 发放的鞋子品质, 发放的饰品品质);
|
||||||
if (isWeb) result.Add("=== 空投 ===\r\n" + Msg);
|
if (isWeb) result.Add("=== 空投 ===\r\n" + Msg);
|
||||||
下一次空投 = 40;
|
下一次空投 = isTeam ? 100 : 40;
|
||||||
if (发放的武器品质 < 4)
|
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)
|
if (!isWeb)
|
||||||
{
|
{
|
||||||
string roundMsg = Msg;
|
string roundMsg = Msg;
|
||||||
@ -489,7 +493,7 @@ namespace Oshima.Core.Utils
|
|||||||
CharacterStatistics stats = actionQueue.CharacterStatistics[character];
|
CharacterStatistics stats = actionQueue.CharacterStatistics[character];
|
||||||
StringBuilder builder = new();
|
StringBuilder builder = new();
|
||||||
builder.AppendLine($"{(isWeb ? count + "." : (isTeam ? "[ " + actionQueue.GetTeamFromEliminated(character)?.Name + " ]" ?? "" : ""))} [ {character.ToStringWithLevel()} ]");
|
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.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
||||||
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
|
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
|
||||||
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
|
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
|
||||||
@ -511,7 +515,7 @@ namespace Oshima.Core.Utils
|
|||||||
StringBuilder builder = new();
|
StringBuilder builder = new();
|
||||||
CharacterStatistics stats = actionQueue.CharacterStatistics[character];
|
CharacterStatistics stats = actionQueue.CharacterStatistics[character];
|
||||||
builder.AppendLine($"{(isWeb ? count + "." : ("[ " + actionQueue.GetTeamFromEliminated(character)?.Name + " ]" ?? ""))} [ {character.ToStringWithLevel()} ]");
|
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.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
||||||
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
|
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
|
||||||
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
|
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
|
||||||
@ -539,7 +543,7 @@ namespace Oshima.Core.Utils
|
|||||||
StringBuilder builder = new();
|
StringBuilder builder = new();
|
||||||
CharacterStatistics stats = actionQueue.CharacterStatistics[character];
|
CharacterStatistics stats = actionQueue.CharacterStatistics[character];
|
||||||
builder.AppendLine($"{(isWeb ? count + ". " : "")}[ {character.ToStringWithLevel()} ]");
|
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.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
||||||
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
|
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
|
||||||
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
|
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
|
||||||
@ -681,8 +685,9 @@ namespace Oshima.Core.Utils
|
|||||||
if (d != null) 这次发放的空投.Add(d);
|
if (d != null) 这次发放的空投.Add(d);
|
||||||
foreach (Item item in 这次发放的空投)
|
foreach (Item item in 这次发放的空投)
|
||||||
{
|
{
|
||||||
Item realItem = item.Copy(1);
|
Item realItem = item.Copy();
|
||||||
realItem.SetGamingQueue(queue);
|
realItem.SetGamingQueue(queue);
|
||||||
|
realItem.SetLevel(1);
|
||||||
queue.Equip(character, realItem);
|
queue.Equip(character, realItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
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;
|
public override bool TargetSelf => true;
|
||||||
|
|
||||||
private bool 是否是嵌套伤害 = false;
|
private bool 是否是嵌套伤害 = false;
|
||||||
@ -34,7 +34,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
if (character == Skill.Character && damageResult != DamageResult.Evaded && !是否是嵌套伤害)
|
if (character == Skill.Character && damageResult != DamageResult.Evaded && !是否是嵌套伤害)
|
||||||
{
|
{
|
||||||
// 减少能量
|
// 减少能量
|
||||||
double EP = Random.Shared.Next(10, 25);
|
double EP = Random.Shared.Next(7, 15);
|
||||||
enemy.EP -= EP;
|
enemy.EP -= EP;
|
||||||
WriteLine($"[ {character} ] 发动了枯竭打击![ {enemy} ] 的能量值被减少了 {EP:0.##} 点!现有能量:{enemy.EP:0.##}。");
|
WriteLine($"[ {character} ] 发动了枯竭打击![ {enemy} ] 的能量值被减少了 {EP:0.##} 点!现有能量:{enemy.EP:0.##}。");
|
||||||
// 额外伤害
|
// 额外伤害
|
||||||
|
@ -17,6 +17,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
Effects.Add(new 能量毁灭特效(this));
|
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)
|
public class 能量毁灭特效(Skill skill) : Effect(skill)
|
||||||
|
@ -1,5 +1,34 @@
|
|||||||
namespace Oshima.FunGame.OshimaModules.Skills
|
namespace Oshima.FunGame.OshimaModules.Skills
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* 冰霜攻击 = 单体伤害
|
||||||
|
* 火之矢 = 单体伤害
|
||||||
|
* 水之矢 =单体伤害
|
||||||
|
* 石之锤 =单体伤害
|
||||||
|
* 风之轮 =单体伤害
|
||||||
|
* 心灵之霞 =单体伤害
|
||||||
|
* 次元上升 = 单体伤害
|
||||||
|
* 暗物质 = 单体伤害
|
||||||
|
*
|
||||||
|
* 回复术 = 我方·单体回复,
|
||||||
|
* 治愈术 = 我方·单体回复,
|
||||||
|
* 复苏术 = 我方·单体负面解除+回复,
|
||||||
|
* 圣灵术 = 我方·全体负面解除+回复,
|
||||||
|
* 时间加速 = 我方·单体速度提升,
|
||||||
|
* 时间减速 = 单体速度减少,
|
||||||
|
* 反魔法领域 = 全体封技+施法解除,
|
||||||
|
* 沉默十字 = 单体封技+施法解除,
|
||||||
|
* 虚弱领域 = 全体虚弱,
|
||||||
|
* 混沌烙印 = 单体混乱,
|
||||||
|
* 凝胶稠絮 = 单体虚弱,
|
||||||
|
*
|
||||||
|
* 大地之墙 = 我方·多目标护盾,
|
||||||
|
* 盖亚之盾 = 我方·全体护盾,
|
||||||
|
* 风之守护 = 我方·敏捷/闪避提升,
|
||||||
|
* 结晶防护 = 我方·护甲/魔抗提升,
|
||||||
|
* 强音之力 = 我方·攻击提升,
|
||||||
|
* 神圣祝福 = 我方·攻击/护甲/魔抗提升
|
||||||
|
*/
|
||||||
public enum MagicID : long
|
public enum MagicID : long
|
||||||
{
|
{
|
||||||
冰霜攻击 = 1001,
|
冰霜攻击 = 1001,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user