2026-01-16 01:55:46 +08:00

211 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()).GeneralDescription : "";
public int { get; set; } = 0;
public int { get; set; } = 0;
public int { get; set; } = 0;
public int { get; set; } = 0;
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{
return Effects;
}
public override void OnCharacterRespawn(Skill newSkill)
{
if (newSkill is skill)
{
skill. = ;
skill. = ;
skill. = ;
skill. = ;
}
}
}
public class : Effect
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description { get; set; } = "";
public string GeneralDescription => $"{Skill.SkillOwner()}的助攻窗口期永远不会过期。{Skill.SkillOwner()}每次参与击杀时都会进行一次概念投掷,获得一层永久持续的增益效果,且每个概念都最多可以叠加 {最多层数} 层。每次概念投掷可取得以下任意一项概念增益:\r\n" +
$"「力」:攻击力提升 {攻击力提升 * 100:0.##}% [ {Skill.Character?.BaseATK * 攻击力提升:0.##} ]。\r\n「暴」暴击率提升 {暴击率提升 * 100:0.##}%,暴击伤害提升 {暴击伤害提升 * 100:0.##}%。\r\n「噬」生命偷取提升 {生命偷取提升 * 100:0.##}%。\r\n「御」受到的伤害减少 {攻击力提升 * 100:0.##}%。\r\n" +
$"取得第一层「噬」后,同时获得「恒」效果:当总生命偷取超过 {生命偷取阈值 * 100:0.##}% 后,超出部分每 {生命偷取每单位 * 100:0.##}% 转化为 {生命偷取转化 * 100:0.##}% 攻击力。";
public static int => 8;
public static double => 0.08;
public static double => 0.04;
public static double => 0.08;
public static double => 0.05;
public static double => 0.06;
public static double => 0.3;
public static double => 0.01;
public static double => 0.005;
private double = 0;
private double = 0;
private double = 0;
private double = 0;
private double = 0;
private double = 0;
public (Skill skill) : base(skill)
{
Description = GeneralDescription;
}
public override double AlterActualDamageAfterCalculation(Character character, Character enemy, double damage, bool isNormalAttack, DamageType damageType, MagicType magicType, DamageResult damageResult, ref bool isEvaded, Dictionary<Effect, double> totalDamageBonus)
{
if (enemy == Skill.Character && > 0)
{
double reduce = damage * ;
WriteLine($"[ {Skill.Character} ] 发动了概念之骰!伤害减少了 {reduce:0.##} 点!");
return -reduce;
}
return 0;
}
public override void AfterDeathCalculation(Character death, bool hasMaster, Character? killer, Dictionary<Character, int> continuousKilling, Dictionary<Character, int> earnedMoney, Character[] assists)
{
if (Skill.Character != null && death != Skill.Character && (killer == Skill.Character || assists.Contains(Skill.Character)) && Skill is skill)
{
WriteLine($"[ {Skill.Character} ] 进行概念投掷:“此乃,神之概念。”");
bool result = false;
do
{
switch (Random.Shared.Next(4))
{
case 0:
if (skill. < )
{
skill.++;
WriteLine($"[ {Skill.Character} ] 获得了「力」概念效果,当前「力」层数:{skill.力层数}。");
result = true;
}
break;
case 1:
if (skill. < )
{
skill.++;
WriteLine($"[ {Skill.Character} ] 获得了「暴」概念效果,当前「暴」层数:{skill.暴层数}。");
result = true;
}
break;
case 2:
if (skill. < )
{
skill.++;
WriteLine($"[ {Skill.Character} ] 获得了「噬」概念效果,当前「噬」层数:{skill.噬层数}。");
result = true;
}
break;
case 3:
if (skill. < )
{
skill.++;
WriteLine($"[ {Skill.Character} ] 获得了「御」概念效果,当前「御」层数:{skill.御层数}。");
result = true;
}
break;
}
if (skill. + skill. + skill. + skill. >= * 4)
{
WriteLine($"[ {Skill.Character} ] 已经完成了「概念之骰」的全部概念收集!!");
result = true;
}
}
while (!result);
if (result)
{
(Skill.Character);
}
}
}
public override void OnEffectGained(Character character)
{
(character);
}
public override void OnTimeElapsed(Character character, double elapsed)
{
(character);
if (GamingQueue != null && GamingQueue.AssistDetails.TryGetValue(character, out AssistDetail? ad) && ad != null)
{
foreach (Character enemy in ad.DamageLastTime.Keys)
{
ad.DamageLastTime[enemy] = GamingQueue.TotalTime;
}
foreach (Character teammate in ad.NotDamageAssistLastTime.Keys)
{
ad.NotDamageAssistLastTime[teammate] = GamingQueue.TotalTime;
}
}
}
public void (Character character)
{
if ( != 0)
{
character.ExATKPercentage -= ;
= 0;
}
if ( != 0)
{
character.ExCritRate -= ;
= 0;
}
if ( != 0)
{
character.ExCritDMG -= ;
= 0;
}
if ( != 0)
{
character.Lifesteal -= ;
= 0;
}
if ( != 0)
{
= 0;
}
if ( != 0)
{
character.ExATKPercentage -= ;
= 0;
}
if (Skill is skill)
{
= * skill.;
= * skill.;
= * skill.;
= * skill.;
= * skill.;
character.ExATKPercentage += ;
character.ExCritRate += ;
character.ExCritDMG += ;
character.Lifesteal += ;
if (skill. > 0 && character.Lifesteal > )
{
double = character.Lifesteal - ;
= / * ;
}
character.ExATKPercentage += ;
Description = $"{Skill.SkillOwner()}的助攻窗口期永远不会过期。{Skill.SkillOwner()}每次参与击杀时都会进行一次概念投掷,获得一层永久持续的增益效果,且每个概念都最多可以叠加 {最多层数} 层。(当前层数:「力」× {skill.力层数}、「暴」× {skill.暴层数}、「噬」× {skill.噬层数}、「御」× {skill.御层数},攻击力提升:{(实际攻击力提升 + 实际生命偷取转化) * 100:0.##}% [ {character.BaseATK * (实际攻击力提升 + 实际生命偷取转化):0.##} ] 点,暴击率提升:{实际暴击率提升 * 100:0.##}%,暴击伤害提升:{实际暴击伤害提升 * 100:0.##}%,生命偷取提升:{实际生命偷取提升 * 100:0.##}%,受到伤害减少:{实际受到伤害减少 * 100:0.##}%";
}
}
}
}