mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2026-01-19 14:08:23 +00:00
新角色和新技能,技能改动
This commit is contained in:
parent
ac0a926ad0
commit
b208cd9497
@ -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,
|
||||
};
|
||||
};
|
||||
|
||||
@ -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 强攻(),
|
||||
|
||||
@ -33,10 +33,4 @@
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Skills\ShiYu\" />
|
||||
<Folder Include="Skills\TheGodK\" />
|
||||
<Folder Include="Skills\CHAOS\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
50
OshimaModules/Skills/CHAOS/全军出击.cs
Normal file
50
OshimaModules/Skills/CHAOS/全军出击.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
47
OshimaModules/Skills/CHAOS/雇佣兵团.cs
Normal file
47
OshimaModules/Skills/CHAOS/雇佣兵团.cs
Normal 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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
{
|
||||
@ -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;
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
@ -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))
|
||||
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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 => $"每次造成伤害都会随机减少对方 [ 7~15 ] 点能量值,对能量值低于一半的角色额外造成 30% 伤害。对于枯竭打击而言,能量值大于 100 且小于 150 时,视为低于一半。";
|
||||
public override string Description => $"每次造成伤害都会随机减少对方 [ 7~15 ] 点能量值,对能量值低于一半的角色额外造成 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, 额外伤害);
|
||||
}
|
||||
@ -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 * 能量系数 + 智力伤害);
|
||||
}
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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;
|
||||
40
OshimaModules/Skills/ShiYu/开宫.cs
Normal file
40
OshimaModules/Skills/ShiYu/开宫.cs
Normal 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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
44
OshimaModules/Skills/ShiYu/放监.cs
Normal file
44
OshimaModules/Skills/ShiYu/放监.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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)
|
||||
|
||||
@ -249,18 +249,18 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
}
|
||||
|
||||
/**
|
||||
* 力量爆发 = 攻击力提升+普攻自残
|
||||
* 天赐之力 = 攻击力+物理穿透+闪避率提升,减少普攻硬直,强化普攻,减少心灵之火CD
|
||||
* 魔法涌流 = 普攻转为魔法伤害,可以普攻多个目标,护甲+魔抗提升,减少魔法震荡CD
|
||||
* 三重叠加 = 强化灵能反射,并在触发灵能反射时回复能量
|
||||
* 变幻之心 = 根据智慧与力量的模式触发回血+吸血或者魔法伤害加成
|
||||
* 精准打击 = 提升暴击率和暴击伤害、物理穿透
|
||||
* 熵灭极诣 = 攻击力提升+普攻自残
|
||||
* 千羽瞬华 = 攻击力+物理穿透+闪避率提升,减少普攻硬直,强化普攻,减少心灵之弦CD
|
||||
* 咒怨洪流 = 普攻转为魔法伤害,可以普攻多个目标,护甲+魔抗提升,减少蚀魂震击CD
|
||||
* 三相灵枢 = 强化灵能反射,并在触发灵能反射时回复能量
|
||||
* 变幻之心 = 根据双生流转的模式触发回血+吸血或者魔法伤害加成
|
||||
* 零式灭杀 = 提升暴击率和暴击伤害、物理穿透
|
||||
* 绝对领域 = 免疫所有伤害,时间型;起步消耗100能量,每10能量额外时间
|
||||
* 能量毁灭 = 多目标魔法伤害,伤害量基于敌人能量值
|
||||
* 迅捷之势 = 护甲+魔抗提升,普攻转为魔法伤害,减少普攻硬直,强化普攻
|
||||
* 嗜血本能 = 获得吸血,强化累积之压
|
||||
* 平衡强化 = 力量+敏捷提升
|
||||
* 血之狂欢 = 获得吸血
|
||||
* 残香凋零 = 多目标魔法伤害,伤害量基于敌人能量值
|
||||
* 宿命时律 = 护甲+魔抗提升,普攻转为魔法伤害,减少普攻硬直,强化普攻
|
||||
* 极寒渴望 = 获得吸血,强化累积之压
|
||||
* 身心一境 = 力量+敏捷提升
|
||||
* 饕餮盛宴 = 获得吸血
|
||||
* 樱花无双击 = 单体伤害+生命偷取
|
||||
* 漆黑之牙 = 全体伤害,此技能击杀敌人时,永久提升该技能伤害
|
||||
* 女王之怒 = 单体伤害+虚弱(伤害降低+护甲魔抗降低+重伤,回合型),可弱驱散
|
||||
@ -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
|
||||
|
||||
46
OshimaModules/Skills/TheGodK/概念之骰.cs
Normal file
46
OshimaModules/Skills/TheGodK/概念之骰.cs
Normal 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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
58
OshimaModules/Skills/TheGodK/神之因果.cs
Normal file
58
OshimaModules/Skills/TheGodK/神之因果.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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);
|
||||
@ -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;
|
||||
}
|
||||
@ -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} ] 被眩晕了!");
|
||||
冷却时间 = 基础冷却时间;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
@ -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, 敏捷伤害);
|
||||
}
|
||||
@ -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": [
|
||||
{
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user