修改文本,增强角色

This commit is contained in:
milimoe 2025-04-17 00:20:28 +08:00
parent 37a8a989c9
commit ef0f870468
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
17 changed files with 48 additions and 31 deletions

View File

@ -17,7 +17,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects
{ {
if (actor == Skill.Character) if (actor == Skill.Character)
{ {
WriteLine($"[ {actor} ] 的普通攻击无视了 [ {enemy} ] 的闪避!"); if (GamingQueue != null) WriteLine($"[ {actor} ] 的普通攻击无视了 [ {enemy} ] 的闪避!");
return false; return false;
} }
return true; return true;

View File

@ -29,7 +29,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{ {
foreach (Character enemy in targets) foreach (Character enemy in targets)
{ {
WriteLine($"[ {caster} ] 对 [ {enemy} ] 造成了封技和施法解除!持续时间:{封技时间} {GameplayEquilibriumConstant.InGameTime}"); WriteLine($"[ {caster} ] 对 [ {enemy} ] 造成了封技和施法解除!持续时间:{封技时间}");
e = new(Skill, caster, false, 0, 1); e = new(Skill, caster, false, 0, 1);
enemy.Effects.Add(e); enemy.Effects.Add(e);
e.OnEffectGained(enemy); e.OnEffectGained(enemy);

View File

@ -29,7 +29,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{ {
foreach (Character enemy in targets) foreach (Character enemy in targets)
{ {
WriteLine($"[ {caster} ] 眩晕了 [ {enemy} ] !持续时间:{眩晕时间} {GameplayEquilibriumConstant.InGameTime}"); WriteLine($"[ {caster} ] 眩晕了 [ {enemy} ] !持续时间:{眩晕时间}");
e = new(Skill, caster, false, 0, 1); e = new(Skill, caster, false, 0, 1);
enemy.Effects.Add(e); enemy.Effects.Add(e);
e.OnEffectGained(enemy); e.OnEffectGained(enemy);

View File

@ -31,7 +31,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{ {
foreach (Character target in targets) foreach (Character target in targets)
{ {
WriteLine($"[ {target} ] 的行动速度降低了 {SPD:0.##} !持续时间:{持续时间} {GameplayEquilibriumConstant.InGameTime}"); WriteLine($"[ {target} ] 的行动速度降低了 {-SPD:0.##} !持续时间:{持续时间} {GameplayEquilibriumConstant.InGameTime}");
ExSPD e = new(Skill, new Dictionary<string, object>() ExSPD e = new(Skill, new Dictionary<string, object>()
{ {
{ "exspd", SPD } { "exspd", SPD }

View File

@ -29,8 +29,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool Durative => true; public override bool Durative => true;
public override double Duration => 25; public override double Duration => 25;
private static double => 0.3; private static double => 0.2;
private double => 0.02 * Level; private double => 0.015 * Level;
public override void OnEffectGained(Character character) public override void OnEffectGained(Character character)
{ {

View File

@ -27,7 +27,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Name => Skill.Name; public override string Name => Skill.Name;
public override string Description => $"造成伤害时会标记目标,攻击具有标记的敌人将对其造成眩晕 1 回合,并回收标记,额外对该角色造成 {系数 * 100:0.##}% 最大生命值的物理伤害。"; public override string Description => $"造成伤害时会标记目标,攻击具有标记的敌人将对其造成眩晕 1 回合,并回收标记,额外对该角色造成 {系数 * 100:0.##}% 最大生命值的物理伤害。";
public double { get; set; } = 0.16; public double { get; set; } = 0.12;
private bool = false; private bool = false;
public override void AfterDamageCalculation(Character character, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult) public override void AfterDamageCalculation(Character character, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult)

View File

@ -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 => $"每经过 {时间流逝} {GameplayEquilibriumConstant.InGameTime},提升 {伤害提升 * 100:0.##}% 所有伤害,无上限,但是受到伤害时清零。(下一次提升在:{下一次提升:0.##} {GameplayEquilibriumConstant.InGameTime}后{(累计伤害 > 0 ? $"{ * 100:0.##}%" : "")}"; public override string Description => $"每经过 {时间流逝} {GameplayEquilibriumConstant.InGameTime},提升 {伤害提升 * 100:0.##}% 所有伤害,无上限。受到伤害时清零;造成伤害后,累计提升减少总量的 30%。(下一次提升在:{下一次提升:0.##} {GameplayEquilibriumConstant.InGameTime}后{(累计伤害 > 0 ? $"{ * 100:0.##}%" : "")}";
private readonly double = 7; private readonly double = 7;
private readonly double = 0.21; private readonly double = 0.21;
@ -43,7 +43,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
if (character == Skill.Character) if (character == Skill.Character)
{ {
double = damage * ; double = damage * ;
if ( > 0) WriteLine($"[ {character} ] 的伤害提升了 {实际伤害提升:0.##} 点!"); if ( > 0) WriteLine($"[ {character} ] 的伤害提升了 {累计伤害 * 100:0.##}% [ {实际伤害提升:0.##} ] 点!");
*= 0.7;
return ; return ;
} }
} }

View File

@ -10,7 +10,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => Effects.Count > 0 ? Effects.First().Description : ""; public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double EPCost => Math.Max(100, Character?.EP ?? 100); public override double EPCost => Math.Max(100, Character?.EP ?? 100);
public override double CD => 60; public override double CD => 60;
public override double HardnessTime { get; set; } = 12; public override double HardnessTime { get; set; } = 5;
public override bool CanSelectSelf => true; public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
@ -26,7 +26,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Name => Skill.Name; public override string Name => Skill.Name;
public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内无法受到任何伤害,且敏捷提升 {系数 * 100:0.##}% [ {敏捷提升:0.##} ]。此技能会消耗至少 100 点能量。"; public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内无法受到任何伤害,且敏捷提升 {系数 * 100:0.##}% [ {敏捷提升:0.##} ]。此技能会消耗至少 100 点能量。";
public override bool Durative => true; public override bool Durative => true;
public override double Duration => 16 + * 0.03; public override double Duration => 13 + * 0.03;
private double => 0.2 + 0.015 * (Level - 1); private double => 0.2 + 0.015 * (Level - 1);
private double => * Skill.Character?.BaseAGI ?? 0; private double => * Skill.Character?.BaseAGI ?? 0;

View File

@ -10,7 +10,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => Effects.Count > 0 ? Effects.First().Description : ""; public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double EPCost => 100; public override double EPCost => 100;
public override double CD => 35 - 2 * (Level - 1); public override double CD => 35 - 2 * (Level - 1);
public override double HardnessTime { get; set; } = 10; public override double HardnessTime { get; set; } = 0;
public override bool CanSelectSelf => true; public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;

View File

@ -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 => $"每释放 {触发硬直次数:0.##} 次魔法才会触发硬直时间,且魔法命中时基于 25% 智力 [ {获得额外能量值:0.##} ] 获得额外能量值。"; public override string Description => $"每释放 {触发硬直次数:0.##} 次魔法才会触发硬直时间,且魔法伤害命中时基于 25% 智力 [ {获得额外能量值:0.##} ] 获得额外能量值,并减少所有技能 2 {GameplayEquilibriumConstant.InGameTime} 冷却时间。";
public bool { get; set; } = false; public bool { get; set; } = false;
public int { get; set; } = 2; public int { get; set; } = 2;
@ -37,7 +37,16 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
double = ; double = ;
character.EP += ; character.EP += ;
WriteLine($"[ {character} ] 发动了灵能反射!额外获得了 {实际获得能量值:0.##} 能量!"); foreach (Skill scd in character.Skills)
{
scd.CurrentCD -= 2;
if (scd.CurrentCD < 0)
{
scd.CurrentCD = 0;
scd.Enable = true;
}
}
WriteLine($"[ {character} ] 发动了灵能反射!额外获得了 {实际获得能量值:0.##} 能量,并消除了 2 {GameplayEquilibriumConstant.InGameTime} 冷却时间!");
IEnumerable<Effect> effects = character.Effects.Where(e => e is ); IEnumerable<Effect> effects = character.Effects.Where(e => e is );
if (effects.Any() && effects.First() is e) if (effects.Any() && effects.First() is e)
{ {

View File

@ -9,8 +9,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
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 EPCost => 100; public override double EPCost => 100;
public override double CD => 30; public override double CD => 20;
public override double HardnessTime { get; set; } = 10; public override double HardnessTime { get; set; } = 3;
public override bool CanSelectSelf => true; public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false; public override bool CanSelectEnemy => false;
@ -27,7 +27,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => $"检查 [ 智慧与力量 ] 的模式。在力量模式下,立即回复 {生命值回复 * 100:0.##}% 生命值;智力模式下,下一次魔法伤害提升 {伤害提升 * 100:0.##}%。"; public override string Description => $"检查 [ 智慧与力量 ] 的模式。在力量模式下,立即回复 {生命值回复 * 100:0.##}% 生命值;智力模式下,下一次魔法伤害提升 {伤害提升 * 100:0.##}%。";
private double => 0.25 + 0.03 * (Level - 1); private double => 0.25 + 0.03 * (Level - 1);
private double => 0.55 + 0.25 * (Level - 1); private double => 0.6 + 0.4 * (Level - 1);
public override void OnEffectGained(Character character) public override void OnEffectGained(Character character)
{ {

View File

@ -24,10 +24,11 @@ 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 => $"当生命值低于 30% 时,进入力量模式,核心属性转为力量,将所有基础智力转化为额外力量;当生命值高于或等于 30% 时,进入智力模式,核心属性转为智力,还原所有基础智力。力量模式下,造成伤害必定暴击;智力模式下,获得 15% 闪避率和 15% 魔法抗性。" + public override string Description => $"当生命值低于 30% 时,进入力量模式,核心属性转为力量,将所有基础智力转化为额外力量;当生命值高于或等于 30% 时,进入智力模式,核心属性转为智力,还原所有基础智力。力量模式下,造成伤害必定暴击;智力模式下,获得 15% 暴击率、15% 闪避率和 15% 魔法抗性。" +
(Skill.Character != null ? "(当前模式:" + CharacterSet.GetPrimaryAttributeName(Skill.Character.PrimaryAttribute) + "" : ""); (Skill.Character != null ? "(当前模式:" + CharacterSet.GetPrimaryAttributeName(Skill.Character.PrimaryAttribute) + "" : "");
private double = 0; private double = 0;
private double = 0.15;
private double = 0.15; private double = 0.15;
private double = 0.15; private double = 0.15;
private bool = false; private bool = false;
@ -51,12 +52,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
{ {
= true; = true;
character.ExEvadeRate += ; character.ExEvadeRate += ;
character.ExCritRate += ;
character.MDF.AddAllValue(); character.MDF.AddAllValue();
} }
else else
{ {
= false; = false;
character.ExEvadeRate -= ; character.ExEvadeRate -= ;
character.ExCritRate -= ;
character.MDF.AddAllValue(-); character.MDF.AddAllValue(-);
} }
} }

View File

@ -9,7 +9,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
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 EPCost => 100; public override double EPCost => 100;
public override double CD => 55 - 3 * (Level - 1); public override double CD => 60 - 1 * (Level - 1);
public override double HardnessTime { get; set; } = 25; public override double HardnessTime { get; set; } = 25;
public override string Slogan => "从深渊引爆力量,世界将为之颤抖!!!!"; public override string Slogan => "从深渊引爆力量,世界将为之颤抖!!!!";
public override bool CanSelectSelf => false; public override bool CanSelectSelf => false;
@ -20,16 +20,12 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override List<Character> SelectTargets(Character caster, List<Character> enemys, List<Character> teammates)
{
return [.. enemys];
}
public override void OnTurnStart(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items) public override void OnTurnStart(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items)
{ {
if (Character == character) if (Character == character)
{ {
CanSelectTargetCount = enemys.Count; CanSelectTargetCount = enemys.Count;
if (CanSelectTargetCount > 6) CanSelectTargetCount = 6;
} }
} }
} }
@ -38,10 +34,10 @@ 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 => $"对所有角色造成 " + public override string Description => $"对至多 6 个角色造成 " +
$"{能量系数 * 100:0.##}% 其现有能量值 + {智力系数 * 100:0.##}% 智力 [ {智力伤害:0.##} ] 的魔法伤害。"; $"{能量系数 * 100:0.##}% 其现有能量值 + {智力系数 * 100:0.##}% 智力 [ {智力伤害:0.##} ] 的魔法伤害。";
private double => 0.25 * Level; private double => 0.2 * Level;
private double => * Skill.Character?.INT ?? 0; private double => * Skill.Character?.INT ?? 0;
private double => 1.05 * Level; private double => 1.05 * Level;

View File

@ -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 => $"{Duration:0.##} 时间内,增加 40% 攻击力 [ {攻击力提升:0.##} ]、30% 物理穿透和 25% 闪避率(不可叠加),普通攻击硬直时间额外减少 20%,基于 {系数 * 100:0.##}% 敏捷 [ {伤害加成:0.##} ] 强化普通攻击的伤害。在持续时间内,【心灵之火】的冷却时间降低至 3 时间。"; 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;

View File

@ -25,16 +25,21 @@ 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 => $"对处于完全行动不能状态的敌人额外造成 {系数 * 100:0.##}% 力量 [ {伤害加成:0.##} ] 点伤害;造成魔法伤害时使敌人眩晕 1 回合,冷却 {基础冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}。" + public override string Description => $"对处于完全行动不能、行动受限、战斗不能、技能受限、攻击受限状态的敌人额外造成 {系数 * 100:0.##}% 力量 [ {伤害加成:0.##} ] 点伤害;造成魔法伤害时使敌人眩晕 1 回合,冷却 {基础冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}。" +
( > 0 ? $"(正在冷却:剩余 {冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}" : ""); ( > 0 ? $"(正在冷却:剩余 {冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}" : "");
public double { get; set; } = 0; public double { get; set; } = 0;
public double { get; set; } = 10; public double { get; set; } = 10;
private double => 1.2 * (1 + 0.4 * (Skill.Level - 1)); private static double => 4;
private double => * Skill.Character?.STR ?? 0; private double => * Skill.Character?.STR ?? 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 && enemy.CharacterState == CharacterState.NotActionable) if (character == Skill.Character && (
enemy.CharacterState == CharacterState.NotActionable ||
enemy.CharacterState == CharacterState.ActionRestricted ||
enemy.CharacterState == CharacterState.BattleRestricted ||
enemy.CharacterState == CharacterState.SkillRestricted ||
enemy.CharacterState == CharacterState.AttackRestricted))
{ {
return ; return ;
} }
@ -43,7 +48,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override void AfterDamageCalculation(Character character, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult) public override void AfterDamageCalculation(Character character, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult)
{ {
if (character == Skill.Character && isMagicDamage && == 0 && damageResult != DamageResult.Evaded && new Random().NextDouble() < 0.35) if (character == Skill.Character && isMagicDamage && == 0 && damageResult != DamageResult.Evaded)
{ {
IEnumerable<Effect> effects = enemy.Effects.Where(e => e is && e.Skill == Skill); IEnumerable<Effect> effects = enemy.Effects.Where(e => e is && e.Skill == Skill);
if (effects.Any()) if (effects.Any())

View File

@ -40,6 +40,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
character.UpdateCharacterState(); character.UpdateCharacterState();
character.ExSPD += 100; character.ExSPD += 100;
character.ExCritRate += 0.08; character.ExCritRate += 0.08;
GamingQueue?.InterruptCastingAsync(character);
} }
public override void OnEffectLost(Character character) public override void OnEffectLost(Character character)

View File

@ -32,6 +32,7 @@ namespace Oshima.FunGame.OshimaServers.Service
// 创建顺序表并排序 // 创建顺序表并排序
ActionQueue actionQueue = new(characters, false, WriteLine); ActionQueue actionQueue = new(characters, false, WriteLine);
actionQueue.SetCharactersToAIControl(false, characters); actionQueue.SetCharactersToAIControl(false, characters);
ActionQueue = actionQueue;
if (PrintOut) Console.WriteLine(); if (PrintOut) Console.WriteLine();
// 总游戏时长 // 总游戏时长
@ -239,6 +240,7 @@ namespace Oshima.FunGame.OshimaServers.Service
MaxScoreToWin = maxScoreToWin MaxScoreToWin = maxScoreToWin
}; };
actionQueue.SetCharactersToAIControl(false, characters); actionQueue.SetCharactersToAIControl(false, characters);
ActionQueue = actionQueue;
if (PrintOut) Console.WriteLine(); if (PrintOut) Console.WriteLine();
// 总游戏时长 // 总游戏时长