silksong-coop-mod 0.4.36 → 0.4.38

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/INSTALL.txt CHANGED
@@ -88,8 +88,9 @@ exe 旁边放一个 dll,让游戏启动时连带加载它。这是所有同类
88
88
  两个人都按一下 L 就配对好了。
89
89
  不想配对就别理它,它会自己消失。
90
90
 
91
- 【用手柄的话按下左摇杆(L3)】,和 L 是同一件事。
92
- 屏幕上那行字会自己判断你在用键盘还是手柄,显示你真正该按的那个。
91
+ 【用手柄的话把左摇杆按进去(L3)】,和 L 是同一件事。
92
+ 是像按按钮一样把摇杆往手柄里按,会「咔哒」一声;往下推是方向,不算。
93
+ 插着手柄时,屏幕上那行字会把键盘键和手柄键都写出来。
93
94
 
94
95
  (配对键原来是 J,这一版改成了 L。因为 J 是游戏自己
95
96
  「打开背包并翻到笔记页」的默认键,按一下会同时干两件事。
@@ -185,7 +186,8 @@ exe 旁边放一个 dll,让游戏启动时连带加载它。这是所有同类
185
186
  是它在你的用法下从来没存过。现在填一次就记住,下次自动带出来。
186
187
 
187
188
  * 【进游戏之后不用再碰键盘了】
188
- 配对(L)和放弃等待(K)这两个动作,手柄都可以【按下左摇杆】来完成。
189
+ 配对(L)和放弃等待(K)这两个动作,手柄都可以【把左摇杆按进去】来完成
190
+ (L3:摇杆当按钮往里按,不是往下推)。
189
191
  选左摇杆是因为它是游戏唯一没占用的按钮 —— 扳机、肩键、四个面键、
190
192
  右摇杆按下、旁边那两个键,游戏全都用掉了。
191
193
  这两个动作不会同时出现(没配对时才问你要不要配对,配对了才谈得上放弃),
@@ -194,21 +196,139 @@ exe 旁边放一个 dll,让游戏启动时连带加载它。这是所有同类
194
196
 
195
197
  ※ 联机大厅(连接、房间列表、等待室)目前仍然要用鼠标键盘,这是你定的。
196
198
 
197
- * 【手柄在选存档界面按不进去,这一版尝试修了】
198
- 原因是模组会自己建一套界面输入系统,而负责「在菜单里把它关掉」的代码
199
- 是挂在场景切换上的 —— 但模组本身就是在主菜单里启动的,此后到进游戏
200
- 之前根本不会再切场景,所以它整个菜单流程都开着。现在它一建出来
201
- 就先判断一次当前场景。
202
-
203
- 顺便解释那个最奇怪的地方:为什么手柄能上下切换存档却按不进去,
204
- 键盘却可以。游戏判定「确认」时分成两支——
205
- 键盘那支除了确认键还认【跳跃键】,手柄那支【只认确认键】,没有替补。
206
- 所以确认信号一旦出不来,键盘还有后路,手柄直接没辙。
207
-
208
- ※ 这一条【没有实机验证过】。如果还是按不进去,
209
- 把游戏目录下 BepInEx\LogOutput.log 发我:这一版特意在进选存档界面时
210
- 写了一行「Save selection is driven by ...」,那行字会直接说明
211
- 是谁在管这个界面,不用再猜。
199
+ * 【手柄在选存档界面按不进去:真正的原因找到了】
200
+ 这里一共有两道闸,前几版只拆了第一道。
201
+
202
+ 第一道:模组自己建了一套界面输入系统,在菜单里抢着管事。
203
+ 它能认键盘的确认,不认手柄的,所以当时是「只有键盘能进存档」。
204
+ 这一道之前已经关掉了,菜单交回给游戏自己的输入。
205
+
206
+ 第二道:模组打开选存档界面时,先调用了游戏的「隐藏当前菜单」。
207
+ 这个功能只认主菜单下面的子菜单(设置、音频这些),
208
+ 碰到主菜单时会先挂上「菜单正在切换」的牌子,然后直接退出,再也不摘。
209
+ 游戏的菜单挂着这块牌子时,会丢掉所有「确认」和「返回」,
210
+ 唯独「左右移动」不查它 —— 所以手柄能左右切换存档,却怎么都按不进去。
211
+ 游戏自己打开选存档界面时,在主菜单本来就不会调用它;现在模组也不调了。
212
+ 从联机菜单按 Esc 回主菜单也会挂上同一块牌子,一起去掉了。
213
+
214
+ 顺带:在这个界面按 B(或 Esc)现在会回到联机菜单,
215
+ 和左下角的「返回」一样,不会掉回游戏主菜单把联机流程卡住。
216
+
217
+ ※ 这一条【没有实机验证过】。
218
+
219
+ * 【修掉了「血还没空,却一直反复播死亡动画」】
220
+ 那不是死亡动画,是被抓住时的受伤姿势,所以血没到 0 也会出现。
221
+ 只发生在【不是房间主机】的那个人身上,和网络卡不卡没有关系。
222
+
223
+ 有的 Boss 反击时会打开一个「抓人判定框」,只开那一招那么长,
224
+ 这一招结束时游戏会自动把它关上。
225
+ 模组只把「打开」传给了另一边,「自动关上」从来没传过,
226
+ 所以在房间客机那边,这个框在第一次反击之后就再也不关了。
227
+ 碰到它就被抓:扣 1 血,定住摆受伤姿势最多 4 秒,
228
+ 放开后的下一帧又被抓住,一直循环到血真的扣光。
229
+ 现在那一招结束时,这边也会把框关上。
230
+ 凡是「只在某一招里打开」的判定框都是同一个问题,一起修了。
231
+
232
+ 在房间客机那边,要是正好在那一招里被抓到:扣 1 血,
233
+ 这一招一结束就放开(最多 0.65 秒,再加一点网络延迟),
234
+ 和游戏里 Boss 抓人途中被打出硬直时放人的方式一样。
235
+ 没有最后那一刀,因为那一刀只有房间主机那边的 Boss 放得出来。
236
+
237
+ * 【修掉了「怪物在它出生的地方一闪一闪」】
238
+ 用身体撞人的怪(比如沿着台阶一圈爬的那种),只要它的伤害数值一变,
239
+ 模组就会把你这边「睡着的那一只原版怪」叫醒一下,
240
+ 于是它在出生点露脸一帧又消失。现在不会去叫醒它了。
241
+
242
+ * 【两个人都被打倒时,Boss 会做胜利动作了】
243
+ 本来的设计是:一个人倒下时先不告诉 Boss(免得它对着还在打的人庆祝),
244
+ 两个人都倒下才告诉它。但第二个人倒下时这条消息也被压住了,
245
+ 所以 Boss 从来没做过胜利动作。现在第二个人倒下时会告诉它;
246
+ 先倒下的是房间主机时,等另一个人也倒下,房间主机这边会补上这条消息。
247
+
248
+ * 【修掉了「交接房间主机时,怪消失、隐身、或者跳回原处」】
249
+ 一个人离开房间、房间交给留下的人时,留下的人会把房间里的怪接过来自己跑。
250
+ 接的时候,模组会把每只怪「第一步」里的动作补做一遍,本意是补上
251
+ 这只怪在你这边从来没做过的准备工作(比如找到自己身上的零件)。
252
+ 可是很多怪的第一步里还有「先藏起来」:出场前关掉自己的画面和碰撞、
253
+ 定在原地不动,有的还会挪到房间外面、或者挪回它的起点等着。
254
+ 交接时把这一步重做一遍,正在打架的怪就又被藏了起来,
255
+ 而且「看不见」这个状态还会同步给对方,结果两个人都看不见它,它却照样在打人。
256
+ 那只看不见、却一直朝你扔东西的会飞的怪就是这么来的;
257
+ 交接之后会飞的怪突然不见、像回到了出生点,主要也是这个原因。
258
+ 游戏里有 29 种怪会这样藏自己,其中包括好几个 Boss。
259
+ 第一步里别的动作也会闹出小一号的同类问题:有的怪交接后被扭成朝同一个方向,
260
+ 有的变得打不到。
261
+
262
+ 现在交接时只补准备工作。怪站在哪、多大、朝哪边、看不看得见、能不能打到,
263
+ 都按对方那边当时的样子接过来,第一步不会再把它们改掉。
264
+ 只有当时那只怪本来就还藏着没出来,才会把「藏起来」这一步照做。
265
+
266
+ (上一版修的「怪被重新启用时从头来过」也是真的问题,那个修复还留着。
267
+ 但我当时说那就是怪消失的原因,说错了,主要原因是上面这个。)
268
+
269
+ * 【修掉了「怪身上的一部分东西,房间客机看不到」】
270
+ 最早发现的是沿台阶爬的那种怪:它出招时先挑「用哪一个喷射」,
271
+ 把结果记在一个变量里,再把那个喷射打开。挑的那一步只在房间主机那边跑,
272
+ 所以房间客机这边这个变量一直是空的,「打开喷射」找不到对象:
273
+ 你当主机时看得到,不当主机时就看不到。
274
+ 这不是个例。「先把要用的零件记进变量、再对它做事」这种写法,
275
+ 游戏里有 3792 处,分布在 106 种怪上:喷射、粒子、声音、
276
+ 发给自己零件的信号、零件的判定框开关、把一个零件挂到另一个零件下面……
277
+ 以前这些在房间客机那边全都落空了。挂零件那种还更糟:
278
+ 变量是空的,零件就被直接甩到了房间里,不再跟着怪走。
279
+ 现在房间主机每做一次这类动作,都会告诉对方用的是怪身上的哪个零件。
280
+
281
+ * 【「只在一招里出现的东西」在房间客机那边会一直留着:一起修了】
282
+ 上面那个抓人判定框只是其中一种。怪出招时打开、这一招一结束游戏就自动关掉的东西,
283
+ 游戏里一共有六千五百多处:零件、判定框、特效、粒子,还有跟着这一招走的位移。
284
+ 以前房间客机那边只收到过「打开」,从没收到过「关上」,
285
+ 所以这些东西第一次出现之后就一直留在那里:特效不消失,碰到就挨打的判定框也不收。
286
+ 现在这一招结束时,这边也会一起关掉。
287
+
288
+ * 【修掉了「怪抓住房间主机,房间客机也跟着中招」】
289
+ 有些怪的动作是直接作用在「玩家」身上的:抓住、定住、藏起来、转身、甩出去、
290
+ 摆受伤姿势、打断玩家正在做的事(回血、冲刺、技能)等等。
291
+ 这些动作在对方那边说的是【对方的】角色,传到你这边重放时,
292
+ 「玩家」指的却变成了【你自己】,所以不管你站在哪,都会跟着中招。
293
+ 比如 Boss 抓住房间主机时,房间客机也会在原地摆出受伤姿势;
294
+ 抓人结束时那一下「打断一切」,会把房间客机正在回的血、正在放的技能一起打断。
295
+ 游戏里这类动作大约有一千处,分布在四十种左右的怪上。
296
+ 现在这些动作在你这边一律不对你的角色做。能碰到你的,只有你这边的怪本身。
297
+ 副作用:Boss 出场时让玩家摆的那些动作,房间客机这边也不会再跟着摆了。
298
+
299
+ * 【只有两个人都倒下,世界才会「过一段时间」】
300
+ 单机里每死一次(或者退出游戏),游戏都会让时间往前走一截:
301
+ 有的角色换了地方、有的这次不在、只维持几个房间的状态结束。
302
+ 联机里现在是这样:
303
+ - 被队友救起来:不算(本来就不算)。
304
+ - 两个人都倒下:算,和以前一样。
305
+ - 一个人倒下、没人救(自己放弃或者等到超时)回长椅:以前算,现在不算了,
306
+ 因为另一个人还站着。
307
+ 退出游戏照常算。
308
+
309
+ 顺带修了一个问题:两个人几乎同时倒下时(都还没收到对方倒下的消息),
310
+ 以前两边都会躺着等对方来救,要干等 45 秒才回长椅;
311
+ 现在一收到对方也倒下了,两个人就直接一起回长椅。
312
+
313
+ * 【暗房间里「开灯」两边一起变】
314
+ 有些房间很暗,只看得到自己身边一小圈。
315
+ - 有两场 Boss 战,是 Boss 自己在开打时(或者打到一半)调亮度。
316
+ 以前只有房主(先进房间的人)那边会变,另一个人整场都在暗处打;
317
+ 现在两边一起变。
318
+ - 有一场遭遇战要「调查」某个东西才开打,开打时会顺带开灯。
319
+ 以前只有调查的人那边亮,现在战斗在搭档那边开始时,搭档那边也一起亮。
320
+
321
+ * 【赛跑:两个人一起跑,一个人赢了就算两个人都赢】
322
+ 开始比赛现在和接愿望一样:两个人都要各自去跟对手说话、都选「是」才会开始。
323
+ 先选的人会停在选项上等对方,最多 20 秒;选「否」就可以收回。
324
+ 开跑前,先到起跑线的人会在黑屏里等另一个人到,然后两边一起倒数
325
+ (最多等一分钟,等不到就自己先跑)。
326
+ 跑的时候各跑各的赛道。只要有一个人赢了对手,两个人都算赢,各拿各的奖励。
327
+ 先输了(或者犯规)的人不会马上被判输:你还能动,但要等队友跑完——
328
+ 队友赢了,你这边直接算赢;队友也输了,两个人一起算输,然后一起问要不要再来。
329
+ 中途用 needolin 放弃比赛,算你自己退出:之后队友赢了,也不算你赢。
330
+
331
+ ※ 以上十条【没有实机验证过】。
212
332
 
213
333
  * 聊天框默认按 Y 打开,打 /help 可以看到所有指令。
214
334
 
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # silksong-coop-mod 0.4.36
1
+ # silksong-coop-mod 0.4.38
2
2
 
3
3
  The files a player needs to install a two-player co-op build of **SSMP**, packaged so they can be fetched from
4
4
  a mirror that is reachable inside mainland China. This is not a Node library: nothing here is imported or run
@@ -14,4 +14,4 @@ The BepInEx loader is included, so the install needs no network access at all.
14
14
 
15
15
  The multiplayer mod is the work of [Extremelyd1](https://github.com/Extremelyd1/SSMP). This is a modified copy
16
16
  that adds a shared two-player save; please do not take questions about it to the original author. Distributed
17
- under the GNU LGPL 2.1 - see `LICENSE`. Built from https://github.com/Candy-649/SSMP at `4b1169e`.
17
+ under the GNU LGPL 2.1 - see `LICENSE`. Built from https://github.com/Candy-649/SSMP at `a07cfac`.
package/SSMP/SSMP.dll CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "silksong-coop-mod",
3
- "version": "0.4.36",
3
+ "version": "0.4.38",
4
4
  "description": "Offline installer payload for a two-player co-op build of the SSMP Silksong multiplayer mod. Not a Node library.",
5
5
  "license": "LGPL-2.1-or-later",
6
6
  "author": "Candy-649 (https://github.com/Candy-649)",