技能改动;修复BUG

This commit is contained in:
milimoe 2025-12-31 20:45:36 +08:00
parent 326449345b
commit f2dad7f1b7
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
5 changed files with 42 additions and 22 deletions

View File

@ -26,8 +26,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"造成伤害时会标记目标,攻击具有标记的敌人将对其造成眩晕 1 回合,并回收标记,额外对该角色造成 {系数 * 100:0.##}% 最大生命值的物理伤害。";
public override string DispelDescription => "被驱散性:眩晕需强驱散,标记可弱驱散";
public override string Description => $"造成伤害时会标记目标,攻击具有标记的敌人将对其造成战斗不能 1 回合,并回收标记,额外对该角色造成 {系数 * 100:0.##}% 最大生命值的物理伤害。";
public override string DispelDescription => "被驱散性:战斗不能需强驱散,标记可弱驱散";
public double { get; set; } = 0.12;
private bool = false;
@ -45,23 +45,19 @@ namespace Oshima.FunGame.OshimaModules.Skills
IEnumerable<Effect> effects = enemy.Effects.Where(e => e is && e.Source == character);
if (effects.FirstOrDefault() is e)
{
IEnumerable<Effect> effects2 = character.Effects.Where(e => e is );
if (effects2.FirstOrDefault() is e2)
{
// 移除标记
enemy.Effects.Remove(e);
}
// 移除标记
enemy.Effects.Remove(e);
double = enemy.MaxHP * ;
WriteLine($"[ {character} ] 发动了累积之压!将对 [ {enemy} ] 造成眩晕和额外伤害!");
// 眩晕
IEnumerable<Effect> effects3 = enemy.Effects.Where(e => e is && e.Skill == Skill);
WriteLine($"[ {character} ] 发动了累积之压!将对 [ {enemy} ] 造成战斗不能和额外伤害!");
// 战斗不能
IEnumerable<Effect> effects3 = enemy.Effects.Where(e => e is && e.Skill == Skill);
if (effects3.Any())
{
effects3.First().RemainDurationTurn++;
}
else
{
e3 = new(Skill, character, false, 0, 1);
e3 = new(Skill, character, false, 0, 1);
enemy.Effects.Add(e3);
e3.OnEffectGained(enemy);
}

View File

@ -34,8 +34,9 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"最大生命值减少 20%。破釜沉舟:生命值高于 40% 时,受到额外的 [ {高于40额外伤害下限}{高于40额外伤害上限}% ] 伤害,获得 [ 累计所受伤害的 {高于40的加成下限}{高于40的加成上限}% ] 伤害加成;生命值低于等于 40% 时,不会受到额外的伤害,并且获得 [ 累计受到的伤害 {低于40的加成下限}{低于40的加成上限}% ] 的伤害加成。" +
$"在没有受到任何伤害的时候,将获得 {常规伤害加成 * 100:0.##}% 伤害加成。" + ( > 0 ? $"(当前累计受到伤害:{累计受到的伤害:0.##}" : "");
$"在没有受到任何伤害的时候,将获得 {常规伤害加成 * 100:0.##}% 伤害加成。通过累计受到伤害发动破釜沉舟时,目标的闪避检定获得 40% 的减值。" + ( > 0 ? $"(当前累计受到伤害:{累计受到的伤害:0.##}" : "");
private bool = false;
private double = 0;
private double = 0;
private double HP = 0;
@ -71,6 +72,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
if (character == Skill.Character)
{
= != 0;
= (damage);
WriteLine($"[ {character} ] 发动了破釜沉舟,获得了 {这次的伤害加成:0.##} 点伤害加成!");
= 0;
@ -106,5 +108,20 @@ namespace Oshima.FunGame.OshimaModules.Skills
}
}
}
public override bool BeforeEvadeCheck(Character actor, Character enemy, ref double throwingBonus)
{
if ( && actor == Skill.Character)
{
= false;
throwingBonus -= 0.4;
}
return true;
}
public override void OnTurnEnd(Character character)
{
= false;
}
}
}

View File

@ -28,7 +28,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"基于普通攻击的目标选择器对目标发起 2 次普通攻击。若该回合已使用过普通攻击,则只会发起 1 次普通攻击;使用该技能后,该回合不再允许普通攻击。伤害特效可叠加;不受 [ 攻击受限 ] 状态的限制。";
public override string Description => $"基于普通攻击的目标选择器对目标发起 2 次普通攻击。双连击会占用 1 次普通攻击的决策点配额,当配额不足时,仅能发起 1 次普通攻击。伤害特效可叠加;不受 [ 攻击受限 ] 状态的限制。";
public (Skill skill) : base(skill)
{
@ -39,14 +39,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
if (GamingQueue != null)
{
bool hasAttacked = false;
bool checkQuota = true;
if (GamingQueue.CharacterDecisionPoints.TryGetValue(caster, out DecisionPoints? dp) && dp != null)
{
hasAttacked = dp.ActionTypes.Contains(CharacterActionType.NormalAttack);
dp.ActionTypes.Add(CharacterActionType.NormalAttack);
checkQuota = dp.CheckActionTypeQuota(CharacterActionType.NormalAttack);
dp.AddActionType(CharacterActionType.NormalAttack, false);
}
caster.NormalAttack.Attack(GamingQueue, caster, targets);
if (!hasAttacked)
if (checkQuota)
{
caster.NormalAttack.Attack(GamingQueue, caster, targets);
}

View File

@ -1,5 +1,6 @@
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
namespace Oshima.FunGame.OshimaModules.Skills
{
@ -25,7 +26,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"本回合内大幅提升移动距离。";
public override string Description => $"本回合内大幅提升移动距离,并附赠一次战技的决策点配额。移动距离提升:{移动距离提升} 格。";
public override string DispelDescription => "";
public override EffectType EffectType => EffectType.Haste;
public override bool Durative => false;
@ -45,21 +46,24 @@ namespace Oshima.FunGame.OshimaModules.Skills
};
}
}
private int = 0;
public override void OnEffectGained(Character character)
{
Skill.IsInEffect = true;
character.ExMOV += ;
= ;
character.ExMOV += ;
}
public override void OnEffectLost(Character character)
{
Skill.IsInEffect = false;
character.ExMOV -= ;
character.ExMOV -= ;
}
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
{
= 0;
if (!caster.Effects.Contains(this))
{
GamingQueue?.LastRound.AddApplyEffects(caster, EffectType);
@ -67,6 +71,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
caster.Effects.Add(this);
OnEffectGained(caster);
}
if (GamingQueue != null && GamingQueue.CharacterDecisionPoints.TryGetValue(caster, out DecisionPoints? dp) && dp != null)
{
dp.AddTempActionQuota(CharacterActionType.CastSkill);
}
}
}
}

View File

@ -1378,7 +1378,6 @@ namespace Oshima.FunGame.OshimaServers.Service
Item newItem = new (type, box.Gifts[name]);
AddItemToUserInventory(user, newItem, false, true);
}
break;
}
}
}