From 895653fc1076dbd99c51a6f291f452936f32dcb8 Mon Sep 17 00:00:00 2001 From: sganggs Date: Thu, 8 Oct 2026 20:21:19 +0800 Subject: [PATCH] =?UTF-8?q?feedback7=20R22-GHSIM:=20the=20=E5=B8=9D?= =?UTF-8?q?=E5=9B=BD=E7=82=AE=E7=81=AB=E5=85=88=E5=85=86=E8=80=85=20shells?= =?UTF-8?q?=20hit=20every=20ally=20whose=20collider=20touches=20their=201.?= =?UTF-8?q?2=20circle=20=E2=80=94=20the=20impact=20tile=20and=20the=208=20?= =?UTF-8?q?around=20it,=20not=20just=20the=20cross=20(GitHub=20#364);=20go?= =?UTF-8?q?lden:=20roster-001,=20roster-019,=20diy-020=20move?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Seen (#364, FrogThai): the 中枢先兆者's shell hit the target and its orthogonal neighbours only — repro: a diagonal neighbour (√2 ≈ 1.414 from the impact) took nothing, as did a tile two away; the reporter saw the 3×3 in the official game. Official: PRTS 天赋 of both 先兆者 (one shared kit) 「弹道对半径1.2范围内的所有我方单位造成攻击力100%的无来源物理伤害(此弹道 不会强制击中主目标,碰撞无视迷彩)」. The landing is a 碰撞; PRTS 作战机制 §碰撞体积 (docs/SIM.md, constants.js): collider tests are the common way and an ally's collider is a 0.25 circle — the rule the engine already applies to ranged enemies' reach. Now (content/enemies/fly.js kitShell): an ally is hit when its collider touches the 1.2 circle — centre distance ≤ 1.45 (SHELL_REACH = SHELL_RADIUS + ALLY_COLLIDER_RADIUS): the impact tile and the 8 around it, never two tiles away. The telegraph and the blast are drawn at that reach. [ASSUMED] for this shell (its text names the 碰撞); other content zones keep their point radius as before. Golden: the three battles with a 先兆者 whose shells land beside a diagonal operator (roster-001 中枢先兆者, roster-019 and diy-020 先兆者). --- server/sim/content/enemies/fly.js | 23 ++++--- test/content/enemies_bosses.test.js | 22 ++++++ test/golden/diy.json | 34 +++++----- test/golden/roster.json | 100 ++++++++++++++-------------- 4 files changed, 104 insertions(+), 75 deletions(-) diff --git a/server/sim/content/enemies/fly.js b/server/sim/content/enemies/fly.js index 03d9ab6b..49b71a54 100644 --- a/server/sim/content/enemies/fly.js +++ b/server/sim/content/enemies/fly.js @@ -1,7 +1,7 @@ // server/sim/content/enemies/fly.js — FLY 飞行 kits (auras, 暴鸰, the “萨科塔”, 假想敌:黑云, shells, seeds) and their part of KITS // (split from content/enemies.js). -import { TICK, MOVE_SCALE, PROJECTILE_SPEEDS } from '../../constants.js'; +import { TICK, MOVE_SCALE, PROJECTILE_SPEEDS, ALLY_COLLIDER_RADIUS } from '../../constants.js'; import { num, T, hurt, targetsNear, allTargets, areaAllies, areaAlliesInTiles, fieldAllies, byPriority, spawnChildren, stepToward, setForm, expose, @@ -27,9 +27,14 @@ export const BOMBD_RELEASE = 8 / 30; * 提升至200%"; the cast's end clip is already the bomb-less Idle_2 (`_endAnimKey`). */ export const BOMBD_POST_DELAY = 0.667; -/** 帝国炮火先兆者 shell (PRTS "普通攻击向目标所在位置发射一枚于3秒后命中的弹道,弹道对半径1.2范围内的所有我方单位造成攻击力 - * 100%的无来源物理伤害 … ※弹道始终使用缓存攻击力"): flight time and blast radius. */ -const SHELL_FLIGHT = 3, SHELL_RADIUS = 1.2; +/** 帝国炮火先兆者 shell (PRTS 天赋 of both 先兆者 "普通攻击向目标所在位置发射一枚于3秒后命中的弹道,弹道对半径1.2范围内的所有我方单位造成 + * 攻击力100%的无来源物理伤害(此弹道不会强制击中主目标,碰撞无视迷彩)… ※弹道始终使用缓存攻击力"): flight time and the written + * blast radius. The landing is a 碰撞 — PRTS 作战机制 §碰撞体积: collider tests are the common way, an ally's collider a + * circle of ALLY_COLLIDER_RADIUS — so an ally is hit when its collider touches the 1.2 circle: centre distance ≤ 1.45 + * (SHELL_REACH), the impact tile and the 8 around it (a diagonal tile centre is √2 ≈ 1.414 away; two tiles, 2, stay + * out) — the 3×3 a player saw in the official game (GitHub #364; until 0.2.2 the bare 1.2: the cross only). + * [ASSUMED] for this shell (its text names the 碰撞); other content zones keep their point radius (constants.js). */ +const SHELL_FLIGHT = 3, SHELL_RADIUS = 1.2, SHELL_REACH = SHELL_RADIUS + ALLY_COLLIDER_RADIUS; /** 假想敌:黑云 抓取: the blackboard radius counts ×2.5 (PRTS "2.5倍可变半径": range_radius 1.5 → 3.75), at most 3 prey, * "短暂延迟后" the 延迟吞噬 lands (delay [ASSUMED] 0.5 s); its SP (= 全弹发射 hits) caps at the data's spData.maxSp. */ @@ -206,7 +211,8 @@ function kitBombd(ab) { /** * 帝国炮火先兆者 / 中枢先兆者 (PRTS): every normal attack fires a shell at the target's position that lands SHELL_FLIGHT s - * later and deals 100 % of the ATK at launch as physical damage without a source to every ally within SHELL_RADIUS + * later and deals 100 % of the ATK at launch as physical damage without a source to every ally whose collider touches the + * SHELL_RADIUS circle (SHELL_REACH) * (it may miss the target that moved away; "碰撞无视迷彩"). The landing is the shell's area selection (areaAllies of the * enemy that fired it: no unblocking 隐匿 ally; the damage stays 无来源). The attack itself is the engine's (cooldown, * pause, 'atk' event of kind 'mortar'); the damage is the shell's (ai.js `profile.deferHit`). @@ -218,10 +224,11 @@ function kitShell() { const atk = e.s.atk * (e.profile.atkScale ?? 1); for (const t of c.targets) { const x = t.x, y = t.y; - b.fx('bombardShell', { x, y, id: e.id, r: SHELL_RADIUS, t: SHELL_FLIGHT }); + // (the telegraph and the blast are drawn at the reach: every ally whose centre lies in the circle is hit) + b.fx('bombardShell', { x, y, id: e.id, r: SHELL_REACH, t: SHELL_FLIGHT }); b.after(SHELL_FLIGHT, () => { - b.fx('bombard', { x, y, r: SHELL_RADIUS, kind: 'emppnt' }); - for (const u of areaAllies(b, e, x, y, SHELL_RADIUS)) hurt(b, null, u, atk, 'phys', { isSkill: false, tags: ['shell'] }); + b.fx('bombard', { x, y, r: SHELL_REACH, kind: 'emppnt' }); + for (const u of areaAllies(b, e, x, y, SHELL_REACH)) hurt(b, null, u, atk, 'phys', { isSkill: false, tags: ['shell'] }); }); } }, diff --git a/test/content/enemies_bosses.test.js b/test/content/enemies_bosses.test.js index aa945336..80d57185 100644 --- a/test/content/enemies_bosses.test.js +++ b/test/content/enemies_bosses.test.js @@ -1098,6 +1098,28 @@ test(`${nm('enemy_1112_emppnt')} / 中枢: every attack is a shell that lands 3 } }); +test(`${nm('enemy_1112_emppnt_2')} / 先兆者: the shell's 1.2 circle takes every ally whose collider touches it — the impact tile and the 8 around it, not the cross (GitHub #364)`, () => { + for (const key of ['enemy_1112_emppnt_2', 'enemy_1112_emppnt']) { + // the enemy on (10, 8) reaches only the wall on (10, 6): the impact; the others stand around it, out of its reach + const h = arena({ units: [ + { chessId: 't_wall', row: 10, col: 6 }, { chessId: 't_wall2', row: 10, col: 5 }, + { chessId: 't_wall3', row: 9, col: 5 }, { chessId: 't_wall4', row: 10, col: 4 }, + ], captureNoisy: true }); + h.step(); + const e = put(h, key, [10, 8], { route: 2 }); + assert.ok(h.runUntil(() => e.stats.attacks >= 1, 10), 'attacks'); + const shell = h.eventsOf('fx').find((ev) => ev[1] === 'bombardShell'); + assert.ok(Math.abs(shell[4].r - 1.45) < 1e-9, 'drawn at the reach: 1.2 + the 0.25 collider'); + h.run(3.1); + const taken = (id) => h.unit(id).stats.taken; + for (const [id, what] of [['t_wall', 'the impact'], ['t_wall2', 'its orthogonal neighbour (1 away)'], ['t_wall3', 'a diagonal neighbour (√2 away)']]) { + assert.ok(Math.abs(taken(id) - e.s.atk) < 1e-6, `${key}: ${what} takes the shell`); + } + assert.equal(taken('t_wall4'), 0, `${key}: two tiles away stays out`); + checkInvariants(h.b); + } +}); + test(`${nm('enemy_10084_hlegle')}: never attacks a flying ally (不会攻击飞行单位) — a ground one in range instead`, () => { // a flying ally (the 炎佑 is one) deployed after the wall, so the engine's order (latest deployed) would pick it const h = arena({ units: [{ chessId: 't_wall', row: 10, col: 6 }, { chessId: 't_wall2', row: 10, col: 8 }] }); diff --git a/test/golden/diy.json b/test/golden/diy.json index adddf669..068e674d 100644 --- a/test/golden/diy.json +++ b/test/golden/diy.json @@ -794,30 +794,30 @@ "total": 117, "unspawned": 0, "bossHpLeft": null, - "rngDraws": 267, + "rngDraws": 261, "errors": {"count":0,"kinds":[]}, - "players": {"p1":{"killed":16,"total":117,"perfect":false,"leaks":101,"leaksUncounted":0,"coins":0,"dmg":110512,"bossDmg":0,"heal":0,"deaths":23,"layerGains":{}}}, + "players": {"p1":{"killed":16,"total":117,"perfect":false,"leaks":101,"leaksUncounted":0,"coins":0,"dmg":99595,"bossDmg":0,"heal":0,"deaths":23,"layerGains":{}}}, "units": [ ["p1",1,"op","chess_char_5_diy1_b",0,"uniequip_002_heyak",0,0,141,0,11532,5277,0,17,4], - ["p1",2,"op","chess_char_5_diy2_b",1,"uniequip_002_heyak",0,0,142,3,8656,5277,0,6,1], + ["p1",2,"op","chess_char_5_diy2_b",1,"uniequip_002_heyak",0,0,142,2,13429,5277,0,8,1], ["p1",3,"op","chess_char_5_diy1_b",2,"uniequip_002_heyak",0,0,133,0,8167,5277,0,12,0], - ["p1",4,"op","chess_char_5_diy2_b",0,"uniequip_003_heyak",745.03,1,143,1,9977,4487,0,10,3], - ["p1",5,"op","chess_char_5_diy1_b",1,"uniequip_003_heyak",0,0,5,1,7936,1744,0,7,1], - ["p1",6,"op","chess_char_5_diy2_b",2,"uniequip_003_heyak",0,0,8,2,22948,1744,0,10,1], - ["p1",7,"op","chess_char_5_diy1_b",0,"uniequip_004_heyak",0,0,80,3,4698,3478,0,7,2], - ["p1",8,"op","chess_char_5_diy2_b",1,"uniequip_004_heyak",0,0,82,2,7236,3478,0,9,1], - ["p1",9,"op","chess_char_5_diy1_b",2,"uniequip_004_heyak",0,0,79,0,7099,3478,0,10,0], - ["p1",10,"op","chess_char_6_diy1_a",0,null,0,0,10,1,1508,1380,0,4,1], - ["p1",11,"op","chess_char_6_diy2_a",1,null,0,0,75,0,1697,2760,0,3,0], - ["p1",12,"op","chess_char_6_diy1_a",2,null,0,0,3,3,19057,1380,0,7,1], + ["p1",4,"op","chess_char_5_diy2_b",0,"uniequip_003_heyak",745.03,1,143,2,10896,4487,0,11,4], + ["p1",5,"op","chess_char_5_diy1_b",1,"uniequip_003_heyak",0,0,5,1,5394,1744,0,5,1], + ["p1",6,"op","chess_char_5_diy2_b",2,"uniequip_003_heyak",0,0,8,2,16520,1744,0,9,1], + ["p1",7,"op","chess_char_5_diy1_b",0,"uniequip_004_heyak",0,0,81,3,4698,3478,0,7,2], + ["p1",8,"op","chess_char_5_diy2_b",1,"uniequip_004_heyak",0,0,9,2,5566,1739,0,5,1], + ["p1",9,"op","chess_char_5_diy1_b",2,"uniequip_004_heyak",0,0,80,0,7934,3478,0,12,0], + ["p1",10,"op","chess_char_6_diy1_a",0,null,0,0,75,1,1168,2760,0,4,1], + ["p1",11,"op","chess_char_6_diy2_a",1,null,0,0,76,0,1697,2760,0,3,0], + ["p1",12,"op","chess_char_6_diy1_a",2,null,0,0,3,3,12593,1380,0,4,1], ["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null] ], - "enemies": {"enemy_1005_yokai":[51,11,40,0,33724],"enemy_1005_yokai_2":[54,5,49,20376,35463],"enemy_1112_emppnt":[12,0,12,0,41325]}, - "hooks": [1,143,6811,222,233,299,299,0,39,140,15,15,0,7842,192,0,117,101,1,39,0,0,0], - "events": {"atk":346,"deploy":24,"die":39,"dmg":299,"engage":11,"fx":280,"leak":101,"skill":30,"spawn":131,"status":345}, - "fx": {"bombard":32,"bombardShell":32,"tornado":192,"tornadoPulse":24}, - "snaps": "1059b89c 6d126d74 36b0162d 5f3c3def bea20f53 df2b0823 0facf77d 1bebe14e 3f3f75b7 bb7367a6 b9de1305 563b9e34 4d8ac78e 5cbb2592 9e319bc1 262aa531 28129a72 6a5bd285 565917fe 7062b7e8 ebd4bd17 166fe5f3 abc7bb22" + "enemies": {"enemy_1005_yokai":[51,10,41,0,27983],"enemy_1005_yokai_2":[54,6,48,16577,33757],"enemy_1112_emppnt":[12,0,12,0,37856]}, + "hooks": [1,143,6811,196,203,284,284,0,39,140,16,16,0,7583,188,0,117,101,1,39,0,0,0], + "events": {"atk":320,"deploy":24,"die":39,"dmg":284,"engage":11,"fx":198,"leak":101,"skill":32,"spawn":131,"status":299}, + "fx": {"bombard":25,"bombardShell":25,"tornado":131,"tornadoPulse":17}, + "snaps": "1059b89c 0d0ab14e fff04efc 4b100ad5 3133142e 42f10f08 552cfc97 2c32a76e 2878d371 3d4145d0 7b9c9b96 60fdd264 d214d7b9 22d073f8 5ee9268f fc13e42a f98c6910 8622b2f9 848f0531 0f883096 7cba8373 7565b444 88e454e7" }, "diy-021": { "about": "6_diy1_b=heyak/S1 6_diy2_b=heyak/S2 6_diy1_b=heyak/S3 6_diy2_b=heyak/S1/002_heyak 6_diy1_b=heyak/S2/002_heyak 6_diy2_b=heyak/S3/002_heyak 6_diy1_b=heyak/S1/003_heyak 6_diy2_b=heyak/S2/003_heyak 6_diy1_b=heyak/S3/003_heyak 6_diy2_b=heyak/S1/004_heyak 6_diy1_b=heyak/S2/004_heyak 6_diy2_b=heyak/S3/004_heyak", diff --git a/test/golden/roster.json b/test/golden/roster.json index d66021ac..cfde3e33 100644 --- a/test/golden/roster.json +++ b/test/golden/roster.json @@ -24,47 +24,47 @@ "total": 31, "unspawned": 0, "bossHpLeft": null, - "rngDraws": 59, + "rngDraws": 71, "errors": {"count":0,"kinds":[]}, - "players": {"p1":{"killed":26,"total":31,"perfect":false,"leaks":5,"leaksUncounted":0,"coins":8,"dmg":175893,"bossDmg":0,"heal":12146,"deaths":6,"layerGains":{}}}, + "players": {"p1":{"killed":26,"total":31,"perfect":false,"leaks":5,"leaksUncounted":0,"coins":8,"dmg":187475,"bossDmg":0,"heal":12128,"deaths":6,"layerGains":{}}}, "units": [ - ["p1",1,"op","chess_char_1_02_a",1,null,3413.8,1,7,0,0,470,0,0,1], - ["p1",2,"op","chess_char_1_04_a",1,null,2758.75,1,9,3,22365,259,0,44,2], - ["p1",3,"op","chess_char_1_10_a",0,null,600.05,1,48,1,2231,2387,2541,20,13], - ["p1",4,"op","chess_char_1_08_a",1,null,0,0,12,7,30185,9333,0,31,2], - ["p1",5,"op","chess_char_1_12_a",1,null,0,0,15,3,21392,5549,1509,23,1], - ["p1",6,"op","chess_char_1_01_a",1,null,1403.75,1,4,3,10421,0,0,23,1], + ["p1",1,"op","chess_char_1_02_a",1,null,2478.05,1,7,0,0,1435,0,0,1], + ["p1",2,"op","chess_char_1_04_a",1,null,146.83,1,9,3,23185,4942,0,47,2], + ["p1",3,"op","chess_char_1_10_a",0,null,424.05,1,48,0,3856,3742,3046,28,13], + ["p1",4,"op","chess_char_1_08_a",1,null,0,0,12,3,11737,6202,0,18,1], + ["p1",5,"op","chess_char_1_12_a",1,null,0,0,15,4,20668,5498,1459,23,1], + ["p1",6,"op","chess_char_1_01_a",1,null,558.75,1,4,3,14495,895,0,38,1], ["p1",7,"op","chess_char_1_03_a",1,null,964.63,1,5,0,0,898,0,0,0], - ["p1",8,"op","chess_char_1_06_a",1,null,0,0,11,2,14672,1854,5358,36,1], - ["p1",9,"op","chess_char_1_07_a",0,null,0,0,13,4,17329,2979,0,27,0], - ["p1",10,"op","chess_char_1_09_a",1,null,2152.5,1,6,0,25109,5400,0,23,1], - ["p1",11,"op","chess_char_1_13_a",1,null,0,0,14,0,11348,4262,0,25,1], - ["p1",12,"op","chess_char_1_14_a",1,null,1058.43,1,8,3,20842,1959,0,15,1], + ["p1",8,"op","chess_char_1_06_a",1,null,597.56,1,49,1,11022,3038,3553,23,1], + ["p1",9,"op","chess_char_1_07_a",0,null,0,0,13,3,14602,2371,0,23,0], + ["p1",10,"op","chess_char_1_09_a",1,null,1268.3,1,6,0,34377,6304,0,27,1], + ["p1",11,"op","chess_char_1_13_a",1,null,1141.25,1,50,0,9909,3261,0,20,1], + ["p1",12,"op","chess_char_1_14_a",1,null,653.21,1,8,9,43626,3827,0,18,1], ["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null], ["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null], - ["p1","~1","token","char_605_cmedic",null,null,1202,1,16,0,0,0,2737,32,2] + ["p1","~1","token","char_605_cmedic",null,null,1202,1,16,0,0,0,4070,32,2] ], "enemies": { "enemy_10001_trslim": [1,1,0,9,4320], - "enemy_1005_yokai_3": [1,1,0,5873,28800], - "enemy_1010_demon_2": [1,1,0,3684,14400], + "enemy_1005_yokai_3": [1,1,0,4900,28800], + "enemy_1010_demon_2": [1,1,0,3877,14400], "enemy_1026_aghost": [1,1,0,0,3648], - "enemy_1112_emppnt_2": [1,0,0,0,7519], - "enemy_1116_liprr": [18,17,0,265,90996], - "enemy_1168_dumage": [1,1,0,1621,4320], + "enemy_1112_emppnt_2": [1,0,0,0,10957], + "enemy_1116_liprr": [18,17,0,382,92690], + "enemy_1168_dumage": [1,1,0,2482,4320], "enemy_1198_msfshu_2": [1,1,0,0,4], "enemy_1229_darmy_2": [1,1,0,669,5280], "enemy_1288_duskls": [1,1,0,396,4805], - "enemy_1381_winman": [1,1,0,26,5568], - "enemy_1500_skulsr": [1,0,0,983,3307], - "enemy_2004_balloon": [1,0,0,0,2927], + "enemy_1381_winman": [1,1,0,13,5568], + "enemy_1500_skulsr": [1,0,0,478,5672], + "enemy_2004_balloon": [1,0,0,0,7012], "enemy_9010_acpupp": [1,0,0,0,0] }, - "hooks": [1,48,2700,377,377,664,666,325,32,32,26,23,16,15660,113,30,31,0,1,33,0,0,0], - "events": {"atk":423,"bounty":4,"deploy":14,"die":32,"dmg":666,"engage":10,"fx":76,"heal":321,"skill":50,"spawn":47,"status":134}, - "fx": {"aoe":2,"bombard":8,"bombardShell":9,"counter":15,"crit":16,"dp":2,"ember":1,"explode":5,"heal":12,"liberate":1,"phase":1,"summon":1,"taunt":1,"telegraph":1,"zone":1}, - "snaps": "4fb2b17d c3ab03ad ba4fbecd be5ad383 5c83697d e9741d62 82d0eeff f215e669 22d6d8d7" + "hooks": [1,50,2700,386,386,697,699,322,32,32,25,23,16,14727,101,32,31,0,1,33,0,0,0], + "events": {"atk":433,"bounty":4,"deploy":16,"die":32,"dmg":699,"engage":10,"fx":76,"heal":318,"skill":49,"spawn":47,"status":113}, + "fx": {"aoe":1,"bombard":9,"bombardShell":9,"counter":12,"crit":19,"dp":1,"ember":1,"explode":5,"heal":13,"liberate":1,"phase":1,"summon":1,"taunt":1,"telegraph":1,"zone":1}, + "snaps": "4fb2b17d c3ab03ad ba4fbecd 8acf7af3 38caabab f066cab4 47ee9cdf f118754f 0cea250b" }, "roster-002": { "about": "pass 0 band 2: chess_char_1_02_b chess_char_1_20_a chess_char_1_04_b chess_char_1_08_b chess_char_1_18_a chess_char_1_19_a chess_char_1_17_a chess_char_1_01_b chess_char_1_03_b chess_char_1_06_b chess_char_1_07_b chess_char_1_09_b", @@ -1214,14 +1214,14 @@ "round": 13, "seed": 116466041, "waveId": "act1autochess_h06", - "time": 197.33, - "ticks": 5920, + "time": 200.93, + "ticks": 6028, "reason": "cleared", "killed": 108, "total": 108, "unspawned": 0, "bossHpLeft": null, - "rngDraws": 755, + "rngDraws": 672, "errors": {"count":0,"kinds":[]}, "players": { "p1": { @@ -1233,27 +1233,27 @@ "coins": 12, "dmg": 3002858, "bossDmg": 0, - "heal": 141615, + "heal": 151109, "deaths": 0, "layerGains": {"deputShip":12} } }, "units": [ - ["p1",1,"op","chess_char_6_15_b",2,"uniequip_002_qiubai",6796.8,1,14,25,906021,52826,0,205,3], - ["p1",2,"op","chess_char_6_19_b",2,"uniequip_002_blkkgt",6087.4,1,9,8,258235,2105,0,8,4], - ["p1",3,"op","chess_char_5_01_b",0,"uniequip_003_excu2",4149.22,1,10,0,12329,1953,300,5,0], + ["p1",1,"op","chess_char_6_15_b",2,"uniequip_002_qiubai",6263.63,1,14,26,881807,49881,0,208,3], + ["p1",2,"op","chess_char_6_19_b",2,"uniequip_002_blkkgt",6087.4,1,9,8,257902,2105,0,9,3], + ["p1",3,"op","chess_char_5_01_b",0,"uniequip_003_excu2",4049.22,1,10,0,8361,1953,200,3,0], ["p1",4,"op","chess_char_5_05_b",0,"none",12815,1,7,0,0,1000,100,0,0], - ["p1",5,"op","chess_char_6_17_b",2,"uniequip_002_nearl2",10599.35,1,24,21,389315,46523,0,97,3], - ["p1",6,"op","chess_char_6_13_b",1,"uniequip_002_angel2",4824.27,1,2,30,616754,10442,1358,64,2], - ["p1",7,"op","chess_char_6_14_b",2,"uniequip_002_lumen",4177.8,1,3,0,0,0,9404,76,1], - ["p1",8,"op","chess_char_6_16_b",2,"uniequip_002_halo2",3165.8,1,4,1,79775,0,0,48,2], - ["p1",9,"op","chess_char_6_18_b",2,"uniequip_002_whitw2",3390.2,1,8,17,556140,1000,0,72,3], - ["p1",10,"op","chess_char_6_20_b",2,"uniequip_002_agoat2",3475.3,1,12,0,0,27274,130454,67,2], + ["p1",5,"op","chess_char_6_17_b",2,"uniequip_002_nearl2",10122.44,1,24,20,425280,48361,0,105,3], + ["p1",6,"op","chess_char_6_13_b",1,"uniequip_002_angel2",4873,1,2,28,540782,10588,1317,60,2], + ["p1",7,"op","chess_char_6_14_b",2,"uniequip_002_lumen",4177.8,1,3,0,0,0,9754,78,1], + ["p1",8,"op","chess_char_6_16_b",2,"uniequip_002_halo2",3165.8,1,4,1,81240,0,0,48,2], + ["p1",9,"op","chess_char_6_18_b",2,"uniequip_002_whitw2",3390.2,1,8,17,575679,1000,0,72,3], + ["p1",10,"op","chess_char_6_20_b",2,"uniequip_002_agoat2",3475.3,1,12,0,0,37945,139738,69,2], ["p1",11,"op","chess_char_5_02_b",0,"none",2945.8,1,1,0,0,0,0,0,0], - ["p1",12,"op","chess_char_5_03_b",0,"uniequip_003_blaze2",3414.4,1,5,4,136237,0,0,68,9], + ["p1",12,"op","chess_char_5_03_b",0,"uniequip_003_blaze2",3414.4,1,5,5,170767,0,0,86,11], ["p1","~1","token","token_10019_nearl2_sword",null,null,6491.98,0,27,0,0,1788,0,0,null], - ["p1","~2","token","token_10019_nearl2_sword",null,null,6324.82,0,82,1,19770,1916,0,20,null], - ["p1","~3","token","token_10019_nearl2_sword",null,null,4911.82,0,115,1,28283,1688,0,9,null] + ["p1","~2","token","token_10019_nearl2_sword",null,null,6438.66,0,80,1,21873,1764,0,18,null], + ["p1","~3","token","token_10019_nearl2_sword",null,null,2379.55,0,114,2,39169,4220,0,25,null] ], "enemies": { "enemy_1005_yokai_2": [1,1,0,51,4443], @@ -1262,19 +1262,19 @@ "enemy_1112_emppnt": [1,1,0,0,37265], "enemy_1166_dusbr_2": [1,1,0,30,12613], "enemy_1198_msfshu": [1,1,0,0,9], - "enemy_1229_darmy": [28,28,0,5500,337106], - "enemy_1229_darmy_2": [57,57,0,33649,898662], + "enemy_1229_darmy": [28,28,0,6548,337106], + "enemy_1229_darmy_2": [57,57,0,32511,898662], "enemy_1283_sgkill_2": [1,1,0,14433,51598], "enemy_1367_dseed": [1,1,0,0,8600], "enemy_1439_dslntf_2": [1,1,0,20025,94596], "enemy_2003_rockman": [1,1,0,1417,214991], - "enemy_9007_acelem": [12,12,0,39646,1238347], - "enemy_9009_acfort": [1,1,0,4054,68797] + "enemy_9007_acelem": [12,12,0,41756,1238347], + "enemy_9009_acfort": [1,1,0,3643,68797] }, - "hooks": [1,125,5920,886,886,2764,3341,664,108,113,29,26,59,22540,1430,76,108,0,1,108,2,6,0], - "events": {"atk":1273,"bounty":6,"deploy":17,"die":113,"dmg":3139,"engage":10,"fx":524,"heal":534,"layer":2,"skill":55,"spawn":123,"status":434}, - "fx": {"airstrike":19,"aoe":9,"beam":20,"blink":2,"bombard":10,"bombardShell":10,"burst":6,"cleanse":2,"displace":4,"drone":341,"droneLock":50,"drones":3,"emergency":1,"extraAttack":1,"finale":4,"garrison":2,"garrisonGrant":1,"link":5,"radiantSword":3,"slash":22,"steal":2,"summon":3,"sunBurst":1,"talent":3}, - "snaps": "01a34277 0e7ad63e efd260c2 e5d761b8 09e06c1f e2015a51 1b84ecbd 66a4bb37 d5349acd 92a0e019 e2770fd2 ad03eaae 979013d9 6daad463 50ac1a94 3bd9f1b9 c168ed0a 0203a659 b9f0ce4f c81058f7" + "hooks": [1,125,6028,925,925,2810,3369,649,108,113,30,27,55,22777,1447,79,108,0,1,108,2,7,0], + "events": {"atk":1296,"bounty":6,"deploy":17,"die":113,"dmg":3164,"engage":10,"fx":532,"heal":537,"layer":2,"skill":57,"spawn":123,"status":448}, + "fx": {"airstrike":17,"aoe":11,"beam":24,"blink":2,"bombard":10,"bombardShell":10,"burst":7,"cleanse":2,"displace":4,"drone":353,"droneLock":45,"drones":3,"emergency":1,"finale":3,"garrison":2,"garrisonGrant":1,"link":4,"radiantSword":3,"slash":21,"steal":2,"summon":3,"sunBurst":1,"talent":3}, + "snaps": "01a34277 0e7ad63e efd260c2 caa9f746 70118f40 b3efb03c de6d6921 949345a2 044a2b7f 708e7b55 4d219240 d5449fa5 16d7d388 9acd59d5 6a170c8e 5cb70efa f2ae5891 7f3e163c 63a11ec8 d5bcbf3a" }, "roster-020": { "about": "pass 1 band 1: chess_char_1_02_a chess_char_1_04_a chess_char_1_10_a chess_char_1_08_a chess_char_1_12_a chess_char_1_01_a chess_char_1_03_a chess_char_1_06_a chess_char_1_07_a chess_char_1_09_a chess_char_1_13_a chess_char_1_14_a",