mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2025-12-05 16:16:35 +00:00
护盾改动和角色增强
This commit is contained in:
parent
66231b5003
commit
7e8c69bf1b
@ -13,28 +13,50 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
|
|||||||
public override bool DurativeWithoutDuration => true;
|
public override bool DurativeWithoutDuration => true;
|
||||||
public override bool IsDebuff => false;
|
public override bool IsDebuff => false;
|
||||||
public override Character Source => _sourceCharacter;
|
public override Character Source => _sourceCharacter;
|
||||||
|
public override bool Durative => _durative;
|
||||||
|
public override double Duration => _duration;
|
||||||
|
public override int DurationTurn => _durationTurn;
|
||||||
|
|
||||||
private readonly Character _sourceCharacter;
|
private readonly Character _sourceCharacter;
|
||||||
private readonly double _shield;
|
private readonly double _shield;
|
||||||
|
private readonly bool _durative;
|
||||||
|
private readonly double _duration;
|
||||||
|
private readonly int _durationTurn;
|
||||||
|
|
||||||
public 物理护盾(Skill skill, Character sourceCharacter, double shield) : base(skill)
|
public 物理护盾(Skill skill, Character sourceCharacter, double shield, bool durative = false, double duration = 0, int durationTurn = 0) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
_sourceCharacter = sourceCharacter;
|
_sourceCharacter = sourceCharacter;
|
||||||
|
_durative = durative;
|
||||||
|
_duration = duration;
|
||||||
|
_durationTurn = durationTurn;
|
||||||
_shield = shield;
|
_shield = shield;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnEffectGained(Character character)
|
public override void OnEffectGained(Character character)
|
||||||
{
|
{
|
||||||
character.Shield.Physical += _shield;
|
if (_durative && RemainDuration == 0)
|
||||||
|
{
|
||||||
|
RemainDuration = Duration;
|
||||||
|
}
|
||||||
|
else if (RemainDurationTurn == 0)
|
||||||
|
{
|
||||||
|
RemainDurationTurn = DurationTurn;
|
||||||
|
}
|
||||||
|
character.Shield.AddShieldOfEffect(new(this, _shield, false, MagicType.None));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnShieldBroken(Character character, Character attacker, bool isMagic, MagicType magicType, double damage, double shield, double overFlowing)
|
public override void OnEffectLost(Character character)
|
||||||
{
|
{
|
||||||
Effect[] effects = [.. character.Effects.Where(e => e is 物理护盾)];
|
character.Shield.RemoveShieldOfEffect(this);
|
||||||
foreach (Effect effect in effects)
|
}
|
||||||
|
|
||||||
|
public override bool OnShieldBroken(Character character, Character attacker, Effect effet, double overFlowing)
|
||||||
{
|
{
|
||||||
character.Effects.Remove(effect);
|
if (effet == this)
|
||||||
|
{
|
||||||
|
character.Shield.RemoveShieldOfEffect(this);
|
||||||
|
character.Effects.Remove(this);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,28 +13,50 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
|
|||||||
public override bool DurativeWithoutDuration => true;
|
public override bool DurativeWithoutDuration => true;
|
||||||
public override bool IsDebuff => false;
|
public override bool IsDebuff => false;
|
||||||
public override Character Source => _sourceCharacter;
|
public override Character Source => _sourceCharacter;
|
||||||
|
public override bool Durative => _durative;
|
||||||
|
public override double Duration => _duration;
|
||||||
|
public override int DurationTurn => _durationTurn;
|
||||||
|
|
||||||
private readonly Character _sourceCharacter;
|
private readonly Character _sourceCharacter;
|
||||||
private readonly double _shield;
|
private readonly double _shield;
|
||||||
|
private readonly bool _durative;
|
||||||
|
private readonly double _duration;
|
||||||
|
private readonly int _durationTurn;
|
||||||
|
|
||||||
public 魔法护盾(Skill skill, Character sourceCharacter, double shield) : base(skill)
|
public 魔法护盾(Skill skill, Character sourceCharacter, double shield, bool durative = false, double duration = 0, int durationTurn = 0) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
_sourceCharacter = sourceCharacter;
|
_sourceCharacter = sourceCharacter;
|
||||||
|
_durative = durative;
|
||||||
|
_duration = duration;
|
||||||
|
_durationTurn = durationTurn;
|
||||||
_shield = shield;
|
_shield = shield;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnEffectGained(Character character)
|
public override void OnEffectGained(Character character)
|
||||||
{
|
{
|
||||||
character.Shield.None += _shield;
|
if (_durative && RemainDuration == 0)
|
||||||
|
{
|
||||||
|
RemainDuration = Duration;
|
||||||
|
}
|
||||||
|
else if (RemainDurationTurn == 0)
|
||||||
|
{
|
||||||
|
RemainDurationTurn = DurationTurn;
|
||||||
|
}
|
||||||
|
character.Shield.AddShieldOfEffect(new(this, _shield, true, MagicType.None));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnShieldBroken(Character character, Character attacker, bool isMagic, MagicType magicType, double damage, double shield, double overFlowing)
|
public override void OnEffectLost(Character character)
|
||||||
{
|
{
|
||||||
Effect[] effects = [.. character.Effects.Where(e => e is 魔法护盾)];
|
character.Shield.RemoveShieldOfEffect(this);
|
||||||
foreach (Effect effect in effects)
|
}
|
||||||
|
|
||||||
|
public override bool OnShieldBroken(Character character, Character attacker, Effect effet, double overFlowing)
|
||||||
{
|
{
|
||||||
character.Effects.Remove(effect);
|
if (effet == this)
|
||||||
|
{
|
||||||
|
character.Shield.RemoveShieldOfEffect(this);
|
||||||
|
character.Effects.Remove(this);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,21 +1,20 @@
|
|||||||
using Milimoe.FunGame.Core.Entity;
|
using Milimoe.FunGame.Core.Entity;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
|
|
||||||
|
|
||||||
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
||||||
{
|
{
|
||||||
public class 增加物理护盾 : Effect
|
public class 增加混合护盾值 : Effect
|
||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
public override string Name => Skill.Name;
|
||||||
public override string Description => $"为{TargetDescription}提供 {护盾值:0.##} 点物理护盾。";
|
public override string Description => $"为{TargetDescription}提供 {护盾值:0.##} 点混合护盾值。";
|
||||||
public string TargetDescription => Skill.SelectAllTeammates ? "友方全体角色" : $"目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}友方角色";
|
public string TargetDescription => Skill.SelectAllTeammates ? "友方全体角色" : $"目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}友方角色";
|
||||||
|
|
||||||
private double 护盾值 => Level > 0 ? Math.Abs(基础数值护盾 + 基础护盾等级成长 * (Level - 1)) : Math.Abs(基础数值护盾);
|
private double 护盾值 => Level > 0 ? Math.Abs(基础数值护盾 + 基础护盾等级成长 * (Level - 1)) : Math.Abs(基础数值护盾);
|
||||||
private double 基础数值护盾 { get; set; } = 200;
|
private double 基础数值护盾 { get; set; } = 200;
|
||||||
private double 基础护盾等级成长 { get; set; } = 100;
|
private double 基础护盾等级成长 { get; set; } = 100;
|
||||||
|
|
||||||
public 增加物理护盾(Skill skill, double 基础数值护盾, double 基础护盾等级成长) : base(skill)
|
public 增加混合护盾值(Skill skill, double 基础数值护盾, double 基础护盾等级成长) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
this.基础数值护盾 = 基础数值护盾;
|
this.基础数值护盾 = 基础数值护盾;
|
||||||
@ -26,11 +25,8 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
|||||||
{
|
{
|
||||||
foreach (Character target in targets)
|
foreach (Character target in targets)
|
||||||
{
|
{
|
||||||
WriteLine($"[ {target} ] 获得了 {护盾值:0.##} 点物理护盾!");
|
target.Shield.Mix += 护盾值;
|
||||||
物理护盾 e = new(Skill, caster, 护盾值);
|
WriteLine($"[ {target} ] 获得了 {护盾值:0.##} 点混合护盾值!");
|
||||||
target.Effects.Add(e);
|
|
||||||
e.OnEffectGained(target);
|
|
||||||
e.DispelledType = DispelledType;
|
|
||||||
GamingQueue?.LastRound.ApplyEffects.TryAdd(target, [EffectType.Shield]);
|
GamingQueue?.LastRound.ApplyEffects.TryAdd(target, [EffectType.Shield]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,21 +1,20 @@
|
|||||||
using Milimoe.FunGame.Core.Entity;
|
using Milimoe.FunGame.Core.Entity;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
|
|
||||||
|
|
||||||
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
||||||
{
|
{
|
||||||
public class 增加魔法护盾 : Effect
|
public class 增加物理护盾_护盾值型 : Effect
|
||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
public override string Name => Skill.Name;
|
||||||
public override string Description => $"为{TargetDescription}提供 {护盾值:0.##} 点魔法护盾。";
|
public override string Description => $"为{TargetDescription}提供 {护盾值:0.##} 点物理护盾值。";
|
||||||
public string TargetDescription => Skill.SelectAllTeammates ? "友方全体角色" : $"目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}友方角色";
|
public string TargetDescription => Skill.SelectAllTeammates ? "友方全体角色" : $"目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}友方角色";
|
||||||
|
|
||||||
private double 护盾值 => Level > 0 ? Math.Abs(基础数值护盾 + 基础护盾等级成长 * (Level - 1)) : Math.Abs(基础数值护盾);
|
private double 护盾值 => Level > 0 ? Math.Abs(基础数值护盾 + 基础护盾等级成长 * (Level - 1)) : Math.Abs(基础数值护盾);
|
||||||
private double 基础数值护盾 { get; set; } = 200;
|
private double 基础数值护盾 { get; set; } = 200;
|
||||||
private double 基础护盾等级成长 { get; set; } = 100;
|
private double 基础护盾等级成长 { get; set; } = 100;
|
||||||
|
|
||||||
public 增加魔法护盾(Skill skill, double 基础数值护盾, double 基础护盾等级成长) : base(skill)
|
public 增加物理护盾_护盾值型(Skill skill, double 基础数值护盾, double 基础护盾等级成长) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
this.基础数值护盾 = 基础数值护盾;
|
this.基础数值护盾 = 基础数值护盾;
|
||||||
@ -26,11 +25,8 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
|||||||
{
|
{
|
||||||
foreach (Character target in targets)
|
foreach (Character target in targets)
|
||||||
{
|
{
|
||||||
WriteLine($"[ {target} ] 获得了 {护盾值:0.##} 点魔法护盾!");
|
target.Shield[false] += 护盾值;
|
||||||
魔法护盾 e = new(Skill, caster, 护盾值);
|
WriteLine($"[ {target} ] 获得了 {护盾值:0.##} 点物理护盾值!");
|
||||||
target.Effects.Add(e);
|
|
||||||
e.OnEffectGained(target);
|
|
||||||
e.DispelledType = DispelledType;
|
|
||||||
GamingQueue?.LastRound.ApplyEffects.TryAdd(target, [EffectType.Shield]);
|
GamingQueue?.LastRound.ApplyEffects.TryAdd(target, [EffectType.Shield]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
45
OshimaModules/Effects/SkillEffects/增加物理护盾_特效持续型.cs
Normal file
45
OshimaModules/Effects/SkillEffects/增加物理护盾_特效持续型.cs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
using Milimoe.FunGame.Core.Entity;
|
||||||
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
|
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
|
||||||
|
|
||||||
|
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
||||||
|
{
|
||||||
|
public class 增加物理护盾_特效持续型 : Effect
|
||||||
|
{
|
||||||
|
public override long Id => Skill.Id;
|
||||||
|
public override string Name => Skill.Name;
|
||||||
|
public override string Description => $"为{TargetDescription}提供 {护盾值:0.##} 点物理护盾,持续 {持续时间}。";
|
||||||
|
public string TargetDescription => Skill.SelectAllTeammates ? "友方全体角色" : $"目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}友方角色";
|
||||||
|
|
||||||
|
private string 持续时间 => _durative && _duration > 0 ? _duration + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? _durationTurn + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}");
|
||||||
|
private double 护盾值 => Level > 0 ? Math.Abs(基础数值护盾 + 基础护盾等级成长 * (Level - 1)) : Math.Abs(基础数值护盾);
|
||||||
|
private double 基础数值护盾 { get; set; } = 200;
|
||||||
|
private double 基础护盾等级成长 { get; set; } = 100;
|
||||||
|
private readonly bool _durative;
|
||||||
|
private readonly double _duration;
|
||||||
|
private readonly int _durationTurn;
|
||||||
|
|
||||||
|
public 增加物理护盾_特效持续型(Skill skill, double 基础数值护盾, double 基础护盾等级成长, bool durative = false, double duration = 0, int durationTurn = 0) : base(skill)
|
||||||
|
{
|
||||||
|
GamingQueue = skill.GamingQueue;
|
||||||
|
this.基础数值护盾 = 基础数值护盾;
|
||||||
|
this.基础护盾等级成长 = 基础护盾等级成长;
|
||||||
|
_durative = durative;
|
||||||
|
_duration = duration;
|
||||||
|
_durationTurn = durationTurn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||||
|
{
|
||||||
|
foreach (Character target in targets)
|
||||||
|
{
|
||||||
|
WriteLine($"[ {target} ] 获得了 {护盾值:0.##} 点物理护盾!");
|
||||||
|
物理护盾 e = new(Skill, caster, 护盾值, _durative, _duration, _durationTurn);
|
||||||
|
target.Effects.Add(e);
|
||||||
|
e.OnEffectGained(target);
|
||||||
|
e.DispelledType = DispelledType;
|
||||||
|
GamingQueue?.LastRound.ApplyEffects.TryAdd(target, [EffectType.Shield]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
OshimaModules/Effects/SkillEffects/增加魔法护盾_护盾值型.cs
Normal file
34
OshimaModules/Effects/SkillEffects/增加魔法护盾_护盾值型.cs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
using Milimoe.FunGame.Core.Entity;
|
||||||
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
|
|
||||||
|
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
||||||
|
{
|
||||||
|
public class 增加魔法护盾_护盾值型 : Effect
|
||||||
|
{
|
||||||
|
public override long Id => Skill.Id;
|
||||||
|
public override string Name => Skill.Name;
|
||||||
|
public override string Description => $"为{TargetDescription}提供 {护盾值:0.##} 点魔法护盾值。";
|
||||||
|
public string TargetDescription => Skill.SelectAllTeammates ? "友方全体角色" : $"目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}友方角色";
|
||||||
|
|
||||||
|
private double 护盾值 => Level > 0 ? Math.Abs(基础数值护盾 + 基础护盾等级成长 * (Level - 1)) : Math.Abs(基础数值护盾);
|
||||||
|
private double 基础数值护盾 { get; set; } = 200;
|
||||||
|
private double 基础护盾等级成长 { get; set; } = 100;
|
||||||
|
|
||||||
|
public 增加魔法护盾_护盾值型(Skill skill, double 基础数值护盾, double 基础护盾等级成长) : base(skill)
|
||||||
|
{
|
||||||
|
GamingQueue = skill.GamingQueue;
|
||||||
|
this.基础数值护盾 = 基础数值护盾;
|
||||||
|
this.基础护盾等级成长 = 基础护盾等级成长;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||||
|
{
|
||||||
|
foreach (Character target in targets)
|
||||||
|
{
|
||||||
|
target.Shield[true, MagicType.None] += 护盾值;
|
||||||
|
WriteLine($"[ {target} ] 获得了 {护盾值:0.##} 点魔法护盾值!");
|
||||||
|
GamingQueue?.LastRound.ApplyEffects.TryAdd(target, [EffectType.Shield]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
45
OshimaModules/Effects/SkillEffects/增加魔法护盾_特效持续型.cs
Normal file
45
OshimaModules/Effects/SkillEffects/增加魔法护盾_特效持续型.cs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
using Milimoe.FunGame.Core.Entity;
|
||||||
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
|
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
|
||||||
|
|
||||||
|
namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
||||||
|
{
|
||||||
|
public class 增加魔法护盾_特效持续型 : Effect
|
||||||
|
{
|
||||||
|
public override long Id => Skill.Id;
|
||||||
|
public override string Name => Skill.Name;
|
||||||
|
public override string Description => $"为{TargetDescription}提供 {护盾值:0.##} 点魔法护盾,持续 {持续时间}。";
|
||||||
|
public string TargetDescription => Skill.SelectAllTeammates ? "友方全体角色" : $"目标{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}友方角色";
|
||||||
|
|
||||||
|
private string 持续时间 => _durative && _duration > 0 ? _duration + $" {GameplayEquilibriumConstant.InGameTime}" : (!_durative && _durationTurn > 0 ? _durationTurn + " 回合" : $"0 {GameplayEquilibriumConstant.InGameTime}");
|
||||||
|
private double 护盾值 => Level > 0 ? Math.Abs(基础数值护盾 + 基础护盾等级成长 * (Level - 1)) : Math.Abs(基础数值护盾);
|
||||||
|
private double 基础数值护盾 { get; set; } = 200;
|
||||||
|
private double 基础护盾等级成长 { get; set; } = 100;
|
||||||
|
private readonly bool _durative;
|
||||||
|
private readonly double _duration;
|
||||||
|
private readonly int _durationTurn;
|
||||||
|
|
||||||
|
public 增加魔法护盾_特效持续型(Skill skill, double 基础数值护盾, double 基础护盾等级成长, bool durative = false, double duration = 0, int durationTurn = 0) : base(skill)
|
||||||
|
{
|
||||||
|
GamingQueue = skill.GamingQueue;
|
||||||
|
this.基础数值护盾 = 基础数值护盾;
|
||||||
|
this.基础护盾等级成长 = 基础护盾等级成长;
|
||||||
|
_durative = durative;
|
||||||
|
_duration = duration;
|
||||||
|
_durationTurn = durationTurn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
||||||
|
{
|
||||||
|
foreach (Character target in targets)
|
||||||
|
{
|
||||||
|
WriteLine($"[ {target} ] 获得了 {护盾值:0.##} 点魔法护盾!");
|
||||||
|
魔法护盾 e = new(Skill, caster, 护盾值, _durative, _duration, _durationTurn);
|
||||||
|
target.Effects.Add(e);
|
||||||
|
e.OnEffectGained(target);
|
||||||
|
e.DispelledType = DispelledType;
|
||||||
|
GamingQueue?.LastRound.ApplyEffects.TryAdd(target, [EffectType.Shield]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
|
|||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
public override string Name => Skill.Name;
|
||||||
public override string Description => $"为{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}目标回复其最大生命值 {百分比 * 100:0.##}% 点生命值。";
|
public override string Description => $"为{(Skill.CanSelectTargetCount > 1 ? $"至多 {Skill.CanSelectTargetCount} 个" : "")}目标回复其最大生命值 {百分比 * 100:0.##}% 生命值。{(CanRespawn ? "如果目标已死亡,将复活目标。" : "")}";
|
||||||
|
|
||||||
private double 基础回复 { get; set; } = 0.03;
|
private double 基础回复 { get; set; } = 0.03;
|
||||||
private double 回复成长 { get; set; } = 0.03;
|
private double 回复成长 { get; set; } = 0.03;
|
||||||
|
|||||||
@ -25,53 +25,118 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => "变幻之心";
|
public override string Name => "变幻之心";
|
||||||
public override string Description => $"检查 [ 智慧与力量 ] 的模式。在力量模式下,立即回复 {生命值回复 * 100:0.##}% 生命值;智力模式下,下一次魔法伤害提升 {伤害提升 * 100:0.##}%。";
|
public override string Description => $"检查 [ 智慧与力量 ] 的模式。在力量模式下,立即回复 {生命值回复 * 100:0.##}% 生命值,同时下 {吸血次数} 次对敌人造成伤害时获得 30% 生命偷取;" +
|
||||||
|
$"智力模式下,下 {魔法加成次数} 次魔法伤害提升 {伤害提升 * 100:0.##}%。此技能效果不叠加,重复释放时将重置次数;若是模式切换后重复释放,将回收先前的效果。";
|
||||||
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
|
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
|
||||||
|
|
||||||
|
private int 吸血次数
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Level switch
|
||||||
|
{
|
||||||
|
1 => 3,
|
||||||
|
2 => 3,
|
||||||
|
3 => 4,
|
||||||
|
4 => 4,
|
||||||
|
5 => 5,
|
||||||
|
6 => 5,
|
||||||
|
_ => 3
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private int 魔法加成次数
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Level switch
|
||||||
|
{
|
||||||
|
1 => 1,
|
||||||
|
2 => 2,
|
||||||
|
3 => 2,
|
||||||
|
4 => 3,
|
||||||
|
5 => 3,
|
||||||
|
6 => 4,
|
||||||
|
_ => 1
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
private double 生命值回复 => 0.25 + 0.03 * (Level - 1);
|
private double 生命值回复 => 0.25 + 0.03 * (Level - 1);
|
||||||
private double 伤害提升 => 0.6 + 0.4 * (Level - 1);
|
private double 伤害提升 => 0.6 + 0.4 * (Level - 1);
|
||||||
|
private double 当前吸血次数 = 0;
|
||||||
|
private double 当前魔法加成次数 = 0;
|
||||||
|
|
||||||
public override void OnEffectGained(Character character)
|
public override void OnEffectGained(Character character)
|
||||||
{
|
{
|
||||||
Skill.IsInEffect = true;
|
if (character.PrimaryAttribute == PrimaryAttribute.STR)
|
||||||
|
{
|
||||||
|
当前吸血次数 = 吸血次数;
|
||||||
|
}
|
||||||
|
else if (character.PrimaryAttribute == PrimaryAttribute.INT)
|
||||||
|
{
|
||||||
|
当前魔法加成次数 = 魔法加成次数;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnEffectLost(Character character)
|
public override void OnEffectLost(Character character)
|
||||||
{
|
{
|
||||||
Skill.IsInEffect = false;
|
当前吸血次数 = 0;
|
||||||
|
当前魔法加成次数 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override double AlterExpectedDamageBeforeCalculation(Character character, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, Dictionary<Effect, double> totalDamageBonus)
|
public override double AlterExpectedDamageBeforeCalculation(Character character, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, Dictionary<Effect, double> totalDamageBonus)
|
||||||
{
|
{
|
||||||
if (character == Skill.Character && isMagicDamage)
|
if (character == Skill.Character && isMagicDamage && 当前魔法加成次数 > 0)
|
||||||
{
|
{
|
||||||
|
当前魔法加成次数--;
|
||||||
double 实际伤害提升百分比 = 伤害提升;
|
double 实际伤害提升百分比 = 伤害提升;
|
||||||
double 实际伤害提升 = damage * 实际伤害提升百分比;
|
double 实际伤害提升 = damage * 实际伤害提升百分比;
|
||||||
WriteLine($"[ {character} ] 发动了变幻之心!伤害提升了 {实际伤害提升:0.##} 点!");
|
WriteLine($"[ {character} ] 发动了变幻之心!伤害提升了 {实际伤害提升:0.##} 点!变幻之心加成剩余:{当前魔法加成次数} 次。");
|
||||||
|
if (当前魔法加成次数 == 0)
|
||||||
|
{
|
||||||
character.Effects.Remove(this);
|
character.Effects.Remove(this);
|
||||||
OnEffectLost(character);
|
OnEffectLost(character);
|
||||||
|
}
|
||||||
return 实际伤害提升;
|
return 实际伤害提升;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void AfterDamageCalculation(Character character, Character enemy, double damage, double actualDamage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult)
|
||||||
|
{
|
||||||
|
if (character == Skill.Character && 当前吸血次数 > 0 && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical) && damage > 0)
|
||||||
|
{
|
||||||
|
当前吸血次数--;
|
||||||
|
double 实际吸血 = damage * 0.3;
|
||||||
|
character.HP += 实际吸血;
|
||||||
|
WriteLine($"[ {character} ] 发动了变幻之心!回复了 {实际吸血:0.##} 点生命值!变幻之心加成剩余:{当前吸血次数} 次。");
|
||||||
|
if (当前吸血次数 == 0)
|
||||||
|
{
|
||||||
|
character.Effects.Remove(this);
|
||||||
|
OnEffectLost(character);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override void OnSkillCasted(Character caster, List<Character> targets, Dictionary<string, object> others)
|
public override void OnSkillCasted(Character caster, List<Character> targets, 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 (effects.Any())
|
||||||
{
|
{
|
||||||
|
if (caster.Effects.Contains(this))
|
||||||
|
{
|
||||||
|
OnEffectLost(caster);
|
||||||
|
}
|
||||||
|
caster.Effects.Add(this);
|
||||||
|
OnEffectGained(caster);
|
||||||
if (caster.PrimaryAttribute == PrimaryAttribute.STR)
|
if (caster.PrimaryAttribute == PrimaryAttribute.STR)
|
||||||
{
|
{
|
||||||
double 回复的生命 = 生命值回复 * caster.MaxHP;
|
double 回复的生命 = 生命值回复 * caster.MaxHP;
|
||||||
HealToTarget(caster, caster, 回复的生命);
|
HealToTarget(caster, caster, 回复的生命);
|
||||||
|
GamingQueue?.LastRound.ApplyEffects.TryAdd(caster, [EffectType.Lifesteal]);
|
||||||
}
|
}
|
||||||
else if (caster.PrimaryAttribute == PrimaryAttribute.INT)
|
else if (caster.PrimaryAttribute == PrimaryAttribute.INT)
|
||||||
{
|
{
|
||||||
if (!caster.Effects.Contains(this))
|
|
||||||
{
|
|
||||||
caster.Effects.Add(this);
|
|
||||||
OnEffectGained(caster);
|
|
||||||
}
|
|
||||||
GamingQueue?.LastRound.ApplyEffects.TryAdd(caster, [EffectType.DamageBoost]);
|
GamingQueue?.LastRound.ApplyEffects.TryAdd(caster, [EffectType.DamageBoost]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
public override string Name => Skill.Name;
|
||||||
public override string Description => $"最大生命值减少 20%。破釜沉舟:生命值高于 30% 时,受到额外的 [ {高于30额外伤害下限}~{高于30额外伤害上限}% ] 伤害,但是获得 [ 累计所受伤害的 {高于30的加成下限}~{高于30的加成上限}% ] 伤害加成;生命值低于等于 30% 时,不会受到额外的伤害,仅能获得 [ 累计受到的伤害 {低于30的加成下限}~{低于30的加成上限}% ] 伤害加成。" +
|
public override string Description => $"最大生命值减少 20%。破釜沉舟:生命值高于 30% 时,受到额外的 [ {高于30额外伤害下限}~{高于30额外伤害上限}% ] 伤害,获得 [ 累计所受伤害的 {高于30的加成下限}~{高于30的加成上限}% ] 伤害加成;生命值低于等于 30% 时,不会受到额外的伤害,并且获得 [ 累计受到的伤害 {低于30的加成下限}~{低于30的加成上限}% ] 的伤害加成。" +
|
||||||
$"在没有受到任何伤害的时候,将获得 {常规伤害加成 * 100:0.##}% 伤害加成。" + (累计受到的伤害 > 0 ? $"(当前累计受到伤害:{累计受到的伤害:0.##})" : "");
|
$"在没有受到任何伤害的时候,将获得 {常规伤害加成 * 100:0.##}% 伤害加成。" + (累计受到的伤害 > 0 ? $"(当前累计受到伤害:{累计受到的伤害:0.##})" : "");
|
||||||
|
|
||||||
private double 累计受到的伤害 = 0;
|
private double 累计受到的伤害 = 0;
|
||||||
@ -42,10 +42,10 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
private readonly double 常规伤害加成 = 0.35;
|
private readonly double 常规伤害加成 = 0.35;
|
||||||
private readonly int 高于30额外伤害上限 = 30;
|
private readonly int 高于30额外伤害上限 = 30;
|
||||||
private readonly int 高于30额外伤害下限 = 15;
|
private readonly int 高于30额外伤害下限 = 15;
|
||||||
private readonly int 高于30的加成上限 = 100;
|
private readonly int 高于30的加成上限 = 80;
|
||||||
private readonly int 高于30的加成下限 = 80;
|
private readonly int 高于30的加成下限 = 50;
|
||||||
private readonly int 低于30的加成上限 = 60;
|
private readonly int 低于30的加成上限 = 120;
|
||||||
private readonly int 低于30的加成下限 = 40;
|
private readonly int 低于30的加成下限 = 90;
|
||||||
|
|
||||||
private double 伤害加成(double damage)
|
private double 伤害加成(double damage)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
public override string Name => Skill.Name;
|
||||||
public override string Description => $"在 AI 控制下,任何目标都将则优先选择血量更低的角色。行动开始时,弱者猎手会盯上一名角色,然后标记所有生命值百分比低于自己的角色。在此回合内攻击被盯上或者被标记的角色,将造成 150% 伤害。";
|
public override string Description => $"在 AI 控制下,任何目标都将则优先选择血量更低的角色。行动开始时,弱者猎手会盯上一名角色,然后标记所有生命值百分比低于自己的角色。在此回合内攻击被盯上或者被标记的角色,将造成 140% 伤害。";
|
||||||
|
|
||||||
public HashSet<Character> 猎手标记 { get; set; } = [];
|
public HashSet<Character> 猎手标记 { get; set; } = [];
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
if (character == Skill.Character && 猎手标记.Contains(enemy))
|
if (character == Skill.Character && 猎手标记.Contains(enemy))
|
||||||
{
|
{
|
||||||
double 额外伤害 = damage * 0.5;
|
double 额外伤害 = damage * 0.4;
|
||||||
return 额外伤害;
|
return 额外伤害;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -25,7 +25,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
public override string Name => Skill.Name;
|
||||||
public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内,增加 40% 攻击力 [ {攻击力提升:0.##} ]、30% 物理穿透和 25% 闪避率(不可叠加),普通攻击硬直时间额外减少 20%,基于 {系数 * 100:0.##}% 敏捷 [ {伤害加成:0.##} ] 强化普通攻击的伤害。在持续时间内,【心灵之火】的冷却时间降低至 3 {GameplayEquilibriumConstant.InGameTime}。";
|
public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内,增加 40% 攻击力 [ {攻击力提升:0.##} ]、30% 物理穿透和 25% 闪避率(不可叠加),普通攻击硬直时间额外减少 20%,基于 {系数 * 100:0.##}% 敏捷 [ {伤害加成:0.##} ] 强化普通攻击的伤害。在持续时间内,[ 心灵之火 ] 的冷却时间降低至 3 {GameplayEquilibriumConstant.InGameTime}。";
|
||||||
public override bool Durative => true;
|
public override bool Durative => true;
|
||||||
public override double Duration => 40;
|
public override double Duration => 40;
|
||||||
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
|
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
|
||||||
|
|||||||
@ -23,7 +23,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
SelectTargetPredicates.Add(c => c.HP >= 0 && c.HP < c.MaxHP);
|
SelectTargetPredicates.Add(c => c.HP >= 0 && c.HP < c.MaxHP);
|
||||||
Effects.Add(new 弱驱散特效(this));
|
Effects.Add(new 弱驱散特效(this));
|
||||||
Effects.Add(new 纯数值回复生命(this, 160, 135, true));
|
Effects.Add(new 百分比回复生命值(this, 0.24, 0.02, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<Character> GetSelectableTargets(Character caster, List<Character> enemys, List<Character> teammates)
|
public override List<Character> GetSelectableTargets(Character caster, List<Character> enemys, List<Character> teammates)
|
||||||
|
|||||||
@ -70,7 +70,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
|
|
||||||
public 大地之墙(Character? character = null) : base(SkillType.Magic, character)
|
public 大地之墙(Character? character = null) : base(SkillType.Magic, character)
|
||||||
{
|
{
|
||||||
Effect shield = new 增加物理护盾(this, 120, 160)
|
Effect shield = new 增加物理护盾_特效持续型(this, 120, 160, true, 15)
|
||||||
{
|
{
|
||||||
DispelledType = DispelledType.CannotBeDispelled
|
DispelledType = DispelledType.CannotBeDispelled
|
||||||
};
|
};
|
||||||
|
|||||||
@ -22,8 +22,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
|
|
||||||
public 盖亚之盾(Character? character = null) : base(SkillType.Magic, character)
|
public 盖亚之盾(Character? character = null) : base(SkillType.Magic, character)
|
||||||
{
|
{
|
||||||
Effects.Add(new 增加物理护盾(this, 160, 80));
|
Effects.Add(new 增加混合护盾值(this, 160, 120));
|
||||||
Effects.Add(new 增加魔法护盾(this, 160, 80));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -172,7 +172,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
|||||||
mvpBuilder.AppendLine($"[ {mvp.ToStringWithLevel()} ]");
|
mvpBuilder.AppendLine($"[ {mvp.ToStringWithLevel()} ]");
|
||||||
mvpBuilder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
mvpBuilder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
||||||
mvpBuilder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
mvpBuilder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
||||||
mvpBuilder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##}");
|
mvpBuilder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##} / 护盾抵消:{stats.TotalShield:0.##}");
|
||||||
mvpBuilder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
mvpBuilder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
||||||
mvpBuilder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
mvpBuilder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
||||||
mvpBuilder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
mvpBuilder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
||||||
@ -189,7 +189,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
|||||||
builder.AppendLine($"{count + ". "}[ {character.ToStringWithLevel()} ]");
|
builder.AppendLine($"{count + ". "}[ {character.ToStringWithLevel()} ]");
|
||||||
builder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
builder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
||||||
builder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
builder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
||||||
builder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##}");
|
builder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##} / 护盾抵消:{stats.TotalShield:0.##}");
|
||||||
builder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
builder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
||||||
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
||||||
builder.AppendLine($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
builder.AppendLine($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
||||||
@ -383,7 +383,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
|||||||
mvpBuilder.AppendLine($"{(team != null ? "[ " + team.Name + " ] " : "")}[ {mvp.ToStringWithLevel()} ]");
|
mvpBuilder.AppendLine($"{(team != null ? "[ " + team.Name + " ] " : "")}[ {mvp.ToStringWithLevel()} ]");
|
||||||
mvpBuilder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
mvpBuilder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
||||||
mvpBuilder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
mvpBuilder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
||||||
mvpBuilder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##}");
|
mvpBuilder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##} / 护盾抵消:{stats.TotalShield:0.##}");
|
||||||
mvpBuilder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
mvpBuilder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
||||||
mvpBuilder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
mvpBuilder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
||||||
mvpBuilder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
mvpBuilder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
||||||
|
|||||||
@ -418,7 +418,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
|||||||
mvpBuilder.AppendLine($"{(tgq != null ? "[ " + tgq.GetTeamFromEliminated(mvp)?.Name + " ] " : "")}[ {mvp.ToStringWithLevel()} ]");
|
mvpBuilder.AppendLine($"{(tgq != null ? "[ " + tgq.GetTeamFromEliminated(mvp)?.Name + " ] " : "")}[ {mvp.ToStringWithLevel()} ]");
|
||||||
mvpBuilder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
mvpBuilder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
||||||
mvpBuilder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
mvpBuilder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
||||||
mvpBuilder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##}");
|
mvpBuilder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##} / 护盾抵消:{stats.TotalShield:0.##}");
|
||||||
mvpBuilder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
mvpBuilder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
||||||
mvpBuilder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
mvpBuilder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
||||||
mvpBuilder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
mvpBuilder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
||||||
@ -480,7 +480,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
|||||||
builder.AppendLine($"{(isWeb ? count + "." : ("[ " + tgq.GetTeamFromEliminated(character)?.Name + " ]" ?? ""))} [ {character.ToStringWithLevel()} ]");
|
builder.AppendLine($"{(isWeb ? count + "." : ("[ " + tgq.GetTeamFromEliminated(character)?.Name + " ]" ?? ""))} [ {character.ToStringWithLevel()} ]");
|
||||||
builder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(tgq.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
builder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(tgq.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
||||||
builder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
builder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
||||||
builder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##}");
|
builder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##} / 护盾抵消:{stats.TotalShield:0.##}");
|
||||||
builder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
builder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
||||||
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
||||||
builder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
builder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
||||||
@ -512,7 +512,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
|||||||
builder.AppendLine($"{(isWeb ? count + ". " : "")}[ {character.ToStringWithLevel()} ]");
|
builder.AppendLine($"{(isWeb ? count + ". " : "")}[ {character.ToStringWithLevel()} ]");
|
||||||
builder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
builder.AppendLine($"技术得分:{stats.Rating:0.0#} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}");
|
||||||
builder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
builder.AppendLine($"存活时长:{stats.LiveTime:0.##} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
|
||||||
builder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##}");
|
builder.AppendLine($"控制时长:{stats.ControlTime:0.##} / 总计治疗:{stats.TotalHeal:0.##} / 护盾抵消:{stats.TotalShield:0.##}");
|
||||||
builder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
builder.AppendLine($"总计伤害:{stats.TotalDamage:0.##} / 总计物理伤害:{stats.TotalPhysicalDamage:0.##} / 总计魔法伤害:{stats.TotalMagicDamage:0.##}");
|
||||||
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage:0.##} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 总承受魔法伤害:{stats.TotalTakenMagicDamage:0.##}");
|
||||||
builder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
builder.Append($"每秒伤害:{stats.DamagePerSecond:0.##} / 每回合伤害:{stats.DamagePerTurn:0.##}");
|
||||||
@ -1090,6 +1090,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
|||||||
totalStats.AvgActionTurn = totalStats.ActionTurn / totalStats.Plays;
|
totalStats.AvgActionTurn = totalStats.ActionTurn / totalStats.Plays;
|
||||||
totalStats.AvgLiveTime = Calculation.Round2Digits(totalStats.LiveTime / totalStats.Plays);
|
totalStats.AvgLiveTime = Calculation.Round2Digits(totalStats.LiveTime / totalStats.Plays);
|
||||||
totalStats.AvgControlTime = Calculation.Round2Digits(totalStats.ControlTime / totalStats.Plays);
|
totalStats.AvgControlTime = Calculation.Round2Digits(totalStats.ControlTime / totalStats.Plays);
|
||||||
|
totalStats.AvgShield = Calculation.Round2Digits(totalStats.TotalShield / totalStats.Plays);
|
||||||
totalStats.AvgEarnedMoney = totalStats.TotalEarnedMoney / totalStats.Plays;
|
totalStats.AvgEarnedMoney = totalStats.TotalEarnedMoney / totalStats.Plays;
|
||||||
totalStats.Winrates = Calculation.Round4Digits(Convert.ToDouble(totalStats.Wins) / Convert.ToDouble(totalStats.Plays));
|
totalStats.Winrates = Calculation.Round4Digits(Convert.ToDouble(totalStats.Wins) / Convert.ToDouble(totalStats.Plays));
|
||||||
totalStats.Top3rates = Calculation.Round4Digits(Convert.ToDouble(totalStats.Top3s) / Convert.ToDouble(totalStats.Plays));
|
totalStats.Top3rates = Calculation.Round4Digits(Convert.ToDouble(totalStats.Top3s) / Convert.ToDouble(totalStats.Plays));
|
||||||
|
|||||||
@ -71,6 +71,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
|
|||||||
builder.AppendLine($"总计行动回合数:{stats.ActionTurn} / 场均:{stats.AvgActionTurn}");
|
builder.AppendLine($"总计行动回合数:{stats.ActionTurn} / 场均:{stats.AvgActionTurn}");
|
||||||
builder.AppendLine($"总计存活时长:{stats.LiveTime:0.##} / 场均:{stats.AvgLiveTime:0.##}");
|
builder.AppendLine($"总计存活时长:{stats.LiveTime:0.##} / 场均:{stats.AvgLiveTime:0.##}");
|
||||||
builder.AppendLine($"总计控制时长:{stats.ControlTime:0.##} / 场均:{stats.AvgControlTime:0.##}");
|
builder.AppendLine($"总计控制时长:{stats.ControlTime:0.##} / 场均:{stats.AvgControlTime:0.##}");
|
||||||
|
builder.AppendLine($"总计护盾抵消:{stats.TotalShield:0.##} / 场均:{stats.AvgShield:0.##}");
|
||||||
builder.AppendLine($"总计赚取金钱:{stats.TotalEarnedMoney} / 场均:{stats.AvgEarnedMoney}");
|
builder.AppendLine($"总计赚取金钱:{stats.TotalEarnedMoney} / 场均:{stats.AvgEarnedMoney}");
|
||||||
builder.AppendLine($"每回合伤害:{stats.DamagePerRound:0.##}");
|
builder.AppendLine($"每回合伤害:{stats.DamagePerRound:0.##}");
|
||||||
builder.AppendLine($"每行动回合伤害:{stats.DamagePerTurn:0.##}");
|
builder.AppendLine($"每行动回合伤害:{stats.DamagePerTurn:0.##}");
|
||||||
@ -128,6 +129,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
|
|||||||
builder.AppendLine($"总计行动回合数:{stats.ActionTurn} / 场均:{stats.AvgActionTurn}");
|
builder.AppendLine($"总计行动回合数:{stats.ActionTurn} / 场均:{stats.AvgActionTurn}");
|
||||||
builder.AppendLine($"总计存活时长:{stats.LiveTime:0.##} / 场均:{stats.AvgLiveTime:0.##}");
|
builder.AppendLine($"总计存活时长:{stats.LiveTime:0.##} / 场均:{stats.AvgLiveTime:0.##}");
|
||||||
builder.AppendLine($"总计控制时长:{stats.ControlTime:0.##} / 场均:{stats.AvgControlTime:0.##}");
|
builder.AppendLine($"总计控制时长:{stats.ControlTime:0.##} / 场均:{stats.AvgControlTime:0.##}");
|
||||||
|
builder.AppendLine($"总计护盾抵消:{stats.TotalShield:0.##} / 场均:{stats.AvgShield:0.##}");
|
||||||
builder.AppendLine($"总计赚取金钱:{stats.TotalEarnedMoney} / 场均:{stats.AvgEarnedMoney}");
|
builder.AppendLine($"总计赚取金钱:{stats.TotalEarnedMoney} / 场均:{stats.AvgEarnedMoney}");
|
||||||
builder.AppendLine($"每回合伤害:{stats.DamagePerRound:0.##}");
|
builder.AppendLine($"每回合伤害:{stats.DamagePerRound:0.##}");
|
||||||
builder.AppendLine($"每行动回合伤害:{stats.DamagePerTurn:0.##}");
|
builder.AppendLine($"每行动回合伤害:{stats.DamagePerTurn:0.##}");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user