星露谷1.6的作战假人

星露谷1.6的作战假人

在星露谷物语中放置战斗练习假人,用于测试武器伤害、击退效果、最大命中伤害以及滚动DPS。此版本支持中文显示,移除了动态游戏资产(DGA)依赖,并采用星露谷物语1.6版原生大件可制作物品内容系统。

简介

在星露谷中放置战斗假人,测试武器伤害、击退效果、最高单次伤害和滚动DPS。支持中文显示,不依赖Dynamic Game Assets(DGA),并针对Stardew Valley 1.6重写为原生大工艺品内容。

功能

  • 练习假人:显示累计伤害和滚动DPS。
  • 击退假人:显示击退效果、累计伤害和滚动DPS。
  • 最高伤害假人:显示最高单次伤害。
  • 零防御测试:假人内部使用的临时木乃伊防御固定为0,伤害不会被原版木乃伊数据减免。
  • 伤害数字对齐:数字从出现到消失保持清晰易读,不会因中文字体的单字偏移而上下错位。
  • 原生伤害跳字修复:可选覆写原生数字绘制,让三位数及更多位数在整个跳动过程中保持同一基线。
  • 原生命中反馈:只有造成正伤害的命中才播放木乃伊的原生受击声音和特效;未命中不会播放这些反馈。
  • 可配置DPS:可设置滚动时间窗口,并可限制单次命中计入DPS的最高伤害。
  • 原生1.6内容:不需要DGA,假人使用Stardew Valley 1.6原生大工艺品注册方式。
  • 室内外放置:可在室内和室外放置,爆炸不会摧毁假人,可使用工具拾取。

购买方式

在冒险家公会向马龙购买:

  • 每种假人价格:500金币
  • 每种假人库存:5个

DPS计算说明

DPS使用配置时间窗口内的伤害总和计算,每秒更新一次。

DpsDamageCap 只影响DPS统计,不会改变伤害数字或最高伤害显示:

  • 0:不限制单次伤害,完整计入DPS。
  • 200:单次命中造成1000伤害时,DPS只计入200。
  • 伤害数字仍显示实际的1000。

这样可以排除武器伤害超过假人实际测试目标时产生的溢出伤害。

配置

配置文件位于 Mods/CombatDummy/config.json

{
  "EnableDiagnostics": false,
  "ShowDamageDisplay": true,
  "ShowDpsDisplay": true,
  "OverrideNativeDamageNumbers": true,
  "DamageDisplayDuration": 10000,
  "DpsWindowSeconds": 10,
  "DpsDamageCap": 0
}

配置项说明:

  • EnableDiagnostics:启用诊断日志,普通玩家建议保持false
  • ShowDamageDisplay:显示或隐藏伤害数字,默认true
  • ShowDpsDisplay:显示或隐藏DPS,默认true
  • OverrideNativeDamageNumbers:是否覆写原生伤害数字绘制并对齐所有数字,默认true;关闭后恢复原版绘制。
  • DamageDisplayDuration:伤害数字显示时间,单位为毫秒,默认10000,有效范围0-60000
  • DpsWindowSeconds:DPS滚动时间窗口,默认10秒,有效范围1-60秒。
  • DpsDamageCap:单次命中计入DPS的最大伤害,默认0表示不限,有效范围0-2000。该设置不影响伤害数字和最高伤害。

安装

  1. 安装SMAPI
  2. 下载并解压本Mod。
  3. CombatDummy文件夹放入游戏的Mods文件夹。
  4. 通过SMAPI启动游戏。

本Mod不需要安装DGA或其他外部Mod。

卸载安全

卸载前请按以下顺序操作:

  1. 移除所有已经放置的战斗假人。
  2. 保存游戏并退出到标题界面或完全退出游戏。
  3. 确认没有假人留在农场、建筑、矿井或其他地点后,再删除Mod文件夹。

本Mod会为每个假人创建一个临时的内部木乃伊实体。Mod运行时可以清理这些实体,并可以在加载存档时迁移旧DGA物品;如果先删除DLL,清理和迁移代码就无法运行。删除Mod前不移除假人可能导致错误物品或残留临时实体风险。

兼容性

  • Stardew Valley 1.6或更高版本。
  • SMAPI 4.0.0或更高版本。
  • 不需要Dynamic Game Assets(DGA)。
  • 旧版DGA假人ID提供一次性迁移路径;迁移前请备份存档。
  • DPS只在假人所在屏幕显示,不支持跨屏幕统计显示。

常见问题

问:为什么我看到了实际伤害,但DPS小于这个数字? 答:如果设置了DpsDamageCap,超过上限的部分不会计入DPS;伤害数字仍然显示实际值。

问:未命中时为什么没有木乃伊声音和特效? 答:这是设计行为。只有原版受击结果大于0的命中才播放声音和特效。

问:击退假人为什么也显示DPS? 答:2.0.2起击退假人复用滚动DPS统计和头顶显示,用于同时观察武器伤害和击退效果。

问:可以直接删除DLL吗? 答:不建议。请先移除假人并保存,再卸载Mod。但是直接卸载不会破坏游戏或存档,仅仅可能导致可以手动消除的错误残留。

更新日志

2.0.5

  • 修复击退假人移动后的绘制层级,玩家站在假人前方时不再被假人错误遮挡。
  • 修复击退假人受击气体特效停留在旧位置的问题,让全部延迟气体实例跟随假人移动。
  • 将GMCM的DpsDamageCap滑条和运行时值限制为0-2000

2.0.4

  • 增加Generic Mod Config Menu设置菜单支持。
  • 修复原生伤害数字跳动时中间数字上下错位的问题,并提供OverrideNativeDamageNumbers开关。
  • 恢复上一版清晰的假人伤害/DPS显示样式,DPS增加黑色描边。
  • 修复击退假人受击特效使用固定旧坐标的问题。

2.0.3

  • 将临时木乃伊的防御(resilience)明确固定为0
  • 更新发布说明和兼容性文案。

2.0.2

  • 修复伤害数字动画期间的数字基线错位。
  • 为击退假人增加滚动DPS。
  • 增加DpsDamageCap,可排除DPS统计中的溢出伤害。

2.0.1

  • 更新至Stardew Valley 1.6原生内容系统。
  • 移除DGA依赖。
  • 增加滚动DPS、旧DGA物品迁移和卸载安全提示。
  • 减少动画、计时器、击退和DPS状态的高频写入。

来源与许可

本Mod基于PeacefulEnd(Floogen)的Combat Dummy项目修改,原项目使用GPL-3.0许可。本版本由neoiw修改、维护和发布,并保留原项目来源说明。源码随发布内容提供,修改和再分发遵循GPL-3.0条款。

原项目:https://github.com/Floogen/CombatDummy

额外致谢

  • AI辅助开发与检查:DeepSeek & Sol & Opus