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:
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 });
|
||||
},
|
||||
},
|
||||
|
||||
@@ -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
@@ -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",
|
||||
|
||||
Reference in new issue
Block a user