feedback7 R22-OSIM: 香槟炸弹 no longer goes off on an unrevealed 隐匿 enemy (nor a sleeping one) — it selects like the other contact traps; golden: bond-yanShip-high, coop2-HARD-4 move
Community report relayed by the owner: 「有人反馈香槟炸到没有破隐的隐匿敌人了」. Reproduced: a 隐匿 walker crossing 琳琅诗怀雅's bombs set them off (both kits checked hidden / flying / untargetable only). The rule: PRTS 作战机制 §隐匿 "隐匿效果使得获得该效果的单位无法被任何敌方的能力索敌选中…要选中隐匿的目标,则该单位自身需拥有无视隐匿的效果"; 异常效果 lists 隐匿 and 无敌 among the 无法选择 effects (沉睡 = "无敌且无法行动", gamedata_const ba.sleep). Neither the 香槟炸弹 page nor 琳琅诗怀雅's S2 carries a 无视隐匿 / 无视可选性 note, and the other contact traps of the sim (多萝西's 共振装置, 望's 棋子) already select through canTargetEnemy. Now both kits go off on a ground enemy canTargetEnemy accepts (tokens.js CHAMPAGNE_TRIGGER): a 隐匿 enemy sets one off once it is revealed (反隐) or blocked (its 隐匿 lifts), a sleeping one once it wakes (until now the bomb was spent on it for no damage). Placement is unchanged (it already aimed at selectable enemies only). Golden: bond-yanShip-high and coop2-HARD-4 (bombs under 隐匿 enemies of rounds 10–11 — 隐形弩手组长, 访问团强攻冠军, 重弩突袭者 — and sleeping ones of round 7 — 宿主士兵, 粉碎攻坚手 — now wait). Tests: test/content/feedback7-champagne-stealth.test.js (2; both fail on the parent).
This commit is contained in:
1 parent
5f98baecc1
commit
e733171b13
6 files changed
+94
-33
No files matched your search
@@ -8,7 +8,8 @@ import {
|
||||
groundTile, enemiesOn,
|
||||
} from '../shared/tier3.js';
|
||||
import { powi } from '../../../detmath.js';
|
||||
import { champagneHold } from '../../tokens.js';
|
||||
import { champagneHold, CHAMPAGNE_TRIGGER } from '../../tokens.js';
|
||||
import { canTargetEnemy } from '../../../targeting.js';
|
||||
|
||||
/** 琳琅诗怀雅 S3's coin range (PRTS 备注 "前方范围2-4"; range_table "2-4", facing right). */
|
||||
const SWIRE2_COIN_GRID = Object.freeze([[1, 1], [0, 0], [0, 1], [0, 2], [-1, 1]]);
|
||||
@@ -78,7 +79,8 @@ export default {
|
||||
battle.on('tick', () => {
|
||||
if (!bomb.alive || !bomb.deployed) return;
|
||||
for (const e of battle.enemies) {
|
||||
if (!e.alive || e.hidden || e.isFlying || e.s.flags.untargetable) continue;
|
||||
// a ground enemy it may select — no 隐匿 one that is neither revealed nor blocked (tokens.js CHAMPAGNE_TRIGGER)
|
||||
if (!canTargetEnemy(bomb, e, CHAMPAGNE_TRIGGER)) continue;
|
||||
if (!bodyOnTile(e, bomb.tileR, bomb.tileC)) continue;
|
||||
// first enemy touching it; after switchT s on the field the bomb deals its damage one extra time
|
||||
const hits = battle.time - bomb.deployedAt >= switchT - 1e-9 ? 2 : 1;
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
// 香槟炸弹 untargetable trap: the first ground enemy touching its tile takes owner ATK × atk_scale phys (+1 hit
|
||||
// after duration_switch s on the field) and sluggish; the bomb is used up ('expired', never a knock-out;
|
||||
// its blast fx carries `consumed: true` so clients play the explosion, not a death sound); 禁疗, no HP
|
||||
// loss, never gone because of its HP (champagneHold — the owner's decision D2 of 2026-10-08)
|
||||
// loss, never gone because of its HP (champagneHold — the owner's decision D2 of 2026-10-08); an
|
||||
// unrevealed 隐匿 enemy does not set it off (CHAMPAGNE_TRIGGER)
|
||||
// 从不混淆的方向 untargetable marker; when the owner's skill ends it vanishes and the owner returns to its tile
|
||||
// 黄金盟誓 attacks deal true damage (trait); lasts while the owner's skill runs; 维娜 S3 places one on every
|
||||
// free deployable tile around her (kits/ops/chess_char_6_07-siege2.js) — no per-owner deploy limit (SKILL_SUMMON_UNCAPPED)
|
||||
@@ -80,7 +81,8 @@
|
||||
//
|
||||
// Exports for other content: spawnYanyou, spawnMapChar, findSummonTile, summonToken, tacticalPoint, wolfShadows,
|
||||
// COUNTDOWN_SUMMONS / startCountdown (the countdown summons' 无敌 + 禁疗 and timer bar, shared with the kits that time them),
|
||||
// champagneHold (香槟炸弹's durability, shared with 琳琅诗怀雅's kit, kits/ops/chess_char_3_04-swire2.js),
|
||||
// champagneHold / CHAMPAGNE_TRIGGER (香槟炸弹's durability and the enemies it goes off on, shared with 琳琅诗怀雅's kit,
|
||||
// kits/ops/chess_char_3_04-swire2.js),
|
||||
// wolfShadowInterval, installWolfTacticalPoint, wolfTacticalPoint, wolfReturnNow (the 狼群's 战术点形态, shared with the
|
||||
// 伺夜 kit's own pack, kits/ops/chess_char_3_19-vigil.js), releaseSkillSummon, SKILL_SUMMON_START_DEPLOY, CAT_SHIELD_KEY,
|
||||
// TOKEN_IDS; mapCharTalents and touchGospel (Touch's 攫升 / 超脱 and 恳切福音, shared with the Touch 补位 stand-in kit,
|
||||
@@ -1047,6 +1049,14 @@ export function champagneHold(battle, bomb) {
|
||||
battle.on('damaged', (ctx) => { if (ctx.target === bomb && bomb.alive) bomb.hp = bomb.s.maxHp; }, { owner: bomb, priority: 1000 });
|
||||
}
|
||||
|
||||
/**
|
||||
* The enemies a 香槟炸弹 may set off on: ground and selectable (canTargetEnemy) — a 隐匿 enemy that is neither revealed nor
|
||||
* blocked is none (PRTS 作战机制 §隐匿 "隐匿效果使得获得该效果的单位无法被任何敌方的能力索敌选中"; its pages carry no 无视隐匿 /
|
||||
* 无视可选性 note; the other contact traps — 多萝西's 共振装置, 望's 棋子 — select so too). A community report the owner relayed
|
||||
* (「香槟炸到没有破隐的隐匿敌人了」): until 0.2.1 it went off on any ground enemy, 隐匿 or not.
|
||||
*/
|
||||
export const CHAMPAGNE_TRIGGER = Object.freeze({ canHitFly: false, groundOnly: true });
|
||||
|
||||
/** 香槟炸弹 (琳琅诗怀雅 S2): untargetable trap consumed by the first ground enemy touching its tile (champagneHold). */
|
||||
function champagne(bb) {
|
||||
const scale = num(bb['attack@atk_scale'] ?? bb.atk_scale, 0);
|
||||
@@ -1059,7 +1069,7 @@ function champagne(bb) {
|
||||
if (!unit.alive) return;
|
||||
let hit = null;
|
||||
for (const e of battle.enemies) {
|
||||
if (!e.alive || e.hidden || e.isFlying) continue;
|
||||
if (!canTargetEnemy(unit, e, CHAMPAGNE_TRIGGER)) continue; // (no unrevealed 隐匿 enemy)
|
||||
// touching its tile: a huge enemy on any tile of its body (body.js)
|
||||
const on = e.hitArea ? bodyOnTile(e, unit.tileR, unit.tileC) : Math.abs(e.x - unit.tileC) <= 0.5 && Math.abs(e.y - unit.tileR) <= 0.5;
|
||||
if (on && (!hit || e.spawnSeq < hit.spawnSeq)) hit = e;
|
||||
|
||||
Reference in new issue
Block a user