feedback5 WM: merge feedback4 at 13808e3 (W4A) — 高台 for every 「可以放置于远程位」 trait holder, the 5-阿戈尔 revive slots, the 联防 devour of whoever stands in front
Ported by hand into the split layout: -83fc408board.js placeClass: the player's loadout no longer counts, as in83fc408. feedback5's 补位 rule stays: a chess the player fields as its stand-in is placed by the stand-in's record (ps.fieldRecord). positionClass(rec) takes no module. -83fc408client piecePosition → public/js/ui/gameLogic/placement.js: meleeOnHighGround(rec) on the stand-in or chess record, no module. The gameLogic.js shim header and deployedModuleId's comment follow; deployedModuleId is kept, still exported and tested. -83fc408PlayerState._placementOf comment → server/match/player/placement.js. -83fc408tools/golden.mjs layout: positionClass without the module, on feedback5's stand-in body (recOf) and in diyLayout. - bonds/core.js (6ab9a06,8a2e0c7) applied cleanly; it equals 13808e3's plus feedback5's i18n toast. shared/highGround.js equals 13808e3's. - data/: only bonds.json (the 阿戈尔 spec text). node tools/build-data.mjs --offline on the merged tree rewrites all 15 files byte-identical. Golden regenerated: 16 scenarios moved, all by83fc408. Each fields 歌蕾蒂娅 (normal, or elite with HOK-X / no module), whom tools/golden.mjs now lays out beside the enemy path like a ranged operator instead of on the busiest melee tile: roster-010, roster-012, roster-029, roster-040, roster-041; bond-deputShip-high, bond-indomShip-low, bond-preciShip-low, bond-preciShip-high, bond-suntShip-low, bond-swiftShip-high; boss-boss_2-pair, boss-boss_4-pair, boss-boss_6-pair, hidden-boss_8-pair, hidden-boss_10-pair. This is the list in 83fc408's own message. With the 阿戈尔 commits reverted the digests are the same, so those two move nothing in this corpus. The standins, diy and matches families are unchanged: no stand-in or 自选 piece there is 歌蕾蒂娅, 崖心 or 见行者.
This commit is contained in:
commit
c5c52eed34
26 files changed
+1095
-871
No files matched your search
+23
-12
@@ -1,21 +1,32 @@
|
||||
// shared/highGround.js — which MELEE chess may stand on a 高台 (a ranged deploy tile).
|
||||
//
|
||||
// Owner's decision 2026-10-04, reversing DESIGN §22.6. The branch trait 「可以放置于远程位」 is written on
|
||||
// every 钩索师 / 推击手 variant (歌蕾蒂娅, 崖心, 见行者, normal and elite) and is not trusted. Only elite
|
||||
// 歌蕾蒂娅 carrying module HOK-Y 淡金坠饰 may use a ranged tile. 崖心 (HOK-X only), 见行者, a normal
|
||||
// record, any other module, and no module are ground-only. The golden record is the elite (`isGolden`);
|
||||
// the same module test applies to it. A missing module id is ground-only.
|
||||
// The owner's decision of 2026-10-05, reversing the one of 2026-10-04 (elite 歌蕾蒂娅 with HOK-Y only): follow PRTS. A
|
||||
// MELEE chess whose trait reads 「可以放置于远程位」 may stand on a 高台 as well as on the ground. The line is the 钩索师 /
|
||||
// 推击手 branch trait (PRTS 歌蕾蒂娅 · 特性, raised with the PRTS source in PR #69 by @sunstricken; PRTS 新人入门: both
|
||||
// branches "可部署在高台和地面"): 歌蕾蒂娅, 崖心 and 见行者, normal and elite. It is the branch's own text, not a module
|
||||
// effect — every module of the three keeps it — so the loadout does not matter: any module, or none. The text read is
|
||||
// the record's trait without a module (`traitBase`, which an elite with modules carries; else `trait`). A module talent
|
||||
// such as the 教官's Y module ("可以额外部署在远程位") is a 部署效果, which 卫戍协议 switches off (PRTS 卫戍协议/帮助
|
||||
// §战斗部署), and is not read. The battle keeps position MELEE: on a 高台 the unit attacks and blocks nothing.
|
||||
|
||||
/** char_474_glady — 歌蕾蒂娅. */
|
||||
export const GLADIIA_CHAR_ID = 'char_474_glady';
|
||||
/** HOK-Y 淡金坠饰 (data/chess.json chess_char_4_12_b.modules, typeName HOK-Y). */
|
||||
export const GLADIIA_HOK_Y = 'uniequip_003_glady';
|
||||
/** The trait line that lets a MELEE chess stand on a ranged (高台) tile. */
|
||||
export const PLACE_ON_RANGED = '可以放置于远程位';
|
||||
|
||||
/**
|
||||
* The record's trait text without a module ('' when it has none).
|
||||
* @param {object|null} rec a chess record
|
||||
* @returns {string}
|
||||
*/
|
||||
export function baseTraitText(rec) {
|
||||
const t = rec ? rec.traitBase || rec.trait : null;
|
||||
return t && typeof t.desc === 'string' ? t.desc : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether a MELEE chess record may also stand on a 高台: its trait reads 「可以放置于远程位」. Normal or elite, any module.
|
||||
* @param {object|null} rec a chess record (normal or golden)
|
||||
* @param {string|null|undefined} moduleId the equipped module (`resolveLoadout().moduleId`)
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function meleeOnHighGround(rec, moduleId) {
|
||||
return !!(rec && rec.isGolden === true && rec.charId === GLADIIA_CHAR_ID && moduleId === GLADIIA_HOK_Y);
|
||||
export function meleeOnHighGround(rec) {
|
||||
return !!rec && rec.position === 'MELEE' && baseTraitText(rec).includes(PLACE_ON_RANGED);
|
||||
}
|
||||
Reference in new issue
Block a user