sganggs
cfe85c6fee
feedback2 WI: a running 坚固维式重锤 不死 window stops a dollkeeper's switch to its 替身 (fatal priority −99, the lock stays at −100); the switch flag is trait.dollSwitching; the 替身's own max HP is stated as sourced (review of #44 )
2026-10-04 00:26:13 +08:00
sganggs
29784db4d9
feedback2 WI: a dollkeeper knocked out as its 替身 lies as the 替身 facing UP and on a model rebuilt while down (the view keeps the form it died in); Back clip lists and form comments corrected, the unused knockout fx removed (review of #44 )
2026-10-04 00:26:13 +08:00
sganggs
0ac7dc7dd2
feedback2: merge WI — 归溟幽灵鲨's 替身 is drawn (form + status icon), makes no attack and casts nothing, S2's end switches her (GitHub #44 )
2026-10-04 00:13:31 +08:00
sganggs
6b634fe132
feedback2: merge WD — 活性源石 stays on an enemy for 300 s after the tile (cleared by a 重生); 沼泽 triggers every second (2 layers at 重量 ≥ 3); 深水区 is sourceless true 持续伤害, not 环境伤害 (GitHub #33 item 6)
2026-10-04 00:09:22 +08:00
sganggs
c2e0788fd1
feedback2 WD: DESIGN §22.4 and SIM.md for the review fixes (重生 clears the effect, relocated and long-standing operators, boss / hidden fields, 纠缠藤蔓, the 沼泽 and 深水区 findings)
2026-10-04 00:07:43 +08:00
sganggs
a4d69b6ba3
feedback2 WD: 深水区's tick is 无来源 true 持续伤害, not 环境伤害 (tags dot / periodic / deepsea): 纠缠藤蔓 no longer turns fragile in water, 锡人's 凋敝魂灵 raises it
2026-10-04 00:07:34 +08:00
sganggs
3502027ff2
feedback2 WD: 沼泽 triggers every second, 2 layers for an enemy of 重量 ≥ 3, operators get the ASPD part only (the skill's value 3 is that weight, not a 3 s interval)
2026-10-04 00:07:25 +08:00
sganggs
0907c3b7a4
feedback2 WD: a 重生 clears the lasting 活性源石 effect (an ember that crossed the tile no longer dies from its ticks); a relocated operator keeps it, an operator drains past 300 s only by the [ASSUMED] refresh rule
2026-10-04 00:07:15 +08:00
sganggs
7ab852ef57
feedback2: merge WE — setup downloads the battle emotes and 玩法说明 pages from the public mirror, accurate deployment docs (GitHub #42 ); English title Stronghold Protocol: Alliance; doctor comment after PR #27
2026-10-03 23:51:56 +08:00
sganggs
fadeed2dc6
feedback2 WE: review wording — ASSETS.md and DESIGN §13 say the HUD sprites are not downloaded (most are on the mirror), §22.5 says the mirror copies match the local sizes and that #38 stays open; setup's no-client row only points to DEPLOY §6 (doctor keeps the copy hint); stale test messages
2026-10-03 23:51:11 +08:00
sganggs
7f7df66977
feedback2 WE: a 玩法说明 page none of whose copies loads shows the official tips text again, as in 0.1.1 (data/assets.json listing pages that are not on disk showed a blank notice); guide.js guideStage, neighbours preload their next loadable copy
2026-10-03 23:51:11 +08:00
sganggs
f3cb6f414e
feedback2: merge WC — 阿戈尔's devour cancels a knocked-out target's pending marks (revived members stay standing); 乌尔比安 S3 stays on his tile while he blocks (GitHub #33 items 1-2)
2026-10-03 23:45:19 +08:00
sganggs
d5ebc6c7cd
feedback2 WC: DESIGN §22.3 follows the review (0.1.0's marker rule, 不屈, his own tile only while blocking, 82 of 84 casts, measured before #51 )
2026-10-03 23:44:36 +08:00
sganggs
ee70c608dc
feedback2 WC: 乌尔比安 S3 takes his own tile only while he blocks; otherwise the anchor search starts one tile ahead as in 0.1.1 (review of GitHub #33 item 2)
2026-10-03 23:44:36 +08:00
sganggs
93b0592bff
feedback2 WC: the devour keeps 0.1.0's marker rule (a marker back in the same pass still gives its marks) and cancels a target's marks after a 不屈 redeploy too (review of GitHub #33 item 1)
2026-10-03 23:44:36 +08:00
sganggs
1376e64753
feedback2: WB review wording — 突袭 looks at another field's ground enemies only while its own has none; §22.2 says the rule is stricter than our first #51 reply (a covering tile or no jump)
2026-10-03 23:42:09 +08:00
sganggs
4298815bf2
feedback2: merge WB — 突袭 lands only where it can attack a ground enemy, on both triggers (GitHub #51 )
2026-10-03 23:41:35 +08:00
sganggs
d74665f068
feedback2: WF review — the 高台 reading marked [ASSUMED] in the code comments; only 歌蕾蒂娅 is obtainable (崖心 / 见行者 are hidden chess); §22.6 notes the tile-based 地面干员 effects
2026-10-03 23:40:13 +08:00
sganggs
2f5cc6edbc
feedback2: merge WF — 钩索师 / 推击手 may stand on a 高台 (branch trait 可以放置于远程位; GitHub #32 item 4)
2026-10-03 23:39:47 +08:00
sganggs
b44d808e21
feedback2 WI: DESIGN §5.2 / §8.2 say a unit's model form may be a dollkeeper's 替身, not only an enemy's mode
2026-10-03 23:32:38 +08:00
sganggs
d2d1c46364
feedback2: WA review wording — DESIGN §22.1 says only the model choice is unchanged for enemies and summons, the held idle frame is an [ASSUMED] look, the knocked-down pose keeps a Back skeleton's own Die clip
2026-10-03 23:31:03 +08:00
sganggs
32eb8e508c
feedback2: merge WA — a knocked-out operator facing up falls with its Front model (GitHub #25 )
2026-10-03 23:30:43 +08:00
sganggs
ff294b8e40
feedback2 WI: the client draws a dollkeeper's 替身 on its *_B clips (归溟幽灵鲨 Start_B / Idle_B / Die_B / Die_B_2, back on Start_2; 风丸 too) with a 替身 status icon; a form ends in the unit's own skill clips (issue #44 )
2026-10-03 23:29:48 +08:00
sganggs
64f715fb20
feedback2 WI: 归溟幽灵鲨's 替身 makes no normal attack and casts no skill, her S2 end switches her to it directly; dollkeepers switch with a 1 s animation, hold 阻回 and keep their own max HP (issue #44 )
2026-10-03 23:27:49 +08:00
sganggs
2f0a980b2e
feedback2 WE: README, DEPLOY.md (new §6), setup and doctor say what falls back without the local-client art instead of 不影响游戏, and that a server without the client can copy public/assets/local + data/local-assets.json from the same version's bundle; DESIGN §22.5 ( #42 )
2026-10-03 23:13:23 +08:00
sganggs
bcaff967cf
feedback2 WD: devices.js notes that a 重生 keeps the 活性源石 effect (source-less buffs survive rebirthCleanse)
2026-10-03 23:11:35 +08:00
sganggs
7d0b44a43b
feedback2 WB: DESIGN §22.2's repro line says why no landing reaches the enemy (it stands on floor, the tiles beside it do not cover it)
2026-10-03 23:10:13 +08:00
sganggs
03fab686c5
feedback2 WF: DESIGN §22.6 states what the bot probe showed (the widened class left one blocker on the road)
2026-10-03 23:09:47 +08:00
sganggs
234d2c5714
feedback2 WA: the five operators of GitHub issue #25 (跃跃, 拉普兰德, 缄默德克萨斯, 斯卡蒂, 德克萨斯) pinned in the test and named in DESIGN §22.1
2026-10-03 23:09:33 +08:00
sganggs
ff8db862c9
feedback2: merge GitHub master (PR #28 extension-less /media audio route, PR #29 explorer.exe browser opener)
2026-10-03 23:06:10 +08:00
sganggs
db7b2b1404
feedback2 WE: setup downloads the 36 battle emotes and the 19 玩法说明 pages from the public mirror (ArknightsAssets2 cn); the client shows the local-client art first, then the mirror copy, then its fallback ( #42 )
2026-10-03 23:05:42 +08:00
Lu Ke
8b10625d3c
打开浏览器改用 explorer.exe(shell 关联),找不到时才用 rundll32 ( #29 )
...
Windows 上先同步判断 explorer.exe 是否存在:存在就用 explorer.exe <url>,由已登录、未提权的 shell 按默认浏览器关联打开,从管理员控制台启动时浏览器不会跟着提权(Edge 不再弹「现有实例正在以提升的权限运行」);找不到 explorer.exe 才退回 rundll32 url.dll,FileProtocolHandler。不经过 cmd,URL 里的 & 不会被截断。macOS / Linux 不变。
打开浏览器的实现集中到 scripts/open-browser.mjs;scripts/launch.mjs 加 isMain() 守卫(与 tools/setup.mjs、tools/doctor.mjs 一致),被 import 时不会启动服务器。测试:test/open-browser.test.js。
2026-10-03 23:05:06 +08:00
Ausevay
0b73a39b12
Merge pull request #28 from kanomahoro1224/feat/media-audio-route
...
音频改走无扩展名的 /media 路由:下载管理器不再弹「下载文件信息」
2026-10-03 23:04:48 +08:00
sganggs
2d96fe7c61
feedback2 WB: DESIGN §22.2 and research 02 §3.18 describe the 突袭 landing rule (data/bonds.json rebuilt)
...
§22.2: seen / official / cause / now / cost / players notice / [ASSUMED] / tests for GitHub issue #51 . Research 02
§3.18's [ASSUMED] landing line (md and json) now states the rule; `node tools/build-data.mjs --offline` changed only
data/bonds.json raidShip.spec.assumed[0].
2026-10-03 23:04:12 +08:00
sganggs
76e60a186b
feedback2 WB: 突袭 jumps only to a tile from which its target is in range, on the idle trigger too (GitHub issue #51 )
...
Up to 0.1.1 only the 技能就绪 trigger required a landing tile that covers the target; the 10 s idle trigger took
raidTile's fallback (a tile that covers nothing), so a member with nothing reachable hopped every 10 s between useless
tiles and never went for a second ground enemy it could have hit. Now both triggers walk the candidates in the existing
order (own field first, most advanced first, at most 8) and jump to the first one with a covering tile; none -> the
member stays, its idle time keeps counting and the 0.25 s poll looks again. [ASSUMED]: the official text only says
"再部署至一名地面敌人周围".
raidTile now enumerates only the tiles a range offset leads back to from the enemy's body (same choice as the old
25-tile scan whenever a covering tile existed: 200 000 random cases), and a player's members share one sorted candidate
list per poll (rebuilt after a jump), so a search that finds nothing stays cheap: +5.8 us per tick on the heavy boss
field with 18 members that never reach anything, against +5.5 us for 0.1.1 (the plain requirement on the old scan:
+29.6 us). Tests: two "突袭 #51 " cases in test/content/bonds_addon.test.js.
2026-10-03 23:04:12 +08:00
sganggs
e846519fb0
feedback2 WF: docs for 钩索师 / 推击手 on a 高台 (DESIGN §22.6, §3, §6.6; DATA placement; PLAYING §4; research 03 C2)
2026-10-03 23:03:26 +08:00
sganggs
9d15538865
feedback2 WF: 钩索师 and 推击手 (歌蕾蒂娅, 崖心, 见行者) may stand on a 高台 — chess.json placement 'all' from the branch trait 可以放置于远程位; server, client highlights; bots keep them on the ground as blockers
2026-10-03 23:03:26 +08:00
sganggs
380af1ba80
feedback2 WE: the English title is the official Stronghold Protocol: Alliance (EN activity_table act2autochess) — README, server banner, package name; was Covenant ( #38 )
2026-10-03 23:01:49 +08:00
sganggs
945c9f3ee8
feedback2 WE: tools/doctor.mjs says directly that tun0 / tap0 are matched first by VPN_IF (substring tun\d / tap) and classed as vpn (comment only, after PR #27 )
2026-10-03 23:01:41 +08:00
sganggs
1579a8807f
feedback2 WD: 活性源石 stays on a unit for its 300 s after it leaves the tile, one effect per unit, the tiles never switch off (GitHub #33 item 6)
2026-10-03 22:59:38 +08:00
sganggs
e08f22447b
feedback2 WA: DESIGN §22.1 (Back-facing operators play their fall, GitHub issue #25 ), docs/ASSETS.md model choice and die role
2026-10-03 22:58:26 +08:00
sganggs
072e1231ae
feedback2 WA: a knocked-out operator facing UP falls and lies with its Front model, the Back model holds still meanwhile (GitHub issue #25 )
...
131 of the 135 Back skeletons have no Die clip, so SpineActor.die() changed nothing and the
attack / skill / idle loop went on under the redeploy ring. UnitView._wantsBack() now wants the
Back model only while the unit stands (or when its Back skeleton has a Die clip of its own);
die() / revive() mark the view and its update swaps the model in place after the frame's events
(a death and a redeploy in one frame load nothing). The Front model replays the fall (held end
for a unit already down), gets the knocked-down grey, and the redeploy brings the Back model back
with the deploy clip carried over. A skeleton without a Die clip holds its idle's first frame.
2026-10-03 22:58:19 +08:00
sganggs
c2c1cf7fd8
feedback2 WC: DESIGN §22.3 (GitHub #33 items 1-3: the devour after a revive, 乌尔比安 S3 while blocking, the 联防 order still unknown)
2026-10-03 22:58:11 +08:00
sganggs
7383419009
feedback2 WC: 乌尔比安 S3 throws the anchor onto his own tile while he blocks, so he stays put and leaves no marker (PRTS note; GitHub #33 item 2)
2026-10-03 22:58:11 +08:00
sganggs
215d52efe3
feedback2 WC: 阿戈尔's devour cancels the pending marks of a unit it knocked out, also when that unit is revived at once, so the revived members stay standing (GitHub #33 item 1)
2026-10-03 22:58:11 +08:00
sganggs
47df17171a
feedback2: test that 缪尔赛思 wearing 变形同构体 + 维式重锤 counts twice for 维多利亚 (case from PR #40 by @shanzhaikabi)
2026-10-03 22:41:03 +08:00
sganggs
2a03467897
feedback2: DESIGN §22 skeleton for the post-0.1.1 GitHub issues
2026-10-03 22:33:22 +08:00
kanomahoro1224
cfa51e5f1b
按 review 意见:/media/ 的路径与扩展名列表提到 shared/ 共用
...
- server/index.js 开头的路由说明补上 /media/
- AUDIO_EXTS 原先客户端(public/js/media.js)与服务端各一份,只改一边就会悄悄漂移:
现在两边都从 shared/media.js 取;服务端那份不再 export
- isMediaUrl 只有测试在用,删掉(新增 shared/media.js,测试改从那里取前缀/扩展名)
- 顺手做了 review 里「可选」的那点:有些静态托管对不存在的路径回 200 + index.html,
这种响应解码会静默失败,所以除了 404,声明了非 audio/* 类型的响应也回退到原地址
(完全没声明 content-type 的不算错——没有证据表明它不是音频)
2026-10-03 22:33:20 +08:00
kanomahoro1224
a069be4538
音频改走无扩展名的 /media 路由:IDM / 迅雷 这类下载管理器不再弹「下载文件信息」
...
玩家那边遇到的是:游戏放着 BGM,突然弹出下载管理器的「下载文件信息」框,有时还会把整条
音轨抢去下载。原因是这些工具会嗅探以媒体扩展名结尾的 XHR/fetch。改成客户端统一请求不带
扩展名的 `/media/<原路径去掉 .mp3>`,服务端再解析回 `public/assets/audio/…`。
- `public/js/media.js`:`mediaUrl()` 把 `/assets/audio/**.mp3` 换算成 `/media/**`,只处理同源、
且扩展名在名单内的地址;跨域、目录、`..`、点开头、不认识的扩展名一律原样返回。
- `server/index.js`:新增 `/media/` 路由。按 `AUDIO_EXTS` 顺序找 `.mp3/.m4a/.aac/.ogg/.oga/.opus/.wav`,
显式写了扩展名的以它为准;Range/ETag/Content-Type/缓存策略都复用 `serveFile`,所以和直接请求
`/assets/audio/…` 行为一致(一天缓存、支持 Range)。
- 直接请求 `/assets/audio/…` 仍然可用 —— 这是给不支持 `/media/` 的纯静态托管留的退路,客户端
在 `/media/` 404 时才回退到原地址。
安全:`/media/` 的路径只接受正常片段,`..`/`.` 直接 403,点开头或点结尾的片段 404,解析出的
绝对路径必须落在 `public/assets/audio` 之内,且只允许上面那几个音频扩展名 —— 不会变成任意文件读取。
测试:
- `test/media-url.test.js`:`mediaUrl()` 的换算与各种「别动它」的边界。
- `test/lobby.test.js`:真实服务器上的 `/media` 路由(正常解析、显式扩展名优先、Range、HEAD、
目录与穿越请求被拒、客户端回退用到的 `/media/bgm.mp3` 仍 200)。
- `test/ui/audio.test.js`:音频管理器现在先请求无扩展名地址,404 才回退原地址;断言跟着
`mediaUrl()` 换算后再比对(原先拿 manifest 原地址比对,等于断言一个客户端永不请求的 URL)。
2026-10-03 22:33:19 +08:00
Ausevay
5eede38129
Merge pull request #27 from kanomahoro1224/fix/doctor-iface
...
启动器「发给朋友」不再把代理 TUN 当公网 IP;删掉永不生效的 ^tun\d
2026-10-03 22:26:48 +08:00