技能改动和新装备

This commit is contained in:
milimoe 2025-06-20 01:03:20 +08:00
parent c76c295917
commit 1a824a0295
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
15 changed files with 729 additions and 402 deletions

View File

@ -40,29 +40,41 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
_durationDamagePercent = durationDamagePercent; _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) 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) if (elapsed > 1)
{ {
damage = 0;
int loop = 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--; elapsed--;
OnTimeElapsed(character, 1);
} }
if (elapsed > 0) if (elapsed > 0)
{ {
OnTimeElapsed(character, elapsed); damage += GetDamage(hp, elapsed);
} }
} }
else WriteLine($"[ {character} ] 因气绝而流失生命值!");
{ DamageToEnemy(Source, character, DamageType.True, MagicType, damage);
double damage = Damage * elapsed;
WriteLine($"[ {character} ] 因气绝而流失生命值!");
DamageToEnemy(Source, character, DamageType.True, MagicType, damage);
}
} }
} }

View File

@ -56,7 +56,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
{ {
RemainDurationTurn = DurationTurn; 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) public override void OnEffectLost(Character character)

View File

@ -56,7 +56,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
{ {
RemainDurationTurn = DurationTurn; 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) public override void OnEffectLost(Character character)

View File

@ -58,6 +58,10 @@ namespace Oshima.FunGame.OshimaModules
(long)ConsumableID.1 => new 1(), (long)ConsumableID.1 => new 1(),
(long)ConsumableID.2 => new 2(), (long)ConsumableID.2 => new 2(),
(long)ConsumableID.3 => new 3(), (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 (), (long)GiftBoxID. => new (),
(long)GiftBoxID. => new (), (long)GiftBoxID. => new (),

View File

@ -16,12 +16,16 @@ namespace Oshima.FunGame.OshimaModules.Skills
} }
if (skill.CanSelectTeammate && !skill.CanSelectEnemy) 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) else if (!skill.CanSelectTeammate && skill.CanSelectEnemy)
{ {
return $"目标{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}敌方角色"; return $"目标{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}敌方角色";
} }
else if (!skill.CanSelectTeammate && !skill.CanSelectEnemy && skill.CanSelectSelf)
{
return $"自身";
}
else else
{ {
return $"{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}目标"; return $"{(skill.CanSelectTargetCount > 1 ? $" {skill.CanSelectTargetCount} " : "")}目标";

View File

@ -10,7 +10,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Name => "凝胶稠絮"; public override string Name => "凝胶稠絮";
public override string Description => Effects.Count > 0 ? string.Join("\r\n", Effects.Select(e => e.Description)) : ""; 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 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 CD => Level > 0 ? 75 - (1.5 * (Level - 1)) : 75;
public override double CastTime => 11; public override double CastTime => 11;
public override double HardnessTime { get; set; } = 4; public override double HardnessTime { get; set; } = 4;

View File

@ -9,8 +9,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override long Id => (long)MagicID.; public override long Id => (long)MagicID.;
public override string Name => "回复术"; public override string Name => "回复术";
public override string Description => Effects.Count > 0 ? Effects.First().Description : ""; public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double MPCost => Level > 0 ? 80 + (90 * (Level - 1)) : 80; public override double MPCost => Level > 0 ? 75 + (75 * (Level - 1)) : 75;
public override double CD => 65; public override double CD => 60;
public override double CastTime => 3; public override double CastTime => 3;
public override double HardnessTime { get; set; } = 5; public override double HardnessTime { get; set; } = 5;
public override bool CanSelectSelf => true; public override bool CanSelectSelf => true;
@ -21,7 +21,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public (Character? character = null) : base(SkillType.Magic, character) public (Character? character = null) : base(SkillType.Magic, character)
{ {
SelectTargetPredicates.Add(c => c.HP > 0 && c.HP < c.MaxHP); SelectTargetPredicates.Add(c => c.HP > 0 && c.HP < c.MaxHP);
Effects.Add(new (this, 200, 280)); Effects.Add(new (this, 540, 360));
} }
} }
} }

View File

@ -10,8 +10,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Name => "圣灵术"; public override string Name => "圣灵术";
public override string Description => string.Join("", Effects.Select(e => e.Description)); public override string Description => string.Join("", Effects.Select(e => e.Description));
public override string DispelDescription => Effects.FirstOrDefault(e => e is )?.DispelDescription ?? ""; public override string DispelDescription => Effects.FirstOrDefault(e => e is )?.DispelDescription ?? "";
public override double MPCost => Level > 0 ? 120 + (95 * (Level - 1)) : 120; public override double MPCost => Level > 0 ? 110 + (95 * (Level - 1)) : 110;
public override double CD => Level > 0 ? 120 - (2 * (Level - 1)) : 120; public override double CD => Level > 0 ? 110 - (2 * (Level - 1)) : 110;
public override double CastTime => 12; public override double CastTime => 12;
public override double HardnessTime { get; set; } = 2; public override double HardnessTime { get; set; } = 2;
public override bool CanSelectSelf => true; public override bool CanSelectSelf => true;
@ -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, 145, 120, true)); Effects.Add(new (this, 380, 270, 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)

View File

@ -10,8 +10,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Name => "复苏术"; public override string Name => "复苏术";
public override string Description => string.Join("", Effects.Select(e => e.Description)); public override string Description => string.Join("", Effects.Select(e => e.Description));
public override string DispelDescription => Effects.FirstOrDefault(e => e is )?.DispelDescription ?? ""; public override string DispelDescription => Effects.FirstOrDefault(e => e is )?.DispelDescription ?? "";
public override double MPCost => Level > 0 ? 100 + (100 * (Level - 1)) : 100; public override double MPCost => Level > 0 ? 95 + (85 * (Level - 1)) : 95;
public override double CD => 100; public override double CD => 85;
public override double CastTime => 6; public override double CastTime => 6;
public override double HardnessTime { get; set; } = 8; public override double HardnessTime { get; set; } = 8;
public override bool CanSelectSelf => true; public override bool CanSelectSelf => true;

View File

@ -9,8 +9,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override long Id => (long)MagicID.; public override long Id => (long)MagicID.;
public override string Name => "强音之力"; public override string Name => "强音之力";
public override string Description => Effects.Count > 0 ? Effects.First().Description : ""; public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double MPCost => Level > 0 ? 90 + (85 * (Level - 1)) : 90; public override double MPCost => Level > 0 ? 70 + (80 * (Level - 1)) : 70;
public override double CD => Level > 0 ? 80 - (1 * (Level - 1)) : 80; 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 CastTime => Level > 0 ? 6 + (0.5 * (Level - 1)) : 6;
public override double HardnessTime { get; set; } = 3; public override double HardnessTime { get; set; } = 3;
public override bool CanSelectSelf => true; public override bool CanSelectSelf => true;

View File

@ -9,8 +9,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override long Id => (long)MagicID.; public override long Id => (long)MagicID.;
public override string Name => "治愈术"; public override string Name => "治愈术";
public override string Description => Effects.Count > 0 ? Effects.First().Description : ""; public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double MPCost => Level > 0 ? 80 + (105 * (Level - 1)) : 80; public override double MPCost => Level > 0 ? 80 + (85 * (Level - 1)) : 80;
public override double CD => Level > 0 ? 90 - (1 * (Level - 1)) : 90; 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 CastTime => Level > 0 ? 5 + (0.5 * (Level - 1)) : 5;
public override double HardnessTime { get; set; } = 7; public override double HardnessTime { get; set; } = 7;
public override bool CanSelectSelf => true; public override bool CanSelectSelf => true;

View File

@ -9,7 +9,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override long Id => (long)MagicID.; public override long Id => (long)MagicID.;
public override string Name => "结晶防护"; public override string Name => "结晶防护";
public override string Description => Effects.Count > 0 ? Effects.First().Description : ""; 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 CD => Level > 0 ? 75 - (1 * (Level - 1)) : 75;
public override double CastTime => Level > 0 ? 3 + (1.5 * (Level - 1)) : 3; public override double CastTime => Level > 0 ? 3 + (1.5 * (Level - 1)) : 3;
public override double HardnessTime { get; set; } = 4; public override double HardnessTime { get; set; } = 4;

View File

@ -10,7 +10,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Name => "虚弱领域"; public override string Name => "虚弱领域";
public override string Description => Effects.Count > 0 ? string.Join("\r\n", Effects.Select(e => e.Description)) : ""; 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 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 CD => Level > 0 ? 85 - (2 * (Level - 1)) : 85;
public override double CastTime => 8; public override double CastTime => 8;
public override double HardnessTime { get; set; } = 3; public override double HardnessTime { get; set; } = 3;

File diff suppressed because it is too large Load Diff

View File

@ -180,7 +180,7 @@ namespace Oshima.FunGame.OshimaServers.Service
{ {
mQuality++; mQuality++;
} }
if (wQuality < 4) if (wQuality < 5)
{ {
wQuality++; wQuality++;
} }
@ -379,7 +379,7 @@ namespace Oshima.FunGame.OshimaServers.Service
{ {
mQuality++; mQuality++;
} }
if (wQuality < 4) if (wQuality < 5)
{ {
wQuality++; wQuality++;
} }
@ -1069,6 +1069,7 @@ namespace Oshima.FunGame.OshimaServers.Service
totalStats.ActionTurn += stats.ActionTurn; totalStats.ActionTurn += stats.ActionTurn;
totalStats.LiveTime = Calculation.Round2Digits(totalStats.LiveTime + stats.LiveTime); totalStats.LiveTime = Calculation.Round2Digits(totalStats.LiveTime + stats.LiveTime);
totalStats.ControlTime = Calculation.Round2Digits(totalStats.ControlTime + stats.ControlTime); totalStats.ControlTime = Calculation.Round2Digits(totalStats.ControlTime + stats.ControlTime);
totalStats.TotalShield = Calculation.Round2Digits(totalStats.TotalShield + stats.TotalShield);
totalStats.TotalEarnedMoney += stats.TotalEarnedMoney; totalStats.TotalEarnedMoney += stats.TotalEarnedMoney;
totalStats.Kills += stats.Kills; totalStats.Kills += stats.Kills;
totalStats.Deaths += stats.Deaths; totalStats.Deaths += stats.Deaths;