mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2025-12-05 08:09:04 +00:00
技能改动和新装备
This commit is contained in:
parent
c76c295917
commit
1a824a0295
@ -40,31 +40,43 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
|
||||
_durationDamagePercent = durationDamagePercent;
|
||||
}
|
||||
|
||||
private double GetDamage(double hp, double elapsed)
|
||||
{
|
||||
if (hp <= 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
double damage = _isPercentage ? hp * _durationDamagePercent : _durationDamage;
|
||||
return damage * elapsed;
|
||||
}
|
||||
|
||||
public override void OnTimeElapsed(Character character, double elapsed)
|
||||
{
|
||||
if (character.HP > 0)
|
||||
if (character == _targetCharacter && character.HP > 0)
|
||||
{
|
||||
double hp = character.HP;
|
||||
double damage = GetDamage(hp, elapsed);
|
||||
if (elapsed > 1)
|
||||
{
|
||||
damage = 0;
|
||||
int loop = 0;
|
||||
for (; loop < elapsed; loop++)
|
||||
int elapsedSecond = (int)elapsed;
|
||||
for (; loop < elapsedSecond; loop++)
|
||||
{
|
||||
double current = GetDamage(hp, 1);
|
||||
damage += current;
|
||||
hp -= current;
|
||||
elapsed--;
|
||||
OnTimeElapsed(character, 1);
|
||||
}
|
||||
if (elapsed > 0)
|
||||
{
|
||||
OnTimeElapsed(character, elapsed);
|
||||
damage += GetDamage(hp, elapsed);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
double damage = Damage * elapsed;
|
||||
WriteLine($"[ {character} ] 因气绝而流失生命值!");
|
||||
DamageToEnemy(Source, character, DamageType.True, MagicType, damage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnEffectGained(Character character)
|
||||
{
|
||||
|
||||
@ -56,7 +56,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
|
||||
{
|
||||
RemainDurationTurn = DurationTurn;
|
||||
}
|
||||
character.Shield.AddShieldOfEffect(new(this, _shield, false, MagicType.None));
|
||||
character.Shield.AddShieldOfEffect(new(this, _shield, ShieldType.Physical, MagicType.None));
|
||||
}
|
||||
|
||||
public override void OnEffectLost(Character character)
|
||||
|
||||
@ -56,7 +56,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
|
||||
{
|
||||
RemainDurationTurn = DurationTurn;
|
||||
}
|
||||
character.Shield.AddShieldOfEffect(new(this, _shield, true, MagicType.None));
|
||||
character.Shield.AddShieldOfEffect(new(this, _shield, ShieldType.Magical, MagicType.None));
|
||||
}
|
||||
|
||||
public override void OnEffectLost(Character character)
|
||||
|
||||
@ -58,6 +58,10 @@ namespace Oshima.FunGame.OshimaModules
|
||||
(long)ConsumableID.能量饮料1 => new 能量饮料1(),
|
||||
(long)ConsumableID.能量饮料2 => new 能量饮料2(),
|
||||
(long)ConsumableID.能量饮料3 => new 能量饮料3(),
|
||||
(long)ConsumableID.复苏药1 => new 复苏药1(),
|
||||
(long)ConsumableID.复苏药2 => new 复苏药2(),
|
||||
(long)ConsumableID.复苏药3 => new 复苏药3(),
|
||||
(long)ConsumableID.全回复药 => new 全回复药(),
|
||||
(long)GiftBoxID.年夜饭 => new 年夜饭(),
|
||||
(long)GiftBoxID.蛇年大吉 => new 蛇年大吉(),
|
||||
(long)GiftBoxID.新春快乐 => new 新春快乐(),
|
||||
|
||||
@ -16,12 +16,16 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
}
|
||||
if (skill.CanSelectTeammate && !skill.CanSelectEnemy)
|
||||
{
|
||||
return $"目标{(skill.CanSelectTargetCount > 1 ? $"至多 {skill.CanSelectTargetCount} 个" : "")}友方角色";
|
||||
return $"目标{(skill.CanSelectTargetCount > 1 ? $"至多 {skill.CanSelectTargetCount} 个" : "")}友方角色{(!skill.CanSelectSelf ? "(不包括自己)" : "")}";
|
||||
}
|
||||
else if (!skill.CanSelectTeammate && skill.CanSelectEnemy)
|
||||
{
|
||||
return $"目标{(skill.CanSelectTargetCount > 1 ? $"至多 {skill.CanSelectTargetCount} 个" : "")}敌方角色";
|
||||
}
|
||||
else if (!skill.CanSelectTeammate && !skill.CanSelectEnemy && skill.CanSelectSelf)
|
||||
{
|
||||
return $"自身";
|
||||
}
|
||||
else
|
||||
{
|
||||
return $"{(skill.CanSelectTargetCount > 1 ? $"至多 {skill.CanSelectTargetCount} 个" : "")}目标";
|
||||
|
||||
@ -10,7 +10,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override string Name => "凝胶稠絮";
|
||||
public override string Description => Effects.Count > 0 ? string.Join("\r\n", Effects.Select(e => e.Description)) : "";
|
||||
public override string DispelDescription => Effects.Count > 0 ? Effects.First(e => e is 造成虚弱).DispelDescription : "";
|
||||
public override double MPCost => Level > 0 ? 100 + (100 * (Level - 1)) : 100;
|
||||
public override double MPCost => Level > 0 ? 75 + (75 * (Level - 1)) : 75;
|
||||
public override double CD => Level > 0 ? 75 - (1.5 * (Level - 1)) : 75;
|
||||
public override double CastTime => 11;
|
||||
public override double HardnessTime { get; set; } = 4;
|
||||
|
||||
@ -9,8 +9,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.回复术;
|
||||
public override string Name => "回复术";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => Level > 0 ? 80 + (90 * (Level - 1)) : 80;
|
||||
public override double CD => 65;
|
||||
public override double MPCost => Level > 0 ? 75 + (75 * (Level - 1)) : 75;
|
||||
public override double CD => 60;
|
||||
public override double CastTime => 3;
|
||||
public override double HardnessTime { get; set; } = 5;
|
||||
public override bool CanSelectSelf => true;
|
||||
@ -21,7 +21,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public 回复术(Character? character = null) : base(SkillType.Magic, character)
|
||||
{
|
||||
SelectTargetPredicates.Add(c => c.HP > 0 && c.HP < c.MaxHP);
|
||||
Effects.Add(new 纯数值回复生命(this, 200, 280));
|
||||
Effects.Add(new 纯数值回复生命(this, 540, 360));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,8 +10,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override string Name => "圣灵术";
|
||||
public override string Description => string.Join("", Effects.Select(e => e.Description));
|
||||
public override string DispelDescription => Effects.FirstOrDefault(e => e is 弱驱散特效)?.DispelDescription ?? "";
|
||||
public override double MPCost => Level > 0 ? 120 + (95 * (Level - 1)) : 120;
|
||||
public override double CD => Level > 0 ? 120 - (2 * (Level - 1)) : 120;
|
||||
public override double MPCost => Level > 0 ? 110 + (95 * (Level - 1)) : 110;
|
||||
public override double CD => Level > 0 ? 110 - (2 * (Level - 1)) : 110;
|
||||
public override double CastTime => 12;
|
||||
public override double HardnessTime { get; set; } = 2;
|
||||
public override bool CanSelectSelf => true;
|
||||
@ -23,7 +23,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
{
|
||||
SelectTargetPredicates.Add(c => c.HP >= 0 && c.HP < c.MaxHP);
|
||||
Effects.Add(new 弱驱散特效(this));
|
||||
Effects.Add(new 纯数值回复生命(this, 145, 120, true));
|
||||
Effects.Add(new 纯数值回复生命(this, 380, 270, true));
|
||||
}
|
||||
|
||||
public override List<Character> GetSelectableTargets(Character caster, List<Character> enemys, List<Character> teammates)
|
||||
|
||||
@ -10,8 +10,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override string Name => "复苏术";
|
||||
public override string Description => string.Join("", Effects.Select(e => e.Description));
|
||||
public override string DispelDescription => Effects.FirstOrDefault(e => e is 弱驱散特效)?.DispelDescription ?? "";
|
||||
public override double MPCost => Level > 0 ? 100 + (100 * (Level - 1)) : 100;
|
||||
public override double CD => 100;
|
||||
public override double MPCost => Level > 0 ? 95 + (85 * (Level - 1)) : 95;
|
||||
public override double CD => 85;
|
||||
public override double CastTime => 6;
|
||||
public override double HardnessTime { get; set; } = 8;
|
||||
public override bool CanSelectSelf => true;
|
||||
|
||||
@ -9,8 +9,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.强音之力;
|
||||
public override string Name => "强音之力";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => Level > 0 ? 90 + (85 * (Level - 1)) : 90;
|
||||
public override double CD => Level > 0 ? 80 - (1 * (Level - 1)) : 80;
|
||||
public override double MPCost => Level > 0 ? 70 + (80 * (Level - 1)) : 70;
|
||||
public override double CD => Level > 0 ? 65 - (1 * (Level - 1)) : 65;
|
||||
public override double CastTime => Level > 0 ? 6 + (0.5 * (Level - 1)) : 6;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
public override bool CanSelectSelf => true;
|
||||
|
||||
@ -9,8 +9,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.治愈术;
|
||||
public override string Name => "治愈术";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => Level > 0 ? 80 + (105 * (Level - 1)) : 80;
|
||||
public override double CD => Level > 0 ? 90 - (1 * (Level - 1)) : 90;
|
||||
public override double MPCost => Level > 0 ? 80 + (85 * (Level - 1)) : 80;
|
||||
public override double CD => Level > 0 ? 80 - (1 * (Level - 1)) : 80;
|
||||
public override double CastTime => Level > 0 ? 5 + (0.5 * (Level - 1)) : 5;
|
||||
public override double HardnessTime { get; set; } = 7;
|
||||
public override bool CanSelectSelf => true;
|
||||
|
||||
@ -9,7 +9,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override long Id => (long)MagicID.结晶防护;
|
||||
public override string Name => "结晶防护";
|
||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||
public override double MPCost => Level > 0 ? 85 + (90 * (Level - 1)) : 85;
|
||||
public override double MPCost => Level > 0 ? 80 + (80 * (Level - 1)) : 80;
|
||||
public override double CD => Level > 0 ? 75 - (1 * (Level - 1)) : 75;
|
||||
public override double CastTime => Level > 0 ? 3 + (1.5 * (Level - 1)) : 3;
|
||||
public override double HardnessTime { get; set; } = 4;
|
||||
|
||||
@ -10,7 +10,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
||||
public override string Name => "虚弱领域";
|
||||
public override string Description => Effects.Count > 0 ? string.Join("\r\n", Effects.Select(e => e.Description)) : "";
|
||||
public override string DispelDescription => Effects.Count > 0 ? Effects.First(e => e is 造成虚弱).DispelDescription : "";
|
||||
public override double MPCost => Level > 0 ? 95 + (95 * (Level - 1)) : 90;
|
||||
public override double MPCost => Level > 0 ? 85 + (90 * (Level - 1)) : 85;
|
||||
public override double CD => Level > 0 ? 85 - (2 * (Level - 1)) : 85;
|
||||
public override double CastTime => 8;
|
||||
public override double HardnessTime { get; set; } = 3;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -180,7 +180,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
{
|
||||
mQuality++;
|
||||
}
|
||||
if (wQuality < 4)
|
||||
if (wQuality < 5)
|
||||
{
|
||||
wQuality++;
|
||||
}
|
||||
@ -379,7 +379,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
{
|
||||
mQuality++;
|
||||
}
|
||||
if (wQuality < 4)
|
||||
if (wQuality < 5)
|
||||
{
|
||||
wQuality++;
|
||||
}
|
||||
@ -1069,6 +1069,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
totalStats.ActionTurn += stats.ActionTurn;
|
||||
totalStats.LiveTime = Calculation.Round2Digits(totalStats.LiveTime + stats.LiveTime);
|
||||
totalStats.ControlTime = Calculation.Round2Digits(totalStats.ControlTime + stats.ControlTime);
|
||||
totalStats.TotalShield = Calculation.Round2Digits(totalStats.TotalShield + stats.TotalShield);
|
||||
totalStats.TotalEarnedMoney += stats.TotalEarnedMoney;
|
||||
totalStats.Kills += stats.Kills;
|
||||
totalStats.Deaths += stats.Deaths;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user