新角色和新技能,技能改动

This commit is contained in:
milimoe 2026-01-10 04:36:06 +08:00
parent ac0a926ad0
commit b208cd9497
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
36 changed files with 694 additions and 326 deletions

View File

@ -47,9 +47,12 @@ namespace Oshima.FunGame.OshimaModules
10 => new ColdBlue(),
11 => new dddovo(),
12 => new Quduoduo(),
13 => new ShiYu(),
14 => new XReouni(),
15 => new Neptune(),
16 => new CHAOS(),
17 => new Ryuko(),
18 => new TheGodK(),
_ => null,
};
};

View File

@ -116,36 +116,42 @@ namespace Oshima.FunGame.OshimaModules
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID.宿 => new 宿(),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID. => new (),
(long)SuperSkillID.宿 => new 宿(),
(long)SuperSkillID. => new (),
(long)PassiveID.META马 => new META马(),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID.=> new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),
(long)PassiveID. => new (),

View File

@ -33,10 +33,4 @@
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="Skills\ShiYu\" />
<Folder Include="Skills\TheGodK\" />
<Folder Include="Skills\CHAOS\" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,50 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "全军出击";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
public override double CD => 80;
public override double HardnessTime { get; set; } = 5;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"将雇佣兵数量立即补全至 {雇佣兵团特效.最大数量} 名,持续 {持续时间} 秒。每名雇佣兵额外为{Skill.SkillOwner()}提供 {攻击力 * 100:0.##}% 攻击力和 {行动速度:0.##} 点行动速度、{加速系数 * 100:0.##}% 加速系数、{冷却缩减 * 100:0.##}% 冷却缩减,每名雇佣兵提升 {攻击力提升 * 100:0.##}% 攻击力。";
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
public double => 30 + 3 * (Skill.Level - 1);
public const double = 0.05;
public const double = 0.05;
public const double = 0.05;
public const double = 25;
public const double = 0.4;
public override void OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))
{
caster.Effects.Add(this);
OnEffectGained(caster);
}
GamingQueue?.LastRound.AddApplyEffects(caster, EffectType.CritBoost, EffectType.PenetrationBoost);
}
}
}

View File

@ -0,0 +1,47 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "雇佣兵团";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{
return Effects;
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"{Skill.SkillOwner()}在场上时,会召唤数名雇佣兵协助战斗,初始数量为 {最小数量} 名,雇佣兵具有独立的回合,生命值为{Skill.SkillOwner()}的 {生命值比例 * 100:0.##}% [ {Skill.Character?.MaxHP * 生命值比例:0.##} ],攻击力为{Skill.SkillOwner()}的 {攻击力比例 * 100:0.##}% 基础攻击力 [ {Skill.Character?.BaseATK * 攻击力比例:0.##} ]" +
$"完整继承其他能力值(暴击率、闪避率等)。当{Skill.SkillOwner()}参与击杀时,便会临时产生一名额外的雇佣兵,持续 {持续时间} 秒。场上最多可以存在 {最大数量} 名雇佣兵,达到数量后不再产生新的雇佣兵;当不足 {最小数量} 名雇佣兵时,{补充间隔} 秒后会重新补充一名雇佣兵。";
public const int = 2;
public const int = 7;
public const int = 30;
public const int = 20;
public const double = 0.3;
public const double = 0.4;
public override void OnEffectGained(Character character)
{
}
public override void OnEffectLost(Character character)
{
}
}
}

View File

@ -4,10 +4,10 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "嗜血本能";
public override long Id => (long)SuperSkillID.;
public override string Name => "极寒渴望";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
@ -16,13 +16,13 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;

View File

@ -3,15 +3,15 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "毁灭之势";
public override long Id => (long)PassiveID.;
public override string Name => "少女绮想";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
@ -20,11 +20,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"每经过 {时间流逝} {GameplayEquilibriumConstant.InGameTime},提升 {伤害提升 * 100:0.##}% 所有伤害,无上限。受到伤害时清零;造成伤害后,累计提升减少总量的 30%。(下一次提升在:{下一次提升:0.##} {GameplayEquilibriumConstant.InGameTime}后{(累计伤害 > 0 ? $"{ * 100:0.##}%" : "")}";
public override string Description => $"{Skill.SkillOwner()}进入祈祷的心境。每经过 {时间流逝} {GameplayEquilibriumConstant.InGameTime},提升 {伤害提升 * 100:0.##}% 所有伤害,无上限。受到伤害时清零;造成伤害后,累计提升减少总量的 30%。(下一次提升在:{下一次提升:0.##} {GameplayEquilibriumConstant.InGameTime}后{(累计伤害 > 0 ? $"{ * 100:0.##}%" : "")}";
private readonly double = 7;
private readonly double = 0.21;

View File

@ -26,7 +26,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内无法受到任何伤害敏捷提升 {系数 * 100:0.##}% [ {敏捷提升:0.##} ]。此技能会消耗至少 100 点能量,每额外消耗 10 能量,持续时间提升 1 {GameplayEquilibriumConstant.InGameTime}。";
public override string Description => $"{Skill.SkillOwner()}展开绝对领域。在 {Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内,敏捷提升 {系数 * 100:0.##}% [ {敏捷提升:0.##} ],无法受到任何伤害,但不免疫负面效果。此技能会消耗至少 100 点能量,每额外消耗 10 能量,持续时间提升 1 {GameplayEquilibriumConstant.InGameTime}。";
public override bool Durative => true;
public override double Duration => >= 100 ? 13 + ( - 100) * 0.1 : 14;
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;

View File

@ -3,15 +3,15 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "致命打击";
public override long Id => (long)PassiveID.;
public override string Name => "零式崩解";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
@ -20,11 +20,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"暴击伤害提升 70%。";
public override string Description => $"{Skill.SkillOwner()}的零式剑法能够轻松命中敌人弱点。{Skill.SkillOwner()}的暴击伤害提升 70%。";
public override void OnEffectGained(Character character)
{

View File

@ -4,10 +4,10 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "精准打击";
public override long Id => (long)SuperSkillID.;
public override string Name => "零式灭杀";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
@ -16,17 +16,17 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"30 {GameplayEquilibriumConstant.InGameTime}内暴击率提升 {暴击率提升 * 100:0.##}%,暴击伤害提升 {暴击伤害提升 * 100:0.##}%,物理穿透提升 {物理穿透提升 * 100:0.##}%。";
public override string Description => $"{Skill.SkillOwner()}展现零式剑法精准而凶残的奥义。30 {GameplayEquilibriumConstant.InGameTime}内暴击率提升 {暴击率提升 * 100:0.##}%,暴击伤害提升 {暴击伤害提升 * 100:0.##}%,物理穿透提升 {物理穿透提升 * 100:0.##}%。";
public override bool Durative => true;
public override double Duration => 30;
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;

View File

@ -4,10 +4,10 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "三重叠加";
public override long Id => (long)SuperSkillID.;
public override string Name => "三相灵枢";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
@ -16,17 +16,17 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => "三重叠加";
public override string Description => $"使 [ 灵能反射 ] 支持普通攻击,且当前释放魔法次数归零,最大硬直消除次数提高到 {灵能反射次数} 次;在魔法命中和普通攻击命中时能够回复所回复能量值的 {魔法值倍数:0.#} 倍魔法值,持续 {技能持续次数} 次(灵能反射每消除次数达到最大时算一次)。" +
public override string Name => "三相灵枢";
public override string Description => $"{Skill.SkillOwner()}操纵三相之力,使 [ 灵能反射 ] 支持普通攻击,且当前释放魔法次数归零,最大硬直消除次数提高到 {灵能反射次数} 次;在魔法命中和普通攻击命中时能够回复所回复能量值的 {魔法值倍数:0.#} 倍魔法值,持续 {技能持续次数} 次(灵能反射每消除次数达到最大时算一次)。" +
$"(剩余:{剩余持续次数} 次)";
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;

View File

@ -48,12 +48,12 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
WriteLine($"[ {character} ] 发动了灵能反射!额外获得了 {实际获得能量值:0.##} 能量,并消除了 2 {GameplayEquilibriumConstant.InGameTime}冷却时间!");
IEnumerable<Effect> effects = character.Effects.Where(e => e is );
if (effects.Any() && effects.First() is e)
IEnumerable<Effect> effects = character.Effects.Where(e => e is );
if (effects.Any() && effects.First() is e)
{
double = * 3;
character.MP += ;
WriteLine($"[ {character} ] 发动了三重叠加!回复了 {获得的魔法值:0.##} 魔法值!");
WriteLine($"[ {character} ] 发动了三相灵枢!回复了 {获得的魔法值:0.##} 魔法值!");
}
}
}
@ -91,8 +91,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
else
{
= 0;
IEnumerable<Effect> effects = character.Effects.Where(e => e is );
if (effects.Any() && effects.First() is e)
IEnumerable<Effect> effects = character.Effects.Where(e => e is );
if (effects.Any() && effects.First() is e)
{
baseHardnessTime = 0;
isCheckProtected = false;

View File

@ -32,14 +32,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"标记{Skill.TargetDescription()},持续 {持续时间:0.##} {GameplayEquilibriumConstant.InGameTime}。立即对标记目标造成 {直接伤害:0.##} 点{CharacterSet.GetDamageTypeName(DamageType.Magical, MagicType)}。" +
$"在持续时间内{爆炸伤害描述}在此期间,的力量提升 60% [ {力量提升:0.##} ],并且 [ {nameof(深海之戟)} ] 改变为相同机制。无视免疫。";
$"在持续时间内{爆炸伤害描述}在此期间,{Skill.SkillOwner()}的力量提升 60% [ {力量提升:0.##} ],并且 [ {nameof(深海之戟)} ] 改变为相同机制。无视免疫。";
public override bool Durative => true;
public override double Duration => ;
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
public override MagicType MagicType => Skill.Character?.MagicType ?? MagicType.None;
public override ImmuneType IgnoreImmune => ImmuneType.All;
public string => $"对受到标记的目标造成伤害,有 {概率 * 100:0.##}% 概率产生爆炸,爆炸将产生 {分裂伤害系数 * 100:0.##}% 分裂伤害。分裂伤害为全图索敌,会优先分裂至两个在持续时间内对造成伤害最多的敌人,若没有符合条件的敌人或敌人数量不足,则将分裂至至多两个随机的敌人。";
public string => $"对受到标记的目标造成伤害,有 {概率 * 100:0.##}% 概率产生爆炸,爆炸将产生 {分裂伤害系数 * 100:0.##}% 分裂伤害。分裂伤害为全图索敌,会优先分裂至两个在持续时间内对{Skill.SkillOwner()}造成伤害最多的敌人,若没有符合条件的敌人或敌人数量不足,则将分裂至至多两个随机的敌人。";
public double => 180 + 240 * (Skill.Level - 1);
public double => 25 + 2 * (Skill.Level - 1);
public double => 0.3 + 0.08 * (Skill.Level - 1);

View File

@ -3,15 +3,15 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "智慧与力量";
public override long Id => (long)PassiveID.;
public override string Name => "双生流转";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
@ -20,7 +20,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;

View File

@ -26,7 +26,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
public override string Name => "变幻之心";
public override string Description => $"检查 [ 智慧与力量 ] 的模式。在力量模式下,立即回复 {生命值回复 * 100:0.##}% 生命值,同时下 {吸血次数} 次对敌人造成伤害时获得 30% 生命偷取;" +
public override string Description => $"检查 [ 双生流转 ] 的模式。在力量模式下,立即回复 {生命值回复 * 100:0.##}% 生命值,同时下 {吸血次数} 次对敌人造成伤害时获得 30% 生命偷取;" +
$"智力模式下,下 {魔法加成次数} 次魔法伤害提升 {伤害提升 * 100:0.##}%。此技能效果不叠加,重复释放时将重置次数;若是模式切换后重复释放,将回收先前的效果。{当前次数描述}";
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
@ -145,7 +145,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override void OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
IEnumerable<Effect> effects = caster.Effects.Where(e => e is );
IEnumerable<Effect> effects = caster.Effects.Where(e => e is );
if (effects.Any())
{
if (caster.Effects.Contains(this))

View File

@ -4,10 +4,10 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "力量爆发";
public override long Id => (long)SuperSkillID.;
public override string Name => "熵灭·极诣";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
@ -16,17 +16,17 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => "力量爆发";
public override string Description => $"获得 135% 力量 [ {攻击力加成:0.##} ] 的攻击力加成,但每次普通攻击命中时都会损失自身 9% 当前生命值 [ {当前生命值:0.##} ],持续 {Duration:0.##} {GameplayEquilibriumConstant.InGameTime}。";
public override string Name => Skill.Name;
public override string Description => $"{Skill.SkillOwner()}释放「熵灭」的力量,获得 135% 力量 [ {攻击力加成:0.##} ] 的攻击力加成,但每次普通攻击命中时都会损失自身 9% 当前生命值 [ {当前生命值:0.##} ],持续 {Duration:0.##} {GameplayEquilibriumConstant.InGameTime}。";
public override bool Durative => true;
public override double Duration => 10 + 1 * (Level - 1);
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;

View File

@ -4,25 +4,25 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class 宿 : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "迅捷之势";
public override long Id => (long)SuperSkillID.宿;
public override string Name => "宿命时律";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
public override double CD => 80 - 4 * (Level - 1);
public override double CD => 60 - 4 * (Level - 1);
public override double HardnessTime { get; set; } = 10;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public 宿(Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new 宿(this));
}
}
public class (Skill skill) : Effect(skill)
public class 宿(Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
@ -61,7 +61,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
if (character == Skill.Character && isNormalAttack)
{
WriteLine($"[ {character} ] 发动了迅捷之势!伤害提升了 {智力加成:0.##} 点!");
WriteLine($"[ {character} ] 发动了宿命时律!伤害提升了 {智力加成:0.##} 点!");
return ;
}
return 0;

View File

@ -3,15 +3,15 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "枯竭打击";
public override long Id => (long)PassiveID.;
public override string Name => "暗香疏影";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
@ -20,11 +20,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"每次造成伤害都会随机减少对方 [ 715 ] 点能量值,对能量值低于一半的角色额外造成 30% 伤害。对于枯竭打击而言,能量值大于 100 且小于 150 时,视为低于一半。";
public override string Description => $"每次造成伤害都会随机减少对方 [ 715 ] 点能量值,对能量值低于一半的角色额外造成 30% 伤害。对于暗香疏影而言,能量值大于 100 且小于 150 时,视为低于一半。";
private bool = false;
@ -35,12 +35,12 @@ namespace Oshima.FunGame.OshimaModules.Skills
// 减少能量
double EP = Random.Shared.Next(7, 15);
enemy.EP -= EP;
WriteLine($"[ {character} ] 发动了枯竭打击[ {enemy} ] 的能量值被减少了 {EP:0.##} 点!现有能量:{enemy.EP:0.##}。");
WriteLine($"[ {character} ] 发动了暗香疏影[ {enemy} ] 的能量值被减少了 {EP:0.##} 点!现有能量:{enemy.EP:0.##}。");
// 额外伤害
if (enemy.EP >= 0 && enemy.EP < 50 || enemy.EP >= 100 && enemy.EP < 150)
{
double = damage * 0.3;
WriteLine($"[ {character} ] 发动了枯竭打击!将造成额外伤害!");
WriteLine($"[ {character} ] 发动了暗香疏影!将造成额外伤害!");
= true;
DamageToEnemy(character, enemy, damageType, magicType, );
}

View File

@ -4,22 +4,21 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "能量毁灭";
public override long Id => (long)SuperSkillID.;
public override string Name => "残香凋零";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double EPCost => 100;
public override double CD => 100 - 4 * (Level - 1);
public override double HardnessTime { get; set; } = 12;
public override string Slogan => "从深渊引爆力量,世界将为之颤抖!!!!";
public override bool CanSelectSelf => false;
public override bool CanSelectEnemy => true;
public override bool CastAnywhere => true;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
public override void OnTurnStart(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items)
@ -32,11 +31,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"对至多 6 个角色造成 " +
public override string Description => $"{Skill.SkillOwner()}释放能够动荡能量流的深渊之死气。对至多 6 个角色造成 " +
$"{能量系数 * 100:0.##}% 其现有能量值 + {智力系数 * 100:0.##}% 智力 [ {智力伤害:0.##} ] 的魔法伤害。";
private double => 0.2 * Level;
@ -47,7 +46,6 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
foreach (Character c in targets)
{
WriteLine($"[ {caster} ] 正在毁灭 [ {c} ] 的能量!!");
double ep = c.EP;
DamageToEnemy(caster, c, DamageType.Magical, MagicType, ep * + );
}

View File

@ -4,10 +4,10 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "血之狂欢";
public override long Id => (long)SuperSkillID.;
public override string Name => "饕餮盛宴";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
@ -16,13 +16,13 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;

View File

@ -3,15 +3,15 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "能量复苏";
public override long Id => (long)PassiveID.;
public override string Name => "不息之流";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
@ -20,11 +20,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"处于正常态和吟唱态时,每秒回复 {回复系数 * 100:0.##}% 最大生命值 [ {Skill.Character?.MaxHP * 回复系数:0.##} ] 并获得 {能量获取:0.##} 点能量。";
public override string Description => $"{Skill.SkillOwner()}处于正常态和吟唱态时,每秒回复 {回复系数 * 100:0.##}% 最大生命值 [ {Skill.Character?.MaxHP * 回复系数:0.##} ] 并获得 {能量获取:0.##} 点能量。";
public double { get; set; } = 0.02;
public double { get; set; } = 1;

View File

@ -2,15 +2,16 @@
using Milimoe.FunGame.Core.Interface.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class 宿 : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "自我抉择";
public override string Description => Effects.Count > 0 ? (()Effects.First()). : "";
public override long Id => (long)SuperSkillID.宿;
public override string Name => "宿命之潮";
public override string Description => Effects.Count > 0 ? ((宿)Effects.First()). : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override string ExemptionDescription => Effects.Count > 0 ? Effects.First().ExemptionDescription : "";
public override double EPCost => 100;
@ -19,13 +20,13 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public 宿(Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new 宿(this));
}
}
public class : Effect
public class 宿 : Effect
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
@ -36,16 +37,16 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override PrimaryAttribute ExemptionType => PrimaryAttribute.AGI;
public override bool ExemptDuration => false;
public string => $"可以选择获得哪一种力量:\r\n{熵核描述}\r\n{守护描述}";
public string => $"{Skill.SkillOwner()}可以选择获得哪一种力量:\r\n{熵核描述}\r\n{守护描述}";
private string => $"【熵核】加速生命回复,每{GameplayEquilibriumConstant.InGameTime}额外回复 {熵核额外回复 * 100:0.##}% 当前生命值 [ {Skill.Character?.HP * 熵核额外回复:0.##} ],攻击力提升 {熵核攻击力提升 * 100:0.##}% [ {Skill.Character?.BaseATK * 熵核攻击力提升:0.##} ],但是受到的伤害提升 {熵核受到伤害提升 * 100:0.##}%。" +
$"对敌人造成伤害会使其在 {熵核影响敌人时间:0.##} {GameplayEquilibriumConstant.InGameTime}内无法获得自然的生命和魔法回复,施加此状态时,只有目标的敏捷高于你的角色才能进行豁免检定。持续 {熵核持续时间:0.##} {GameplayEquilibriumConstant.InGameTime}。";
$"对敌人造成伤害会使其在 {熵核影响敌人时间:0.##} {GameplayEquilibriumConstant.InGameTime}内无法获得自然的生命和魔法回复的禁止治疗效果,施加该状态时,只有目标的敏捷高于{Skill.SkillOwner()}的角色才能进行豁免检定。持续 {熵核持续时间:0.##} {GameplayEquilibriumConstant.InGameTime}。";
private static double => 0.04;
private double => 0.2 + 0.1 * (Skill.Level - 1);
private double => 0.15 + 0.05 * (Skill.Level - 1);
private static double => 10;
private double => 15 + 2 * (Skill.Level - 1);
private string => $"【守护】极致地加速生命回复,每{GameplayEquilibriumConstant.InGameTime}额外回复 {守护额外回复 * 100:0.##}% 当前生命值 [ {Skill.Character?.HP * 守护额外回复:0.##} ],为全体友方角色提供每{GameplayEquilibriumConstant.InGameTime}额外 {守护友方回复 * 100:0.##}% 当前生命值的生命回复,并嘲讽全体敌方角色,被嘲讽的角色仅能将作为攻击目标。" +
$"施加嘲讽状态时,只有目标的敏捷高于的角色才能进行豁免检定。持续 {守护持续时间:0.##} {GameplayEquilibriumConstant.InGameTime}。";
private string => $"【守护】极致地加速生命回复,每{GameplayEquilibriumConstant.InGameTime}额外回复 {守护额外回复 * 100:0.##}% 当前生命值 [ {Skill.Character?.HP * 守护额外回复:0.##} ],为全体友方角色提供每{GameplayEquilibriumConstant.InGameTime}额外 {守护友方回复 * 100:0.##}% 当前生命值的生命回复,并嘲讽全体敌方角色,被嘲讽的角色仅能将{Skill.SkillOwner()}作为攻击目标。" +
$"施加嘲讽状态时,只有目标的敏捷高于{Skill.SkillOwner()}的角色才能进行豁免检定。持续 {守护持续时间:0.##} {GameplayEquilibriumConstant.InGameTime}。";
private double => 0.08 + 0.006 * (Skill.Level - 1);
private double => 0.01 + 0.01 * (Skill.Level - 1);
private double => 15 + 1 * (Skill.Level - 1);
@ -54,7 +55,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
private double = 0;
private bool = false;
public (Skill skill) : base(skill)
public 宿(Skill skill) : base(skill)
{
Description = ;
}
@ -82,7 +83,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
if ( && enemy == Skill.Character && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical))
{
double bouns = -(damage * );
WriteLine($"[ {enemy} ] 触发了自我抉择,额外受到 {Math.Abs(bouns):0.##} 伤害!");
WriteLine($"[ {enemy} ] 触发了宿命之潮,额外受到 {Math.Abs(bouns):0.##} 伤害!");
return bouns;
}
return 0;
@ -108,21 +109,6 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public override void OnCharacterInquiry(Character character, string topic, Dictionary<string, object> args, Dictionary<string, object> response)
{
if (topic == nameof())
{
if (response.TryGetValue("result", out object? value) && value is bool choose)
{
= choose;
}
else
{
= Random.Shared.Next() % 2 == 0;
}
}
}
public override void OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
if (caster.Effects.Contains(this))
@ -132,11 +118,20 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
caster.Effects.Add(this);
= 0;
Dictionary<string, object> response = Inquiry(caster, nameof(), new()
InquiryResponse response = Inquiry(caster, new(InquiryType.Choice, nameof(宿))
{
Description = "作出抉择",
Choices = new()
{
{ "熵核", },
{ "守护", },
{ "守护", }
},
DefaultChoice = Random.Shared.Next() % 2 == 0 ? "熵核" : "守护"
});
if (response.Choices.Count > 0)
{
= response.Choices[0] == "熵核";
}
= ;
Duration = ? : ;
RemainDuration = Duration;

View File

@ -0,0 +1,40 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "开宫";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{
return Effects;
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"当场上有角色死亡时,如果该角色死于技能,则{Skill.SkillOwner()}获得该技能的使用权持续 3 回合;如果该角色死于普通攻击,则{Skill.SkillOwner()}的普通攻击将转为魔法伤害并且无视闪避,持续 3 回合。" +
$"然后给予击杀者时雨标记,如果击杀者为队友,{Skill.SkillOwner()}对其的治疗加成提升 100%,并且使其能够攻击{Skill.SkillOwner()},攻击{Skill.SkillOwner()}时,视为对{Skill.SkillOwner()}治疗,治疗值基于伤害值的 50%;如果为敌人,{Skill.SkillOwner()}对其的伤害加成提升 200%,并且使其能够攻击其队友。时雨标记持续 3 回合。";
public override void OnEffectGained(Character character)
{
}
public override void OnEffectLost(Character character)
{
}
}
}

View File

@ -0,0 +1,44 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "放监";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
public override double CD => 65;
public override double HardnessTime { get; set; } = 14;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"使时雨标记变得不可驱散,并且延长至 5 回合。持有标记的角色,必须完成以下任务来消除标记,否则将在标记消失时受到基于{Skill.SkillOwner()} 660% 核心属性 + 100% 攻击力 [ {Skill.Character?.PrimaryAttributeValue * 6.6 + Skill.Character?.ATK:0.##} ] 的魔法伤害(该伤害必定暴击):\r\n" +
$"1. 如果是敌人,则必须攻击一次队友,此伤害必定暴击且无视闪避;如果是队友,必须攻击一次{Skill.SkillOwner()},治疗加成再度提升 100%。\r\n2. 对{Skill.SkillOwner()}释放一个指向性技能,{Skill.SkillOwner()}将此技能效果无效化并且获得该技能的使用权持续 4 回合。\r\n此技能对队友的伤害将不会导致队友死亡。";
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
public override void OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))
{
caster.Effects.Add(this);
OnEffectGained(caster);
}
GamingQueue?.LastRound.AddApplyEffects(caster, EffectType.CritBoost, EffectType.PenetrationBoost);
}
}
}

View File

@ -5,6 +5,19 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public static class SkillExtension
{
public static string SkillOwner(this Skill skill, Character? character = null)
{
if (character is null && skill.Character is not null)
{
character = skill.Character;
}
if (character is null)
{
return "你";
}
return character.NickName != "" ? character.NickName : character.GetName();
}
public static string TargetDescription(this Skill skill)
{
if (skill.IsNonDirectional && skill.GamingQueue?.Map != null)

View File

@ -249,18 +249,18 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
/**
* = +
* = +穿+CD
* = +CD
* =
* = +
* = 穿
* = +
* = +穿+CD
* = +CD
* =
* = +
* = 穿
* = 10010
* =
* = +
* =
* = +
* =
* =
* 宿 = +
* =
* = +
* =
* = +
* =
* = +(++)
@ -281,22 +281,23 @@ namespace Oshima.FunGame.OshimaModules.Skills
* =
* =
* =
* = 100%
* 宿 = 100%
* =
*/
public enum SuperSkillID : long
{
= 3001,
= 3002,
= 3003,
= 3004,
= 3001,
= 3002,
= 3003,
= 3004,
= 3005,
= 3006,
= 3006,
= 3007,
= 3008,
= 3009,
= 3010,
= 3011,
= 3012,
= 3008,
宿 = 3009,
= 3010,
= 3011,
= 3012,
= 3013,
= 3014,
= 3015,
@ -317,21 +318,22 @@ namespace Oshima.FunGame.OshimaModules.Skills
= 3030,
= 3031,
= 3032,
= 3033
宿 = 3033,
= 3034
}
/**
* META马 =
* =
* =
* =
* =
* = CD
* = ++
* =
* =
* =
* = ++
* =
* =
* =
* =
* =
* =
* =
* =
* =
* =
@ -367,21 +369,22 @@ namespace Oshima.FunGame.OshimaModules.Skills
* = 使
* =
* =
* =
* =
* =
*/
public enum PassiveID : long
{
META马 = 4001,
= 4002,
= 4003,
= 4002,
= 4003,
= 4004,
= 4005,
= 4006,
= 4007,
= 4008,
= 4005,
= 4006,
= 4007,
= 4008,
= 4009,
= 4010,
= 4011,
= 4011,
= 4012,
= 4013,
= 4014,
@ -417,7 +420,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
= 4044,
= 4045,
= 4046,
= 4047
= 4047,
= 4048
}
public enum ItemPassiveID : long

View File

@ -0,0 +1,46 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "概念之骰";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{
return Effects;
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"{Skill.SkillOwner()}的每次行动决策结束时,都会为自身投掷一次概念骰子,获得一种增益且维持至下一次行动决策。\r\n" +
$"骰子效果(六面):\r\n" +
$"1.星辉:下次造成的伤害提升 30%。\r\n" +
$"2.壁垒:下次受到的伤害减少 30%。\r\n" +
$"3.流转:立即获得 50 点能量值。\r\n" +
$"4.预读:下次使用的主动技能冷却时间减少 40%。\r\n" +
$"5.共鸣:本次行动为全场所有其他角色(不论敌友)附加能量涟漪,使其下一次行动的能量消耗增加 20%。\r\n" +
$"6.干涉:随机使一名敌方角色身上的一个增益效果或一名友方角色身上的一个负面效果的持续时间延长或缩短 1 回合。";
public override void OnEffectGained(Character character)
{
}
public override void OnEffectLost(Character character)
{
}
}
}

View File

@ -0,0 +1,58 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "神之因果";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
public override bool CostAllEP => true;
public override double CD => 90;
public override double HardnessTime { get; set; } = 1;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"{Skill.SkillOwner()}展开一个持续 3 回合的宏大领域,覆盖整个战场。在此领域内,一切必然都将被概率暂时覆盖。\r\n" +
$"领域规则一:命运共享。领域持续期间,所有角色(包括自身)的暴击率、闪避率将被暂时移除,替换为一个统一的命运值(初始为 50%)。每次进行相关检定时,都基于此命运值进行计算。\r\n" +
$"领域规则二:骰子指挥。{Skill.SkillOwner()}的每次行动前,可任意指定一名角色(不论敌友)进行一次强制骰子检定。\r\n" +
$"投掷结果将强制该角色执行以下行动之一:\r\n" +
$"1.攻击:攻击力提升 {攻击力提升 * 100:0.##}% 并随机对一名敌方角色进行普通攻击。\r\n" +
$"2.防御:{Skill.SkillOwner()}结束本回合并进入防御状态,下一次行动前,获得 {减伤提升 * 100:0.##}% 物理伤害减免和魔法抗性。\r\n" +
$"3.奉献治疗生命值百分比最低的一名角色治疗量为2d20 * {Skill.SkillOwner()} {智力系数 * 100:0.##}% 智力 [ {Skill.Character?.INT * 智力系数:0.##} ]。\r\n" +
$"4.混乱:对该角色周围造成一次 [ 6d{Skill.Level} * 60 ] 点真实伤害(不论敌友)。\r\n" +
$"完成强制骰子检定后,{Skill.SkillOwner()}可指定任意一名角色提升 10% 命运值。\r\n" +
$"领域规则三:观测奖励。领域持续期间,每当有角色因命运值检定成功(如闪避、暴击)或执行了强制骰子行动,{Skill.SkillOwner()}都会获得一层因果点。" +
$"领域结束时,每层因果点将转化为{Skill.SkillOwner()}对随机一名角色造成 [ 10d100 * 因果点 ] 的真实伤害(敌方)或治疗(友方)。";
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
public double => 0.3 + 0.1 * (Skill.Level - 1);
public double => 0.2 + 0.08 * (Skill.Level - 1);
public double => 1.5 + 0.02 * (Skill.Level - 1);
public override void OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
RemainDuration = Duration;
if (!caster.Effects.Contains(this))
{
caster.Effects.Add(this);
OnEffectGained(caster);
}
GamingQueue?.LastRound.AddApplyEffects(caster, EffectType.CritBoost, EffectType.PenetrationBoost);
}
}
}

View File

@ -5,10 +5,10 @@ using Milimoe.FunGame.Core.Model;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "天赐之力";
public override long Id => (long)SuperSkillID.;
public override string Name => "千羽瞬华";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
@ -17,17 +17,17 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内,增加 {攻击力提升系数 * 100:0.##}% 攻击力 [ {攻击力提升:0.##} ]、{物理穿透提升 * 100:0.##}% 物理穿透和 {闪避率提升 * 100:0.##}% 闪避率(不可叠加),普通攻击硬直时间额外减少 20%,基于 {系数 * 100:0.##}% 敏捷 [ {伤害加成:0.##} ] 强化普通攻击的伤害。在持续时间内,[ 心灵之 ] 的冷却时间降低至 3 {GameplayEquilibriumConstant.InGameTime}。";
public override string Description => $"{Skill.SkillOwner()}将世间事物的弱点完全暴露在「千羽」的绚烂之下。{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内,增加{Skill.SkillOwner()} {攻击力提升系数 * 100:0.##}% 攻击力 [ {攻击力提升:0.##} ]、{物理穿透提升 * 100:0.##}% 物理穿透和 {闪避率提升 * 100:0.##}% 闪避率(不可叠加),普通攻击硬直时间额外减少 20%,基于 {系数 * 100:0.##}% 敏捷 [ {伤害加成:0.##} ] 强化普通攻击的伤害。在持续时间内,[ 心灵之 ] 的冷却时间降低至 3 {GameplayEquilibriumConstant.InGameTime}。";
public override bool Durative => true;
public override double Duration => 30;
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
@ -46,7 +46,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
character.ExATK2 += ;
character.PhysicalPenetration += 穿;
character.ExEvadeRate += ;
if (character.Effects.Where(e => e is ).FirstOrDefault() is e)
if (character.Effects.Where(e => e is ).FirstOrDefault() is e)
{
e. = 3;
if (e. > e.) e. = e.;
@ -58,7 +58,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
character.ExATK2 -= ;
character.PhysicalPenetration -= 穿;
character.ExEvadeRate -= ;
if (character.Effects.Where(e => e is ).FirstOrDefault() is e)
if (character.Effects.Where(e => e is ).FirstOrDefault() is e)
{
e. = 10;
}

View File

@ -3,15 +3,15 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "心灵之";
public override long Id => (long)PassiveID.;
public override string Name => "心灵之";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
@ -20,7 +20,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
@ -44,7 +44,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
if (character == Skill.Character && isNormalAttack && == 0 && ! && GamingQueue != null && enemy.HP > 0)
{
WriteLine($"[ {character} ] 发动了心灵之!额外进行一次普通攻击!");
WriteLine($"[ {character} ] 发动了心灵之!额外进行一次普通攻击!");
= ;
= true;
character.NormalAttack.Attack(GamingQueue, character, null, enemy);

View File

@ -4,10 +4,10 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "魔法涌流";
public override long Id => (long)SuperSkillID.;
public override string Name => "咒怨洪流";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
@ -16,17 +16,17 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => "魔法涌流";
public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内,增加自身所有伤害的 {减伤比例 * 100:0.##}% 伤害减免;【魔法震荡】的冷却时间降低至 5 {GameplayEquilibriumConstant.InGameTime},并将普通攻击转为魔法伤害,允许普通攻击时选择至多 3 个目标。";
public override string Name => "咒怨洪流";
public override string Description => $"{Skill.SkillOwner()}将「熵核」的污染之力附着在武器之上。{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内,增加自身所有伤害的 {减伤比例 * 100:0.##}% 伤害减免;[ 蚀魂震击 ] 的冷却时间降低至 5 {GameplayEquilibriumConstant.InGameTime},并将普通攻击转为魔法伤害,允许普通攻击时选择至多 3 个目标。";
public override bool Durative => true;
public override double Duration => 30;
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
@ -39,7 +39,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
character.NormalAttack.CanSelectTargetCount += 2;
= ;
character.NormalAttack.SetMagicType(new(this, true, MagicType.None, 999), GamingQueue);
if (character.Effects.Where(e => e is ).FirstOrDefault() is e)
if (character.Effects.Where(e => e is ).FirstOrDefault() is e)
{
e. = 5;
if (e. > e.) e. = e.;
@ -51,7 +51,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
= 0;
character.NormalAttack.CanSelectTargetCount -= 2;
character.NormalAttack.UnsetMagicType(this, GamingQueue);
if (character.Effects.Where(e => e is ).FirstOrDefault() is e)
if (character.Effects.Where(e => e is ).FirstOrDefault() is e)
{
e. = 10;
}

View File

@ -4,17 +4,17 @@ using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "魔法震荡";
public override long Id => (long)PassiveID.;
public override string Name => "蚀魂震击";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public (Character? character = null) : base(SkillType.Passive, character)
public (Character? character = null) : base(SkillType.Passive, character)
{
ExemptionDescription = SkillSet.GetExemptionDescription(EffectType.Stun);
Effects.Add(new (this));
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
@ -23,7 +23,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
@ -64,7 +64,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
enemy.Effects.Add(e);
e.OnEffectGained(enemy);
}
WriteLine($"[ {character} ] 的魔法伤害触发了魔法震荡[ {enemy} ] 被眩晕了!");
WriteLine($"[ {character} ] 的魔法伤害触发了蚀魂震击[ {enemy} ] 被眩晕了!");
= ;
}
}

View File

@ -4,10 +4,10 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "平衡强化";
public override long Id => (long)SuperSkillID.;
public override string Name => "身心一境";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
@ -16,13 +16,13 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;

View File

@ -3,16 +3,16 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "敏捷之刃";
public override long Id => (long)PassiveID.;
public override string Name => "银隼之赐";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double CD => 5;
public (Character? character = null) : base(SkillType.Passive, character)
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
@ -21,11 +21,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
public class (Skill skill) : Effect(skill)
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"普通攻击命中后,附带基于 {敏捷系数 * 100:0.##}% 敏捷 [ {敏捷伤害:0.##} ] 点魔法伤害,可叠加普攻特效。每 {Skill.CD:0.##} {GameplayEquilibriumConstant.InGameTime}仅能触发一次。";
public override string Description => $"{Skill.SkillOwner()}的「银隼」正如其名,优雅而致命。普通攻击命中后,附带基于 {敏捷系数 * 100:0.##}% 敏捷 [ {敏捷伤害:0.##} ] 点魔法伤害,可叠加普攻特效。每 {Skill.CD:0.##} {GameplayEquilibriumConstant.InGameTime}仅能触发一次。";
private double => * Skill.Character?.AGI ?? 0;
@ -37,7 +37,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
if (character == Skill.Character && isNormalAttack && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical) && ! && enemy.HP > 0)
{
Skill.CurrentCD = Skill.CD;
WriteLine($"[ {character} ] 发动了敏捷之刃!将造成额外伤害!");
WriteLine($"[ {character} ] 发动了银隼之赐!将造成额外伤害!");
= true;
DamageToEnemy(character, enemy, DamageType.Magical, magicType, );
}

View File

@ -3045,9 +3045,9 @@
]
}
},
"诺尔希的现代汉语字典": {
"雷欧尼的现代汉语字典": {
"Id": 14511,
"Name": "诺尔希的现代汉语字典",
"Name": "雷欧尼的现代汉语字典",
"Description": "增加角色 10% 攻击力和 40% 物理护甲。",
"BackgroundStory": "懂又不懂。",
"ItemType": 4,
@ -3058,7 +3058,7 @@
"Passives": [
{
"Id": 7311,
"Name": "诺尔希的现代汉语字典",
"Name": "雷欧尼的现代汉语字典",
"SkillType": 3,
"Effects": [
{

View File

@ -45,18 +45,21 @@ namespace Oshima.FunGame.OshimaServers.Service
FunGameConstant.Characters.Add(new ColdBlue());
FunGameConstant.Characters.Add(new dddovo());
FunGameConstant.Characters.Add(new Quduoduo());
FunGameConstant.Characters.Add(new ShiYu());
FunGameConstant.Characters.Add(new XReouni());
FunGameConstant.Characters.Add(new Neptune());
FunGameConstant.Characters.Add(new CHAOS());
FunGameConstant.Characters.Add(new Ryuko());
FunGameConstant.Characters.Add(new TheGodK());
FunGameConstant.Skills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new ()]);
FunGameConstant.SuperSkills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new ()]);
FunGameConstant.SuperSkills.AddRange([new (), new (), new (), new (), new (), new (), new (), new (), new (),
new 宿(), new (), new (), new (), new (), new (), new (), new 宿(), new ()]);
FunGameConstant.PassiveSkills.AddRange([new META马(), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new ()]);
FunGameConstant.PassiveSkills.AddRange([new META马(), new (), new (), new (), new (), new (), new (), new (), new (),
new (), new (), new (), new (), new (), new (), new (), new (), new ()]);
FunGameConstant.CommonPassiveSkills.AddRange([new (), new (), new (), new (), new ()]);
@ -1064,41 +1067,41 @@ namespace Oshima.FunGame.OshimaServers.Service
};
character.Skills.Add(META马);
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 2)
{
Skill = new (character)
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
character.Skills.Add();
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 3)
{
Skill = new (character)
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
character.Skills.Add();
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 4)
@ -1109,20 +1112,20 @@ namespace Oshima.FunGame.OshimaServers.Service
};
character.Skills.Add();
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 5)
{
Skill = new (character)
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
character.Skills.Add();
Skill = new (character)
{
@ -1133,26 +1136,26 @@ namespace Oshima.FunGame.OshimaServers.Service
if (id == 6)
{
Skill = new (character)
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
character.Skills.Add();
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 7)
{
Skill = new (character)
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
character.Skills.Add();
Skill = new (character)
{
@ -1163,17 +1166,17 @@ namespace Oshima.FunGame.OshimaServers.Service
if (id == 8)
{
Skill = new (character)
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
character.Skills.Add();
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 9)
@ -1184,11 +1187,11 @@ namespace Oshima.FunGame.OshimaServers.Service
};
character.Skills.Add();
Skill = new (character)
Skill 宿 = new 宿(character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add(宿);
}
if (id == 10)
@ -1199,26 +1202,26 @@ namespace Oshima.FunGame.OshimaServers.Service
};
character.Skills.Add();
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 11)
{
Skill = new (character)
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
character.Skills.Add();
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 12)
@ -1229,11 +1232,26 @@ namespace Oshima.FunGame.OshimaServers.Service
};
character.Skills.Add();
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 13)
{
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
}
if (id == 14)
@ -1266,19 +1284,49 @@ namespace Oshima.FunGame.OshimaServers.Service
character.Skills.Add();
}
if (id == 17)
if (id == 16)
{
Skill = new (character)
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
character.Skills.Add();
Skill = new (character)
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
character.Skills.Add();
}
if (id == 17)
{
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
Skill 宿 = new 宿(character)
{
Level = superLevel
};
character.Skills.Add(宿);
}
if (id == 18)
{
Skill = new (character)
{
Level = passiveLevel
};
character.Skills.Add();
Skill = new (character)
{
Level = superLevel
};
character.Skills.Add();
}
}
@ -1832,55 +1880,77 @@ namespace Oshima.FunGame.OshimaServers.Service
return roundRewards;
}
public static double CalculateRating(CharacterStatistics stats, Team? team = null, CharacterStatistics[]? teammateStats = null)
public static double CalculateRating(CharacterStatistics stats, Team? team = null, CharacterStatistics[]? allStats = null)
{
// 基础得分
double baseScore = (stats.Kills + stats.Assists) / (stats.Kills + stats.Assists + stats.Deaths + 0.01);
if (team is null)
double k = stats.Kills;
double a = stats.Assists;
double d = Math.Max(0, stats.Deaths);
double dmg = stats.TotalDamage + (stats.TotalTrueDamage * 0.2);
double heal = stats.TotalHeal + stats.TotalShield;
double cc = stats.ControlTime;
double taken = stats.TotalTakenDamage;
double live = stats.LiveTime;
if (team != null)
{
baseScore += stats.Kills * 0.1;
baseScore -= stats.Deaths * 0.05;
double teamTotalDmg = allStats?.Sum(s => s.TotalDamage + s.TotalTrueDamage * 0.2) ?? dmg;
double teamTotalHeal = allStats?.Sum(s => s.TotalHeal + s.TotalShield) ?? heal;
int playerCount = allStats?.Length ?? 1;
double dmgShare = dmg / Math.Max(1, teamTotalDmg);
double healShare = heal / Math.Max(1, teamTotalHeal);
double roleContribution = Math.Max(dmgShare, healShare) * playerCount * 0.4;
double roleScore = Math.Min(0.8, roleContribution);
double kdaRatio = (k * 1.3 + a * 0.3) / (d + 1.5);
double kdaScore = Math.Min(0.6, (kdaRatio / 3.0) * 0.4);
double ccScore = Math.Min(0.1, (cc / 60.0) * 0.05);
double tankScore = Math.Min(0.1, (taken / (d + 1) / 10000.0) * 0.1);
double totalRating = roleScore + kdaScore + ccScore + tankScore;
double avgDeaths = allStats?.Average(s => s.Deaths) ?? d;
if (d > avgDeaths && kdaRatio < 1.0) totalRating *= 0.75;
totalRating += 0.25;
return Math.Round(Math.Max(0.01, totalRating), 2);
}
else
{
baseScore = baseScore * 0.9 + 0.6 * (stats.Kills / (stats.Kills + stats.Deaths + 0.01));
}
int rank = stats.LastRank;
int totalPlayers = allStats?.Length ?? 10;
double maxKills = allStats?.Max(s => s.Kills) ?? k;
double maxDmg = allStats?.Max(s => s.TotalDamage + s.TotalTrueDamage * 0.2) ?? dmg;
// 伤害贡献
double damageContribution = Math.Log(1 + Math.Min(2, (stats.TotalDamage / (stats.TotalTakenDamage + 1.45))));
if (team != null && teammateStats != null)
double rankScore = ((totalPlayers - rank + 1.0) / totalPlayers) * 0.6;
double killPart = (k * 1.5 + a * 0.3) / Math.Max(1, maxKills + 1);
double dmgPart = (dmg / Math.Max(1, maxDmg * 1.2)) * 0.1;
double combatScore = Math.Min(0.4, killPart * 0.3 + dmgPart);
double utilityScore = Math.Min(0.05, (cc / 60.0) * 0.02 + (heal / Math.Max(1, maxDmg)) * 0.03);
double totalRating = rankScore + combatScore + utilityScore;
if (k == 0)
{
// 考虑团队伤害排名,优先高伤害的
int damageRank = teammateStats.OrderByDescending(s => s.TotalDamage).ToList().IndexOf(stats) + 1;
if (damageRank > 1)
totalRating *= 0.7;
}
if (rank == 1 && k > 0)
{
double d = 1 - (0.1 * (damageRank - 1));
if (d < 0.1) d = 0.1;
damageContribution *= d;
}
if (k >= maxKills) totalRating += 0.15;
}
// 存活时间贡献
double liveTimeContribution = Math.Log(1 + (stats.LiveTime / (stats.TotalTakenDamage + 1) * 100));
// 团队模式参团率加成
double teamContribution = 0;
if (team != null)
if (rank > 5 && k >= maxKills * 0.8 && k > 0)
{
if (stats.Assists > team.Score) stats.Assists = team.Score;
teamContribution = (stats.Kills + stats.Assists) / (team.Score + 0.01);
totalRating += 0.25;
}
// 权重设置
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; // 参团率权重
// 计算最终评分
double rating = baseScore + k * damageContribution + l * liveTimeContribution + t * teamContribution;
// 确保评分在合理范围内
return Math.Max(0.01, rating);
totalRating += 0.25;
return Math.Round(Math.Max(0.01, totalRating), 2);
}
}
public static void GetCharacterRating(Dictionary<Character, CharacterStatistics> statistics, bool isTeam, List<Team> teams)