coopani-world-pz 0.4.7 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -104,4 +104,5 @@ Lua 桥接 mod ──每 2 秒覆盖写──▶ Zomboid/Lua/coopani-pz-state.
104
104
  - **`CharacterStat` 的新枚举一律走 `once()`。** `pcall` 接得住异常,接不住日志:Kahlua 每抛一次就打一整段堆栈,而 readPlayer 是每拍都跑的。缺的键只试一次,之后安静返回 nil。
105
105
  - **容器身份不能把物品数量算进去。** 他拿走一件,`sig` 一变,外面就当成「换了个柜子」再报一遍——所以 `sig` 只用容器类型 + 所在格。
106
106
  - **`getPlayerLoot()` 那个页面一直存在,没开容器时只是不可见。** 只判 `inventory ~= nil` 会在他走路时一直读到上次那个柜子,必须查 `isVisible()`。
107
+ - **⚠️ Java 类的静态字段访问也是一次「调用」,而且它发生在 pcall 之外。** 0.4.7 就这么翻的车:`statOnce(st, CS and CS.PANIC, 'panic')` 里的 `CS.PANIC` 是**参数求值**的一部分,那时函数体还没进,里面的 pcall 根本不存在。别人的机器上那个构建没有 `PANIC`,Kahlua 当场抛 `Object tried to call nil in readPlayer`,异常直接穿出 `readPlayer` → `flush`,**整份 state 一个字节都写不出来**,外面看到的是「桥接 mod 报错了」。现在所有 `CharacterStat` 枚举都在 `ensureEnums()` 里逐个 `pcall` 取一次、缓存进 `ENUM` 表,`readPlayer` 不再碰 Java 静态字段。本地没复现,是因为 42.21 恰好这批枚举齐全 —— **本机能跑不能证明别人能跑**。
107
108
  - **`pz.need` / `pz.weapon` / `pz.loot` 的 key 必须带时刻。** 这两类同一档位可以再来一次,而 `pz.danger` 那种「一天一档只报一次」的 key 天然唯一;照抄它的写法,第二次会被宿主当成重复静默丢掉。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coopani-world-pz",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "type": "module",
5
5
  "description": "陪玩僵毁(需 Coopani 0.2.17+):她读游戏自己写出来的状态,不是屏幕。天要黑了催你回屋、被围了让你跑、被咬一口先骂你再问伤口、找到大锤跟着高兴、死了会记住这局。只看不动手,也不剧透。",
6
6
  "author": {