技能效果公式

技能效果公式

允许你更改技能效果及其使用公式。

游戏玩法

在原版游戏中,技能效果呈线性增长,通常效果较为微弱,这意味着高低技能单位之间的差异不大。
本模组允许您自定义技能效果的缩放方式。
通常它们只是简单的"加成*等级",要么与基础值相加,要么相乘。
通过此模组,您可以为每个技能效果使用自定义表达式。

skills.txt 文件中,技能效果以 Name_bool_float_expression 的形式列出。

  • 名称 是技能效果的名字。
  • bool 决定是与基础值相加还是相乘,如果为 true,将对技能等级应用 *=0.01
  • float 是奖励值,若您只想增加/减少技能效果,只需更改此值,切勿设置为零。
  • 表情 是重要的部分。
    这里会进行解析,将 bonus 替换为浮点数值,level 替换为技能等级。
    然后使用 ExpressiveParser 中的 Expression.Evaluate() 进行评估,这意味着它应该能处理大多数常规表达式和数学函数。

示例:

  • EffectOneHandedSpeed_true_0.07_(100 + level*bonus*3/4) 将为单手武器增加 100% 的基础攻击速度,并略微降低等级加成效果。
  • 双手武器伤害 _true_0.16_等级平方*加成 会使高等级效果过于强大(可能导致双手武器一击秒杀所有目标)。
  • EffectSurgeonSurvivalBonus_false_0.01_50 会将基础外科医生生存几率设为 50%,但移除等级效果。
  • EffectCharmRelationBonus_true_4000.0_bonus/level 会随着等级提升而降低技能效果。

当前战斗技能调整: 等级*加成*Log(等级, 2.71828)/3,在保持合理范围内随着技能等级提升技能效果增益。效果图表如下:

 

你可以根据自己的喜好尝试或调整技能。我的偏好是 等级*加成*等级*0.02 适用于所有战斗技能。这大幅提升了等级效果,同时不会破坏游戏平衡(尽管平衡性可能稍显存疑)。

游戏在加载存档时会初始化技能,此模组对 DefaultSkillEffects.InitializeAll() 进行补丁以使用自定义技能数值。
该模组在子模块加载时(OnSubModuleLoad())和返回主菜单时(OnGameEnd())读取 skill.txt 文件。
这意味着您无需关闭游戏即可测试修改效果——只需加载存档、返回主菜单再重新载入即可。

要应用模组的修改效果,需使用 AddToStat() 方法(位于 SkillHelper 中)。
该方法不调用 ExplainedNumber.AddExplainedNumber.AddFactor,而是通过自定义表达式来评估技能效果。
传入 AddToStat 的数值已预先将技能等级与加成相乘(并添加了可能的额外技能值)。
为了获取技能等级,本模组会将接收到的数值除以加成系数。

此模组应兼容存档,可随时安全添加或移除。
(已在 1.4.3 版本修复)

目前由于一个错误,大多数技能效果对非英雄单位完全无效,它们几乎完全依赖装备。
已通过我的其他模组修复:启用单位技能

其他模组制作者可以自由使用这个模组做任何想做的事。
某种程度上受到 可调整技能与天赋 的启发。
请考虑查看我的其他模组。