mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2025-08-01 19:42:55 +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.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());
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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.##}。");
|
||||
// 额外伤害
|
||||
|
@ -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)
|
||||
|
@ -1,5 +1,34 @@
|
||||
namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
/**
|
||||
* 冰霜攻击 = 单体伤害
|
||||
* 火之矢 = 单体伤害
|
||||
* 水之矢 =单体伤害
|
||||
* 石之锤 =单体伤害
|
||||
* 风之轮 =单体伤害
|
||||
* 心灵之霞 =单体伤害
|
||||
* 次元上升 = 单体伤害
|
||||
* 暗物质 = 单体伤害
|
||||
*
|
||||
* 回复术 = 我方·单体回复,
|
||||
* 治愈术 = 我方·单体回复,
|
||||
* 复苏术 = 我方·单体负面解除+回复,
|
||||
* 圣灵术 = 我方·全体负面解除+回复,
|
||||
* 时间加速 = 我方·单体速度提升,
|
||||
* 时间减速 = 单体速度减少,
|
||||
* 反魔法领域 = 全体封技+施法解除,
|
||||
* 沉默十字 = 单体封技+施法解除,
|
||||
* 虚弱领域 = 全体虚弱,
|
||||
* 混沌烙印 = 单体混乱,
|
||||
* 凝胶稠絮 = 单体虚弱,
|
||||
*
|
||||
* 大地之墙 = 我方·多目标护盾,
|
||||
* 盖亚之盾 = 我方·全体护盾,
|
||||
* 风之守护 = 我方·敏捷/闪避提升,
|
||||
* 结晶防护 = 我方·护甲/魔抗提升,
|
||||
* 强音之力 = 我方·攻击提升,
|
||||
* 神圣祝福 = 我方·攻击/护甲/魔抗提升
|
||||
*/
|
||||
public enum MagicID : long
|
||||
{
|
||||
冰霜攻击 = 1001,
|
||||
|
Loading…
x
Reference in New Issue
Block a user