From 30e7acea42da1d8179165061ac6d400fc395a2cc Mon Sep 17 00:00:00 2001 From: sganggs Date: Tue, 6 Oct 2026 14:48:59 +0800 Subject: [PATCH] =?UTF-8?q?feedback4:=20version=200.1.4=20=E2=80=94=20pack?= =?UTF-8?q?age.json=20/=20package-lock.json=20/=20APP=5FVERSION=20/=20READ?= =?UTF-8?q?ME=20/=20DEPLOY;=20CHANGELOG=200.1.4=20(rules=20per=20the=20off?= =?UTF-8?q?icial=20game,=20battle,=20lobby,=20UI,=20music,=20other;=20cont?= =?UTF-8?q?ributors=20credited)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 53 +++++++++++++++++++++++++++++++++++++++++++++ README.md | 6 ++--- docs/DEPLOY.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- shared/constants.js | 2 +- 6 files changed, 61 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4896b9d6..511d62b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,58 @@ # 更新记录 +## 0.1.4 — 2026-10-06 + +0.1.3 之后的小版本:合并了多位贡献者的 PR,修正了高台和阿戈尔的规则,并修正了文档和测试。下一个版本(0.2.0)会做一次便于维护的重构、多语言支持,以及补位和自选编队。 + +### 规则(按官方) + +- 高台按官方特性:特性里写着「可以放置于远程位」的干员(歌蕾蒂娅、崖心、见行者等),普通和精锐、任意模组都可以放上高台(此前只有精锐歌蕾蒂娅携带淡金坠饰可以;GitHub #153,PR #69 提出,感谢 @sunstricken)。 +- 五人阿戈尔的复活名额给最先被击倒的 3 名阿戈尔:没被吞噬的阿戈尔不占名额,同一名干员被多名阿戈尔吞噬只算一次,斯卡蒂等干员自己的模组复活不占名额(GitHub #105、#140)。 +- 联防里阿戈尔也会吞噬身前的队友干员(站着或等待再部署),攻击和阻挡加成与单独作战一致(GitHub #140)。 +- 阿戈尔吞噬获得的基础攻击力改为最终加算,不再被技能攻击力百分比放大(基础攻击力 1000、技能 +100%、吞噬 2000 时为 4000,而不是 6000)(GitHub #165、PR #176 第 2 点,感谢 @SpiritedAwayCN)。 +- 开场吞噬中先倒下的阿戈尔,它付出的标记仍照常结算,击杀记在付与者名下;只取消被击倒目标身上尚未触发的标记(GitHub #165、PR #176 第 3 点,感谢 @SpiritedAwayCN)。 +- 缇缇二技能每次让周围敌人陷入沉睡都算一次进入沉睡,特质很快叠到每场上限(24 层,精锐 48 层);攻击范围外的沉睡不计入(GitHub #162)。 + +### 战斗 + +- 引星棘刺一技能「度算浪波」是自动触发技能,技力满了就向友军投掷炼金单元,不再等到有敌人才放(GitHub #124)。 +- 咒愈师的特性对她造成的每一次伤害都会治疗,包括技能伤害;收割者、武者的技能打中敌人也会回复自己(PR #115,感谢 @shanzhaikabi)。 +- 部署后限时生效的技能(宴二技能、斯卡蒂二技能、野鬃一技能、砾、伊内丝三技能、缄默德克萨斯、耀骑士临光二技能)走正常的技能流程:部署时消耗一次、显示持续时间条、到时结束,依赖技能状态的装备和盟约效果能看到它结束(PR #109,感谢 @Sukvii)。 +- 耀骑士临光二技能结束撤退后被「不屈」立即再部署时,第二次技能不再丢失「骑士戒律」;伊内丝被「不屈」立即再部署时能正常收回影哨(发布前审查发现)。 +- 灵巧:被击倒的灵巧干员仍为相邻队友提供一次光环,主动撤退、商人退场和联防强制离场不再提供;调和、协防干员、独行、绝技只在界面隐藏层数,内部仍正常累计(PR #66,感谢 @sunstricken)。 + +### 联机与大厅 + +- 「观战」和「加入」按钮发出的是输入框里的密钥,不再把点击事件当成密钥;0.1.3 的观战按钮每次都会失败(PR #119,感谢 @salt-fishes)。 +- 最近同盟的密钥按钮改为只填入密钥,不再直接加入。 +- 复制邀请链接时附带邀请文字:「{玩家名}邀请你加入卫戍协议:盟约【难度】」(PR #103,感谢 @LongQianChen)。 + +### 界面与表现 + +- 休整期选中干员后,按 Q 撤退、按 X 出售(PR #114,感谢 @SpiritedAwayCN)。 +- 盟约详情里随层数增长的概率(不屈、迅捷、奇迹)最高显示 100%,和实际效果一致(GitHub #108)。 +- 查看队友时能看到装备、整备区手牌、策略和效果(PR #129,感谢 @2321Robin);手牌里有道具的队友,棋盘干员不再消失(PR #150,感谢 @2321Robin)。 +- 盟约栏可以收起,手机上更容易操作棋盘(PR #149,感谢 @CELLOPOI;GitHub #142)。 +- 点一下特殊地块(活性源石、沼泽、深水区、排气格栅、红门 / 蓝门、传送门)会弹出它的说明和这张地图的具体数值;活性源石在 2D 和 3D 棋盘上改为同一套材质(PR #185,感谢 @Convey123;GitHub #184)。 +- 标题 / 登录画面加了设置入口,打开的是局内同一个设置窗口(PR #183,感谢 @zasx77771)。 +- 只有一条技能动画、没有起手动作的瞬发技能(如德克萨斯二技能「剑雨」)会正常播放技能动画;部署时生效的被动技能也会播放(PR #160,感谢 @xcdoge)。 + +### 音乐 + +- 联防阶段播放官方逃脱关卡自己的曲目(PR #110,感谢 @Convey123)。 +- 开战曲目按回合固定:1–7 回合「无畏者」,8–13 回合「骑士之日」,和官方关卡资料一致(PR #72,感谢 @Convey123)。 +- 作战中按官方语音槽位播放干员语音(部署、技能、结算等),一次一条,新台词会接管(PR #73,感谢 @Convey123)。 +- 敌人走进蓝门时播放原版关卡的警报声,一波连续漏怪只响一次(PR #134,感谢 @Convey123)。 + +### 其他 + +- 3D 棋盘的 12 张本地贴图改用 WebP,每位玩家第一次进入对局少下载约 4.7 MB,远程联机加载更快(PR #186,感谢 @Cloudnyco)。 +- 下载素材时可以手动启用国内镜像(`node tools/setup.mjs --asset-source=mirror`,或环境变量 `SP_ASSET_SOURCE=mirror`),默认不启用;镜像失败会回到原始源,连续失败 3 次后本次不再使用镜像(PR #24,感谢 @NekoTC)。 +- 灼热 / 炽焰源石虫继续使用染色别名,补充了原因说明和测试(PR #74,感谢 @Convey123)。 +- 联机集成测试不再偶发失败(PR #146,感谢 @CELLOPOI;GitHub #144)。 +- 0.1.3 更新记录的个别措辞更正;设计文档里遗留的章节编号改正。 +- 浏览器端到端测试会确认「还有剩余资金」的提示后再准备(PR #127 的表情测试同样可以用下载的素材运行,感谢 @Convey123)。 + ## 0.1.3 — 2026-10-04 修复 0.1.2 发布后玩家和 GitHub 上反馈的问题。每一条先复现,属实的才修,修完经过独立复核再合并。规则对照官方数据和 PRTS 核对;查不到出处的标了推断,详见 [docs/DESIGN.md](docs/DESIGN.md) §23。有意和官方不同的几条写在下面。 diff --git a/README.md b/README.md index f3777127..43e45126 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ 《明日方舟》季节性自走棋塔防玩法「卫戍协议:盟约」的**非官方同人复刻**:浏览器即开即玩,单人或 1–4 人联机合作。 -![version](https://img.shields.io/badge/version-0.1.3-2ea44f) +![version](https://img.shields.io/badge/version-0.1.4-2ea44f) ![license](https://img.shields.io/badge/code%20license-GPL--3.0--or--later-blue) ![node](https://img.shields.io/badge/node-22%20%7C%2024-339933) @@ -37,7 +37,7 @@ English summary: [below](#english). - **独立模拟**(单人)与**同盟模拟**(1–4 人**合作**,没有 PvP;空位可以加 AI 队友)。 - 服务器是一个 Node.js 程序,**战斗在各玩家的浏览器里模拟**(和官方一样),服务器只管经济与回合,一台低功耗小主机就能开服。 -- 当前版本 0.1.3:修复了 0.1.2 发布后玩家和 GitHub 上反馈的问题,详见 [CHANGELOG.md](CHANGELOG.md)。仍有少数规则按推断实现,与官方不一致的地方欢迎在 Issue 里反馈。 +- 当前版本 0.1.4:修复了 0.1.3 发布后玩家和 GitHub 上反馈的问题,并合并了多位贡献者的 PR,详见 [CHANGELOG.md](CHANGELOG.md)。仍有少数规则按推断实现,与官方不一致的地方欢迎在 Issue 里反馈。 ## 功能一览 @@ -68,7 +68,7 @@ English summary: [below](#english). - Windows:在 PowerShell 里运行 `winget install OpenJS.NodeJS.LTS`,或到 下载安装包。 - macOS:`brew install node@22`,或到官网下载安装包。 - Linux:发行版的包管理器、nvm 或 fnm。 -2. **下载**:在 [Releases](../../releases/latest) 页面下载最新版本(v0.1.3)的整合包(zip),解压到一个路径较短的文件夹(Windows 上建议不要放在 OneDrive 同步的目录里)。 +2. **下载**:在 [Releases](../../releases/latest) 页面下载最新版本(v0.1.4)的整合包(zip),解压到一个路径较短的文件夹(Windows 上建议不要放在 OneDrive 同步的目录里)。 3. **启动** - Windows:双击 **`scripts\start-windows.bat`**。如果弹出「安全警告」,点「运行」;Windows 防火墙弹窗请勾选「专用网络」并允许。 - macOS / Linux:在解压出的文件夹里运行 `./scripts/start.sh`(或 `bash scripts/start.sh`)。 diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md index 945322d4..426740e6 100644 --- a/docs/DEPLOY.md +++ b/docs/DEPLOY.md @@ -26,7 +26,7 @@ ``` 装完**关闭并重新打开**终端,`node -v` 应显示 v22 或更高(winget 的 LTS 目前是 v24.x,同样可用)。没有 winget 时从 和 下载安装。 2. 下载,二选一。建议放在一个固定、短、**不在 OneDrive 同步范围内**的目录,例如 `C:\Stronghold-Protocol`: - - **完整包(推荐)**:在仓库的 [Releases](https://github.com/sganggs/Stronghold-Protocol/releases) 页面下载最新版本(当前为 v0.1.3)的完整包 zip(已含依赖、前端库和全部素材,包括官方 3D 棋盘),解压后把里面的 `Stronghold-Protocol` 文件夹放到上述位置。不需要 Git,首次启动也不用再下载素材。素材版权归上海鹰角网络 / Yostar,仅限非商业使用,见 [NOTICE.md](../NOTICE.md)。 + - **完整包(推荐)**:在仓库的 [Releases](https://github.com/sganggs/Stronghold-Protocol/releases) 页面下载最新版本(当前为 v0.1.4)的完整包 zip(已含依赖、前端库和全部素材,包括官方 3D 棋盘),解压后把里面的 `Stronghold-Protocol` 文件夹放到上述位置。不需要 Git,首次启动也不用再下载素材。素材版权归上海鹰角网络 / Yostar,仅限非商业使用,见 [NOTICE.md](../NOTICE.md)。 - **源码**: ```powershell git clone https://github.com/sganggs/Stronghold-Protocol.git C:\Stronghold-Protocol diff --git a/package-lock.json b/package-lock.json index 2f7e9511..046d4e00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "stronghold-protocol-alliance", - "version": "0.1.3", + "version": "0.1.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "stronghold-protocol-alliance", - "version": "0.1.3", + "version": "0.1.4", "hasInstallScript": true, "license": "GPL-3.0-or-later", "dependencies": { diff --git a/package.json b/package.json index d88a3629..6bf32497 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stronghold-protocol-alliance", - "version": "0.1.3", + "version": "0.1.4", "private": true, "description": "明日方舟「卫戍协议:盟约」非官方同人联机网页复刻(1–4 人合作,Node.js 服务器 + 浏览器客户端)", "license": "GPL-3.0-or-later", diff --git a/shared/constants.js b/shared/constants.js index d4e566b1..152c3b1a 100644 --- a/shared/constants.js +++ b/shared/constants.js @@ -3,7 +3,7 @@ export const PROTOCOL_VERSION = 1; /** Release version shown to players (title screen, server banner, /healthz). Kept equal to package.json "version" * (test/version.test.js); PROTOCOL_VERSION above is the separate wire-format number. */ -export const APP_VERSION = '0.1.3'; +export const APP_VERSION = '0.1.4'; export const MAX_SEATS = 4; /**