
战斗呐喊 - 用于AI影响力
这是模组AI Influence的子模块。它允许你在战斗中喊话,士兵会动态回应,听力范围内的重要NPC会通过AI Influence记住这些话。
查看大图为战场呐喊注入活力
AI Influence: Battle Shout 允许你在战斗中输入自定义呐喊,并让附近的士兵做出动态反应。你的呐喊也可以被记录到附近英雄的 AI Influence 上下文中,以便他们之后引用所发生的事情。
这主要是 [b]AI Influence[/b] 的一个附加组件
功能
• 自定义战斗呐喊(由你输入)
- 在战斗中,按 / 打开一个简短文本输入框,呐喊任何你想说的话。
- 快捷键可在 MCM 中配置。
- 该模组也可以通过 MCM 在 竞技场 / 锦标赛 中启用。
• 多种 AI 后端(通过 AI Influence)
- Battle Shout 可以使用与 AI Influence 相同的 AI 后端和配置。
- 支持的后端包括:Player2、OpenRouter、Ollama、KoboldCpp、DeepSeek(取决于你的 AI Influence 设置)。
- 如果某个后端表现异常,请报告(这仍然很新)。
• 动态战斗命令
- 此选项默认关闭。请在 MCM 中查看。
- 启用后,以 ! 开头的呐喊会被解释为命令,并由 AI 后端分析以触发游戏内指令。
- 编队目标选择可在 MCM 中启用(否则命令会应用于所有部队)。
- 支持的命令:
- 移动:冲锋、前进、后退、撤退、停止、跟随。
- 阵型:线列、盾墙、散开、纵队、方阵、圆阵、散兵、斜线。
- 射击:自由射击、停止射击。
- 编队确认:当命令以某个编队为目标时,该编队的士兵可以用简短确认来回应。
• 附近部队的动态反应
- 可配置听觉半径内的友军和敌军会用由你选择的 AI 后端生成的简短喊话回应。
- 回应应以你的游戏语言生成。
- 会考虑攻城上下文(进攻/防守指导)。
- 提示词可选包含 AI Influence world.txt(更多上下文,也更多 token)。
• 通过 Player2 支持语音转文本(STT)
- 按键说话(默认键:逗号 - 可通过 MCM 配置)。
- Player2 会分析你的语音,并打开呐喊窗口供你确认它是否正确转写了你的句子。
- 使用 Shift+STT 键通过 STT 向你的部队下达命令
- MCM 选项可关闭确认窗口。这会保持战斗节奏,但可能导致转写错误
- 请确保已激活 Player2 配置和语音识别!
• 更智能的上下文,让喊话更可信
- AI 可以接收额外的情境上下文,例如:
- 最近的伤口 / 压力(敌人距离)
- 士兵当前阵型
- 士兵文化
- 轻量个性特征(等级/角色/isHero 等)
• AI Influence 上下文集成
- 听觉范围内的领主 / 英雄可以将你的呐喊作为事件记录到他们的 AI Influence JSON 中。
- 会包含额外战斗上下文以提高一致性。
• 环境战场闲聊
- 士兵会在战斗中定期评论(间隔 + 发言者数量可配置)。
- 台词会受到当前局势影响(存活人数、伤亡、势头)。
- 环境喊话会略微错开(不是全部同时触发)。
- Token 歼灭者部分:可选将最多 250 名士兵加入呐喊回应和环境喊话(大规模战斗,大规模混乱)。
• NPC 呐喊
- 可选系统,允许已初始化的 NPC 英雄在战斗中偶尔呐喊。
- 可配置概率 / 频率 + 每次触发的最多呐喊者数量。
- NPC 呐喊可以触发附近部队反应(与玩家呐喊相同的流程)。
• 英雄调侃
- 附近的两名英雄会不时进行一段简短的、由 AI 生成的来回对话(2 行)。
- 你可以通过按 "."(默认键)与附近的盟友 NPC 英雄发起调侃,或按 Shift+"." 与敌方领主发起调侃 - 使用 Ctrl+"." 在附近领主之间循环。
- 根据语气,调侃可能会略微改善或恶化你与目标 NPC 的关系。
• 盾牌嘲讽(软依赖)
- 可选的盾击风格士兵嘲讽动画(需要安装 VSShieldTaunt 模组)。
- 如果缺少该依赖,Battle Shout 会回退到普通嘲讽。
• 决斗(Lord of Duels 软依赖)
- 可选的 Lord of Duels 模组集成。
- 允许你用一句台词开始决斗,对手会回应。你的对手也应该会在决斗期间回应你的呐喊。
- 观看决斗的士兵会评论并支持他们的斗士(替换环境喊话)。他们可以对决斗者受到的攻击做出反应。
新功能 1.1.1:公共 API
附加式、反射友好的扩展点:任何模组都可以向 BattleShout 的叙事提示词贡献额外上下文,而无需在编译时引用此程序集。
如何使用(从另一个模组):
- 编写一个具有以下精确签名的公共静态方法:
public static string YourMethodName(Mission mission, Team referenceTeam)
返回要注入的文本,或在某次调用中返回 null/空以不贡献任何内容。 referenceTeam 遵循此代码库的现有约定:Agent.Main 的队伍, 即 "ally"/"enemy" 始终从玩家视角表述。
- 在所有模组加载完成后一次(例如你自己的 OnBeforeInitialModuleScreenSetAsRoot), 通过反射找到此类型并调用 Register:
var asm = AppDomain.CurrentDomain.GetAssemblies()
.FirstOrDefault(a => a.GetName().Name == "AIInfBattleShout");
var extType = asm?.GetType("AIInfBattleShout.BattleShoutPromptExtensions");
var registerMethod = extType?.GetMethod("Register", BindingFlags.Public | BindingFlags.Static);
var myProvider = typeof(YourClass).GetMethod("YourMethodName", BindingFlags.Public | BindingFlags.Static);
registerMethod?.Invoke(null, new object[] { myProvider });
每个已注册的提供程序都会在 BattleShout 构建每个叙事提示词时被调用 (指挥官呐喊、士兵反应、环境喊话、英雄调侃、决斗对话)。 结果按注册顺序拼接 - 纯附加,不会覆盖任何其他内容。抛出异常或超时的提供程序会按调用被捕获并跳过; 它永远不会破坏其他任何人的提示词生成。
要求
必需:
Harmony ButterLib UIExtenderEx MCM AI Influence
LLM 后端(动态生成所需 - 只需要其中 1 个,不需要多个): Player2 App(推荐) OpenRouter Deepseek Ollama KoboldCpp
重要:模组的 MCM 中没有 AI 后端设置,因为它会复制 AI Influence 使用的设置。
配置(MCM)
呐喊快捷键 听觉半径 弹窗字体大小与持续时间 启用/禁用锦标赛期间使用 对你呐喊的友军/敌军回应数量 环境闲聊:间隔 + 友军/敌军发言者数量 可选:在提示词中包含 AI Influence world.txt NPC 呐喊:启用开关 + 概率/频率 + 最多 NPC 呐喊者 + 错开延迟 NPC 短期记忆 额外战斗上下文 士兵嘲讽与盾击 英雄调侃 动态命令详情 Token 歼灭者部分(危险区域)(最多 250 名士兵回应)
注意事项
此模组仍处于 alpha 阶段:请报告问题和异常行为(日志非常有帮助)。
关于 token 使用: 此模组使用小型提示词,因此确实会消耗 token,数量很少但非零。如果你想限制 token 使用,可以在 MCM 中更改:
- 禁用 world.txt(大幅降低提示词大小)
- 禁用 STT(仅适用于 Player2)
- 禁用环境战场闲聊(不会定期请求 Player2)
- 禁用 NPC 调侃
- 禁用 NPC 呐喊(领主和英雄不会在战斗中呐喊,移除罕见但较重的 Player2 请求)
- 减少或将士兵对呐喊的回应数量设为 0
自己呐喊并将呐喊记录到 NPC JSON 中不会使用 token,因为它不会调用 Player2。 但所有其他动态功能都依赖动态 LLM 生成,因此会使用 token。
兼容性 / 支持
为 Bannerlord v1.3.13 编译 已使用 AI Influence 3.3.9 测试
AI Influence Discord
支持 / Player2 推荐
如果你喜欢这个模组,请点赞它! 如果你想支持我,可以使用我的代码订阅你的 Player2 Patron:PATRONMO1GBH 你将在第一个月获得 5% 折扣,我会收到 500J,这有助于我测试模组!
更新日志
- v0.1.0:初始发布
- v0.1.1
- 添加攻城方指导(进攻/防守),以减少“错误目标”呐喊
- 将友军/敌军文化注入提示词,以避免使用 world.txt 时产生混淆
- v0.1.2
- 将玩家性别加入提示词(避免对女性玩家说“Sir”)
- 为士兵气泡添加颜色(红色敌人 / 绿色友军)
- v0.1.3
- 在触发的环境呐喊之间添加轻微延迟
- 在 NPC JSON 中记录更多上下文
- 添加 NPC 呐喊(基础框架,将在后续更新中完善)
- v0.1.4/v0.1.5
- 热修复:模组现在专门针对战斗任务,因此不应再在城镇、村庄、城堡等触发
- v0.1.6
- 向 AI 传递更多用于动态生成的上下文(地点、天气、海战/陆战)
- 可调整弹窗字体缩放(MCM)
- 当呐喊窗口打开时阻止大多数游戏输入
- 为回应的士兵添加嘲讽
- v0.2.0
- 基础命令系统(默认关闭,可在 MCM 中切换):
- 激活后,任何以 '!' 开头的呐喊都会被解释为命令并发送给 Player2 分析。
- Player2 会分析你的呐喊,并尝试将其归类为支持的命令之一。
- 然后该命令会在游戏中应用。
- 限制:目前命令会应用于所有单位,而不是特定编队。目前支持的命令列表:冲锋、前进、后退、撤退、停止。
- 可调整弹窗字体缩放(MCM)
- 更好地集成 NPC 呐喊机制:被选中呐喊的 NPC 现在会收到听觉范围内所有其他拥有 AI Influence JSON 文件的 NPC 列表,以及他们对这些 NPC 的关系。NPC 动态呐喊现在也会记录到听觉范围内所有其他拥有 AI Influence JSON 的 NPC 中。
- 添加基础本地化支持 + 英语和法语本地化
- 基础命令系统(默认关闭,可在 MCM 中切换):
- v0.2.1
- 模组现在会检测游戏语言,Player2 会生成相同语言的呐喊。
- 在动态命令中添加编队选择(MCM)
- 调整 NPCShout 提示词
- 调整本地化支持
- v0.2.2
- 向动态呐喊命令添加移动、阵型和射击指令
- 为所有 UI 添加本地化支持
- v0.3.0
- 添加 AI Influence 使用的所有 AI 后端。可能会有问题,如果遇到困难请报告
- 添加盾牌嘲讽(VSShieldTaunt 软依赖)
- 添加命令下达时的编队确认
- 添加英雄调侃:2 名英雄会偶尔进行简短交流
- 向 AI 添加更多上下文(最近伤口、敌人距离、士兵当前阵型、士兵文化、基于等级/阵型/isHero 等的士兵轻量个性)
- 添加 MCM 选项以在竞技场中激活 Battle Shout 的功能
- 添加新的 MCM 部分“Token 歼灭者部分”,你可以在其中将最多 250 名士兵加入呐喊回应和环境喊话
- 修正本地化(再次)
- 清理(略微)代码
- v0.3.1
- 添加 custom_lore.txt - 旨在替代 AI Influence world.txt,且不带规则。士兵和指挥官应知道的纯设定。
- 添加 battle_rules.txt - 你可以添加的自定义规则,并且会覆盖任何先前规则。大胆一点,自定义你的战斗氛围。
- v0.3.2
- 添加对 Lord of Duels 的支持
- 使用 Bannerlord 1.3.14 编译
- v0.3.3
- 添加 Steam Workshop 文件搜索支持
- 修复上下文中的雾值(天气晴朗时士兵不应再谈论雾气)
- v0.3.4
- 调整并修复 LLM 后端连接以减少错误
- (略微)重组代码
- v0.3.5
- 修复上次更新导致的 Player2 不稳定(我真笨)
- v0.3.6
- 添加玩家发起的调侃:选择一名英雄并向其发送一句调侃,他们会回答(默认键 = '.')
- 修复对呐喊回应中的解析错误
- 为 AI 添加更严格的规则,要求使用游戏语言说话
- 将调侃添加到相关 NPC JSON
- 为调侃添加轻微关系奖励或惩罚
- v0.4.0
- 通过 Player2 添加 STT 支持
- 按键说话(默认键:逗号)通过 Player2 的 STT 用麦克风呐喊!
- Shift + 键(默认逗号):通过语音输入向你的部队下达命令!
- v0.4.1
- 添加 MCM 选项以绕过 STT 文本确认窗口。这允许不打断战斗节奏,但可能导致 STT 转写错误。
- v1.0.0
- 微调士兵提示词,以减少关于他们属于哪一方的混淆
- 微调 Player2 设置
- 为 Bannerlord 1.3.15 编译,并针对 AI Influence 4.0.0 测试
- 各种错误修复
- v1.0.1
- 增强传递给 AI 的调侃和决斗上下文(通过 Lords of Duel),以避免重复、泛泛的台词,以及不适合说话者个性的台词
- 针对 AI Influence 4.0.1 测试
- v1.0.2
- 修正雾值(再次……)
- 提示词调整
- 通过增援加入的中立阵营不应再被视为敌人
- 优化攻城提示词中关于士兵阵营的部分
- 调查 Gemini 响应截断 - 实现更高的默认 token 限制和用于设置 token 限制的 MCM 选项
- 为士兵提供关于其自身文化及其军队文化的更好上下文
- 针对 AI Influence 4.0.2 测试
- v1.0.3
- 修复严重问题:Hero.get_MainHero 在特定条件下可能返回 null,从而导致游戏崩溃
- v1.0.4
- 添加保护措施以防止自定义战斗中的崩溃
- 添加日志条目,以尝试找出某些模型上答案被截断的原因(另外,在使用 Battle Shouts 或 AI Influence 时,请务必停用 Player2 的思考模式)
- v1.0.5
- 将最大 tokens 最大值从 500 改为 2,000
- 添加最大 tokens 倍数
- 实际 tokens 限制 = 基础最大 tokens * 倍数(最高 40,000 最大 tokens)
- v1.0.6
- 更新至 1.4.6
- v1.0.7
- 更新后端检测方法,以匹配 AI Influence 最新版本中的更改
- v1.1.0
- 修正设置中的字体大小调整
- 更新 AI Influence 桥接:所有后端都应像以前一样工作
- 在相关时将 AI Influence 的疾病信息添加到士兵
- 清理一些混乱和死代码
- v1.1.1
- 添加新的公共 API,供其他模组向战斗呐喊的提示词系统注入文本
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。