舰长技能重做(新增经验来源)

舰长技能重做(新增经验来源)

这个模组重做了船长的技能经验获取,使其有可能在你真正的有生之年学会。

Bannerlord Shipmaster Reworked

一个用于《骑马与砍杀 II:霸主》War Sails DLC 的模组,更改了 Shipmaster 技能的经验获取行为。

特性

  • 当队伍中的船只数量等于玩家队伍可拥有的最大船只数量时,航行获得的 Shipmaster 技能经验现在有 3 倍加成。默认情况下为 3 艘船,加上特长可提升至 5 艘。
  • 在风暴中航行时,航行获得的 Shipmaster 技能经验现在有额外的 2 倍加成。
  • 海战中撞击获得的 Shipmaster 技能经验,取决于撞击质量以及撞击伤害。
  • 海战中使用弩炮获得的 Shipmaster 技能经验,取决于对船只以及对船上人员(船员)造成的伤害。

需求

  • 已安装 War Sails DLC 的《骑马与砍杀 II:霸主》。
  • MCM(模组配置菜单)用于游戏内配置选项。
  • Harmony 库。

安装

  1. Releases 页面下载模组的最新版本。
  2. 解压下载的 ZIP 文件。
  3. 将解压后的文件夹复制到你的 Bannerlord Modules 目录,通常位于:
C:\Program Files (x86)\Steam\steamapps\common\Mount & Blade II Bannerlord\Modules
  1. 在启动游戏前,在 Bannerlord 启动器中启用该模组。

兼容性

此模组与最新版本的《骑马与砍杀 II:霸主》及 War Sails DLC 兼容。它可能与其他修改 Shipmaster 技能或海战机制的模组不兼容。

撞击经验计算

通过撞击获得的 Shipmaster 经验使用以下公式计算:

XP = BaseXP × DamagePercent × (1 + RamQuality × QualityFactor)

其中:

  • BaseXP:撞击的基础经验值(默认为 80 XP)。
  • DamagePercent:对目标船只造成的伤害百分比(0 到 100)。对于卓越撞击,该值可略微超过 100%,因此我设置的硬性上限为 150%。
  • RamQuality:基于撞击质量的乘数,该值取自游戏现有的撞击质量系统。
  • QualityFactor:撞击质量对经验获取的影响程度。

计算示例:如果玩家以良好的撞击质量撞击敌船,可预期伤害百分比约为 105%,撞击质量为 5。

由此得出:

XP = 80 x 1.05 x (1 + 5 x 0.15) = 80 x 1.05 x 1.75 = 147 XP

该值随后四舍五入到最接近的整数,然后乘以技能的学习率,最后将最终经验值给予玩家。

弩炮经验计算

使用弩炮获得的 Shipmaster 经验分为击中船只或击中人员,其中人员指船上的任何船员。

击中船只

当用弩炮击中船只时,经验计算如下:

首先是负责此功能的代码:

// Convert damage to XP contribution
float baseXp = damage * ConfigCache.BallistaDamageFactor;

float distanceMultiplier = CalculateBallistaDistanceMultiplier(distanceMeters);

// Safety clamp
baseXp = MathF.Clamp(
baseXp,
ConfigCache.BallistaDamageXpMin,
ConfigCache.BallistaDamageXpMax);

float finalXp = baseXp * distanceMultiplier;

用人话翻译就是:XP = DamageDealt × BallistaDamageFactor × DistanceMultiplier

其中:

  • DamageDealt:弩炮对船只造成的伤害量。
  • BallistaDamageFactor:一个可配置的系数,用于缩放从弩炮伤害中获得的经验。
  • DistanceMultiplier:基于弩炮射击距离的乘数。距离越远(在某个限度内),乘数越高。
  • BallistaDamageXpMin:从弩炮伤害中可获得的最低经验值。
  • BallistaDamageXpMax:从弩炮伤害中可获得的最高经验值。

计算示例:如果玩家从 200 米距离对一艘船造成 1800 点伤害,BallistaDamageFactor 为 0.05,BallistaDamageXpMin 为 10,BallistaDamageXpMax 为 200:XP = 1800 x 0.05 x 3.0 = 270 XP

该值随后四舍五入到最接近的整数,然后乘以技能的学习率,最后将最终经验值给予玩家。

击中人员

当用弩炮击中船上的人员(船员)时,经验来源于你在原版游戏中获得的工程学技能经验,并乘以一个可配置的系数:

计算如下:XP = EngineeringXP × BallistaAgentDamageFactor

其中:

  • EngineeringXP:用弩炮击中人员获得的工程学技能经验值(根据测试,它似乎等于造成的伤害)。
  • BallistaAgentDamageFactor:一个可配置的系数,用于缩放用弩炮击中人员获得的经验。

计算示例:如果玩家对船上的一名人员造成 150 点伤害,BallistaAgentDamageFactor 为 0.5:XP = 150 x 0.5 = 75 XP

该值随后四舍五入到最接近的整数,然后乘以技能的学习率,最后将最终经验值给予玩家。

弩炮距离乘数

弩炮距离乘数仅适用于击中船只,并使用开火船只与命中位置之间的距离,因此击中船首在技术上比击中船尾更近。

距离乘数是可配置的,但我认为默认设置是平衡的,此设置也为高级用户考虑,并在 MCM 中有自己的子类别。

翻译

此模组包含以下语言的翻译:

  • 英语
  • 波兰语

你可以通过在 GitHub 仓库 上提交拉取请求来贡献其他语言的翻译。

如果你需要关于 Github 或翻译流程的帮助,欢迎加入 Discord - Vee Workshop 寻求帮助。

许可证

此模组在 MIT 许可证下发布。更多详情请参阅 LICENSE 文件。

鸣谢

  • 由 puszkapotato 开发

支持

如果你遇到任何问题或有改进建议,请在 GitHub 仓库 上提交问题。

额外链接