无名杀是一款使用 JavaScript 实现的非官方版三国杀桌游,能够在多个平台上运行。这是一个无名杀原始仓库的分支,鉴于原仓库 pull request 审核似乎不活跃,这里分离出单独的仓库。
本仓库暂时还未生成客户端。原始仓库作者提供的客户端下载链接如下:
GitHub: https://github.com/libccy/noname/releases/tag/SSS
Coding: https://nakamurayuri.coding.net/p/noname/d/noname/git/releases/SSS
如果要参与开发,下载代码后运行以下命令安装依赖
npm install
之后直接打开 index.html 或者运行
npm run start
即可。
本仓库和原仓库相比,以下特性有所改动。每个类别中基本按修改时间从新到旧排列。
由于代码框架限制,早前版本的木牛流马功能较简单:在需要打出卡牌时先询问是否用其中的牌再用手牌,以及需要使用卡牌时可以发动“流马”技能选择一张其中的牌使用。然而,当一些技能需要打出(如改判技)手牌,或将手牌当成其他牌使用时(丈八蛇矛、倾国等等),却无法使用木牛流马中的牌,这和官方的设计本意不符。原仓库中有人反馈过这个问题,这里提供一种解决方案,希望起到抛砖引玉的作用。
相关的代码修改包括三个部分:游戏核心 game/game.js 的修改 (2ef6a60),以及相关技能触发条件的修改 (b7a48a2)。另外还对强制转化牌的技能触发条件做了修改 (2ee726b)。
在游戏核心中,我们引入了一个新的 position——'m'
——用来表示木牛流马中的牌,用在 getCards
和 selectableCards
函数中。另外,在 player 对象中加入了 showMuniuCards
和 hideMuniuCards
两个函数,用来弹出和收回木牛流马中的牌,供玩家(和 AI)选择。在点击技能时,以及在 chooseCard
、chooseToRespond
、chooseToUse
的过程中,我们检查相关的技能是否是视为技(有 viewAs
)且是使用或打出,或者相关的 event.position
是否包含 'm'
。如果有,就弹出木牛流马中的牌,之后(点击取消或确定后)收回。效果:
这样,我们只需要修改相关技能的 filter,使得在木牛流马中有满足条件的牌时也能触发技能询问;另外针对各种询问选择牌的技能,如果选择牌的目的是使用或打出,全部加上 'm'
的 position 即可。
最后,神关羽的武神等强制转化牌的技能描述都是“锁定技,你的……牌视为……”,而木牛流马中的牌不属于任何人,所以需要对这些技能的触发条件也加以修改,排除木牛流马弹出 的牌。
由于涉及的技能繁多,修改可能会有遗漏,欢迎反馈仍然无法使用木牛流马的技能。
另外,卡牌移动特效还不太美观,经常直接显示和消失,不过不影响使用。
- 修复〖巧思〗有时会找到重复的牌而报错的问题 eba3cbe
- 允许国战吕范〖调度〗选择是否自动发动摸牌 (20fb824)
- 修复手杀审配〖烈直〗描述问题,实际上不能弃自己牌 (6278a53)
- 修复他人向手杀简雍发起拼点后报错的问题 (c422da2)
- 修复国战左慈汲魂每受一点伤害就能获得一个魂的问题,根据技能描述应为一次伤害一个 (302d2b7)
- 修复录像回放中月份显示比实际多 1 的问题 (9fe005c)
- 改正一些描述和界面文字上的 typo (732bc6f, cea5ea1 etc.)
如果您想反馈的问题涉及上方提到的特性改动,请直接在本仓库提交 issue。
如果您想反馈的问题不涉及本仓库所做出的改动,建议向原始仓库反馈,向本仓库反馈很可能不会得到处理。
参与贡献代码、提交 pull request 的原则也如上。
如果原仓库的作者有兴趣,本人也可以就上述改动向原始仓库提交 pull request。