feedback7 R22-GHSIM: 歌蕾蒂娅 S3's skill-end 捕网 pulls the enemies within 1 tile of the tornado, not 1.5 — the tornado keeps 1.5 (GitHub #324, PR #329 by @IceCodeNew, re-implemented); golden: fields boss-boss_4-pair moves

PRTS 歌蕾蒂娅 S3 备注: 「龙卷风半径1.5」 and 「技能结束时的拖拽为捕网,捕网半径为1,无伤害」. The kit reused the tornado's
radius for the final pull (its 1.5 was marked [ASSUMED]; PRTS now backs it). The slow and the pulses keep 1.5; only the
skill-end pull (to her front, as before) uses 1. Golden: boss-boss_4-pair fields 歌蕾蒂娅 — fewer enemies are dragged to
her front at the skill end, the fight runs differently (11 kills instead of 14, one leak).
This commit is contained in:
sganggs committed 2026-10-08 19:10:37 +08:00
1 parent a0cd6826e5
commit b2510524b0
3 files changed
+81 -57

No files matched your search

@@ -12,14 +12,17 @@ const ABYSSAL = new Set(['char_143_ghost', 'char_263_skadi', 'char_474_glady', '
const isAbyssal = (u) => u?.def?.raw?.groupId === 'abyssal' || ABYSSAL.has(u?.def?.charId ?? u?.def?.raw?.charId);
export default withDefaults({
// ===== 歌蕾蒂娅 (hookmaster) S3 缺水的碎漩狂舞 — bind a far target, tornado: slow, 85 % arts pulses + pull, final pull
// ===== 歌蕾蒂娅 (hookmaster) S3 缺水的碎漩狂舞 — bind a far target, tornado (r 1.5): slow, 85 % arts pulses + pull,
// final pull (the 捕网, r 1)
// S1 缺水的大洋裂断 (charges: next attack pulls the target to her front, 150 %/180 %); S2 缺水的掌握怒海 (BAT +0.5 s,
// wider range, ≤ 2 targets — blocked first — at 135 %/150 % and pulled to her front); module HOK-Y (淡金坠饰):
// a pull towards herself of an enemy farther than 2.5 tiles is one force level stronger
chess_char_4_12_a: (bb, chess, def) => {
const t0 = tbb(def, 0), t1 = tbb(def, 1), mb = moduleBb(def);
const tb = def.traitBb || {};
const R = 1.5; // [ASSUMED] tornado radius (no blackboard key)
// S3 radii (no blackboard key) — PRTS 备注: 「龙卷风半径1.5」 (slow, pulses) and 「技能结束时的拖拽为捕网,捕网半径为1,无伤害」
// (the skill-end pull; until 0.2.2 it reused the tornado's 1.5 — GitHub #324, PR #329)
const R = 1.5, NET_R = 1;
const force = num(bb.force, num(bb['attack@force'], 0));
const iv = Math.max(0.1, num(bb.interval, 1.5));
const g = grid(def.skill?.rangeGrid);
@@ -76,7 +79,7 @@ export default withDefaults({
const T = unit.mem.tornado;
unit.mem.tornado = null;
if (!T || reason === 'death' || !unit.alive) return;
for (const e of battle.foesInRadius(T.x, T.y, R)) pullSelf(battle, unit, e, force);
for (const e of battle.foesInRadius(T.x, T.y, NET_R)) pullSelf(battle, unit, e, force); // the 捕网
battle.fx('pull', { x: T.x, y: T.y, id: unit.id });
},
},
+21
View File
@@ -454,6 +454,27 @@ test('歌蕾蒂娅 S3: binds the farthest target, tornado pulses 85 % ATK arts e
checkInvariants(h.b);
});
test('歌蕾蒂娅 S3: the skill-end 捕网 has radius 1, the tornado 1.5 (PRTS 备注; GitHub #324, PR #329)', () => {
const id = 'chess_char_4_12_a';
const h = makeBattle({ defs: { enemies: { enemy_dummy: dummy() } }, units: [{ chessId: id, row: 10, col: 3 }], timeLimit: 200, autoFinish: false });
h.step();
const u = h.unit(id);
h.spawn('enemy_dummy', { pos: [10, 6] }); // the farthest enemy: bound, the tornado sits on it
h.step();
assert.ok(u.skill.activate('test', { free: true }));
assert.deepEqual([u.mem.tornado.x, u.mem.tornado.y], [6, 10]);
const at = (x, y) => { const e = h.spawn('enemy_dummy', { pos: [10, 6] }); e.x = x; e.y = y; return e; };
const inner = at(6, 9.1), outer = at(6, 11.25); // 0.9 and 1.25 from the centre
h.step();
for (const e of [inner, outer]) assert.ok(e.findBuff(`glady:slow:${u.id}`), 'both inside the tornado (slowed)');
const p0 = [inner.x, inner.y, outer.x, outer.y];
u.skill.end('test');
h.run(0.6);
assert.ok(Math.hypot(inner.x - p0[0], inner.y - p0[1]) > 0.3, 'the net pulls the enemy 0.9 from the centre');
assert.deepEqual([outer.x, outer.y], [p0[2], p0[3]], 'the one 1.25 from the centre stays: outside the net');
checkInvariants(h.b);
});
test('歌蕾蒂娅 阿戈尔的波涛: 深海猎人 regen 2.5 %/s and −25 % damage from 海怪; elite drag damage', () => {
const id = 'chess_char_4_12_a', t0 = D(id).talents[0].bb;
const sea = withTags(dummy({ key: 'enemy_sea', atk: 0 }), ['seamonster']);
+54 -54
View File
@@ -425,81 +425,81 @@
"time": 200,
"ticks": 6000,
"reason": "forced",
"killed": 14,
"killed": 11,
"total": 14,
"unspawned": 0,
"bossHpLeft": 7089603,
"rngDraws": 790,
"bossHpLeft": 7409377,
"rngDraws": 605,
"errors": {"count":0,"kinds":[]},
"players": {
"p1": {"killed":14,"total":14,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1232553,"bossDmg":447559,"heal":54877,"deaths":14,"layerGains":{}},
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1161150,"bossDmg":862838,"heal":6691,"deaths":14,"layerGains":{}}
"p1": {"killed":11,"total":14,"perfect":false,"leaks":1,"leaksUncounted":0,"coins":0,"dmg":979196,"bossDmg":339107,"heal":30297,"deaths":17,"layerGains":{}},
"p2": {"killed":0,"total":0,"perfect":false,"leaks":2,"leaksUncounted":0,"coins":0,"dmg":978164,"bossDmg":651515,"heal":4827,"deaths":19,"layerGains":{}}
},
"units": [
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",0,0,54,0,155980,8234,420,28,2],
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",1373.6,1,60,2,14823,8720,1235,14,1],
["p1",3,"op","chess_char_5_14_b",1,"none",0,0,49,0,52926,18466,3193,26,12],
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",1187.98,1,52,0,28347,13246,275,19,2],
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",911.19,1,55,2,447919,3364,21815,111,19],
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",298.05,1,61,2,96428,10840,743,39,4],
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",1227.14,1,19,1,132749,4452,335,209,6],
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1176.62,1,57,6,174306,2559,513,45,19],
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",0,0,50,0,0,4335,26014,44,3],
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1293.14,1,15,0,129076,4452,335,71,3],
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",2307.16,1,62,0,0,7381,302,0,1],
["p2",12,"op","chess_char_4_04_b",1,"uniequip_002_ines",272.31,1,26,0,286831,5830,290,256,8],
["p2",13,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",1851.09,1,56,0,25219,5607,202,31,7],
["p2",14,"op","chess_char_4_16_b",2,"uniequip_002_texas2",0,0,53,0,105158,8892,178,187,5],
["p2",15,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",2548.55,1,59,0,245655,5827,262,55,5],
["p2",16,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",0,0,51,0,203707,3584,462,170,3],
["p2",17,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1573.58,1,14,0,0,4452,515,0,0],
["p2",18,"op","chess_char_4_12_b",2,"uniequip_002_glady",0,0,20,0,75126,9258,2532,87,5],
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",0,0,4,1,66605,3677,1688,66,19],
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",1224.14,1,58,0,152849,2733,262,72,13],
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",705.31,1,59,4,131873,7528,420,24,1],
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",1900.22,1,58,0,17700,9171,1117,15,2],
["p1",3,"op","chess_char_5_14_b",1,"none",0,0,49,0,44334,13392,2872,19,9],
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",0,0,56,0,16983,9690,38,10,1],
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",792.86,1,61,4,373855,3374,10736,110,15],
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",0,0,55,1,81328,10164,552,32,4],
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",0,0,19,0,109465,4097,137,150,4],
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1058.29,1,63,1,97795,2559,395,36,12],
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",0,0,52,0,0,4335,13944,32,3],
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1695,1,68,0,105862,4163,87,50,2],
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",2188.83,1,66,0,377,7381,183,1,1],
["p2",12,"op","chess_char_4_04_b",1,"uniequip_002_ines",2149,1,64,0,189683,6159,30,182,7],
["p2",13,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",1732.75,1,62,0,29484,5607,83,37,9],
["p2",14,"op","chess_char_4_16_b",2,"uniequip_002_texas2",0,0,57,0,104682,11074,310,154,6],
["p2",15,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",0,0,53,0,211676,5907,57,42,4],
["p2",16,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",0,0,54,0,148737,3584,462,128,2],
["p2",17,"op","chess_char_4_10_b",1,"uniequip_002_aroma",0,0,14,0,0,3172,310,0,0],
["p2",18,"op","chess_char_4_12_b",2,"uniequip_002_glady",2232,1,67,0,64191,5877,2900,74,5],
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",1501.32,1,60,1,69313,2825,348,69,20],
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",1105.8,1,65,0,160021,2518,143,71,13],
["p2",21,"token","token_10041_cathy_catsld",null,null,100,1,21,0,0,0,0,0,null],
["p2",22,"token","token_10041_cathy_catsld",null,null,100,1,22,0,0,0,0,0,null]
],
"enemies": {"enemy_1010_demon":[4,4,0,2399,200612],"enemy_1438_dspred":[10,10,0,18789,882694],"enemy_1521_dslily":[1,0,0,106920,1310397]},
"hooks": [1,60,6000,1412,1519,3473,3619,7435,42,44,137,135,14,39147,1338,16,15,0,1,42,0,41,1],
"events": {"atk":1655,"deploy":45,"die":44,"dmg":3602,"engage":17,"fx":970,"heal":326,"skill":272,"spawn":37,"status":1032},
"enemies": {"enemy_1010_demon":[4,4,0,2399,200612],"enemy_1438_dspred":[10,7,3,17928,766125],"enemy_1521_dslily":[1,0,0,95770,990623]},
"hooks": [1,66,6000,1164,1243,2884,3011,5758,47,52,120,117,15,33717,1094,14,15,3,1,50,0,31,1],
"events": {"atk":1392,"deploy":51,"die":49,"dmg":2997,"engage":18,"fx":781,"heal":197,"leak":3,"skill":237,"spawn":37,"status":944},
"fx": {
"aoe": 35,
"appear": 5,
"aoe": 24,
"appear": 7,
"blink": 2,
"burst": 41,
"charge": 7,
"counter": 14,
"crit": 87,
"dilemma": 5,
"disappear": 5,
"displace": 31,
"burst": 31,
"charge": 9,
"counter": 15,
"crit": 62,
"dilemma": 4,
"disappear": 7,
"displace": 28,
"dodge": 1,
"explosion": 13,
"frostNova": 19,
"frostNova": 20,
"grow": 1,
"iceSpike": 163,
"iceSpike": 119,
"overclock": 1,
"pull": 5,
"quadShot": 3,
"ripple": 23,
"pull": 4,
"quadShot": 2,
"ripple": 14,
"rockfall": 18,
"sentry": 1,
"sermon": 1,
"shadowWeave": 1,
"shield": 4,
"soul": 6,
"sp": 18,
"stealth": 8,
"swordRain": 31,
"swordStorm": 5,
"sentry": 3,
"sermon": 2,
"shadowWeave": 4,
"shield": 5,
"soul": 4,
"sp": 6,
"stealth": 7,
"swordRain": 35,
"swordStorm": 6,
"tentacle": 6,
"tide": 5,
"tornado": 5,
"tornadoPulse": 25,
"tornadoPulse": 20,
"weightless": 4,
"zone": 371
"zone": 287
},
"snaps": "c2a7999d 8a4c19ba a9160fe3 7790e2d3 b4c7df2c aeea651a 14cb22cd 25ce984d 1dae4eaa 3b5bc6f4 cea353c7 a707d801 93c5ab85 abfa7f42 649abe2c 3a9580f7 d78d904b 13046d3f 101d5dee 5b6642d4"
"snaps": "c2a7999d e9680942 e3840c7b 42c88c80 94a6e7f9 e3adc041 fb0ab7c9 a417daa3 276e9da9 3fe787bd efdfd5a6 be8d612e 6d73c0e0 c042c02d 8eb02031 e24fb236 cdcefb5e 80d6b414 6b9e081e 0da412b8"
},
"boss-boss_4-solo": {
"about": "盐风主教昆图斯 solo pool 4200000: chess_char_4_17_b chess_char_4_18_b chess_char_4_23_b chess_char_4_19_b chess_char_4_22_b chess_char_4_20_b chess_char_4_21_b chess_char_4_24_b chess_char_4_25_b chess_char_4_26_b",