
轻量战斗模组合集
一系列与战斗相关的模组,包含减少随机性的自动战斗、更清晰的生存概率说明、改进的骑兵与长矛兵野战表现、真实的弓箭弹道、更智能的AI策略以及修订。
查看大图轻型战斗模组合集
支持 e1.4.0 和 e1.4.1 测试版。请在下载页面选择对应的文件。
参考更新日志,了解最近的更新详情。
v1.4.6 增加了对本地化功能的更好支持。如果您能将这个模组翻译成其他语言,我将不胜感激。
剧透:显示
你可以找到文件 Modules\CombatModCollection\ModuleData\Languages\module_strings.xml。它包含了这个模组使用的所有字符串,为英文。创建一个名为 CNs 之类的新子目录,将文件复制到那里,修改第 4 行:<tag language="English"/> 为你想要的语言,并将后续行中 text= 后面的所有英文描述改为对应语言。你必须保留字符串 ID 不变,并以 UTF 编码保存文件。你可以参考 Modules\Native\ModuleData\Languages 了解原生游戏是如何翻译的。
v1.4.4 及更高版本已整合 MCM,提供了配置菜单。你无需安装任何额外模组。在游戏主菜单 -> 模组选项中可以找到配置菜单。
设置迁移指南:剧透: 显示
从 1.4.7 版本起,模组配置文件将保存在 我的文档\Mount and Blade II Bannerlord\Configs\ModSettings\Global\CombatModCollection\Light.CombatModCollection_v1.json。该配置文件与旧版 settings.json 格式相同。您可以直接将旧文件复制到新路径并重命名,但建议通过配置菜单重新配置模组,或至少核对这些配置项。模组配置菜单的优点是:在模组升级时设置会自动保留,无需每次更新时重新覆盖配置。
这是一个专注于改变游戏不同战斗相关方面的模组合集。此合集内的每个模组均可单独启用/禁用,并通过统一的配置文件进行调整。默认情况下所有模组均处于关闭状态。若您遇到任何问题,可关闭有问题的模块后继续游戏。
这些 mod 大致可分为两类:战斗与策略。战斗类 mod 会改变单场战斗(无论是手动战斗还是自动战斗)的运作方式;而策略类 mod 则主要调整大地图上的行为逻辑,特别是 AI 的决策机制。随着我通过游戏实践产生的更多创意,这个 mod 列表也在不断扩展。所有代码均托管在我的 GitHub 上。
互联机制:这些模组在设计上相互关照:每个模组可以独立运行,但也能读取彼此的数据,在同时使用时提供更优的结果。以下是主要互联机制列表:
剧透:显示
SendAllTroops可使用SurviveByArmor的设置来判断自动战斗中的生存几率。SendAllTroops中的DetailedCombatModel利用物品的实际数据(包括伤害、精准度、速度等)来决定自动战斗中每个单位的性能,因此会受到RealisticBallistics对远程武器改动的影响。PowerThrust改变了刺击攻击的计算方式,直接影响SurviveByArmor_SurviveByExcessiveDamage中的致死率,并提升长矛兵对抗WarStomp战马的效果。LearnToQuit可读取SendAllTroops的数据以判断双方的实际战斗力。它不仅计算每个单位面板上的强度,还会追踪战斗从开始以来的进程——比如弓箭手是否已耗尽箭矢,某一方是否生命值过低且士兵迅速减员等。LearnToQuit中的领主若因SurvivalByArmor而知晓其士兵不易阵亡,可能会选择持续猛烈进攻。LearnToQuit让领主得以保全部队,以弥补ModifyRespawnParty移除的口袋军队。
兼容性说明:
剧透:显示
我在每个模块各自的说明中列出了我修补的所有类和方法。许多其他模组也在其页面上列出了它们。你可以对比这些内容,如果它们没有修改相同的方法,则几乎总是兼容的。这是最准确的方法。例如,SendAllTroops(禁用 DetailedCombatModel 时)甚至与 Keehu 的 Better Auto Calc 兼容。
不过,每个子模块必须整体运作:如果某个子模块涉及两个文件的补丁,它就必须要么同时补上两个,要么一个都不补。如果它只成功补了一个,而你其他模组补了剩下那个,就可能引发崩溃。这并非任何人的过错。将该模组最后加载始终是更稳妥的选择,否则你就得关掉这个子模块或任何其他冲突模组。
战斗:
SendAllTroops(小更新)
你原以为"派出部队"(自动解决)会全员出击。实际上,它是让部队逐一决斗。难怪在 200 名掠夺者对 10 人的战斗中,那些倒霉的骑士会接连阵亡,只有被选中且幸存下来的幸运儿才能获得战斗经验。
简短概述:
剧透:显示原版自动战斗让玩家苦不堪言。这完全是一个"掷骰子等死"的游戏,充满了无法控制的随机因素。不仅如此,玩家和 AI 的待遇也不相同:当玩家率领一支远强于对手的队伍时,比如追捕劫匪,较弱的队伍会获得巨大的增益,导致玩家队伍遭受远超预期的伤亡。
SendAllTroops 的特性:
- 随机性大大降低。你可以选择移除所有随机因素,获得完全确定的结果。
- 队伍作为整体作战,而非单个士兵的集合。例如,盾牌可以保护友方的双手武器士兵免受箭矢伤害。
- 每个士兵都有独立的生命值。
- 玩家与所有人一视同仁。你的对手将不再获得增益效果。
- 战斗经验值在全队范围内平分,高阶兵种不会独占所有击杀,从而剥夺低阶兵种的经验值。
- 一个可选的新模型:根据每个士兵的装备和技能等级决定其战斗力。
- 详细的战斗进程系统,考虑武器射程、弹药消耗,并让士兵根据不同情况切换武器。
- 一个精细的多阶段攻城模型,防御工事和攻城器械的作用更加显著。
- 每个方面都可以在设置中轻松配置。
通过使用生命值并平等对待玩家,SendAllTroops 移除了原版模拟中最令人沮丧的部分,并能提供更一致、准确和合理的结果。请注意,这是一个改变游戏规则的功能,因为它会影响 AI 和玩家的每一个自动解决战斗。弱方更不可能击败强方,而强方(尤其是玩家指挥的部队)通常伤亡更少。
配置项:
- 随机伤害: 如果设为关闭,伤害值是固定的。如果启用,伤害会在基准值附近随机波动。
- 随机死亡: 如果设为关闭,士兵的死亡由生命值归零决定。如果启用,则使用原版概率即死机制。若随机伤害与随机死亡均关闭,则等同于早期版本的"绝对零随机"模式,每场战斗结果将完全预判。注意仍存在两个随机要素:首先是记分板上击杀归属(非决定性),其次是战败士兵的受伤或死亡判定。所有医疗技能和特质将外科医生概率以百分比呈现,无法出现 0.6 存活 0.4 死亡的情况。
- 详细战斗模型: 是否使用通过装备与技能等级判定实力的新模式。若设为关闭,则沿用原版战力值。具体功能请参考详细战斗模型说明。
- 战斗速度: 调整 AI 之间的战斗速度。涉及玩家参与的战斗在战役时间中始终即时结算。
- 战斗经验倍率: 全局调整所有人获得的经验值倍数。
已知问题:
- 你必须禁用所有其他改变经验计算方式的模组,才能使全队共享经验机制正常工作。你可以通过"战斗经验倍率"来补偿此类模组提供的功能。
- 生命值不会在游戏保存和重新加载时保留。我选择不保存状态,因为这可能导致存档文件损坏,并且几乎可以保证如果你决定禁用
SendAllTroops模组,存档将无法打开。这不会影响玩家自动战斗结算,因为结算会立即完成,但如果你在战斗进行中保存并重新加载游戏,AI 与 AI 之间的战斗结果可能会有所不同。
详细描述:
剧透:显示
要理解原版自动战斗的缺陷,我们首先需要了解它是如何计算的。以下是对原版"派遣部队"(模拟)的简单分解:
当两个敌对势力在世界地图上相遇并交战时,就会触发一个事件。每隔数分钟的游戏内时间,双方会进行一轮交战。你会注意到 AI 对 AI 的战斗每隔一段时间(约半小时游戏内时间)会损失士兵,这就是一次轮。
一轮由多个回合组成。在每个回合中,一方会随机选择一名士兵,对另一方随机选择的另一名士兵发动攻击。攻击顺序也是随机的。
士兵数量决定了每方在一轮中的回合次数。拥有 N 名士兵的一方会进行 N^0.6 次攻击回合。
当一名士兵被攻击时,造成的伤害是 0 到 50 之间的随机数,乘以攻击方战力除以受击方战力。然后将伤害与另一个随机数(0 到受击方最大生命值之间,通常为 100)进行比较。如果伤害更高,受击方立即死亡;如果更低,则无事发生。
那么战力如何计算?公式为 0.02 × (2 + 等级) × (10 + 等级),如果士兵是骑兵,则结果乘以 1.2。骑兵加成在攻城战中同样适用。这意味着,巴旦尼亚骑手(2.52)比巴旦尼亚精锐射手(2.1)更强。你知道它们在野战中的表现如何。
我们可以看到至少存在三个主要缺陷:
- 这是一个"决斗"模式,每支队伍各自为战,而不是以整个队伍为单位作战。
- 战斗不保留状态,主要指每支部队的剩余生命值和战斗持续的时间(例如弓箭手还剩多少箭)。
- 每支部队要么死亡,要么处于满生命值状态。每次战斗都会重新开始。
- 计算"战力"的公式过于简略。
以及一些细小却令人困扰的问题:
- 攻击顺序完全随机。如果一方先行攻击并杀死若干敌军,那么还击的火力将会减弱。
- 每次攻击都有几率瞬间击杀任意目标。即便你拥有 200 个 6 级骑士对抗 1 个掠夺者,如果掠夺者获得先手攻击机会,它仍有 10% 的概率瞬间击杀一名骑士。
理解回合数:
举个例子,一场 1000 对 100 的战斗,双方士兵类型相同。你可能会以为拥有 1000 士兵的一方应该轻松碾压 100 人那一方,但事情并没有那么简单:
- 1000 的一方每轮进行 1000^0.6 = 63 次攻击。
- 100 的一方每轮进行 100^0.6 = 16 次攻击。
所以 1000 方的攻击力不是 100 方的 10 倍,而是只有 4 倍,更精确来说是 10 的 0.6 次方,约等于 3.98 倍。这意味着即使一方兵力是另一方的 10 倍,其实际优势也远低于 10 倍。这个 0.6 次方是对兵力较多一方的惩罚,防止其直接碾压对手。
使用 ^0.6 时,结果似乎仍可接受,因为该阵营战斗力仍强 4 倍。但若玩家统领该阵营则截然不同:若玩家参与此战斗,每方每回合将进行 (1000+100)^0.6 * 3 = 200 轮攻击,双方攻击力将完全相同,换言之,敌方阵营战斗力反而提升 4 倍!
一个极端的例子是,玩家带领 200 名骑士对抗一名孤身掠夺者。玩家队伍能发起 72 次攻击,而该掠夺者竟也能发动 72 次攻击!攻击顺序完全随机,掠夺者可能获得多次攻击机会,且其每次攻击都约有 10% 的概率瞬间击杀一名骑士。现在明白为何玩家有时会在 200 人队伍对抗少数匪徒时损失数十名士兵,或率领大军对阵远弱于己的敌队时折损上百人了。
为了克服原版模拟模型的缺陷,SendAllTroops 采取了以下措施:
- 在每场战斗中,双方同时发起攻击。不再有随机的攻击顺序。
- 在每个回合中,每方所有部队攻击一次。一方的总攻击力等于所有部队攻击力之和。
- 受到攻击时,一方作为一个整体承受伤害。来袭的攻击会被分配给每一支部队。
- 每支部队会承担一部分来袭攻击,与其各自的防御力相比来决定伤害值。
- 受到伤害时,一支部队会失去相应的生命值。如果生命值降至零,则该部队死亡。
- 在每个回合结束后,战斗经验会在整个队伍中平分。
- 玩家与 AI 一视同仁,使用相同的计算公式。
DetailedCombatModel 的分解:
这个新型号使用部队的装备来决定它的强度。同时它还会追踪战斗进程。
每个兵种会搜索其装备组,以寻找武器、盾牌、护甲和马匹。武器的攻击力由其属性决定,包括伤害、速度、长度、重量等。多模式武器(如 menavliaton)在不同模式下可能具有截然不同的攻击力。弓、弩和投掷武器受弹药限制。每次攻击消耗 1 发弹药,弹药耗尽后无法再次使用。在攻城战中,弹药可以补充。一个单位可拥有多种武器,并会根据当前情况选择最佳武器。例如,弹药耗尽的弓箭手会切换为备用近战武器。该单位的攻击力为武器攻击力乘以该单位熟练度 (0.6 + 武器技能等级 / 300 * 0.4)。单位的基础防御由其护甲点数总和决定。如果持有盾牌且未使用双手武器,他可以举盾,这能略微提升对近战攻击的防御,并对远程攻击有显著提升。加成取决于盾牌属性。如果有马匹,马的血量、速度和操控性以及马鞍护甲决定了马匹加成。该加成适用于近战攻击,若使用专为骑战设计的矛类武器,加成翻倍。同时,他还获得防御加成,但来自矛类武器的攻击可抵消该防御加成。骑射手对近战攻击有较高防御。当他们弹药耗尽转为近战时,会失去防御加成。如果是徒步或攻城战,则根据运动技能等级来决定攻击和防御的加成。
新的战斗模型还包含详细的战斗进度系统:
- 每一场战斗都有"距离",类似于野外战斗的初始距离。目前,如果战斗人员总数少于 50 人,距离为 1;50 至 100 人时,距离为 2;超过 100 人时,距离为 3;如果是攻城战,距离为 4。
- 每一种武器都有其射程。弓和弩的射程为 3,投掷武器的射程为 1,近战武器的射程为 0。
- 如果射程小于距离,则武器无法使用,直到更多时间过去。
- 每个回合,距离减少 1。
- 攻城战中防守方的远程武器获得 +1 射程加成,因为他们占据高地优势。
- 在攻城战中,进攻方的攻击力会受到惩罚。远程攻击的伤害降低,近战攻击的伤害非常低。防守方的远程伤害增加。
- 惩罚和加成取决于防御工事的等级(城墙等级),而攻城塔可以减少近战的惩罚。
- 一段时间后,主城门被攻破,惩罚会降低。攻破主城门的时间取决于建造的攻城器械数量,其中攻城锤专门用于攻破城门。
- 长柄武器在攻城战中表现不佳,因为它们容易卡住。
高级配置项:
- 数量优势强度: 控制对成员较多一方的惩罚系数。这与"了解战斗轮数"中描述的惩罚机制一致。数值越高,成员较多的一方越强。有效值范围为 0.0-1.0。原版游戏中该值为 0.6。早期版本的 SendAllTroops 中该值为 1.0。若沿用 0.6 的设定,请将 RandomDamage 和 RandomDeath 设为 true,并将 DetailedCombatModel 设为 false,即可获得与未修改基础游戏中 AI 战斗高度相似的结果。
- 围攻数量优势强度: 控制攻城战中成员较多一方的惩罚系数。数值越低,攻城战越困难。
编码详情: 和声前缀已开启:
MapEvent.SimulateBattleForRoundsMapEvent.SimulateSingleHitCharacterObject.GetPowerDefaultCombatXpModel.GetXpFromHit
Postfix 开启:
MapState.EndBattleSimulation
WarStomp
让马匹冲锋变得强大。
剧透:展示原版:任何马匹冲锋都可以被拿着干草叉的农夫通过迫使马匹扬起前蹄来阻止,并且冲锋伤害通常较低。
Modded: 强大的马匹冲锋无法被阻止,除非马匹被击杀,但马匹从原本能阻止它们的方式中会受到更多伤害。背后冲锋伤害提升,以模拟"碾压"战争践踏的伤害效果。
你可以[在此处获取独立的单 xml 文件版本 (仅适用于不可阻挡的部分)]。
配置项目:
- 不可阻挡的战马冲锋: 战争冲锋是否会被刺击攻击阻挡。
- 不可阻挡的其他坐骑冲锋: 其他类型马匹及骆驼的冲锋是否会被刺击攻击阻挡。
- 对马匹的伤害倍率: 穿刺攻击对马匹造成的伤害倍率。
- 战争践踏伤害倍率: 从背后冲锋时的伤害倍率。
编码详情: 和谐后缀开启:
Mission.ComputeBlowMagnitudeFromHorseChargeMission.ComputeBlowDamageMission.CreateHorseAgentFromRosterElements
PowerThrust
重新平衡了冲刺(下击)的伤害。
剧透:显示原版:突刺(下攻击)的伤害与速度²完全成正比,因此零速度等于零伤害。这导致未完成动画或缓慢的突刺攻击造成近乎零伤害,并使长矛的使用变得非常困难。另一方面,挥砍(上、左和右攻击)的伤害包含一个小的恒定基础值、一个与速度成线性关系的部分以及一个与速度²成平方关系的部分,使其在不同速度下具有平滑的伤害曲线。此外,它略微改变了突刺动画,使其在陷入人群时更不容易被打断。
Modded: 为突进攻击的速度量级(即伤害)增加一个小的固定基准值和一个线性部分。
配置项:
- kE: 计算强度时的能量系数。原版值为 0.125。
- kP: 计算强度时的动量系数。原版值为 0。
- kC: 计算强度时的常数系数。原版值为 0。
- 刺击命中手臂伤害倍率: 当刺击武器的护手部分击中敌人时的伤害倍率。原版值为 0.15。
- 非尖端刺击命中伤害倍率: 当长矛的非尖端部分击中敌人时的伤害倍率。原版值为 0.15。
参考数据:总大小 = kE * (0.5 * 重量 * 速度^2) + kP * (重量 * 速度) + kC。重量是所用武器的重量,速度是武器相对于目标的速度。在原版挥砍中:公式更加复杂,涉及武器重心、惯性等因素。不过仍保持这种形式,且 kC = 0.033。除非你真的理解伤害计算方式,否则保持默认设置。
编码详情: Harmony 前缀开启
CombatStatCalculator.CalculateStrikeMagnitudeForThrust
后缀:开
ManagedParameters.Initialize
RealisticBallistics (New)
弓箭手太强了?标枪太准了?想让弓箭造成切割伤害?通过简单的设置,调整所有物品的抛射速度和精度,且不会与其他模组产生任何冲突!
剧透:显示
给真实战斗 Mod 的用户:真实战斗系统与其他任何改变战斗的模组兼容性不佳。它对战斗系统进行了大量改动,并打破了原版游戏的整个数值平衡。该模组拥有用户无法编辑的独立空气阻力设置,并将覆盖您在此处调整的任何参数。通常建议您如果坚持使用真实战斗系统,就不要使用真实弹道系统。如果您确实需要,则仅限使用精准度倍率功能。
例如,在原版中,狩猎之弓拥有 64 点弹道速度和 45 点伤害。启用恒定弹道速度会将弹道速度调整为与伤害值匹配,从而得到一把弹道速度 45 点、伤害 45 点的弓。但真实战斗模组会将其改为 40 点弹道速度和 10 点伤害。若同时启用恒定弹道速度与真实战斗模组,该弓最终将变为 10 点弹道速度和 10 点伤害。10 点弹道速度会使这把弓变得毫无用处。
原版:这个世界似乎空气阻力非常低:箭矢飞行速度极快且下落极小,标枪的射程也极远。
模组修改:你可以更改所有远程武器的导弹速度和精准度,以及空气摩擦参数,让它们更早(或更晚)坠落。速度越低、摩擦力越大,弹道就越弯曲。而弯曲的弹道可以让弓箭手进行间接射击,并越过友方步兵的头顶进行发射。
注意,这个模组使用了"内存批量补丁"技术。你们中有些人一定用过 Armor Does Something 或类似模组,这些模组会修改游戏中物品的 XML 文件属性,并且发现两个修改同一物品的模组总是会产生冲突,即使它们修改的是不同属性(一个修改伤害,另一个修改速度)。
在这个模组中,当游戏加载这些属性时,它会即时修改它们,只修改选中的属性而不影响其他属性。就好像 XML 文件在磁盘上被修改了一样,游戏会认为这些物品拥有修改后的导弹速度/精度。因此,物品的游戏内数据卡可以正确显示新值。
这也使该模组与几乎所有其他模组完全兼容,无论是物品修复、新武器模组、真实战斗等。例如,如果某个新物品模组添加了一把 100 伤害和 100 精度的新弓,而你在此模组中将倍率设为 0.8,那么游戏中你会看到这把新弓拥有 80 伤害/精度。
配置项:
- 固定箭矢速度: 基于"固定箭矢速度模组"的相同理念,同一类型箭矢的伤害应仅取决于箭矢速度,而非弓的类型。因此,对于不同的弓,箭矢的伤害应等于其发射速度。该功能会修改所有弓和弩的发射速度,使其与伤害值匹配。
- 箭矢/弓/投掷武器速度倍率: 对每种武器类型乘以其发射速度。若启用"固定箭矢速度",则先调整速度以匹配伤害,再应用该倍率。
- 弓/弩/投掷武器精准度倍率: 对每种武器类型乘以其精准度。
- 弓/弩/投掷武器伤害倍率: 对每种武器类型乘以其伤害值。
- 弓转切割/弩转切割: 是否将所有弓/弩及其对应弹药的基础伤害类型改为切割伤害。
- 标枪/箭矢/匕首/斧头空气阻力: 修改每种武器类型的空气阻力。空气阻力越高,飞行时速度损失越快,弹道下坠越早。原版默认值为 0.002 / 0.003 / 0.007 / 0.007。
编码细节: Harmony 后缀启用
WeaponComponentData.DeserializeWeaponComponentData.InitManagedParameters.Initialize
SurviveByArmor
让一名士兵的生存几率取决于他在战斗中被击倒的方式,以及他的盔甲。
剧透:显示原版:士兵的基地生存几率仅由等级决定:1 - 1 / (1 + 等级 * 0.03),且不考虑关于致命一击的细节。
Modded:致命一击的过量伤害可用于判断存活几率。一群农民连续造成 5 点伤害的抓痕:几乎总能幸存,因为士兵只是因疼痛失去意识;一根标枪击中头部造成 300 点伤害:必死无疑(除非你的外科医生能创造奇迹)。
护甲值可用于判定士兵在无法获取过量伤害数据时的生存几率,例如自动战斗模式中。
所有死亡率现在改为乘法计算:总死亡率 = 过量伤害死亡率 / (1 + 等级加成 + 护甲加成 + 医疗加成) * 伤害类型死亡率。
配置项:
- 过量伤害存活机制: 是否启用过量伤害机制。过量伤害是指致命一击中超出所需的部分。
- 安全过量伤害: 若过量伤害在此数值范围内,角色将必定存活。超出此安全阈值的伤害会提高死亡率。
- 致命过量伤害: 若过量伤害超出此数值,除非有外科医生救治,否则角色将必定死亡。
- 应用医疗、应用等级与应用护甲: 在开启"过量伤害存活机制"的野战战斗中,是否应用对应的生存加成。这三项可单独设置,但建议不要同时开启等级与护甲的加成,否则死亡率可能过低。
- 钝击致死率: 钝击攻击造成的死亡率。
- 护甲值存活机制: 若未开启"过量伤害存活机制",或在自动战斗中使用护甲值代替角色等级判定存活几率。
- 护甲值阈值: 提供中等存活几率的护甲阈值。
供参考的数字:
过量死亡率 = (过量伤害 - 安全过量伤害) / (致死过量伤害 - 安全过量伤害)。例如,你有一个剩余 20 点生命值的铁甲圣骑兵。安全过量伤害设为 10,致死过量伤害设为 50。他中弹受到 50 点伤害,因此过量伤害 = 50 - 20 = 30,他的过量死亡率为 (30 - 10) / (50 - 10) = 50%。若无其他加成,伤害高于 20 + 50 = 70 时则必死无疑。请注意,若伤害过高,即使其他加成也无法挽救,该值可能超过 1.0。
- 等级加成 = 等级 * 0.03,此为原版数值。可通过将
ApplyLevel设为 false 关闭。 - 护甲加成 = 所有护甲部件总和 / 护甲阈值 * 16 * 0.03。
* 16 * 0.03的含义:若单位拥有护甲阈值点护甲,其生存几率相当于原版三级单位。可通过将ApplyArmor设为 false 关闭。 - 医术加成 即为角色医术技能描述中显示的数值。也可通过将
ApplyMedicine设为 false 关闭; - 通过上述三个选项,你可以关闭战场中的任何额外生存加成,完全依靠过量伤害判定死亡,或让过量伤害成为现有死亡率的乘数。
- 切割与穿刺伤害的伤害类型死亡率始终为 1.0,钝击伤害则使用钝击死亡率(默认值为 0.0)。
当过量伤害数据不可用时(例如 SurviveByExcessiveDamage 设为 false,或处于自动战斗中),死亡率使用原版值 1 / (1 + 等级加成 + 医术加成)。若启用了 SurviveByArmorValue,护甲加成将取代等级加成,公式变为 1/(1 + 护甲加成 + 医术加成)。
举例:
- 帝国精锐具装骑兵等级 31,护甲总值 266。
- 巴旦尼亚菲奥纳冠军勇士的护甲:133。
- 阿塞莱马穆鲁克宫殿卫士的护甲:174。
- 抱歉,斯特吉亚狼皮战士(73)。
示例配置:
SurviveByArmor 的配置现在非常灵活。一般来说,如果你想使用额外的伤害机制,有两种方式:将其作为决定性因素,或将其作为倍增器:
- 决定因素:
SurviveByExcessiveDamage = true, UseMedicine/UseArmor/UseLevel = false。这样,由过量伤害计算出的死亡率就是最终结果。你可以将致命伤害设置得稍高一些。 - 倍率:
SurviveByExcessiveDamage = true, UseMedicine/UseLevel = true, UseArmor = false,并将致命伤害设置得较低。例如,由于等级加成,一名 5 级士兵天生拥有 44% 的生存率,即 56% 的死亡率。设置安全伤害=0,致命伤害=20。如果该士兵受到全额致命伤害(20 点),其死亡率为 56%。如果只受到一半致命伤害(10 点),死亡率为 28%。而如果受到两倍致命伤害(40 点),死亡率达到 112%,那么他必死无疑。这使本模组与其他改变护甲或生命值的模组之间的平衡更加容易调整。
编码详情: 和声前缀开启:
DefaultPartyHealingModel.GetSurvivalChanceAgent.HandleBlow
未中断(新)
你全副武装,摆好架势,举起双手战斧,准备发动一次强力挥砍。然后,一枚造成 5 点伤害的石头打断了你的攻击,你随即被一群投石手活活打死。你有没有想过自己当初为什么要穿这样的盔甲?现在,你可以不受轻伤干扰,势不可挡!(警告:你的敌人也同样如此!)
剧透:显示原版:造成至少 5 点伤害的攻击可以中断任何攻击动画。
Modded: 可以调整打断的伤害阈值。请注意,该阈值将对所有人生效。
配置项:
- 伤害打断攻击阈值 穿刺/切割/钝器: 每种类型所需伤害才能打断攻击。
编码细节: 开启 Harmony 后缀
ManagedParameters.Initialize
策略:
ModifyRespawnParty
注意:最新游戏版本将重生队伍比例从 25% 降低至 10%,因此该模组对您而言可能已不再必要。
AI 领主逃离后,将不再有私兵……或者你也可以拥有自己的私兵!
剧透:显示原版:AI 领主以 10% 的队伍士兵上限的士兵从无中生有地复活。
Modded: 可调整 AI 领主和玩家家族成员的复活部队数量(类似于游戏版本 v1.0.0)。或者您可以[在此处获取独立版本]。
配置项:
- AI 领主重生时的队伍规模: AI 领主重生时拥有的士兵数量。
- 玩家重生时的队伍规模: 玩家家族成员创建队伍时初始的士兵数量。
参考编号:
游戏开始时,领主会随机生成部队,平均数量为其部队规模上限的 75%。你最好至少给他们 3 个人,以防止他们成为掠夺者的牺牲品 (4)。
编码详情: 和谐前缀开启:
MobilePartyHelper.SpawnLordPartyInternal
LearnToQuit
玩家可以选择在绝境中牺牲部队并撤退。AI 也应该学习这一点。
剧透:显示原版:无论形势多么黯淡,AI 队伍都会战斗至死,导致他们沦为俘虏并浪费士兵。
模组:使 AI 在防守且处于劣势时学会牺牲与撤退。AI 将评估双方的战力。若启用"全员出击"模式,AI 将使用新的自动作战部队强度模型及战斗状态(如剩余生命值、弓箭手弹药状态)。撤退概率取决于需牺牲的士兵数量及队伍领袖的勇气值。注意:进攻方仍可能追击防守方,若防守方移动缓慢,可能被重新追上。有时防守方可多次经历撤退-被追上-再撤退-再被追上的循环,从敌占区一路退至边界,最终获盟友救援或全军覆没。
配置项:
- 撤退几率: 控制成功撤退几率的倍数。
- 详细信息: 开启/关闭左下角"领主逃离战斗"的提示信息。
参考数字:
在基础版本中,当防御方的实力超过攻击方实力的 110% 时,攻击方可以选择撤退。然而大多数情况下,由于限制和随机性,他们无法撤退。
编码详情: 和谐前缀开启
MapEvent.GetAttackersRunAwayChanceMapEvent.FinishBattle
一些理由:
Taleworlds 引入了高逃脱几率和重生队来减缓滚雪球效应。然而,这有时会让玩家感到头疼,因为玩家在战斗中击败 AI 领主后,释放或俘虏(结果是一样的),却再次遇到他带着 50 人的队伍从不知名的地方冒出来,一天后又重复这一过程,并且有超过 10 名领主控制着一个城镇。
实际上,雪崩效应应当发生。历史上,地球上每个角落都反复上演着这样的场景:输掉一场关键战役,就会输掉整场战争,甚至导致整个帝国的覆灭。失去所有老兵和大多数劳动力,并非一个国家轻易能恢复的,而这样的一场战役应该让这个国家被彻底碾压。一个派系在一系列战斗中陆续损失 3000 名士兵,就应该在游戏中消失。
问题不在于打赢一场战斗,而在于不输掉一场战斗。任何一个称职的国王或将军在派出主力部队之前都会三思而后行。派主力部队的风险太大,除非有绝对的胜算,否则绝不会轻易投入。如果形势不明朗,他们只会试探性地行动,即便遭到伏击,也会尽力撤退保存实力,而不是为每一场战斗拼到最后一滴血。游戏中的 AI 永远学不会这一点,结果总是一次又一次地自投罗网。
我不确定将 AI 撤退机制应用于玩家参与的战役会不会带来太多挫败感,就像《骑马与砍杀 1》中的"设法逃脱"那样——你可能永远无法打一场完整的野战、获得全部战利品。不过至少我认为,在 AI 之间的战役中,AI 应该学会撤退:保存实力后迅速撤离到安全地带(比如防守城堡和城镇时,还记得你多少次带领攻城战面对有领主驻防的城堡吗?)。这应该才是解决滚雪球效应的办法,而不是靠某些"热补丁"凭空变出更多士兵(结果一天内又全部损失掉)。
强盗整合器(新版:试验性功能)
匪徒们三五成群地四散奔逃……一个个抓起来实在太烦人,而且数量太多了。现在你只需要对付一队劫匪(16 人),而不是四组劫匪(每组 4 人)。
剧透:展示原版内容:土匪以小股形式生成并遍布地图各处。
Modded: 将附近同类型的土匪群体合并为一个更大的群体。减少土匪队伍的总体数量。
配置项:
- 合并半径: 两个强盗团体合并所需距离。
- 最大非掠夺者合并数: 允许合并的同一团体中非掠夺者强盗的最大数量。
- 最大掠夺者合并数: 允许合并的同一团体中掠夺者的最大数量。
- 最大掠夺者队伍: 掠夺者队伍的最大总数。v1.4.5 之前的默认值为 300,建议设置为较低数值(如 100)以防止只生成掠夺者。v1.4.5 中默认值已调整为 100。
编码详情: 新的自定义行为以及新的自定义 BanditDensityModel。
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。