mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2025-04-20 10:59:33 +08:00
修改文本,增强角色
This commit is contained in:
parent
37a8a989c9
commit
ef0f870468
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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 }
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -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 实际伤害提升;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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(-实际增加魔法抗性);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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())
|
||||
|
@ -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)
|
||||
|
@ -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();
|
||||
|
||||
// 总游戏时长
|
||||
|
Loading…
x
Reference in New Issue
Block a user