修改文本,增强角色

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)
{
WriteLine($"[ {actor} ] 的普通攻击无视了 [ {enemy} ] 的闪避!");
if (GamingQueue != null) WriteLine($"[ {actor} ] 的普通攻击无视了 [ {enemy} ] 的闪避!");
return false;
}
return true;

View File

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

View File

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

View File

@ -31,7 +31,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects
{
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", SPD }

View File

@ -29,8 +29,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override bool Durative => true;
public override double Duration => 25;
private static double => 0.3;
private double => 0.02 * Level;
private static double => 0.2;
private double => 0.015 * Level;
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 Description => $"造成伤害时会标记目标,攻击具有标记的敌人将对其造成眩晕 1 回合,并回收标记,额外对该角色造成 {系数 * 100:0.##}% 最大生命值的物理伤害。";
public double { get; set; } = 0.16;
public double { get; set; } = 0.12;
private bool = false;
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 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 = 0.21;
@ -43,7 +43,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
if (character == Skill.Character)
{
double = damage * ;
if ( > 0) WriteLine($"[ {character} ] 的伤害提升了 {实际伤害提升:0.##} 点!");
if ( > 0) WriteLine($"[ {character} ] 的伤害提升了 {累计伤害 * 100:0.##}% [ {实际伤害提升:0.##} ] 点!");
*= 0.7;
return ;
}
}

View File

@ -10,7 +10,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double EPCost => Math.Max(100, Character?.EP ?? 100);
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 CanSelectEnemy => false;
@ -26,7 +26,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Name => Skill.Name;
public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内无法受到任何伤害,且敏捷提升 {系数 * 100:0.##}% [ {敏捷提升:0.##} ]。此技能会消耗至少 100 点能量。";
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 => * 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 double EPCost => 100;
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 CanSelectEnemy => false;

View File

@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
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 int { get; set; } = 2;
@ -37,7 +37,16 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
double = ;
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 );
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 Description => Effects.Count > 0 ? Effects.First().Description : "";
public override double EPCost => 100;
public override double CD => 30;
public override double HardnessTime { get; set; } = 10;
public override double CD => 20;
public override double HardnessTime { get; set; } = 3;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
@ -27,7 +27,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Description => $"检查 [ 智慧与力量 ] 的模式。在力量模式下,立即回复 {生命值回复 * 100:0.##}% 生命值;智力模式下,下一次魔法伤害提升 {伤害提升 * 100:0.##}%。";
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)
{

View File

@ -24,10 +24,11 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
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) + "" : "");
private double = 0;
private double = 0.15;
private double = 0.15;
private double = 0.15;
private bool = false;
@ -51,12 +52,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
= true;
character.ExEvadeRate += ;
character.ExCritRate += ;
character.MDF.AddAllValue();
}
else
{
= false;
character.ExEvadeRate -= ;
character.ExCritRate -= ;
character.MDF.AddAllValue(-);
}
}

View File

@ -9,7 +9,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
public override string Name => "能量毁灭";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
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 string Slogan => "从深渊引爆力量,世界将为之颤抖!!!!";
public override bool CanSelectSelf => false;
@ -20,16 +20,12 @@ namespace Oshima.FunGame.OshimaModules.Skills
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)
{
if (Character == character)
{
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 string Name => Skill.Name;
public override string Description => $"对所有角色造成 " +
public override string Description => $"对至多 6 个角色造成 " +
$"{能量系数 * 100:0.##}% 其现有能量值 + {智力系数 * 100:0.##}% 智力 [ {智力伤害:0.##} ] 的魔法伤害。";
private double => 0.25 * Level;
private double => 0.2 * Level;
private double => * Skill.Character?.INT ?? 0;
private double => 1.05 * Level;

View File

@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
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 double Duration => 40;

View File

@ -25,16 +25,21 @@ namespace Oshima.FunGame.OshimaModules.Skills
{
public override long Id => Skill.Id;
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}" : "");
public double { get; set; } = 0;
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;
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 ;
}
@ -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)
{
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);
if (effects.Any())

View File

@ -40,6 +40,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
character.UpdateCharacterState();
character.ExSPD += 100;
character.ExCritRate += 0.08;
GamingQueue?.InterruptCastingAsync(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.SetCharactersToAIControl(false, characters);
ActionQueue = actionQueue;
if (PrintOut) Console.WriteLine();
// 总游戏时长
@ -239,6 +240,7 @@ namespace Oshima.FunGame.OshimaServers.Service
MaxScoreToWin = maxScoreToWin
};
actionQueue.SetCharactersToAIControl(false, characters);
ActionQueue = actionQueue;
if (PrintOut) Console.WriteLine();
// 总游戏时长