feedback5 R19E: an enemy finishes its attack clip after its block ends — the 鸭爵 swap's 流泪小子 no longer walks on the tick its strike stuns its blocker (community report of 2026-10-07 「哭狗瞬间隐匿没有后摇」, GitHub #214 by @FrogThai); golden: 216 scenarios move

ai.js enemyAttack set the post-strike stand only for an unblocked ranged enemy (`!e.blockedBy && radius > 0`), so a
melee enemy released by its own strike walked on that very tick. 流泪小子 (enemy_2034_sythef_2, the strategy's version;
「泪眼汪汪」 / 「哭狗」 in the reports) stuns its blocker with every hit, the stunned blocker lets it go and its 隐匿 is
back 0 s later: on 0255afd it walked off the tick of each strike (four non-attacking walls in a lane: 8 stuns, 19.8 s
隐匿 / 9.0 s revealed, leaked at 28.9 s). PRTS 状态机: an enemy's ATTACK state 「每帧检查异常状态…攻击结束后回退到MOVE状态」
and COMBAT 「逻辑同ATTACK」 — only a character's COMBAT 「检测到不存在阻挡对象时强行切回IDLE状态」 — so an enemy finishes its
attack when its blocker goes. Now every enemy stands for the rest of its clip after a strike (attackStand; a blocked one
never walks, so it shows only when the block ends meanwhile: its blocker stunned or knocked out by that strike, or
gone); a stun / freeze / sleep / 浮空, leaving the field and, new, a displacement (失衡, Battle.displace) end the stand.
流泪小子 now stands 0.8 s (its 1.567 s clip, strike at 0.767), 隐匿, and a blocker whose stun ended often takes it over
again: the same lane 13 stuns, 29.1 s 隐匿 / 12.8 s revealed, leaked at 42.0 s.

Checked and official, unchanged: a stunned operator blocks nothing (gamedata_const ba.stun 「无法移动、阻挡、攻击及使用技能」,
PRTS 异常效果 STUNNED 「无法攻击、释放技能、阻挡敌人类单位」 — the keeps-blocking hypothesis is wrong); 隐匿 back 0 s after a
block (PRTS 流泪小子); moveSpeed 0.8 × the level's moveMultiplier 0.5, interval 2.0 s, stun 3.5 s, MELEE (enemy_database;
PRTS 盟约记录 鸭爵 备注: 4500 HP, 3.5 s stun, 隐匿 kept); the cooldown runs on the walk, so a new blocker sees the swing at
once and the strike after the 0.767 s wind-up; a bot teammate's 鸭爵 swaps into a human's battles, the Final Assault and
the Hidden Core too (「你和队友遭遇的部分敌人」), on the replaced enemy's route.

Golden — traced in lockstep against a copy of the parent: in each of the 199 battle scenarios the first differing tick is
an enemy standing out its clip after a strike where the parent walked on; every moved match has such stands in an
earlier or the same round. roster 41 of 49 (all but -003, -005, -009, -018, -019, -025, -035, -049); bonds 21
(deputShip-low, emptyShip-low / -high, indomShip-low / -high, investShip-low, kazimierzShip-low / -high,
kjeragShip-high, lateranoShip-high, miraShip-high, raidShip-low, sargonShip-high, siracusaShip-low, soloShip-low /
-high, suntShip-low / -high, swiftShip-high, visiShip-low, yanShip-low); fields 13 (all but boss-boss_1-solo,
boss-boss_2-pair / -solo, boss-boss_6-solo, boss-boss_7-pair / -solo, hidden-boss_8-solo, hidden-boss_10-solo,
unite-1); matches 17 (all but solo-HARD-9-boosted); standins 10 of 10; diy 114 of 138 (all but -011, -012, -018, -020,
-025, -027, -029, -031, -033, -047, -053, -077, -080 … -082, -086 … -088, -091 … -093, -098, -108, -123). The
displacement rule alone moves one roster scenario.

Tests: test/sim/feedback5-attack-clip-rest.test.js (5; the four behaviour tests fail on the parent, the data pin passes
on both); test/sim (745), test/content + feedback1-ducklord (2030), test/match (593) pass. Docs: CHANGELOG 0.2.0 规则
(按官方) and 核实后不是问题, docs/history/0.2.0.md §25.22.6, docs/SIM.md, design/engine.md, DATA.md.
This commit is contained in:
sganggs committed 2026-10-07 12:56:12 +08:00
1 parent 0255afd12b
commit ef25c03525
14 files changed
+3934 -3726

No files matched your search

+2
View File
@@ -70,6 +70,7 @@
- 自制投石机「索敌不受阻挡影响」:被站在排气格栅上(隐匿)的干员阻挡、范围内又没有别的干员时不会攻击,和原版一样;其他敌人仍会攻击阻挡自己的隐匿干员(社区反馈)。 - 自制投石机「索敌不受阻挡影响」:被站在排气格栅上(隐匿)的干员阻挡、范围内又没有别的干员时不会攻击,和原版一样;其他敌人仍会攻击阻挡自己的隐匿干员(社区反馈)。
- 升级调度中心后,新增的商品栏位立即放上新卡,不用等下一次刷新(社区反馈;官方教程「升级后将出现更多的商品栏位」)。 - 升级调度中心后,新增的商品栏位立即放上新卡,不用等下一次刷新(社区反馈;官方教程「升级后将出现更多的商品栏位」)。
- 被冻结或晕眩的敌人仍会被接触到的干员阻挡:干员再部署到它身边、或阻挡数空出来时会立即挡住它,隐匿的敌人也随之破隐,不用再等冻结或晕眩结束;沉睡、浮空、恐惧和不可阻挡的敌人仍然不会被阻挡(GitHub #232,感谢 @ccyl、@kukiC)。 - 被冻结或晕眩的敌人仍会被接触到的干员阻挡:干员再部署到它身边、或阻挡数空出来时会立即挡住它,隐匿的敌人也随之破隐,不用再等冻结或晕眩结束;沉睡、浮空、恐惧和不可阻挡的敌人仍然不会被阻挡(GitHub #232,感谢 @ccyl、@kukiC)。
- 敌人打出一次攻击后,即使阻挡它的干员正好被这一下晕眩、击倒或撤走,也会先把这次攻击的动作做完再继续前进(例如流泪小子约 0.8 秒),不再当场就走;被推开或拉动会打断这段动作(社区反馈「哭狗瞬间隐匿没有后摇」、GitHub #214,感谢 @FrogThai;PRTS 状态机:敌人的攻击状态在攻击结束后才回到移动)。
### 界面 ### 界面
@@ -127,6 +128,7 @@
- 本局禁用的盟约在每个难度都一样,只移除全部盟约都被禁用的干员;炎佑也会受到源石溶剂「每秒受到 60 真实伤害」的效果(PRTS 备注);两名变形同构体变成的阿戈尔照常吞噬(社区反馈)。 - 本局禁用的盟约在每个难度都一样,只移除全部盟约都被禁用的干员;炎佑也会受到源石溶剂「每秒受到 60 真实伤害」的效果(PRTS 备注);两名变形同构体变成的阿戈尔照常吞噬(社区反馈)。
- 伺夜的狼群最多 3 只狼影,吟游者的特性可以回复战术家召唤物和不屈者的生命,荒芜拉普兰德三技能期间由无人机攻击、本人不普攻,叙拉古的恐惧概率,都和官方一致;突袭的玛恩纳攻击范围内有敌人时不突袭,是盟约原文的规则(社区反馈)。 - 伺夜的狼群最多 3 只狼影,吟游者的特性可以回复战术家召唤物和不屈者的生命,荒芜拉普兰德三技能期间由无人机攻击、本人不普攻,叙拉古的恐惧概率,都和官方一致;突袭的玛恩纳攻击范围内有敌人时不突袭,是盟约原文的规则(社区反馈)。
- 以下没有复现,需要具体的对局(干员、地图、回合或录像):野鬃把敌人顶出地图、锏拉动领袖、昆图斯占地变小、炼金单元没有伤害、归溟幽灵鲨被吞噬时进入再部署、炎佑被空中单位阻挡、选 Pith 策略时联防里阿戈尔的加成被清空、满血时源石溶剂不生效(社区反馈)。 - 以下没有复现,需要具体的对局(干员、地图、回合或录像):野鬃把敌人顶出地图、锏拉动领袖、昆图斯占地变小、炼金单元没有伤害、归溟幽灵鲨被吞噬时进入再部署、炎佑被空中单位阻挡、选 Pith 策略时联防里阿戈尔的加成被清空、满血时源石溶剂不生效(社区反馈)。
- 策略「鸭爵」换来的流泪小子(「泪眼汪汪」「哭狗」):攻击使干员晕眩 3.5 秒,而被晕眩的干员不能阻挡(官方术语「晕眩:无法移动、阻挡、攻击及使用技能」),所以它会接着走向下一名干员;解除阻挡后 0 秒就重新隐匿,移动速度 0.8,攻击间隔 2 秒,走到下一名干员面前马上抬手、0.767 秒后命中,这些都与官方数据一致。AI 队友选了鸭爵,你的作战同样会换怪(策略原文「你和队友遭遇的部分敌人」),最终攻势和隐秘核心也会换,换上的敌人走被替换敌人的路线(社区反馈、GitHub #214,感谢 @FrogThai)。
## 0.1.4 — 2026-10-06 ## 0.1.4 — 2026-10-06
+1 -1
View File
@@ -370,7 +370,7 @@ blackboards (transitively). Level = `randomEnemyAttributeDict[key].level` (0 for
| `modelScale` | `0.5926` (`enemy_1005_yokai_3` 威龙) | official drawn size of the enemy's Spine model relative to the standard (user playtest #6): the battle prefab's transform scale down to its Spine renderer (Graphic × FaceSwitcher × Spine; SkeletonDataAsset.scale is 0.01 for every enemy skeleton) ÷ 0.27, the standard of 1454 of the client's 2147 enemy prefabs (2080 have exactly one Spine renderer) and of the operators' battle skins. The renderer multiplies `UNIT.modelScale` by it (render/units.js `enemyModelScale`). 125 keys (122 prefabs) carry one, from 0.5926 (威龙 0.16; 妖怪 0.7407, 寒霜 0.6667) to 2.2222 (青铜镜 / 青瓷茶器 0.6); absent = 1. Not in the game tables: `tools/build-data.mjs MODEL_SCALES` by `prefabKey`, read from the local client by `tools/local-extract/enemy_scales.py` | | `modelScale` | `0.5926` (`enemy_1005_yokai_3` 威龙) | official drawn size of the enemy's Spine model relative to the standard (user playtest #6): the battle prefab's transform scale down to its Spine renderer (Graphic × FaceSwitcher × Spine; SkeletonDataAsset.scale is 0.01 for every enemy skeleton) ÷ 0.27, the standard of 1454 of the client's 2147 enemy prefabs (2080 have exactly one Spine renderer) and of the operators' battle skins. The renderer multiplies `UNIT.modelScale` by it (render/units.js `enemyModelScale`). 125 keys (122 prefabs) carry one, from 0.5926 (威龙 0.16; 妖怪 0.7407, 寒霜 0.6667) to 2.2222 (青铜镜 / 青瓷茶器 0.6); absent = 1. Not in the game tables: `tools/build-data.mjs MODEL_SCALES` by `prefabKey`, read from the local client by `tools/local-extract/enemy_scales.py` |
| `modelScaleY` | `1.263` (`enemy_1112_emppnt` 帝国炮火先兆者) | **vertically stretched models only** (2 keys, the 先兆者 pair): the official prefab's `Graphic` scale sy ÷ sx — 1.263 because the pair's scale is (0.19, 0.24, 0.24), i.e. the game draws them 26 % taller than `modelScale` (which only carries the horizontal product) implies. The renderer multiplies the skeleton's **Y** scale (and the bar height) by it (render/units.js `enemyModelScaleY`). Not in the game tables: `tools/build-data.mjs MODEL_STRETCH_Y`, read from the local client by `tools/local-extract/enemy_model_offsets.py` (a sweep of all 242 readable enemy prefabs found no other non-uniform one), docs/research/12 §3.1 (PR #211 by @xcdoge; the owner's decision of 2026-10-06) | | `modelScaleY` | `1.263` (`enemy_1112_emppnt` 帝国炮火先兆者) | **vertically stretched models only** (2 keys, the 先兆者 pair): the official prefab's `Graphic` scale sy ÷ sx — 1.263 because the pair's scale is (0.19, 0.24, 0.24), i.e. the game draws them 26 % taller than `modelScale` (which only carries the horizontal product) implies. The renderer multiplies the skeleton's **Y** scale (and the bar height) by it (render/units.js `enemyModelScaleY`). Not in the game tables: `tools/build-data.mjs MODEL_STRETCH_Y`, read from the local client by `tools/local-extract/enemy_model_offsets.py` (a sweep of all 242 readable enemy prefabs found no other non-uniform one), docs/research/12 §3.1 (PR #211 by @xcdoge; the owner's decision of 2026-10-06) |
| `mirrorX` | `true` (`enemy_1196_msfyin` 木制瑞印) | **mirrored models only** (1 key): the official prefab's `Graphic` X scale is negative (−0.4), so the game draws the authored model flipped; the size pipeline takes `abs(sx)`, and the renderer flips this model on top of the usual direction flip (render/units.js `mirrorX`). Same extraction as `modelScaleY` (`tools/build-data.mjs MIRRORED_PREFABS`) | | `mirrorX` | `true` (`enemy_1196_msfyin` 木制瑞印) | **mirrored models only** (1 key): the official prefab's `Graphic` X scale is negative (−0.4), so the game draws the authored model flipped; the size pipeline takes `abs(sx)`, and the renderer flips this model on top of the usual direction flip (render/units.js `mirrorX`). Same extraction as `modelScaleY` (`tools/build-data.mjs MIRRORED_PREFABS`) |
| `attackAnim` | `{"clip":"Attack","dur":1,"hit":0.533}` (`enemy_1019_jshoot` 隐形弩手) | the enemy's attack clip — the one the client plays for its attacks (data/assets.json `anims.attack.loop` of its model, not an Idle stand-in) —, its length (s) and first strike frame (`hits`, the OnAttack event; absent when the clip has none). An unblocked ranged enemy stands for this clip at each attack (sim/ai.js `attackStand`, GitHub #58), and every enemy attack strikes at `hit` after its swing starts — a stun before it cuts the swing (sim/ai.js `attackWindup`, 0.2.0). 213 keys; absent = no attack clip known (御4, 寒霜, the 岁 relics …: the sim keeps `ATTACK_PAUSE`). Not in the game tables: `tools/build-data.mjs enemyAttackAnim` reads the committed asset manifest (tools/fetch-assets.mjs, from the Spine skeletons) | | `attackAnim` | `{"clip":"Attack","dur":1,"hit":0.533}` (`enemy_1019_jshoot` 隐形弩手) | the enemy's attack clip — the one the client plays for its attacks (data/assets.json `anims.attack.loop` of its model, not an Idle stand-in) —, its length (s) and first strike frame (`hits`, the OnAttack event; absent when the clip has none). An unblocked ranged enemy stands for this clip at each attack (sim/ai.js `attackStand`, GitHub #58) — any enemy for the rest of it after a strike once its block ends meanwhile (0.2.0) —, and every enemy attack strikes at `hit` after its swing starts — a stun before it cuts the swing (sim/ai.js `attackWindup`, 0.2.0). 213 keys; absent = no attack clip known (御4, 寒霜, the 岁 relics …: the sim keeps `ATTACK_PAUSE`). Not in the game tables: `tools/build-data.mjs enemyAttackAnim` reads the committed asset manifest (tools/fetch-assets.mjs, from the Spine skeletons) |
| `attackMoves` | `true` | **「不停止移动」 attackers only**: the handbook ability text says it attacks on the move (“十字路口”量产型's 四向攻击) — it never stops to attack (sim/ai.js `attackStand`). No enemy of the mode has it (build-data `attacksOnTheMove`) | | `attackMoves` | `true` | **「不停止移动」 attackers only**: the handbook ability text says it attacks on the move (“十字路口”量产型's 四向攻击) — it never stops to attack (sim/ai.js `attackStand`). No enemy of the mode has it (build-data `attacksOnTheMove`) |
## 10. `factions.json` — special enemies (特训敌人) ## 10. `factions.json` — special enemies (特训敌人)
+5 -2
View File
@@ -319,8 +319,11 @@ halving — PRTS: a map effect —, 【国度】, a chimera's 源石污染区 au
and, unblocked, stand for each attack's clip — `attackStand`: data/enemies.json `attackAnim`, through its wind-up and, unblocked, stand for each attack's clip — `attackStand`: data/enemies.json `attackAnim`, through its wind-up
(cooldown ≤ the strike frame, a target in range) and the rest of the clip after the strike, shortened when the attacks (cooldown ≤ the strike frame, a target in range) and the rest of the clip after the strike, shortened when the attacks
come quicker than the clip; `ATTACK_PAUSE` (0.35 s) after the strike when no clip is known; an `attackMoves` come quicker than the clip; `ATTACK_PAUSE` (0.35 s) after the strike when no clip is known; an `attackMoves`
(「不停止移动」) enemy never stops; a stun ends the stand; only the walking waits — a route WAIT keeps running and (「不停止移动」) enemy never stops; a stun or a displacement (失衡, 0.2.0) ends the stand; only the walking waits — a route WAIT keeps running and
DISAPPEAR / APPEAR legs still happen, hiding ends the stand; GitHub #58 — then walk on. Every normal attack strikes at its clip's damage frame (`attackWindup`: `attackAnim.hit`, shortened like the clip; 0 with no clip known — the strike as the swing starts): the cooldown runs down to the frame and the swing (`enemy.swing`) starts when it reaches the wind-up with a target in reach — the whole wind-up from that tick when the cooldown ran out before (it walked ready, its swing was cut); a stun / freeze / sleep / 浮空, hiding, 缴械, 恐惧, 战栗 while blocked or losing every target before the frame cuts the swing — no strike, the next one starts from its wind-up (PRTS 状态机 ATTACK / COMBAT "每帧检查异常状态", 异常效果 STUNNED / DISARMED "正在进行的普通攻击将被中断"; GitHub #187 / #170, 0.2.0) —, a strike already made stays made (its shot lands); the targets are taken at the frame [ASSUMED]; `fear`/`disarm` stop attacks; `dmgType 'none'` enemies DISAPPEAR / APPEAR legs still happen, hiding ends the stand; GitHub #58 — then walk on. Any enemy whose block ends after
its strike — its blocker stunned by that strike (流泪小子), knocked out or retreated — stands for the rest of that clip
before it walks on (PRTS 状态机: an enemy's ATTACK / COMBAT state "攻击结束后回退到MOVE状态"; only a character's COMBAT
drops when its blocker is gone; 0.2.0 — until then it walked on at once). Every normal attack strikes at its clip's damage frame (`attackWindup`: `attackAnim.hit`, shortened like the clip; 0 with no clip known — the strike as the swing starts): the cooldown runs down to the frame and the swing (`enemy.swing`) starts when it reaches the wind-up with a target in reach — the whole wind-up from that tick when the cooldown ran out before (it walked ready, its swing was cut); a stun / freeze / sleep / 浮空, hiding, 缴械, 恐惧, 战栗 while blocked or losing every target before the frame cuts the swing — no strike, the next one starts from its wind-up (PRTS 状态机 ATTACK / COMBAT "每帧检查异常状态", 异常效果 STUNNED / DISARMED "正在进行的普通攻击将被中断"; GitHub #187 / #170, 0.2.0) —, a strike already made stays made (its shot lands); the targets are taken at the frame [ASSUMED]; `fear`/`disarm` stop attacks; `dmgType 'none'` enemies
never attack — unless content arms them through `enemy.profile` (`noAttack: false`, `melee`, `dmgType`, `maxTargets`: never attack — unless content arms them through `enemy.profile` (`noAttack: false`, `melee`, `dmgType`, `maxTargets`:
转译基底·α's 寻仇者 / 特战术师 forms, which then attack like any enemy); `dmgType 'heal'` enemies heal the lowest-HP% enemy in their radius instead. A `noMove` enemy stands (not `moving`, drawn idle). Content can take over an 转译基底·α's 寻仇者 / 特战术师 forms, which then attack like any enemy); `dmgType 'heal'` enemies heal the lowest-HP% enemy in their radius instead. A `noMove` enemy stands (not `moving`, drawn idle). Content can take over an
enemy's attack: `enemy.profile.deferHit` = the engine makes the attack (target, timing, the `'atk'` event) but deals no enemy's attack: `enemy.profile.deferHit` = the engine makes the attack (target, timing, the `'atk'` event) but deals no
+1 -1
View File
@@ -122,7 +122,7 @@ Engine helpers (content must use these, never touch internals): `battle.dealDama
- **Blocking** (contact radius, PRTS 游戏数据基础 §阻挡半径 / 作战机制 "中点判定…案例:阻挡"; `constants.js BLOCK_RADIUS`, `Battle._checkBlock`, §19.2): an operator with free capacity blocks an unblocked, blockable enemy whose position lies within its block radius of its centre — ground 0.7071 (squared 0.49999037), 0.8944 × the blocker's 阻挡半径倍率 for blockFly units vs flyers (起飞; mod `blockRadiusScale` = 倍率 − 1 — PRTS 游戏数据基础 "飞行阻挡半径 = 0.8944 × 阻挡半径倍率", 凯尔希·思衡托 +0.23), devices 0.4472 (阻隔工事 / 障碍物); air units (FLY, 近地悬浮, 浮空) only by blockFly units. A ground enemy is never blocked by a unit standing on a tile ground units cannot pass (围墙 / 围栏: PRTS 地形机制 "部署在其中的单位,若当前阻挡类型为'地面阻挡'则无法阻挡敌人" — an enemy pushed or pulled against the fence walks on; air blocking there stays [ASSUMED], §21.23) nor by an airborne (起飞) unit, which blocks flyers only (§21.22). An enemy holding 不可阻挡 (PRTS 异常效果 BLOCK_FREE 「无法阻挡/被阻挡,自动解除阻挡」) — `unblockable` (恐惧, 诱导, enemy abilities), 浮空, and 沉睡 (SLEEPING = 无法行动+无敌+不可阻挡) — is never blocked and is released at once: a sleeping enemy frees its blocker's slot, stays where it is and, once awake, is blocked again only by a blocker with room (§24.9). The nearest such operator wins (ties: scan order [ASSUMED]). It is re-checked every tick, moving or not, so another operator in contact with room takes the enemy over when its blocker dies, is withdrawn or is stunned, and an operator whose capacity frees up grabs an overlapping enemy; one that finds no room walks on. A stunned or frozen enemy is checked too — 晕眩 / 冻结 hold no 不可阻挡 (PRTS 异常效果: the STUN / FROZEN state machines stop its moves and attacks) —, so an operator redeployed beside a held enemy blocks it where it stands and lifts its 隐匿; one held short of contact is blocked once it walks in after the status (GitHub #232; until 0.2.0 the check waited for the status to end). A head-on enemy stops at contact (≈ 0.71 tile), outside the blocker's tile. Enemy uses `blockCnt` capacity (default 1). Blocked enemies stop moving and attack their blocker if melee (or anyone in range if ranged, blocker first). **Every blocker** — melee units (重装要塞 / 领主 / 哨戒铁卫 included), summons and a ranged operator on a melee tile alike — whose attack hits enemies may always target the enemies it blocks, in range or not, whatever its facing, and targets them first ("可以选择且优先选择阻挡单位", PRTS 选择器; the user's rule after playtest #6, "阻挡了就一定要能打到": officially the collision pushes a blocked enemy to its blocker's front; `Battle.blockedTargets`, `targeting.js sortEnemyTargets`; §20.3 — it replaces the playtest #5 QA's melee-only restriction of §19.2). A healer (dmgType `heal`, or a skill attack turned into a heal) selects injured allies only and keeps healing while it blocks (PRTS 卫戍协议/帮助 "对于医疗干员(咒愈师分支除外),攻击目标为需要治疗的单位"; §21.17); 咒愈师 follow the blocker rule. The huge leaders are 自缚 + unblockable (§7). - **Blocking** (contact radius, PRTS 游戏数据基础 §阻挡半径 / 作战机制 "中点判定…案例:阻挡"; `constants.js BLOCK_RADIUS`, `Battle._checkBlock`, §19.2): an operator with free capacity blocks an unblocked, blockable enemy whose position lies within its block radius of its centre — ground 0.7071 (squared 0.49999037), 0.8944 × the blocker's 阻挡半径倍率 for blockFly units vs flyers (起飞; mod `blockRadiusScale` = 倍率 − 1 — PRTS 游戏数据基础 "飞行阻挡半径 = 0.8944 × 阻挡半径倍率", 凯尔希·思衡托 +0.23), devices 0.4472 (阻隔工事 / 障碍物); air units (FLY, 近地悬浮, 浮空) only by blockFly units. A ground enemy is never blocked by a unit standing on a tile ground units cannot pass (围墙 / 围栏: PRTS 地形机制 "部署在其中的单位,若当前阻挡类型为'地面阻挡'则无法阻挡敌人" — an enemy pushed or pulled against the fence walks on; air blocking there stays [ASSUMED], §21.23) nor by an airborne (起飞) unit, which blocks flyers only (§21.22). An enemy holding 不可阻挡 (PRTS 异常效果 BLOCK_FREE 「无法阻挡/被阻挡,自动解除阻挡」) — `unblockable` (恐惧, 诱导, enemy abilities), 浮空, and 沉睡 (SLEEPING = 无法行动+无敌+不可阻挡) — is never blocked and is released at once: a sleeping enemy frees its blocker's slot, stays where it is and, once awake, is blocked again only by a blocker with room (§24.9). The nearest such operator wins (ties: scan order [ASSUMED]). It is re-checked every tick, moving or not, so another operator in contact with room takes the enemy over when its blocker dies, is withdrawn or is stunned, and an operator whose capacity frees up grabs an overlapping enemy; one that finds no room walks on. A stunned or frozen enemy is checked too — 晕眩 / 冻结 hold no 不可阻挡 (PRTS 异常效果: the STUN / FROZEN state machines stop its moves and attacks) —, so an operator redeployed beside a held enemy blocks it where it stands and lifts its 隐匿; one held short of contact is blocked once it walks in after the status (GitHub #232; until 0.2.0 the check waited for the status to end). A head-on enemy stops at contact (≈ 0.71 tile), outside the blocker's tile. Enemy uses `blockCnt` capacity (default 1). Blocked enemies stop moving and attack their blocker if melee (or anyone in range if ranged, blocker first). **Every blocker** — melee units (重装要塞 / 领主 / 哨戒铁卫 included), summons and a ranged operator on a melee tile alike — whose attack hits enemies may always target the enemies it blocks, in range or not, whatever its facing, and targets them first ("可以选择且优先选择阻挡单位", PRTS 选择器; the user's rule after playtest #6, "阻挡了就一定要能打到": officially the collision pushes a blocked enemy to its blocker's front; `Battle.blockedTargets`, `targeting.js sortEnemyTargets`; §20.3 — it replaces the playtest #5 QA's melee-only restriction of §19.2). A healer (dmgType `heal`, or a skill attack turned into a heal) selects injured allies only and keeps healing while it blocks (PRTS 卫戍协议/帮助 "对于医疗干员(咒愈师分支除外),攻击目标为需要治疗的单位"; §21.17); 咒愈师 follow the blocker rule. The huge leaders are 自缚 + unblockable (§7).
- **Operator attacks**: every `interval` s if a valid target exists; targets = up to `maxTargets` (default 1) from `unitsInGrid(rangeGrid)` (a `rangeAoe` profile — 阵法术师, 轰击术师 — takes every selectable enemy in range, §21.18; 「同时攻击阻挡的所有敌人」 — 强攻手 / 重剑手 / 推击手 and the skills worded so, `hitAllBlocked` — up to the block count, never fewer than 1, since 0.2.0: PRTS 分支特性信息 "普通攻击最大目标数等于阻挡数(不会低于1)"), priority: (1) the enemies it blocks (every blocker, in range or not, §20.3), (2) profession/trait priorities (e.g. fly-first snipers, `trait` text parsed by build-data into `targetPriority`), (3) enemy with the **least remaining path distance** to its goal, ties → earliest spawned. Melee (no ranged trait) and ground-only attacks cannot hit air units (`Unit.isFlying`: FLY, or a 近地悬浮 / 浮空 enemy — PRTS "算作空中单位", §19.1). Stealthed enemies can't be targeted unless blocked or revealed — or within 3 s of a block's end (§22.8). Ranged ops fire projectiles (speed ~12 tiles/s, instant for melee/arts-beam classes as data indicates); damage applies on impact; a 锁定攻击范围 AoE (`rangeAoe`) strikes every selectable enemy on its range at once with instant hits (§21.18). - **Operator attacks**: every `interval` s if a valid target exists; targets = up to `maxTargets` (default 1) from `unitsInGrid(rangeGrid)` (a `rangeAoe` profile — 阵法术师, 轰击术师 — takes every selectable enemy in range, §21.18; 「同时攻击阻挡的所有敌人」 — 强攻手 / 重剑手 / 推击手 and the skills worded so, `hitAllBlocked` — up to the block count, never fewer than 1, since 0.2.0: PRTS 分支特性信息 "普通攻击最大目标数等于阻挡数(不会低于1)"), priority: (1) the enemies it blocks (every blocker, in range or not, §20.3), (2) profession/trait priorities (e.g. fly-first snipers, `trait` text parsed by build-data into `targetPriority`), (3) enemy with the **least remaining path distance** to its goal, ties → earliest spawned. Melee (no ranged trait) and ground-only attacks cannot hit air units (`Unit.isFlying`: FLY, or a 近地悬浮 / 浮空 enemy — PRTS "算作空中单位", §19.1). Stealthed enemies can't be targeted unless blocked or revealed — or within 3 s of a block's end (§22.8). Ranged ops fire projectiles (speed ~12 tiles/s, instant for melee/arts-beam classes as data indicates); damage applies on impact; a 锁定攻击范围 AoE (`rangeAoe`) strikes every selectable enemy on its range at once with instant hits (§21.18).
- **Healers** (`dmgType heal`): target the ally in range with the lowest HP% below 100%, never a 禁疗 / 孤立 unit (tokens.json `abnormal`, `noHeal`; §20.3; 史尔特尔 during 余烬, §22.7), and never the enemies they block — also while blocking (§21.17); do nothing otherwise (SP still regenerates). - **Healers** (`dmgType heal`): target the ally in range with the lowest HP% below 100%, never a 禁疗 / 孤立 unit (tokens.json `abnormal`, `noHeal`; §20.3; 史尔特尔 during 余烬, §22.7), and never the enemies they block — also while blocking (§21.17); do nothing otherwise (SP still regenerates).
- **Enemy AI**: follow the route (checkpoints; WALK paths recomputed on the grid when devices change); when blocked stop & fight (`dmgType 'none'` enemies never attack unless content arms them through `e.profile` — 转译基底's armed forms, §21.4); ranged enemies (`rangeRadius > 0`) attack ops whose 0.25 collider touches their radius (centre distance ≤ `rangeRadius` + 0.25, §3, §20.4): the enemy's own target rule filters the candidates first (`profile.canTarget`: 只攻击地面单位 …), then priority blocker → special priority → highest taunt → **latest deployed** (`aggroSeq`) — PRTS 索敌 "阻挡→特殊优先级→仇恨值→最早出现"; a stealthed ally is attacked only by the enemy it blocks (§19.1) — and not even by that one when its 索敌不受阻挡影响 (自制投石机, `profile.blockFree`: it selects as if unblocked, §25.18) —, and an enemy's area effects — splash, blasts, area skills, zones, jumps — and buff auras skip it unless it blocks that enemy, while 迷彩 does not protect from splash and the other area effects (`targeting.js areaSelectable` / `auraSelectable`, §22.12); an airborne (起飞) ally is never a ground enemy's selection — picks, area damage, zones and statuses skip it, while 无视无法选择 abilities, direct picks, debuff ticks and flying units still reach it (§21.22); unblocked, they stand for each attack's clip (enemies.json `attackAnim`: its wind-up before the strike and the rest of the clip after it, shortened when the attacks come quicker than the clip; `ATTACK_PAUSE = 0.35 s` after the strike when no clip is known; a 「不停止移动」 attacker never stops; §22.14). Every enemy attack strikes at its clip's damage frame after its swing starts — the first one of a contact too —, and a stun / freeze / sleep / 浮空, hiding, 缴械, 恐惧 or 战栗 (blocked) before that frame cuts the swing: no strike, the next swing starts from its wind-up (0.2.0, `ai.js attackWindup`; PRTS 状态机 / 异常效果 STUNNED; no clip known: no wind-up). FLY enemies ignore ground obstacles (only blockFly units block them) and follow their checkpoint route. A feared enemy runs between random 恐惧可达地块 away from the source (PRTS 诱发移动; `fear.js`); 恐惧 outranks 诱导; the 恐惧 / 诱导 walks re-plan from where the enemy stands after a push or an obstacle change, and the route re-plans when they end (§20.4). - **Enemy AI**: follow the route (checkpoints; WALK paths recomputed on the grid when devices change); when blocked stop & fight (`dmgType 'none'` enemies never attack unless content arms them through `e.profile` — 转译基底's armed forms, §21.4); ranged enemies (`rangeRadius > 0`) attack ops whose 0.25 collider touches their radius (centre distance ≤ `rangeRadius` + 0.25, §3, §20.4): the enemy's own target rule filters the candidates first (`profile.canTarget`: 只攻击地面单位 …), then priority blocker → special priority → highest taunt → **latest deployed** (`aggroSeq`) — PRTS 索敌 "阻挡→特殊优先级→仇恨值→最早出现"; a stealthed ally is attacked only by the enemy it blocks (§19.1) — and not even by that one when its 索敌不受阻挡影响 (自制投石机, `profile.blockFree`: it selects as if unblocked, §25.18) —, and an enemy's area effects — splash, blasts, area skills, zones, jumps — and buff auras skip it unless it blocks that enemy, while 迷彩 does not protect from splash and the other area effects (`targeting.js areaSelectable` / `auraSelectable`, §22.12); an airborne (起飞) ally is never a ground enemy's selection — picks, area damage, zones and statuses skip it, while 无视无法选择 abilities, direct picks, debuff ticks and flying units still reach it (§21.22); unblocked, they stand for each attack's clip (enemies.json `attackAnim`: its wind-up before the strike and the rest of the clip after it, shortened when the attacks come quicker than the clip; `ATTACK_PAUSE = 0.35 s` after the strike when no clip is known; a 「不停止移动」 attacker never stops; §22.14); any enemy whose block ends after its strike (its blocker stunned by it, knocked out, retreated) stands for the rest of that clip too — PRTS 状态机: the enemy's COMBAT state ends with its attack — and a displacement ends a stand (0.2.0). Every enemy attack strikes at its clip's damage frame after its swing starts — the first one of a contact too —, and a stun / freeze / sleep / 浮空, hiding, 缴械, 恐惧 or 战栗 (blocked) before that frame cuts the swing: no strike, the next swing starts from its wind-up (0.2.0, `ai.js attackWindup`; PRTS 状态机 / 异常效果 STUNNED; no clip known: no wind-up). FLY enemies ignore ground obstacles (only blockFly units block them) and follow their checkpoint route. A feared enemy runs between random 恐惧可达地块 away from the source (PRTS 诱发移动; `fear.js`); 恐惧 outranks 诱导; the 恐惧 / 诱导 walks re-plan from where the enemy stands after a push or an obstacle change, and the route re-plans when they end (§20.4).
- **Damage**: phys `max(A − max(0, D×(1−defIgnorePct) − defIgnoreFlat), 0.05·A)`; arts `max(A × (1 − R'/100), 0.05·A)` with `R' = max(0, R×(1−resIgnorePct) − resIgnoreFlat)`; true = A; 元素伤害 ('elemental') `max(A × (1 − 元素抗性/100), 0.05·A)`. Then × `dmgDealtMul` (source) × `dmgTakenMul` & type-specific taken multipliers (target) × `dmg.mul` — 元素伤害 takes 元素脆弱 (`elementalTakenMul`) alone, not `dmgTakenMul` (脆弱 = "受到的物理、法术、真实伤害提升"). Then **限伤**: on a leader (`isBoss` — the 10 bossInfoDict enemyIds and their mirrored copies; never parts, drones or escorts) in a `'boss'` / `'hidden'` battle a hit with `ceil(final) ≥ 300000` is cancelled — no HP or pool loss, no credit, no damage number, no `damaged` / kill (`shared/constants.js BOSS_HIT_LIMIT`, `damage.js leaderHitCancelled`, after every multiplier and the hit-step blocks, before HP shields; `loseHp` too — a part's 传递, but not 胄's drone link, a share of the pool that is no hit (`noHitLimit`, §25.13.4); the client's `MAX_BATTLE_DAMAGE`, §20.12). Then shields absorb; dodge checks for phys/arts. Element damage fills a gauge (1000; enemy leaders 2000) × `elemTakenMul` × max(0.05, 1 − 损伤抵抗/100), 损伤抵抗 = data `epResistance` (PRTS 元素; the 5 % floor of DMG_e, PRTS 游戏数据基础). An element fill on a target with no HP left is refused (damage.js `hasHp`: no burst on a corpse). A full gauge bursts with the side-specific official effects, as **无来源** damage (no damage-dealt multiplier or penetration of the unit that filled the gauge, which keeps the kill and the stats; §19.5) (sim/constants.js `ELEMENT`; operators: 灼燃 1200 arts + RES −20, 神经 stun 10 s then 1000 true, 凋亡 15 s of 阻回 (`noSp`: no SP gain of any kind) + 静默 with −1 SP/s and 100 arts/s, 侵蚀 DEF −100 then 800 phys; enemies: the "·我方" terms). Every burst starts a **爆发冷却** = its duration (灼燃 / 神经 / 侵蚀 10 s — enemies' 侵蚀 8 s — 凋亡 15 s) during which NO element of the unit fills or can be recovered; when it ends every gauge of the unit resets (§18.3). - **Damage**: phys `max(A − max(0, D×(1−defIgnorePct) − defIgnoreFlat), 0.05·A)`; arts `max(A × (1 − R'/100), 0.05·A)` with `R' = max(0, R×(1−resIgnorePct) − resIgnoreFlat)`; true = A; 元素伤害 ('elemental') `max(A × (1 − 元素抗性/100), 0.05·A)`. Then × `dmgDealtMul` (source) × `dmgTakenMul` & type-specific taken multipliers (target) × `dmg.mul` — 元素伤害 takes 元素脆弱 (`elementalTakenMul`) alone, not `dmgTakenMul` (脆弱 = "受到的物理、法术、真实伤害提升"). Then **限伤**: on a leader (`isBoss` — the 10 bossInfoDict enemyIds and their mirrored copies; never parts, drones or escorts) in a `'boss'` / `'hidden'` battle a hit with `ceil(final) ≥ 300000` is cancelled — no HP or pool loss, no credit, no damage number, no `damaged` / kill (`shared/constants.js BOSS_HIT_LIMIT`, `damage.js leaderHitCancelled`, after every multiplier and the hit-step blocks, before HP shields; `loseHp` too — a part's 传递, but not 胄's drone link, a share of the pool that is no hit (`noHitLimit`, §25.13.4); the client's `MAX_BATTLE_DAMAGE`, §20.12). Then shields absorb; dodge checks for phys/arts. Element damage fills a gauge (1000; enemy leaders 2000) × `elemTakenMul` × max(0.05, 1 − 损伤抵抗/100), 损伤抵抗 = data `epResistance` (PRTS 元素; the 5 % floor of DMG_e, PRTS 游戏数据基础). An element fill on a target with no HP left is refused (damage.js `hasHp`: no burst on a corpse). A full gauge bursts with the side-specific official effects, as **无来源** damage (no damage-dealt multiplier or penetration of the unit that filled the gauge, which keeps the kill and the stats; §19.5) (sim/constants.js `ELEMENT`; operators: 灼燃 1200 arts + RES −20, 神经 stun 10 s then 1000 true, 凋亡 15 s of 阻回 (`noSp`: no SP gain of any kind) + 静默 with −1 SP/s and 100 arts/s, 侵蚀 DEF −100 then 800 phys; enemies: the "·我方" terms). Every burst starts a **爆发冷却** = its duration (灼燃 / 神经 / 侵蚀 10 s — enemies' 侵蚀 8 s — 凋亡 15 s) during which NO element of the unit fills or can be recovered; when it ends every gauge of the unit resets (§18.3).
- **Leak**: an enemy reaching its goal is removed, counted as leaked for its field owner (`sourcePlayerId` for unite). LP accounting is done by the match, not the battle. - **Leak**: an enemy reaching its goal is removed, counted as leaked for its field owner (`sourcePlayerId` for unite). LP accounting is done by the match, not the battle.
- **Results**: `damageDealt` / a unit's `dmg` count only HP removed from the other side — a unit's own drain or 流失 and friendly damage are the target's `taken` only (§21.12). - **Results**: `damageDealt` / a unit's `dmg` count only HP removed from the other side — a unit's own drain or 流失 and friendly damage are the target's `taken` only (§21.12).
+47
View File
@@ -1980,3 +1980,50 @@ here, each reproduced first; the rest were answered (not a bug, already fixed in
the parent), `test/match/playtest6-matchflow.test.js` #235 (2; the 联防 one fails on the parent: losses = the LP the parent), `test/match/playtest6-matchflow.test.js` #235 (2; the 联防 one fails on the parent: losses = the LP
settled, no result ticker, gone in the next phase), SP_E2E `test/ui/resultbox.e2e.test.js` (3, mock variants settled, no result ticker, gone in the next phase), SP_E2E `test/ui/resultbox.e2e.test.js` (3, mock variants
`unite[,through][,helper|,dead]`). Docs: PLAYING.md §1 / §5, design/network.md, design/client.md, design/match.md. `unite[,through][,helper|,dead]`). Docs: PLAYING.md §1 / §5, design/network.md, design/client.md, design/match.md.
#### 25.22.6 「ai的鸭爵分队真的好阴…哭狗瞬间隐匿没有后摇马上就到下一格干员的脸上秒抬手秒晕」 (community report of 2026-10-07) and GitHub #214 「鸭爵技能生成的泪眼汪汪没有反隐直接一路顺畅走进蓝门」 (@FrogThai; PR #243 by @TsangAsuna declined): an enemy finishes its attack clip after its block ends — `sim/ai.js enemyAttack`, `sim/battle/displacement.js displace`
- **Seen**: 泪眼汪汪 / 哭狗 / 隐匿狗 is 流泪小子 (`enemy_2034_sythef_2`, 「唯唯诺诺的佩洛」 — no enemy is named 泪眼汪汪), the
only 隐匿 and stunning enemy of the four the 鸭爵 strategy swaps in. Measured on 0255afd with a lane of four blockers that
never attack (route 0, cols 8 → 5): blocked at 3.233 s, swing 3.267, strike 4.033 (the wall stunned 3.5 s, the block
released, 隐匿 at once) and walking on the very next tick; the next wall reached at 6.533 (one tile at 0.4 tiles/s) and
struck 0.767 s after the contact, its cooldown ready; a wall whose stun ended took it over again while it was still
inside that wall's block radius. 8 stuns, 19.8 s 隐匿 / 9.0 s revealed, leaked at 28.9 s.
- **Official**: every number the report questions is the official one. enemy_database `enemy_2034_sythef_2` level 0:
moveSpeed 0.8 (× the level's moveMultiplier 0.5: 0.4 tiles/s), baseAttackTime 2.0, MELEE, `Combat.attack@stun` 3.5 —
PRTS 卫戍协议:盟约 下半/PRTS盟约记录 鸭爵 备注: a 「特殊版本,相较于原版更弱」 (4500 HP, 3.5 s stun) that keeps its 隐匿 (the
handbook line is unchanged). PRTS 流泪小子 (same prefab): 「隐匿(解除阻挡0秒后恢复),近战攻击使目标晕眩」 — it attacks only
its blocker. Its Spine Attack clip: 1.567 s, OnAttack at 0.767 s (data/assets.json). gamedata_const `ba.stun`
「无法移动、阻挡、攻击及使用技能」, PRTS 异常效果 STUNNED 「无法攻击、释放技能、阻挡敌人类单位」: a stunned operator lets it go —
the hypothesis that it should keep blocking is wrong. The attack cooldown is the unit's and runs on the walk, so a new
blocker sees the swing at once and the strike 0.767 s later (official too). PRTS 状态机: an enemy's ATTACK state
「每帧检查异常状态…攻击结束后回退到MOVE状态」 and COMBAT 「逻辑同ATTACK」 — only a character's COMBAT 「检测到不存在阻挡对象时强行
切回IDLE状态」: an enemy finishes its attack when its blocker goes. The band: 「你和队友遭遇的部分敌人可能会替换为…」 — a bot
teammate's 鸭爵 swaps into a human's battles, the Final Assault and the Hidden Core too, on the replaced enemy's route
(`content/bands/meta.js duckReplace`; #214's 「上路」 is that route).
- **Cause**: enemyAttack set the post-strike stand only for an unblocked ranged enemy (`!e.blockedBy && radius > 0`), so
a melee enemy released by its own strike — or by its blocker's knock-out — walked on the same tick: the 「没有后摇」.
- **Now**: every enemy stands for the rest of its attack clip after a strike (`attackStand(e).rest`; ATTACK_PAUSE with no
clip known); a blocked enemy never walks, so the stand shows only when its block ends meanwhile — its blocker stunned
or knocked out by that strike, or gone (retreat, substitution). A stun / freeze / sleep / 浮空, leaving the field and,
new, a displacement (失衡: the UNBALANCE state replaces ATTACK) end it. 流泪小子 now stands 0.8 s after each strike —
隐匿, since its restore is 0 s — and a stunned blocker often takes it over again before it leaves its radius. The same
lane: 13 stuns, 29.1 s 隐匿 / 12.8 s revealed, leaked at 42.0 s; four blockers that hit back (550 ATK) now knock it out
(it leaked with 2 % HP before); the real R6 wave on 战场#01 with one swapped 流泪小子 and 8 elite operators (8 seeds):
leaked 8 / 8 before and after, 47 → 58 % HP left.
- [ASSUMED]: the stand lasts the clip's rest, as the #58 stand (no source gives a length); a melee swing whose target
goes before the strike is still cut (unchanged, §22.14).
- PR #243 (declined): it removed the copy's 隐匿 — the data and PRTS keep it — and, on a stale base, reverted the
high-ground rule (only elite 歌蕾蒂娅 with HOK-Y) and rewrote unrelated skills (宴 S2, 野鬃 S1, 锡人 / 吟游者 heals).
- Golden: 216 scenarios — roster 41 of 49 (all but -003, -005, -009, -018, -019, -025, -035, -049), bonds 21
(deputShip-low, emptyShip-low / -high, indomShip-low / -high, investShip-low, kazimierzShip-low / -high,
kjeragShip-high, lateranoShip-high, miraShip-high, raidShip-low, sargonShip-high, siracusaShip-low, soloShip-low /
-high, suntShip-low / -high, swiftShip-high, visiShip-low, yanShip-low), fields 13 (all but boss-boss_1-solo,
boss-boss_2-pair / -solo, boss-boss_6-solo, boss-boss_7-pair / -solo, hidden-boss_8-solo, hidden-boss_10-solo,
unite-1), matches 17 (all but solo-HARD-9-boosted), standins 10 of 10, diy 114 of 138 (all but -011, -012, -018,
-020, -025, -027, -029, -031, -033, -047, -053, -077, -080 … -082, -086 … -088, -091 … -093, -098, -108, -123). Traced
in lockstep against a copy of the parent: in each of the 199 battle scenarios the first differing tick is an enemy
standing out its clip after a strike where the parent walked on; every moved match has such stands from an earlier or
the same round. The displacement rule alone moves one roster scenario.
- Tests: `test/sim/feedback5-attack-clip-rest.test.js` (5; the four behaviour tests fail on 0255afd, the data pin passes
on both). Docs: docs/SIM.md (enemy attacks), DESIGN §5 (design/engine.md), docs/DATA.md (`attackAnim`).
+16 -6
View File
@@ -23,7 +23,9 @@
// Every enemy attack strikes at its clip's damage frame after its swing starts (attackWindup; a stun before the frame // Every enemy attack strikes at its clip's damage frame after its swing starts (attackWindup; a stun before the frame
// cuts the swing — enemyAttack, GitHub #187). Unblocked ranged enemies attack allies within their radius and stand for // cuts the swing — enemyAttack, GitHub #187). Unblocked ranged enemies attack allies within their radius and stand for
// each attack's clip — through its wind-up and until the clip ends — then walk on (attackStand, GitHub #58; // each attack's clip — through its wind-up and until the clip ends — then walk on (attackStand, GitHub #58;
// ATTACK_PAUSE after the strike when no clip is known; 「不停止移动」 attackers never stop); the candidates pass the // ATTACK_PAUSE after the strike when no clip is known; 「不停止移动」 attackers never stop); every enemy whose block ends
// after its strike (its blocker stunned by that strike, knocked out, retreated) stands for the rest of the clip too
// (PRTS 状态机: an enemy's COMBAT state ends with its attack, not with its blocker); the candidates pass the
// enemy's own rule (`e.profile.canTarget`) and are ordered // enemy's own rule (`e.profile.canTarget`) and are ordered
// blocker → taunt → latest deployed (targeting.js sortAllyTargets). An enemy's damage type is its data's unless content // blocker → taunt → latest deployed (targeting.js sortAllyTargets). An enemy's damage type is its data's unless content
// arms it (`e.profile.dmgType`: 转译基底's forms, whose data never attacks). Reaching the final leg's end = leak. A `fear` (恐惧) status suspends the route: the // arms it (`e.profile.dmgType`: 转译基底's forms, whose data never attacks). Reaching the final leg's end = leak. A `fear` (恐惧) status suspends the route: the
@@ -687,9 +689,11 @@ function advanceRoute(b, e, dt, R, standing = false) {
} }
/** /**
* How long an unblocked ranged enemy stands for one attack (GitHub #58 — the owner's decision of 2026-10-04 from * How long an enemy stands for one attack: an unblocked ranged enemy for its whole clip (GitHub #58 — the owner's
* first-hand memory of the official game: a ranged enemy stops for each attack's animation and walks on between * decision of 2026-10-04 from first-hand memory of the official game: a ranged enemy stops for each attack's animation
* attacks; the handbook names attacking on the move as a special ability, “十字路口”量产型's 「不停止移动的四向攻击」). * and walks on between attacks; the handbook names attacking on the move as a special ability, “十字路口”量产型's
* 「不停止移动的四向攻击」), and any enemy for the rest of it after the strike once its block ends meanwhile (enemyAttack;
* PRTS 状态机 ATTACK / COMBAT "攻击结束后回退到MOVE状态", 0.2.0).
* [ASSUMED] the stand lasts exactly its attack clip — data/enemies.json `attackAnim` { dur, hit }: the clip the client * [ASSUMED] the stand lasts exactly its attack clip — data/enemies.json `attackAnim` { dur, hit }: the clip the client
* plays for its attacks and its strike frame (tools/build-data.mjs, from the asset manifest) —, `hit` of it before * plays for its attacks and its strike frame (tools/build-data.mjs, from the asset manifest) —, `hit` of it before
* the strike (the wind-up, while a target is in range) and the rest after it, both shortened when the attacks come * the strike (the wind-up, while a target is in range) and the rest after it, both shortened when the attacks come
@@ -850,8 +854,14 @@ function enemyAttack(b, e, prevCd) {
} }
if (b._hooks.attack) b.emit('attack', { attacker: e, targets, isSkill: false }); if (b._hooks.attack) b.emit('attack', { attacker: e, targets, isSkill: false });
e.atkCd = e.s.interval; e.atkCd = e.s.interval;
// stands for the rest of its attack clip (attackStand; the wind-up was stood before the strike) // stands for the rest of its attack clip (attackStand; the wind-up was stood before the strike) — every enemy, blocked
if (!e.blockedBy && radius > 0) e.atkStandUntil = b.time + attackStand(e, STAND).rest; // or not: PRTS 状态机, an enemy's ATTACK / COMBAT state "攻击结束后回退到MOVE状态" and checks only 异常状态 every frame
// (only a character's COMBAT "检测到不存在阻挡对象时强行切回IDLE状态"), so an enemy whose block ends after its strike — the
// strike stunned its blocker (流泪小子: 晕眩 "无法…阻挡"), knocked it out, or the blocker retreated — finishes its clip
// before it walks on (until 0.2.0 it walked on at once; community report of 2026-10-07 「哭狗瞬间隐匿没有后摇」). A
// blocked enemy never walks, so the stand matters only once it is free; a stun / freeze / sleep / 浮空, hiding or a
// displacement (失衡) ends it (updateEnemy, advanceRoute, Battle.displace)
e.atkStandUntil = b.time + attackStand(e, STAND).rest;
return false; return false;
} }
+2
View File
@@ -139,6 +139,8 @@ export class BattleDisplacement {
} }
if (moved > 0) { if (moved > 0) {
this._unblock(e); this._unblock(e);
// 失衡 ends the attack clip it stood for (PRTS 状态机: the states are exclusive — UNBALANCE, then DEFAULT → MOVE)
e.atkStandUntil = -Infinity;
if (e.route) e.route.pts = null; if (e.route) e.route.pts = null;
this.fx('displace', { x: e.x, y: e.y, id: e.id }); this.fx('displace', { x: e.x, y: e.y, id: e.id });
} }
+237 -237
View File
@@ -93,8 +93,8 @@
"round": 5, "round": 5,
"seed": 4108057433, "seed": 4108057433,
"waveId": "act1autochess_05", "waveId": "act1autochess_05",
"time": 60.97, "time": 61.37,
"ticks": 1829, "ticks": 1841,
"reason": "cleared", "reason": "cleared",
"killed": 17, "killed": 17,
"total": 21, "total": 21,
@@ -102,7 +102,7 @@
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 29, "rngDraws": 29,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":17,"total":21,"perfect":false,"leaks":4,"leaksUncounted":0,"coins":0,"dmg":69709,"bossDmg":0,"heal":0,"deaths":1,"layerGains":{}}}, "players": {"p1":{"killed":17,"total":21,"perfect":false,"leaks":4,"leaksUncounted":0,"coins":0,"dmg":70397,"bossDmg":0,"heal":0,"deaths":1,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_3_12_a",2,null,0,0,3,5,11868,2334,0,30,1], ["p1",1,"op","chess_char_3_12_a",2,null,0,0,3,5,11868,2334,0,30,1],
["p1",2,"op","chess_char_1_06_a",1,null,1137,1,4,6,3307,0,0,15,1], ["p1",2,"op","chess_char_1_06_a",1,null,1137,1,4,6,3307,0,0,15,1],
@@ -110,16 +110,16 @@
["p1",4,"op","chess_char_3_08_a",1,null,1594,1,8,0,5887,0,0,9,1], ["p1",4,"op","chess_char_3_08_a",1,null,1594,1,8,0,5887,0,0,9,1],
["p1",5,"op","chess_char_3_09_a",1,null,1267,1,9,0,13314,0,0,27,1], ["p1",5,"op","chess_char_3_09_a",1,null,1267,1,9,0,13314,0,0,27,1],
["p1",6,"op","chess_char_3_10_a",1,null,1650,1,10,0,6675,0,0,8,1], ["p1",6,"op","chess_char_3_10_a",1,null,1650,1,10,0,6675,0,0,8,1],
["p1",7,"op","chess_char_3_11_a",1,null,1316,1,5,5,20565,0,0,22,3], ["p1",7,"op","chess_char_3_11_a",1,null,1316,1,5,5,21254,0,0,23,3],
["p1",8,"op","chess_char_3_13_a",1,null,1064,1,7,0,4976,0,0,29,6], ["p1",8,"op","chess_char_3_13_a",1,null,1064,1,7,0,4976,0,0,29,6],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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] ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1249_lysdb_2":[5,3,2,358,25821],"enemy_1251_lysyta":[15,13,2,36,35396],"enemy_1328_cbjedi":[1,1,0,1940,9000]}, "enemies": {"enemy_1249_lysdb_2":[5,3,2,358,26509],"enemy_1251_lysyta":[15,13,2,36,35396],"enemy_1328_cbjedi":[1,1,0,1940,9000]},
"hooks": [1,31,1829,179,179,228,223,0,18,22,15,15,0,9876,15,9,21,4,1,18,0,0,0], "hooks": [1,31,1841,180,180,229,224,0,18,22,15,15,0,9936,15,9,21,4,1,18,0,0,0],
"events": {"atk":196,"deploy":8,"die":18,"dmg":223,"engage":8,"fx":36,"leak":4,"skill":30,"spawn":31,"status":25}, "events": {"atk":197,"deploy":8,"die":18,"dmg":224,"engage":8,"fx":36,"leak":4,"skill":30,"spawn":31,"status":25},
"fx": {"aoe":1,"displace":11,"pull":11,"shieldBreak":5,"strike":3,"taunt":1,"volley":3,"zone":1}, "fx": {"aoe":1,"displace":11,"pull":11,"shieldBreak":5,"strike":3,"taunt":1,"volley":3,"zone":1},
"snaps": "b677776a 05df3ce3 0909a76f 5ebbf5d3 c7c03797 29c796e5" "snaps": "b677776a 05df3ce3 0909a76f 5ebbf5d3 c7c03797 ad0a9173 c47fca8c"
}, },
"bond-deputShip-high": { "bond-deputShip-high": {
"about": "助力 high: tier 2 layers 999; chess_char_4_11_b chess_char_1_06_b chess_char_1_13_b chess_char_2_14_b chess_char_1_06_a chess_char_1_13_a chess_char_4_10_b chess_char_4_12_b token_10041_cathy_catsld token_10041_cathy_catsld", "about": "助力 high: tier 2 layers 999; chess_char_4_11_b chess_char_1_06_b chess_char_1_13_b chess_char_2_14_b chess_char_1_06_a chess_char_1_13_a chess_char_4_10_b chess_char_4_12_b token_10041_cathy_catsld token_10041_cathy_catsld",
@@ -268,20 +268,20 @@
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":17,"total":17,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":90450,"bossDmg":0,"heal":385,"deaths":2,"layerGains":{}}}, "players": {"p1":{"killed":17,"total":17,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":90450,"bossDmg":0,"heal":385,"deaths":2,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_4_01_a",2,null,2638,1,4,1,1862,0,0,17,0], ["p1",1,"op","chess_char_4_01_a",2,null,2638,1,4,1,1772,0,0,17,0],
["p1",2,"op","chess_char_4_04_a",1,null,1760,1,6,1,13315,150,0,29,2], ["p1",2,"op","chess_char_4_04_a",1,null,1760,1,6,2,13099,150,0,29,2],
["p1",3,"op","chess_char_2_14_a",1,null,1232,1,1,0,0,0,150,1,1], ["p1",3,"op","chess_char_2_14_a",1,null,1232,1,1,0,0,0,150,1,1],
["p1",4,"op","chess_char_3_10_a",1,null,1650,1,2,0,0,0,0,0,0], ["p1",4,"op","chess_char_3_10_a",1,null,1650,1,2,0,0,0,0,0,0],
["p1",5,"op","chess_char_3_20_a",1,null,1121,1,3,0,4312,0,0,22,1], ["p1",5,"op","chess_char_3_20_a",1,null,1121,1,3,0,4312,0,0,22,1],
["p1",6,"op","chess_char_3_21_a",2,null,0,0,7,5,28405,1446,82,38,1], ["p1",6,"op","chess_char_3_21_a",2,null,0,0,7,5,28405,1446,82,38,1],
["p1",7,"op","chess_char_4_02_a",2,null,1428,1,5,6,29523,0,0,17,1], ["p1",7,"op","chess_char_4_02_a",2,null,1428,1,5,5,29829,0,0,17,1],
["p1",8,"op","chess_char_4_06_a",1,null,0,0,8,4,13033,1400,154,33,1] ["p1",8,"op","chess_char_4_06_a",1,null,0,0,8,4,13033,1400,154,33,1]
], ],
"enemies": {"enemy_10042_prtrop":[4,4,0,1936,21600],"enemy_10042_prtrop_2":[2,2,0,655,14400],"enemy_10043_sailor":[11,11,0,405,54450]}, "enemies": {"enemy_10042_prtrop":[4,4,0,1936,21600],"enemy_10042_prtrop_2":[2,2,0,655,14400],"enemy_10043_sailor":[11,11,0,405,54450]},
"hooks": [1,25,1913,177,177,260,260,231,19,19,7,5,0,7158,13,10,17,0,1,19,0,0,0], "hooks": [1,25,1913,177,177,260,260,231,19,19,7,5,0,7158,13,10,17,0,1,19,0,0,0],
"events": {"atk":213,"deploy":8,"die":19,"dmg":259,"engage":6,"fx":32,"heal":1,"skill":12,"spawn":25,"status":44}, "events": {"atk":213,"deploy":8,"die":19,"dmg":259,"engage":6,"fx":32,"heal":1,"skill":12,"spawn":25,"status":44},
"fx": {"crit":5,"displace":8,"ripple":7,"shadowWeave":7,"shield":2,"shieldBreak":1,"stealth":2}, "fx": {"crit":5,"displace":8,"ripple":7,"shadowWeave":7,"shield":2,"shieldBreak":1,"stealth":2},
"snaps": "190730ef 1287aa6f 455af4b6 ffbb8c4d 69de4849 0da77d28 a99ce87b" "snaps": "190730ef 1287aa6f 455af4b6 1f8ca5ac 59c133b0 aef8816c c68e57c2"
}, },
"bond-emptyShip-high": { "bond-emptyShip-high": {
"about": "协防干员 high: tier 1 layers 999; chess_char_4_17_b chess_char_4_18_b chess_char_4_19_b chess_char_4_22_b chess_char_2_14_b chess_char_3_10_b chess_char_4_20_b chess_char_4_21_b", "about": "协防干员 high: tier 1 layers 999; chess_char_4_17_b chess_char_4_18_b chess_char_4_19_b chess_char_4_22_b chess_char_2_14_b chess_char_3_10_b chess_char_4_20_b chess_char_4_21_b",
@@ -292,33 +292,33 @@
"round": 10, "round": 10,
"seed": 1870248576, "seed": 1870248576,
"waveId": "act1autochess_h03", "waveId": "act1autochess_h03",
"time": 153.6, "time": 135.5,
"ticks": 4608, "ticks": 4065,
"reason": "cleared", "reason": "cleared",
"killed": 12, "killed": 13,
"total": 13, "total": 13,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 65, "rngDraws": 67,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":12,"total":13,"perfect":false,"leaks":1,"leaksUncounted":0,"coins":0,"dmg":226836,"bossDmg":0,"heal":7097,"deaths":1,"layerGains":{}}}, "players": {"p1":{"killed":13,"total":13,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":227338,"bossDmg":0,"heal":7760,"deaths":0,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_4_17_b",1,"uniequip_002_hsguma",3513,1,6,0,2200,2642,837,48,0], ["p1",1,"op","chess_char_4_17_b",1,"uniequip_002_hsguma",3513,1,6,0,2845,4656,779,65,0],
["p1",2,"op","chess_char_4_18_b",1,"uniequip_002_mudrok",6104,1,7,4,68841,2772,2772,29,7], ["p1",2,"op","chess_char_4_18_b",1,"uniequip_002_mudrok",5824.3,1,7,5,66592,3263,2984,29,7],
["p1",3,"op","chess_char_4_19_b",2,"uniequip_002_flamtl",1438.5,1,5,0,756,826,146,14,1], ["p1",3,"op","chess_char_4_19_b",2,"uniequip_002_flamtl",2118,1,5,0,0,0,0,0,0],
["p1",4,"op","chess_char_4_22_b",2,"uniequip_002_svrash",0,0,8,3,71089,4106,1537,81,2], ["p1",4,"op","chess_char_4_22_b",2,"uniequip_002_svrash",2569,1,8,4,73210,121,121,88,2],
["p1",5,"op","chess_char_2_14_b",1,"uniequip_002_flower",1544,1,3,0,0,0,1805,16,2], ["p1",5,"op","chess_char_2_14_b",1,"uniequip_002_flower",1544,1,3,0,0,0,3877,22,2],
["p1",6,"op","chess_char_3_10_b",1,"uniequip_002_pinecn",2120,1,4,5,62114,0,0,60,4], ["p1",6,"op","chess_char_3_10_b",1,"uniequip_002_pinecn",2120,1,4,4,62857,0,0,60,4],
["p1",7,"op","chess_char_4_20_b",2,"uniequip_002_fartth",1419,1,9,0,21835,0,0,27,0], ["p1",7,"op","chess_char_4_20_b",2,"uniequip_002_fartth",1419,1,9,0,21835,0,0,27,0],
["p1",8,"op","chess_char_4_21_b",1,"uniequip_002_plosis",1584,1,10,0,0,0,0,0,0], ["p1",8,"op","chess_char_4_21_b",1,"uniequip_002_plosis",1584,1,10,0,0,0,0,0,0],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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] ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1045_hammer_2":[2,1,1,9149,45411],"enemy_1061_zomshd":[11,11,0,1196,185225]}, "enemies": {"enemy_1045_hammer_2":[2,2,0,7213,46080],"enemy_1061_zomshd":[11,11,0,827,185058]},
"hooks": [1,23,4608,348,348,675,665,10930,13,14,16,16,0,7308,16,29,13,1,1,16,0,0,2], "hooks": [1,23,4065,359,359,695,687,10042,13,13,15,14,0,6291,15,28,13,0,1,17,0,0,0],
"events": {"atk":448,"deploy":8,"die":13,"dmg":654,"engage":6,"fx":107,"heal":25,"leak":1,"skill":34,"spawn":23,"status":45}, "events": {"atk":461,"deploy":8,"die":13,"dmg":677,"engage":5,"fx":107,"heal":28,"skill":31,"spawn":23,"status":43},
"fx": {"block":8,"dodge":2,"flame":1,"garrisonGrant":1,"riposte":2,"rockslide":7,"shieldBreak":11,"slash":40,"thorns":33,"truesilver":2}, "fx": {"block":8,"garrisonGrant":1,"rockslide":7,"shieldBreak":10,"slash":40,"thorns":39,"truesilver":2},
"snaps": "48d2a0bc 7a5c72a3 dfc092f7 82b8653f 0b0a1e81 6a336839 88aa8eb8 34fe4520 f8c8bcd6 c425daea 895cf1c1 6267707c 2a91ead1 f11bba77 603569c9 d7811c9c" "snaps": "48d2a0bc 7a5c72a3 dfc092f7 82b8653f 0b0a1e81 7d5ce8ad 2bd0b6be 2add6c80 daee01b4 0386f71e 15ac33ed 95e9c95e 6935c702 3d725b20"
}, },
"bond-indomShip-low": { "bond-indomShip-low": {
"about": "不屈 low: tier 1 layers 1; chess_char_1_20_a chess_char_4_11_a chess_char_2_12_a chess_char_4_09_a chess_char_4_10_a chess_char_4_12_a chess_char_4_13_a chess_char_4_14_a token_10041_cathy_catsld token_10041_cathy_catsld", "about": "不屈 low: tier 1 layers 1; chess_char_1_20_a chess_char_4_11_a chess_char_2_12_a chess_char_4_09_a chess_char_4_10_a chess_char_4_12_a chess_char_4_13_a chess_char_4_14_a token_10041_cathy_catsld token_10041_cathy_catsld",
@@ -329,20 +329,20 @@
"round": 5, "round": 5,
"seed": 1441167629, "seed": 1441167629,
"waveId": "act1autochess_05", "waveId": "act1autochess_05",
"time": 69, "time": 69.03,
"ticks": 2070, "ticks": 2071,
"reason": "cleared", "reason": "cleared",
"killed": 18, "killed": 18,
"total": 18, "total": 18,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 12, "rngDraws": 11,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": {"killed":18,"total":18,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":86976,"bossDmg":0,"heal":1545,"deaths":3,"layerGains":{"indomShip":2}} "p1": {"killed":18,"total":18,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":86976,"bossDmg":0,"heal":1545,"deaths":3,"layerGains":{"indomShip":2}}
}, },
"units": [ "units": [
["p1",1,"op","chess_char_1_20_a",1,null,1056.4,1,5,0,438,1142,0,26,0], ["p1",1,"op","chess_char_1_20_a",1,null,1341.8,1,5,0,438,856,0,26,0],
["p1",2,"op","chess_char_4_11_a",1,null,0,0,6,0,0,3002,0,0,1], ["p1",2,"op","chess_char_4_11_a",1,null,0,0,6,0,0,3002,0,0,1],
["p1",3,"op","chess_char_2_12_a",1,null,1107,1,34,1,410,1107,0,11,2], ["p1",3,"op","chess_char_2_12_a",1,null,1107,1,34,1,410,1107,0,11,2],
["p1",4,"op","chess_char_4_09_a",1,null,1978.85,1,9,8,39718,159,0,13,1], ["p1",4,"op","chess_char_4_09_a",1,null,1978.85,1,9,8,39718,159,0,13,1],
@@ -356,11 +356,11 @@
["-","~2","device","trap_1105_accrate",null,null,100,1,2,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] ["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1158_divman":[15,15,0,2052,57024],"enemy_1160_hvyslr":[2,2,0,4999,23040],"enemy_1161_tidmag":[1,1,0,1491,6912]}, "enemies": {"enemy_1158_divman":[15,15,0,2052,57024],"enemy_1160_hvyslr":[2,2,0,4713,23040],"enemy_1161_tidmag":[1,1,0,1491,6912]},
"hooks": [1,32,2070,171,171,272,277,1058,21,21,12,12,0,6047,103,8,18,0,1,21,1,0,3], "hooks": [1,32,2071,170,170,271,276,1058,21,21,12,12,0,6046,103,8,18,0,1,21,1,0,3],
"events": {"atk":220,"deploy":11,"die":21,"dmg":277,"engage":6,"fx":25,"layer":1,"skill":24,"spawn":31,"status":88}, "events": {"atk":219,"deploy":11,"die":21,"dmg":276,"engage":6,"fx":25,"layer":1,"skill":24,"spawn":31,"status":88},
"fx": {"dilemma":1,"dodge":3,"explosion":5,"frostNova":2,"garrison":1,"levitate":7,"overclock":1,"shield":2,"slippery":1,"splash":2}, "fx": {"dilemma":1,"dodge":3,"explosion":5,"frostNova":2,"garrison":1,"levitate":7,"overclock":1,"shield":2,"slippery":1,"splash":2},
"snaps": "50aa73ae 0df6cf78 0121335c ab457333 b3f5b1ca 57fd8a43 2ad35d9b" "snaps": "50aa73ae 0df6cf78 0121335c 2a1ad688 4502f534 b72117d2 a88adb8f"
}, },
"bond-indomShip-high": { "bond-indomShip-high": {
"about": "不屈 high: tier 2 layers 999; chess_char_1_20_b chess_char_3_16_b chess_char_4_23_b chess_char_5_01_b chess_char_2_12_b chess_char_4_24_b chess_char_4_25_b chess_char_4_26_b", "about": "不屈 high: tier 2 layers 999; chess_char_1_20_b chess_char_3_16_b chess_char_4_23_b chess_char_5_01_b chess_char_2_12_b chess_char_4_24_b chess_char_4_25_b chess_char_4_26_b",
@@ -374,28 +374,28 @@
"time": 190, "time": 190,
"ticks": 5700, "ticks": 5700,
"reason": "timeout", "reason": "timeout",
"killed": 13, "killed": 14,
"total": 22, "total": 22,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 309, "rngDraws": 316,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":13,"total":22,"perfect":false,"leaks":9,"leaksUncounted":0,"coins":0,"dmg":321976,"bossDmg":0,"heal":74084,"deaths":28,"layerGains":{}}}, "players": {"p1":{"killed":14,"total":22,"perfect":false,"leaks":8,"leaksUncounted":0,"coins":0,"dmg":318296,"bossDmg":0,"heal":70849,"deaths":23,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_1_20_b",1,"uniequip_002_liskam",2892,1,58,1,28896,50874,7197,107,7], ["p1",1,"op","chess_char_1_20_b",1,"uniequip_002_liskam",2892,1,50,2,39068,34711,6243,81,8],
["p1",2,"op","chess_char_3_16_b",1,"uniequip_002_snakek",3100,1,5,0,0,0,3150,0,0], ["p1",2,"op","chess_char_3_16_b",1,"uniequip_002_snakek",3100,1,5,0,0,0,2658,0,0],
["p1",3,"op","chess_char_4_23_b",2,"uniequip_002_gvial2",2811,1,7,0,0,0,0,0,0], ["p1",3,"op","chess_char_4_23_b",2,"uniequip_002_gvial2",2811,1,7,0,0,0,0,0,0],
["p1",4,"op","chess_char_5_01_b",1,"uniequip_002_excu2",1174.58,1,56,9,205206,37563,17911,196,8], ["p1",4,"op","chess_char_5_01_b",1,"uniequip_002_excu2",2104.29,1,53,9,205298,34469,18061,197,7],
["p1",5,"op","chess_char_2_12_b",1,"uniequip_002_gravel",2468.4,1,50,1,15644,29113,8736,197,5], ["p1",5,"op","chess_char_2_12_b",1,"uniequip_002_gravel",2468.4,1,48,1,15644,29113,8359,197,5],
["p1",6,"op","chess_char_4_24_b",1,"uniequip_002_billro",2178,1,54,2,72229,4214,4303,65,4], ["p1",6,"op","chess_char_4_24_b",1,"uniequip_002_billro",2178,1,51,2,58286,4214,4357,55,3],
["p1",7,"op","chess_char_4_25_b",2,"uniequip_002_cetsyr",1671,1,51,0,0,7103,5985,0,2], ["p1",7,"op","chess_char_4_25_b",2,"uniequip_002_cetsyr",1671,1,49,0,0,7103,5908,0,2],
["p1",8,"op","chess_char_4_26_b",0,"uniequip_002_bldsk",1522,1,55,0,0,17721,26801,37,9] ["p1",8,"op","chess_char_4_26_b",0,"uniequip_002_bldsk",1522,1,52,0,0,17721,25263,34,9]
], ],
"enemies": {"enemy_1166_dusbr_2":[14,11,3,33134,133646],"enemy_1170_dushld_2":[4,1,3,37533,54688],"enemy_9011_acrefr":[4,1,0,75921,133641]}, "enemies": {"enemy_1166_dusbr_2":[14,12,2,33868,144595],"enemy_1170_dushld_2":[4,1,3,38494,57122],"enemy_9011_acrefr":[4,1,2,54968,116579]},
"hooks": [1,58,5700,890,890,1451,1434,4113,41,47,35,33,100,4048,235,79,22,6,1,41,0,0,17], "hooks": [1,53,5700,854,854,1395,1375,3858,37,44,34,33,97,4064,196,65,22,7,1,37,0,0,20],
"events": {"atk":1291,"deploy":36,"die":41,"dmg":1430,"engage":4,"fx":185,"heal":212,"leak":6,"skill":68,"spawn":30,"status":588}, "events": {"atk":1232,"deploy":31,"die":37,"dmg":1371,"engage":4,"fx":183,"heal":212,"leak":7,"skill":67,"spawn":30,"status":510},
"fx": {"bandage":9,"dodge":17,"extraAttack":56,"garrisonGrant":1,"mote":35,"redistribute":30,"revive":25,"reweave":2,"sandChains":4,"shield":5,"spGift":1}, "fx": {"bandage":9,"dodge":20,"extraAttack":57,"garrisonGrant":1,"mote":35,"redistribute":30,"revive":20,"reweave":2,"sandChains":3,"shield":5,"spGift":1},
"snaps": "7d5f326c b27b8121 c23f4b8e b11158be 745858a1 bc233c02 36600c75 96f7bb77 dd25f731 4dcd794a acc9ff4c 889ddf60 c6455ec2 9e49b82f 26bf91e4 65dd88be eddb6226 14e89108 5e61cdf9" "snaps": "7d5f326c b27b8121 c23f4b8e b11158be 939db446 e58c984b b773c4c3 0bbe4790 af6fd37e f19f3164 3f3ea885 a388515f 2e1c5fd1 57beebec 2c67317e 697660bf d6af810b 6570b7c9 41e50f43"
}, },
"bond-investShip-low": { "bond-investShip-low": {
"about": "投资人 low: tier 1 layers 1; chess_char_4_17_a chess_char_4_18_a chess_char_5_14_a chess_char_4_19_a chess_char_3_04_a chess_char_4_16_a chess_char_2_19_a chess_char_4_20_a", "about": "投资人 low: tier 1 layers 1; chess_char_4_17_a chess_char_4_18_a chess_char_5_14_a chess_char_4_19_a chess_char_3_04_a chess_char_4_16_a chess_char_2_19_a chess_char_4_20_a",
@@ -406,25 +406,25 @@
"round": 5, "round": 5,
"seed": 411444759, "seed": 411444759,
"waveId": "act1autochess_05", "waveId": "act1autochess_05",
"time": 84, "time": 85.97,
"ticks": 2520, "ticks": 2579,
"reason": "cleared", "reason": "cleared",
"killed": 18, "killed": 18,
"total": 18, "total": 18,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 29, "rngDraws": 31,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":18,"total":18,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":67950,"bossDmg":0,"heal":729,"deaths":2,"layerGains":{}}}, "players": {"p1":{"killed":18,"total":18,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":67950,"bossDmg":0,"heal":745,"deaths":3,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_4_17_a",1,null,2849,1,3,0,0,0,0,0,0], ["p1",1,"op","chess_char_4_17_a",1,null,2849,1,3,0,0,0,0,0,0],
["p1",2,"op","chess_char_4_18_a",1,null,4587.2,1,4,1,5101,0,0,14,1], ["p1",2,"op","chess_char_4_18_a",1,null,4587.2,1,4,1,4357,0,0,12,1],
["p1",3,"op","chess_char_5_14_a",1,null,1386.45,1,5,0,8599,895,729,29,5], ["p1",3,"op","chess_char_5_14_a",1,null,1401.97,1,5,1,8837,895,745,30,5],
["p1",4,"op","chess_char_4_19_a",2,null,30.76,1,8,1,2659,1529,0,21,1], ["p1",4,"op","chess_char_4_19_a",2,null,0,0,8,0,2273,1560,0,22,1],
["p1",5,"op","chess_char_3_04_a",1,null,657.84,1,9,7,16474,2320,0,30,0], ["p1",5,"op","chess_char_3_04_a",1,null,429.84,1,9,7,16757,2548,0,33,0],
["p1",6,"op","chess_char_4_16_a",2,null,1246,1,42,4,13371,1246,0,20,3], ["p1",6,"op","chess_char_4_16_a",2,null,1246,1,42,4,13652,1246,0,20,3],
["p1",7,"op","chess_char_2_19_a",1,null,0,0,6,3,9495,1021,0,25,1], ["p1",7,"op","chess_char_2_19_a",1,null,0,0,6,3,9495,1021,0,25,1],
["p1",8,"op","chess_char_4_20_a",2,null,1165.2,1,7,2,12251,52,0,17,1], ["p1",8,"op","chess_char_4_20_a",2,null,1165.2,1,7,2,12578,52,0,18,1],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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], ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null],
["p1","~1","token","token_10031_swire2_gdtrap",null,null,1000,1,11,0,0,0,0,0,null], ["p1","~1","token","token_10031_swire2_gdtrap",null,null,1000,1,11,0,0,0,0,0,null],
@@ -440,15 +440,15 @@
["p1","~11","token","token_10031_swire2_gdtrap",null,null,1000,0,34,0,0,0,0,0,null], ["p1","~11","token","token_10031_swire2_gdtrap",null,null,1000,0,34,0,0,0,0,0,null],
["p1","~12","token","token_10031_swire2_gdtrap",null,null,1000,0,36,0,0,0,0,0,null], ["p1","~12","token","token_10031_swire2_gdtrap",null,null,1000,0,36,0,0,0,0,0,null],
["p1","~13","token","token_10031_swire2_gdtrap",null,null,1000,0,39,0,0,0,0,0,null], ["p1","~13","token","token_10031_swire2_gdtrap",null,null,1000,0,39,0,0,0,0,0,null],
["p1","~14","token","token_10031_swire2_gdtrap",null,null,1000,1,43,0,0,0,0,0,null], ["p1","~14","token","token_10031_swire2_gdtrap",null,null,1000,0,43,0,0,0,0,0,null],
["p1","~15","token","token_10031_swire2_gdtrap",null,null,1000,0,44,0,0,0,0,0,null], ["p1","~15","token","token_10031_swire2_gdtrap",null,null,1000,1,44,0,0,0,0,0,null],
["p1","~16","token","token_10031_swire2_gdtrap",null,null,1000,1,45,0,0,0,0,0,null] ["p1","~16","token","token_10031_swire2_gdtrap",null,null,1000,1,45,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1158_divman":[15,15,0,1253,44550],"enemy_1160_hvyslr":[2,2,0,4193,18000],"enemy_1161_tidmag":[1,1,0,1617,5400]}, "enemies": {"enemy_1158_divman":[15,15,0,1253,44550],"enemy_1160_hvyslr":[2,2,0,4605,18000],"enemy_1161_tidmag":[1,1,0,1463,5400]},
"hooks": [1,45,2520,224,224,300,303,477,21,33,12,12,0,6575,45,10,18,0,1,22,0,0,8], "hooks": [1,45,2579,229,229,308,309,486,22,34,12,12,0,6574,46,11,18,0,1,23,0,0,9],
"events": {"atk":233,"deploy":25,"die":33,"dmg":299,"engage":7,"fx":86,"skill":28,"spawn":44,"status":73}, "events": {"atk":239,"deploy":25,"die":34,"dmg":306,"engage":7,"fx":86,"skill":28,"spawn":44,"status":72},
"fx": {"aoe":6,"coin":19,"dodge":8,"explode":13,"featherArrow":1,"flame":1,"garrisonGrant":1,"revive":1,"riposte":5,"rockslide":1,"shieldBreak":4,"summon":16,"swordRain":6,"swordStorm":3,"zone":1}, "fx": {"aoe":6,"coin":19,"dodge":9,"explode":13,"featherArrow":1,"flame":1,"garrisonGrant":1,"revive":1,"riposte":5,"rockslide":1,"shieldBreak":3,"summon":16,"swordRain":6,"swordStorm":3,"zone":1},
"snaps": "371a1f9a 0e7ef0c6 fd309dbf f797fdbf 5d03f106 6a6a672f 1b0fa006 5186fdb1 f4984156" "snaps": "371a1f9a 0e7ef0c6 3a2e3059 6880e89a cb92201c 756e5f00 a9df75a6 7a2568de 3c8d4ff4"
}, },
"bond-investShip-high": { "bond-investShip-high": {
"about": "投资人 high: tier 1 layers 999; chess_char_5_14_b chess_char_5_05_b chess_char_5_06_b chess_char_3_04_b chess_char_5_07_b chess_char_2_19_b chess_char_5_02_b chess_char_5_03_b", "about": "投资人 high: tier 1 layers 999; chess_char_5_14_b chess_char_5_05_b chess_char_5_06_b chess_char_3_04_b chess_char_5_07_b chess_char_2_19_b chess_char_5_02_b chess_char_5_03_b",
@@ -497,8 +497,8 @@
"round": 5, "round": 5,
"seed": 2071095439, "seed": 2071095439,
"waveId": "act1autochess_05", "waveId": "act1autochess_05",
"time": 69.47, "time": 69.73,
"ticks": 2084, "ticks": 2092,
"reason": "cleared", "reason": "cleared",
"killed": 16, "killed": 16,
"total": 16, "total": 16,
@@ -507,7 +507,7 @@
"rngDraws": 0, "rngDraws": 0,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": {"killed":16,"total":16,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":121696,"bossDmg":0,"heal":13111,"deaths":2,"layerGains":{"kazimierzShip":1}} "p1": {"killed":16,"total":16,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":121626,"bossDmg":0,"heal":13119,"deaths":2,"layerGains":{"kazimierzShip":1}}
}, },
"units": [ "units": [
["p1",1,"op","chess_char_2_18_a",0,null,2218,1,7,8,47014,181,0,23,1], ["p1",1,"op","chess_char_2_18_a",0,null,2218,1,7,8,47014,181,0,23,1],
@@ -516,17 +516,17 @@
["p1",4,"op","chess_char_1_19_a",1,null,0,0,9,0,15153,4341,0,36,1], ["p1",4,"op","chess_char_1_19_a",1,null,0,0,9,0,15153,4341,0,36,1],
["p1",5,"op","chess_char_2_12_a",1,null,0,0,10,1,24445,7624,3715,58,1], ["p1",5,"op","chess_char_2_12_a",1,null,0,0,10,1,24445,7624,3715,58,1],
["p1",6,"op","chess_char_4_21_a",1,null,1271,1,4,0,0,0,5793,34,1], ["p1",6,"op","chess_char_4_21_a",1,null,1271,1,4,0,0,0,5793,34,1],
["p1",7,"op","chess_char_4_24_a",1,null,1726,1,5,3,8775,0,0,13,2], ["p1",7,"op","chess_char_4_24_a",1,null,1726,1,5,3,8705,0,0,13,2],
["p1",8,"op","chess_char_4_25_a",2,null,378.43,1,11,0,0,4733,3603,0,1], ["p1",8,"op","chess_char_4_25_a",2,null,386.59,1,11,0,0,4733,3611,0,1],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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], ["-","~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] ["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1116_liprr":[11,11,0,4995,69696],"enemy_1116_liprr_2":[4,4,0,89,34560],"enemy_1121_lifbos":[1,1,0,7831,23040]}, "enemies": {"enemy_1116_liprr":[11,11,0,4995,69696],"enemy_1116_liprr_2":[4,4,0,89,34560],"enemy_1121_lifbos":[1,1,0,7831,23040]},
"hooks": [1,27,2084,238,238,439,439,1730,18,18,8,7,0,7480,13,18,16,0,1,18,1,0,0], "hooks": [1,27,2092,238,238,440,440,1738,18,18,8,7,0,7552,13,18,16,0,1,18,1,0,0],
"events": {"atk":263,"deploy":8,"die":18,"dmg":431,"engage":5,"fx":60,"heal":49,"layer":1,"skill":15,"spawn":27,"status":49}, "events": {"atk":263,"deploy":8,"die":18,"dmg":432,"engage":5,"fx":60,"heal":49,"layer":1,"skill":15,"spawn":27,"status":49},
"fx": {"displace":16,"garrison":1,"healField":1,"liberate":3,"phase":2,"redistribute":15,"reweave":1,"sandChains":2,"shield":1,"slash":17,"truesilver":1}, "fx": {"displace":16,"garrison":1,"healField":1,"liberate":3,"phase":2,"redistribute":15,"reweave":1,"sandChains":2,"shield":1,"slash":17,"truesilver":1},
"snaps": "86cad855 f20e9695 1939f464 021173dc a7a02fb2 bf56e726 24bf526e" "snaps": "86cad855 f20e9695 1939f464 021173dc a7a02fb2 bf56e726 19f0e5fb"
}, },
"bond-kazimierzShip-high": { "bond-kazimierzShip-high": {
"about": "卡西米尔 high: tier 2 layers 999; chess_char_2_18_b chess_char_3_12_b chess_char_5_08_b chess_char_4_19_b chess_char_1_19_b chess_char_2_12_b chess_char_3_17_b chess_char_5_10_b", "about": "卡西米尔 high: tier 2 layers 999; chess_char_2_18_b chess_char_3_12_b chess_char_5_08_b chess_char_4_19_b chess_char_1_19_b chess_char_2_12_b chess_char_3_17_b chess_char_5_10_b",
@@ -537,8 +537,8 @@
"round": 10, "round": 10,
"seed": 3009624823, "seed": 3009624823,
"waveId": "act1autochess_h03", "waveId": "act1autochess_h03",
"time": 87.1, "time": 87.3,
"ticks": 2613, "ticks": 2619,
"reason": "cleared", "reason": "cleared",
"killed": 30, "killed": 30,
"total": 30, "total": 30,
@@ -546,24 +546,24 @@
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 19, "rngDraws": 19,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":403610,"bossDmg":0,"heal":1898,"deaths":3,"layerGains":{}}}, "players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":403654,"bossDmg":0,"heal":1741,"deaths":3,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_2_18_b",0,"uniequip_002_ashlok",1062.9,1,3,6,95155,2092,0,20,2], ["p1",1,"op","chess_char_2_18_b",0,"uniequip_002_ashlok",1062.9,1,3,6,95375,2092,0,19,2],
["p1",2,"op","chess_char_3_12_b",2,"uniequip_002_blemsh",3096,1,5,0,0,0,0,0,0], ["p1",2,"op","chess_char_3_12_b",2,"uniequip_002_blemsh",3096,1,5,0,0,0,0,0,0],
["p1",3,"op","chess_char_5_08_b",2,"uniequip_002_horn",610.48,1,7,10,66609,4063,1898,52,2], ["p1",3,"op","chess_char_5_08_b",2,"uniequip_002_horn",453.67,1,7,10,67512,4063,1741,55,2],
["p1",4,"op","chess_char_4_19_b",2,"uniequip_002_flamtl",2118,1,8,1,19858,0,0,17,2], ["p1",4,"op","chess_char_4_19_b",2,"uniequip_002_flamtl",2118,1,8,2,17415,0,0,15,2],
["p1",5,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",0,0,9,3,83060,1971,0,50,2], ["p1",5,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",0,0,9,2,84424,1971,0,50,2],
["p1",6,"op","chess_char_2_12_b",1,"uniequip_002_gravel",0,0,37,3,51889,4646,0,42,2], ["p1",6,"op","chess_char_2_12_b",1,"uniequip_002_gravel",0,0,37,3,51889,4646,0,42,2],
["p1",7,"op","chess_char_3_17_b",1,"uniequip_002_shotst",3441.6,1,4,7,84143,0,0,29,3], ["p1",7,"op","chess_char_3_17_b",1,"uniequip_002_shotst",3441.6,1,4,7,84143,0,0,29,3],
["p1",8,"op","chess_char_5_10_b",2,"uniequip_002_lisa",1480,1,6,0,2897,0,0,10,2], ["p1",8,"op","chess_char_5_10_b",2,"uniequip_002_lisa",1480,1,6,0,2897,0,0,10,2],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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] ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
], ],
"enemies": {"enemy_10124_uashld_2":[2,2,0,4508,124416],"enemy_1043_zomsbr":[23,23,0,20,146972],"enemy_1061_zomshd":[5,5,0,4181,132223]}, "enemies": {"enemy_10124_uashld_2":[2,2,0,4508,124416],"enemy_1043_zomsbr":[23,23,0,20,146969],"enemy_1061_zomshd":[5,5,0,4181,132269]},
"hooks": [1,41,2613,239,239,480,595,3447,33,33,15,13,0,5189,999,11,30,0,1,43,0,0,5], "hooks": [1,41,2619,239,239,480,595,3386,33,33,15,12,0,5209,982,11,30,0,1,43,0,0,5],
"events": {"atk":239,"deploy":9,"die":33,"dmg":475,"engage":7,"fx":53,"skill":28,"spawn":40,"status":121}, "events": {"atk":239,"deploy":9,"die":33,"dmg":475,"engage":7,"fx":54,"skill":27,"spawn":40,"status":123},
"fx": {"aoe":24,"displace":14,"dodge":5,"flame":2,"overload":2,"riposte":1,"shield":2,"volley":3}, "fx": {"aoe":25,"displace":14,"dodge":5,"flame":2,"overload":2,"riposte":1,"shield":2,"volley":3},
"snaps": "5a72bba9 62d17d06 7af61b0e 145770cc 0e2d980c b193a626 7b9e061d 3713fd93 dd49f202" "snaps": "5a72bba9 62d17d06 7af61b0e 049de829 804698e6 af344f2a 1f8648c8 7c641222 54fb5f62"
}, },
"bond-kjeragShip-low": { "bond-kjeragShip-low": {
"about": "谢拉格 low: tier 1 layers 1; chess_char_1_02_a chess_char_3_02_a chess_char_3_03_a chess_char_3_04_a chess_char_2_05_a chess_char_3_11_a chess_char_4_26_a chess_char_3_01_a", "about": "谢拉格 low: tier 1 layers 1; chess_char_1_02_a chess_char_3_02_a chess_char_3_03_a chess_char_3_04_a chess_char_2_05_a chess_char_3_11_a chess_char_4_26_a chess_char_3_01_a",
@@ -630,23 +630,23 @@
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 9, "rngDraws": 9,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":17,"total":17,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":177984,"bossDmg":0,"heal":2465,"deaths":0,"layerGains":{}}}, "players": {"p1":{"killed":17,"total":17,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":177984,"bossDmg":0,"heal":2365,"deaths":0,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",3942.5,1,2,0,0,0,0,0,0], ["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",3942.5,1,2,0,0,0,0,0,0],
["p1",2,"op","chess_char_5_11_b",1,"uniequip_002_demkni",5555.55,1,1,0,0,0,912,0,4], ["p1",2,"op","chess_char_5_11_b",1,"uniequip_002_demkni",5555.55,1,1,0,0,0,962,0,4],
["p1",3,"op","chess_char_2_05_b",1,"uniequip_002_harold",15542.19,1,4,0,0,50,1553,10,1], ["p1",3,"op","chess_char_2_05_b",1,"uniequip_002_harold",15542.19,1,4,0,0,50,1403,8,1],
["p1",4,"op","chess_char_3_11_b",1,"uniequip_002_snhunt",2137.5,1,7,12,115208,1212,0,22,9], ["p1",4,"op","chess_char_3_11_b",1,"uniequip_002_snhunt",2137.5,1,7,12,110904,1162,0,21,9],
["p1",5,"op","chess_char_3_14_b",1,"uniequip_002_slbell",1968.75,1,5,1,5804,50,0,1,1], ["p1",5,"op","chess_char_3_14_b",1,"uniequip_002_slbell",1968.75,1,5,0,8752,50,0,1,1],
["p1",6,"op","chess_char_3_20_b",1,"uniequip_002_kjera",1812.5,1,8,0,5206,50,0,7,1], ["p1",6,"op","chess_char_3_20_b",1,"uniequip_002_kjera",1812.5,1,8,0,5206,50,0,7,1],
["p1",7,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",2436.25,1,3,1,1916,50,0,2,3], ["p1",7,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",2436.25,1,3,1,2323,50,0,3,2],
["p1",8,"op","chess_char_5_12_b",0,"uniequip_002_dusk",2183.75,1,6,1,48000,1303,0,11,11], ["p1",8,"op","chess_char_5_12_b",0,"uniequip_002_dusk",2183.75,1,6,2,48948,1253,0,11,11],
["p1","~1","token","token_10015_dusk_drgn",null,null,0,0,12,2,1851,1997,0,6,null] ["p1","~1","token","token_10015_dusk_drgn",null,null,0,0,12,2,1851,1997,0,6,null]
], ],
"enemies": {"enemy_1267_nhpbr_2":[11,11,0,2576,69696],"enemy_1270_nhstlk_2":[4,4,0,0,73728],"enemy_1272_nhtank_2":[2,2,0,2135,34560]}, "enemies": {"enemy_1267_nhpbr_2":[11,11,0,2476,69696],"enemy_1270_nhstlk_2":[4,4,0,0,73728],"enemy_1272_nhtank_2":[2,2,0,2135,34560]},
"hooks": [1,26,2174,71,71,122,122,15,18,18,30,30,0,7789,1580,4,17,0,1,18,0,0,0], "hooks": [1,26,2174,69,69,120,120,14,18,18,29,29,0,7646,1581,4,17,0,1,18,0,0,0],
"events": {"atk":75,"deploy":9,"die":18,"dmg":122,"engage":6,"fx":41,"heal":15,"skill":60,"spawn":26,"status":22}, "events": {"atk":73,"deploy":9,"die":18,"dmg":120,"engage":6,"fx":40,"heal":14,"skill":58,"spawn":26,"status":23},
"fx": {"coldWind":2,"frostNova":3,"healAoe":4,"strike":9,"summon":1,"volley":9,"zone":13}, "fx": {"coldWind":2,"frostNova":2,"healAoe":4,"strike":9,"summon":1,"volley":9,"zone":13},
"snaps": "90b7f22d b531ce35 fbce9828 6d380cb9 987fb042 7ad0629c b4438ae2 c77be816" "snaps": "90b7f22d 48abf948 ab24ccfb 0b59b737 b36b901e 8b9d506f 13d6dc16 0b9fe7cc"
}, },
"bond-lateranoShip-low": { "bond-lateranoShip-low": {
"about": "拉特兰 low: tier 1 layers 1; chess_char_3_06_a chess_char_3_05_a chess_char_1_01_a chess_char_2_01_a chess_char_3_01_a chess_char_3_08_a chess_char_3_09_a chess_char_3_10_a", "about": "拉特兰 low: tier 1 layers 1; chess_char_3_06_a chess_char_3_05_a chess_char_1_01_a chess_char_2_01_a chess_char_3_01_a chess_char_3_08_a chess_char_3_09_a chess_char_3_10_a",
@@ -694,8 +694,8 @@
"round": 10, "round": 10,
"seed": 4098169220, "seed": 4098169220,
"waveId": "act1autochess_h03", "waveId": "act1autochess_h03",
"time": 79.73, "time": 79.9,
"ticks": 2392, "ticks": 2397,
"reason": "cleared", "reason": "cleared",
"killed": 30, "killed": 30,
"total": 30, "total": 30,
@@ -703,22 +703,22 @@
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 7, "rngDraws": 7,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":585104,"bossDmg":0,"heal":84,"deaths":2,"layerGains":{}}}, "players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":585328,"bossDmg":0,"heal":38,"deaths":2,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",5165.77,1,4,0,26791,317,0,13,1], ["p1",1,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",5165.77,1,4,1,26413,317,0,14,1],
["p1",2,"op","chess_char_5_13_b",1,"uniequip_002_ghost2",3645.2,1,6,1,13289,3644,0,19,1], ["p1",2,"op","chess_char_5_13_b",1,"uniequip_002_ghost2",3645.2,1,6,0,13466,3644,0,19,1],
["p1",3,"op","chess_char_5_14_b",1,"none",0,0,7,2,27169,2078,84,2,5], ["p1",3,"op","chess_char_5_14_b",1,"none",0,0,7,2,26552,2032,38,2,5],
["p1",4,"op","chess_char_1_01_b",1,"uniequip_002_inside",1421,1,1,6,235290,0,0,231,1], ["p1",4,"op","chess_char_1_01_b",1,"uniequip_002_inside",1421,1,1,7,234959,0,0,228,1],
["p1",5,"op","chess_char_2_01_b",1,"uniequip_002_excu",2146,1,2,3,41154,0,0,15,1], ["p1",5,"op","chess_char_2_01_b",1,"uniequip_002_excu",2146,1,2,3,45019,0,0,15,1],
["p1",6,"op","chess_char_3_01_b",2,"uniequip_002_angel",1837,1,3,8,67747,0,0,55,2], ["p1",6,"op","chess_char_3_01_b",2,"uniequip_002_angel",1837,1,3,8,66840,0,0,55,2],
["p1",7,"op","chess_char_3_21_b",2,"uniequip_002_archet",1590,1,5,5,69468,0,0,61,2], ["p1",7,"op","chess_char_3_21_b",2,"uniequip_002_archet",1590,1,5,4,67884,0,0,61,2],
["p1",8,"op","chess_char_4_02_b",2,"uniequip_002_mostma",0,0,8,5,104195,1695,0,14,1] ["p1",8,"op","chess_char_4_02_b",2,"uniequip_002_mostma",0,0,8,5,104195,1695,0,14,1]
], ],
"enemies": {"enemy_1006_shield_3":[3,3,0,1629,298598],"enemy_1043_zomsbr":[23,23,0,677,157113],"enemy_1402_tgshd_2":[4,4,0,5428,129393]}, "enemies": {"enemy_1006_shield_3":[3,3,0,1584,298598],"enemy_1043_zomsbr":[23,23,0,677,157337],"enemy_1402_tgshd_2":[4,4,0,5428,129393]},
"hooks": [1,38,2392,437,437,766,766,5305,32,32,14,12,239,4696,28,12,30,0,1,37,0,0,0], "hooks": [1,38,2397,435,435,769,769,5366,32,32,14,12,236,4690,28,11,30,0,1,37,0,0,0],
"events": {"atk":527,"deploy":8,"die":32,"dmg":760,"engage":8,"fx":334,"skill":26,"spawn":38,"status":109}, "events": {"atk":526,"deploy":8,"die":32,"dmg":763,"engage":8,"fx":335,"skill":26,"spawn":38,"status":111},
"fx": {"aoe":5,"buff":2,"counter":8,"displace":38,"expose":266,"reload":1,"ripple":9,"sermon":1,"shield":3,"substitute":1}, "fx": {"aoe":5,"buff":2,"counter":8,"displace":38,"expose":267,"reload":1,"ripple":9,"sermon":1,"shield":3,"substitute":1},
"snaps": "86f46177 a7754041 6fc8742b 8a13c6b9 5312c442 0902c6cf 16463025 94610e2a" "snaps": "86f46177 a7754041 6fc8742b 8a13c6b9 570d4f1b f551616a dc275f12 5ca99140"
}, },
"bond-maniShip-low": { "bond-maniShip-low": {
"about": "调和 low: tier 1 layers 1; chess_char_3_12_a chess_char_3_16_a chess_char_6_11_a chess_char_1_03_a chess_char_2_04_a chess_char_3_11_a chess_char_3_13_a chess_char_3_14_a token_10030_mlyss_wtrman", "about": "调和 low: tier 1 layers 1; chess_char_3_12_a chess_char_3_16_a chess_char_6_11_a chess_char_1_03_a chess_char_2_04_a chess_char_3_11_a chess_char_3_13_a chess_char_3_14_a token_10030_mlyss_wtrman",
@@ -844,36 +844,36 @@
"round": 10, "round": 10,
"seed": 2841335436, "seed": 2841335436,
"waveId": "act1autochess_h03", "waveId": "act1autochess_h03",
"time": 153.8, "time": 155.93,
"ticks": 4614, "ticks": 4678,
"reason": "cleared", "reason": "cleared",
"killed": 18, "killed": 18,
"total": 18, "total": 18,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 322, "rngDraws": 334,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":18,"total":18,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":346374,"bossDmg":0,"heal":0,"deaths":2,"layerGains":{"visiShip":12}}}, "players": {"p1":{"killed":18,"total":18,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":346374,"bossDmg":0,"heal":0,"deaths":2,"layerGains":{"visiShip":12}}},
"units": [ "units": [
["p1",1,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",5482.35,1,3,1,6288,0,0,30,1], ["p1",1,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",5482.35,1,3,0,5661,0,0,29,1],
["p1",2,"op","chess_char_2_11_b",1,"uniequip_002_kazema",1107,1,5,1,14877,3247,0,51,3], ["p1",2,"op","chess_char_2_11_b",1,"uniequip_002_kazema",1107,1,5,1,14877,3247,0,51,3],
["p1",3,"op","chess_char_4_04_b",1,"uniequip_002_ines",2149,1,31,3,58139,2149,0,82,4], ["p1",3,"op","chess_char_4_04_b",1,"uniequip_002_ines",2149,1,31,3,58332,2149,0,83,4],
["p1",4,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",2383,1,33,5,40930,2383,0,42,17], ["p1",4,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",2383,1,33,5,40930,2383,0,42,17],
["p1",5,"op","chess_char_3_01_b",2,"uniequip_002_angel",1837,1,7,4,33054,0,0,61,2], ["p1",5,"op","chess_char_3_01_b",2,"uniequip_002_angel",1837,1,7,4,33054,0,0,61,2],
["p1",6,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1611,1,8,2,63836,0,0,18,8], ["p1",6,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1611,1,8,2,63836,0,0,18,8],
["p1",7,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1695,1,10,1,80976,0,0,21,1], ["p1",7,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1695,1,10,1,80976,0,0,21,1],
["p1",8,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1717.1,1,4,1,36692,0,0,133,3], ["p1",8,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1717.1,1,4,2,37127,0,0,136,3],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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], ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null],
["p1","~1","token","token_10022_kazema_shadow",null,null,2214,0,29,0,7781,0,0,3,null], ["p1","~1","token","token_10022_kazema_shadow",null,null,2214,0,29,0,7781,0,0,3,null],
["p1","~2","token","token_10022_kazema_shadow",null,null,2214,0,30,0,1900,0,0,9,null], ["p1","~2","token","token_10022_kazema_shadow",null,null,2214,0,30,0,1936,0,0,10,null],
["p1","~3","token","token_10022_kazema_shadow",null,null,2214,1,32,0,1900,0,0,9,null] ["p1","~3","token","token_10022_kazema_shadow",null,null,2214,1,32,0,1864,0,0,8,null]
], ],
"enemies": {"enemy_1381_winman":[9,9,0,373,129890],"enemy_1381_winman_2":[5,5,0,2420,97044],"enemy_1387_winshd":[4,4,0,2218,119439]}, "enemies": {"enemy_1381_winman":[9,9,0,373,129890],"enemy_1381_winman_2":[5,5,0,2420,97044],"enemy_1387_winshd":[4,4,0,2218,119439]},
"hooks": [1,33,4614,493,493,809,823,0,20,22,39,36,12,11457,77,9,18,0,1,21,3,3,0], "hooks": [1,33,4678,494,494,819,833,0,20,22,39,36,10,11457,79,9,18,0,1,21,3,3,0],
"events": {"atk":520,"deploy":13,"die":22,"dmg":810,"engage":11,"fx":165,"layer":3,"skill":75,"spawn":31,"status":157}, "events": {"atk":521,"deploy":13,"die":22,"dmg":822,"engage":11,"fx":165,"layer":3,"skill":75,"spawn":31,"status":161},
"fx": {"aoe":12,"buff":1,"burst":3,"charge":17,"counter":12,"crit":59,"displace":21,"garrison":3,"quadShot":2,"ripple":9,"sentry":1,"sermon":1,"shadowWeave":11,"shield":1,"soul":3,"stealth":4,"substitute":1,"summon":3,"swap":1}, "fx": {"aoe":12,"buff":1,"burst":3,"charge":17,"counter":10,"crit":61,"displace":21,"garrison":3,"quadShot":2,"ripple":9,"sentry":1,"sermon":1,"shadowWeave":11,"shield":1,"soul":3,"stealth":4,"substitute":1,"summon":3,"swap":1},
"snaps": "ae3e9ee4 e795ca48 af286313 5aa3428e a826aeb9 81e82a3d 3953a160 f1ec4be1 5a94a792 d0a07cdb cb15f41a 7270a596 a5058f10 aa5f31c4 829ad975 cdde39b0" "snaps": "ae3e9ee4 e795ca48 af286313 5aa3428e a826aeb9 81e82a3d 3953a160 f1ec4be1 0849783a a28271cc f019eec0 93a51c53 68a65584 a892034d 42b4f6e0 8e061436"
}, },
"bond-preciShip-low": { "bond-preciShip-low": {
"about": "精准 low: tier 1 layers 1; chess_char_4_11_a chess_char_4_04_a chess_char_4_07_a chess_char_4_09_a chess_char_1_09_a chess_char_1_17_a chess_char_4_10_a chess_char_4_12_a token_10041_cathy_catsld token_10041_cathy_catsld", "about": "精准 low: tier 1 layers 1; chess_char_4_11_a chess_char_4_04_a chess_char_4_07_a chess_char_4_09_a chess_char_1_09_a chess_char_1_17_a chess_char_4_10_a chess_char_4_12_a token_10041_cathy_catsld token_10041_cathy_catsld",
@@ -964,14 +964,14 @@
"round": 5, "round": 5,
"seed": 806507299, "seed": 806507299,
"waveId": "act1autochess_05", "waveId": "act1autochess_05",
"time": 53.63, "time": 50.87,
"ticks": 1609, "ticks": 1526,
"reason": "cleared", "reason": "cleared",
"killed": 17, "killed": 17,
"total": 17, "total": 17,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 27, "rngDraws": 23,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": { "p1": {
@@ -983,28 +983,28 @@
"coins": 0, "coins": 0,
"dmg": 126144, "dmg": 126144,
"bossDmg": 0, "bossDmg": 0,
"heal": 2616, "heal": 2611,
"deaths": 1, "deaths": 1,
"layerGains": {"preciShip":4,"raidShip":1} "layerGains": {"preciShip":4,"raidShip":1}
} }
}, },
"units": [ "units": [
["p1",1,"op","chess_char_4_17_a",1,null,1910.66,1,3,1,295,938,0,5,0], ["p1",1,"op","chess_char_4_17_a",1,null,2849,1,3,0,0,0,0,0,0],
["p1",2,"op","chess_char_4_18_a",1,null,3295.65,1,5,2,21486,1508,216,15,3], ["p1",2,"op","chess_char_4_18_a",1,null,3765.71,1,5,3,22992,1032,211,13,3],
["p1",3,"op","chess_char_2_09_a",1,null,2047.24,1,17,3,20715,0,0,25,1], ["p1",3,"op","chess_char_2_09_a",1,null,2047.24,1,17,3,21927,0,0,26,1],
["p1",4,"op","chess_char_4_19_a",2,null,0,0,9,1,15228,1560,0,23,1], ["p1",4,"op","chess_char_4_19_a",2,null,0,0,9,1,15406,1560,0,28,1],
["p1",5,"op","chess_char_1_18_a",1,null,3101.37,1,14,5,40597,4523,2400,48,3], ["p1",5,"op","chess_char_1_18_a",1,null,3101.37,1,14,5,40597,4523,2400,48,3],
["p1",6,"op","chess_char_4_13_a",1,null,1587,1,4,2,11064,0,0,15,4], ["p1",6,"op","chess_char_4_13_a",1,null,1587,1,4,1,9511,0,0,12,4],
["p1",7,"op","chess_char_4_14_a",1,null,1276,1,6,0,0,0,0,0,0], ["p1",7,"op","chess_char_4_14_a",1,null,1276,1,6,0,0,0,0,0,0],
["p1",8,"op","chess_char_4_20_a",2,null,1217,1,8,3,16758,0,0,15,0], ["p1",8,"op","chess_char_4_20_a",2,null,1217,1,8,4,15710,0,0,15,0],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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] ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1116_liprr":[11,11,0,122,69696],"enemy_1116_liprr_2":[4,4,0,1078,34560],"enemy_1118_lidbox_2":[2,2,0,3535,21888]}, "enemies": {"enemy_1116_liprr":[11,11,0,129,69696],"enemy_1116_liprr_2":[4,4,0,1234,34560],"enemy_1118_lidbox_2":[2,2,0,1957,21888]},
"hooks": [1,30,1609,197,197,240,235,80,18,21,12,12,0,4590,247,20,17,0,1,18,2,0,7], "hooks": [1,30,1526,190,190,230,225,81,18,21,12,12,0,4561,227,19,17,0,1,18,2,0,8],
"events": {"atk":213,"deploy":11,"die":21,"dmg":222,"engage":7,"fx":52,"heal":50,"layer":2,"skill":26,"spawn":27,"status":83}, "events": {"atk":207,"deploy":11,"die":21,"dmg":211,"engage":6,"fx":51,"heal":50,"layer":2,"skill":26,"spawn":27,"status":73},
"fx": {"aoe":3,"blink":3,"block":1,"dodge":7,"flame":1,"frostNova":4,"garrison":2,"garrisonGrant":1,"liberate":3,"phase":10,"riposte":7,"rockslide":3,"shieldBreak":4,"thorns":3}, "fx": {"aoe":3,"blink":3,"dodge":8,"flame":1,"frostNova":4,"garrison":2,"garrisonGrant":1,"liberate":4,"phase":11,"riposte":7,"rockslide":3,"shieldBreak":4},
"snaps": "0d70c7b9 c3f43a03 eb2f3dd4 b15a471d 59890be2 3a914fb6" "snaps": "0d70c7b9 c3f43a03 69c7558a e477fd91 67bf565c"
}, },
"bond-raidShip-high": { "bond-raidShip-high": {
"about": "突袭 high: tier 1 layers 999; chess_char_4_17_b chess_char_4_18_b chess_char_2_09_b chess_char_4_19_b chess_char_1_18_b chess_char_4_14_b chess_char_4_20_b chess_char_4_21_b", "about": "突袭 high: tier 1 layers 999; chess_char_4_17_b chess_char_4_18_b chess_char_2_09_b chess_char_4_19_b chess_char_1_18_b chess_char_4_14_b chess_char_4_20_b chess_char_4_21_b",
@@ -1101,22 +1101,22 @@
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 45, "rngDraws": 45,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":262083,"bossDmg":0,"heal":1774,"deaths":2,"layerGains":{}}}, "players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":262043,"bossDmg":0,"heal":1774,"deaths":2,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_1_12_b",1,"uniequip_002_estell",3725.8,1,2,0,0,0,74,0,0], ["p1",1,"op","chess_char_1_12_b",1,"uniequip_002_estell",3725.8,1,2,0,0,0,74,0,0],
["p1",2,"op","chess_char_2_08_b",1,"uniequip_002_bubble",4709.8,1,3,0,0,0,93,0,0], ["p1",2,"op","chess_char_2_08_b",1,"uniequip_002_bubble",4709.8,1,3,0,0,0,93,0,0],
["p1",3,"op","chess_char_3_06_b",1,"uniequip_002_philae",6058.8,1,4,1,10213,1356,1575,4,1], ["p1",3,"op","chess_char_3_06_b",1,"uniequip_002_philae",6058.8,1,4,1,10213,1356,1575,3,1],
["p1",4,"op","chess_char_4_23_b",2,"uniequip_002_gvial2",0,0,5,15,168100,2811,0,95,1], ["p1",4,"op","chess_char_4_23_b",2,"uniequip_002_gvial2",0,0,5,15,168060,2811,0,95,1],
["p1",5,"op","chess_char_4_22_b",2,"uniequip_002_svrash",2569,1,39,14,46565,2569,0,29,1], ["p1",5,"op","chess_char_4_22_b",2,"uniequip_002_svrash",2569,1,39,14,46565,2569,0,29,1],
["p1",6,"op","chess_char_2_06_b",0,"uniequip_002_papyrs",1639,1,7,0,0,0,0,0,0], ["p1",6,"op","chess_char_2_06_b",0,"uniequip_002_papyrs",1639,1,7,0,0,0,0,0,0],
["p1",7,"op","chess_char_3_13_b",1,"uniequip_002_malist",1375,1,8,0,37205,0,0,45,11], ["p1",7,"op","chess_char_3_13_b",1,"uniequip_002_malist",1375,1,8,0,37205,0,0,45,11],
["p1",8,"op","chess_char_4_25_b",2,"uniequip_002_cetsyr",1671,1,1,0,0,0,33,0,2] ["p1",8,"op","chess_char_4_25_b",2,"uniequip_002_cetsyr",1671,1,1,0,0,0,33,0,2]
], ],
"enemies": {"enemy_1006_shield_3":[3,3,0,4529,138240],"enemy_1043_zomsbr":[23,23,0,0,70299],"enemy_1402_tgshd_2":[4,4,0,1411,59904]}, "enemies": {"enemy_1006_shield_3":[3,3,0,4529,138240],"enemy_1043_zomsbr":[23,23,0,0,70299],"enemy_1402_tgshd_2":[4,4,0,1411,59904]},
"hooks": [1,39,3215,187,187,459,661,1687,32,32,16,14,0,6627,0,9,30,0,1,46,0,1,0], "hooks": [1,39,3215,186,186,459,661,1687,32,32,16,14,0,6627,0,9,30,0,1,46,0,1,0],
"events": {"atk":235,"deploy":9,"die":32,"dmg":661,"engage":4,"fx":133,"skill":30,"spawn":38,"status":51}, "events": {"atk":234,"deploy":9,"die":32,"dmg":661,"engage":4,"fx":133,"skill":30,"spawn":38,"status":51},
"fx": {"aoe":2,"burst":1,"expose":66,"jungleSoul":1,"mote":18,"redistribute":22,"reweave":2,"slash":20,"truesilver":1}, "fx": {"aoe":2,"burst":1,"expose":66,"jungleSoul":1,"mote":18,"redistribute":22,"reweave":2,"slash":20,"truesilver":1},
"snaps": "2c6321b4 cd26a52a 35d00153 bf3bff60 b69e4296 fde5eeb3 102b572c e4ced46f b17c5537 712cd538 fa291588" "snaps": "2c6321b4 cd26a52a 35d00153 bf3bff60 9ad3e0e7 0ff82fce 968539c1 74f28af2 abe2071a 96a10227 89571696"
}, },
"bond-siracusaShip-low": { "bond-siracusaShip-low": {
"about": "叙拉古 low: tier 1 layers 1; chess_char_3_06_a chess_char_1_08_a chess_char_2_16_a chess_char_3_02_a chess_char_3_03_a chess_char_3_04_a chess_char_3_05_a chess_char_1_07_a", "about": "叙拉古 low: tier 1 layers 1; chess_char_3_06_a chess_char_1_08_a chess_char_2_16_a chess_char_3_02_a chess_char_3_03_a chess_char_3_04_a chess_char_3_05_a chess_char_1_07_a",
@@ -1127,32 +1127,32 @@
"round": 5, "round": 5,
"seed": 3227754780, "seed": 3227754780,
"waveId": "act1autochess_05", "waveId": "act1autochess_05",
"time": 76.73, "time": 71.57,
"ticks": 2302, "ticks": 2147,
"reason": "cleared", "reason": "cleared",
"killed": 19, "killed": 19,
"total": 19, "total": 19,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 22, "rngDraws": 18,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":19,"total":19,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":91584,"bossDmg":0,"heal":0,"deaths":5,"layerGains":{}}}, "players": {"p1":{"killed":19,"total":19,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":91584,"bossDmg":0,"heal":0,"deaths":3,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_3_06_a",1,null,0,0,2,0,6244,3246,0,1,1], ["p1",1,"op","chess_char_3_06_a",1,null,277.87,1,2,2,9269,2916,0,1,1],
["p1",2,"op","chess_char_1_08_a",1,null,0,0,5,0,5204,2056,0,11,1], ["p1",2,"op","chess_char_1_08_a",1,null,0,0,5,0,5204,2056,0,11,1],
["p1",3,"op","chess_char_2_16_a",1,null,0,0,6,1,11208,1791,0,28,1], ["p1",3,"op","chess_char_2_16_a",1,null,0,0,6,1,12304,1791,0,29,1],
["p1",4,"op","chess_char_3_02_a",1,null,0,0,3,4,16019,1911,0,38,1], ["p1",4,"op","chess_char_3_02_a",1,null,1087.08,1,3,3,14187,824,0,35,1],
["p1",5,"op","chess_char_3_03_a",1,null,0,0,7,3,12348,1378,0,27,0], ["p1",5,"op","chess_char_3_03_a",1,null,0,0,7,3,12348,1378,0,27,0],
["p1",6,"op","chess_char_3_04_a",1,null,1864,1,4,0,0,0,0,0,0], ["p1",6,"op","chess_char_3_04_a",1,null,1864,1,4,0,0,0,0,0,0],
["p1",7,"op","chess_char_3_05_a",2,null,288.01,1,8,7,27192,2763,0,27,1], ["p1",7,"op","chess_char_3_05_a",2,null,532.82,1,8,7,27192,2763,0,27,1],
["p1",8,"op","chess_char_1_07_a",0,null,1215,1,1,4,13369,0,0,21,0], ["p1",8,"op","chess_char_1_07_a",0,null,1215,1,1,3,11080,0,0,17,0],
["p1","~1","token","token_10031_swire2_gdtrap",null,null,1000,1,9,0,0,0,0,0,null] ["p1","~1","token","token_10031_swire2_gdtrap",null,null,1000,1,9,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1010_demon":[3,3,0,6485,25920],"enemy_1010_demon_2":[1,1,0,5868,17280],"enemy_1071_dftman":[15,15,0,793,48384]}, "enemies": {"enemy_1010_demon":[3,3,0,6245,25920],"enemy_1010_demon_2":[1,1,0,4574,17280],"enemy_1071_dftman":[15,15,0,909,48384]},
"hooks": [1,28,2302,229,229,281,303,0,24,24,5,5,0,4757,29,25,19,0,1,24,0,0,0], "hooks": [1,28,2147,225,225,283,309,0,22,22,5,3,0,4561,31,24,19,0,1,22,0,1,0],
"events": {"atk":230,"deploy":9,"die":24,"dmg":303,"engage":7,"fx":47,"skill":14,"spawn":28,"status":57}, "events": {"atk":227,"deploy":9,"die":22,"dmg":309,"engage":7,"fx":47,"skill":12,"spawn":28,"status":62},
"fx": {"aoe":8,"coin":4,"crit":6,"dp":1,"strike":27,"summon":1}, "fx": {"aoe":11,"burst":1,"coin":4,"crit":6,"dp":1,"strike":23,"summon":1},
"snaps": "d4f0d969 3a7c5df7 2ef957aa a7f6517c 59a77ce3 96b3b4ea d486812a 5107747b" "snaps": "d4f0d969 3a7c5df7 2ef957aa a7f6517c 1f015c2e 9e66eaa3 3895ada5 cceaeba6"
}, },
"bond-siracusaShip-high": { "bond-siracusaShip-high": {
"about": "叙拉古 high: tier 2 layers 999; chess_char_1_08_b chess_char_2_16_b chess_char_3_18_b chess_char_5_01_b chess_char_1_07_b chess_char_3_19_b chess_char_4_10_b chess_char_4_26_b token_10028_vigil_wolf", "about": "叙拉古 high: tier 2 layers 999; chess_char_1_08_b chess_char_2_16_b chess_char_3_18_b chess_char_5_01_b chess_char_1_07_b chess_char_3_19_b chess_char_4_10_b chess_char_4_26_b token_10028_vigil_wolf",
@@ -1274,8 +1274,8 @@
"round": 5, "round": 5,
"seed": 2364080280, "seed": 2364080280,
"waveId": "act1autochess_05", "waveId": "act1autochess_05",
"time": 52.87, "time": 49.93,
"ticks": 1586, "ticks": 1498,
"reason": "cleared", "reason": "cleared",
"killed": 17, "killed": 17,
"total": 17, "total": 17,
@@ -1293,29 +1293,29 @@
"coins": 0, "coins": 0,
"dmg": 126144, "dmg": 126144,
"bossDmg": 0, "bossDmg": 0,
"heal": 222, "heal": 0,
"deaths": 2, "deaths": 2,
"layerGains": {"lateranoShip":1,"siracusaShip":6} "layerGains": {"lateranoShip":1,"siracusaShip":6}
} }
}, },
"units": [ "units": [
["p1",1,"op","chess_char_3_16_a",1,null,1895.28,1,3,0,16,861,40,1,1], ["p1",1,"op","chess_char_3_16_a",1,null,2716.25,1,3,0,0,0,0,0,0],
["p1",2,"op","chess_char_4_01_a",2,null,0,0,5,2,11758,4221,0,15,1], ["p1",2,"op","chess_char_4_01_a",2,null,1344.4,1,5,2,16623,2876,0,15,1],
["p1",3,"op","chess_char_1_08_a",1,null,0,0,6,0,3876,2377,0,11,1], ["p1",3,"op","chess_char_1_08_a",1,null,0,0,6,0,3876,2377,0,11,1],
["p1",4,"op","chess_char_3_18_a",2,null,739.25,1,10,7,47345,1295,183,49,2], ["p1",4,"op","chess_char_3_18_a",2,null,0,0,10,5,39767,1851,0,42,1],
["p1",5,"op","chess_char_3_19_a",2,null,1798.75,1,7,3,11486,0,0,25,1], ["p1",5,"op","chess_char_3_19_a",2,null,1798.75,1,7,3,11486,0,0,25,1],
["p1",6,"op","chess_char_3_20_a",1,null,1401.25,1,9,0,1027,0,0,9,1], ["p1",6,"op","chess_char_3_20_a",1,null,1401.25,1,9,0,1027,0,0,9,1],
["p1",7,"op","chess_char_3_21_a",2,null,1705,1,11,1,17937,0,0,26,1], ["p1",7,"op","chess_char_3_21_a",2,null,1705,1,11,1,17937,0,0,26,1],
["p1",8,"op","chess_char_4_02_a",2,null,1785,1,4,3,31470,0,0,9,1], ["p1",8,"op","chess_char_4_02_a",2,null,1785,1,4,5,34199,0,0,8,1],
["p1",9,"token","token_10028_vigil_wolf",null,null,852.9,1,8,1,1229,27,0,3,null], ["p1",9,"token","token_10028_vigil_wolf",null,null,852.9,1,8,1,1229,27,0,3,null],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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] ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1116_liprr":[11,11,0,81,69696],"enemy_1116_liprr_2":[4,4,0,1254,34560],"enemy_1118_lidbox_2":[2,2,0,7445,21888]}, "enemies": {"enemy_1116_liprr":[11,11,0,27,69696],"enemy_1116_liprr_2":[4,4,0,758,34560],"enemy_1118_lidbox_2":[2,2,0,6346,21888]},
"hooks": [1,28,1586,190,190,330,330,96,19,19,9,6,7,6989,40,22,17,0,1,25,4,0,0], "hooks": [1,28,1498,173,173,310,310,0,19,19,7,4,7,6736,34,19,17,0,1,24,4,0,0],
"events": {"atk":238,"deploy":9,"die":19,"dmg":328,"engage":9,"fx":49,"layer":4,"skill":15,"spawn":28,"status":116}, "events": {"atk":222,"deploy":9,"die":19,"dmg":307,"engage":8,"fx":45,"layer":4,"skill":11,"spawn":28,"status":102},
"fx": {"aoe":1,"camouflage":1,"counter":7,"displace":15,"dp":4,"garrison":4,"liberate":4,"phase":4,"ripple":5,"sermon":1,"shield":2,"wolfShadow":1}, "fx": {"aoe":1,"camouflage":1,"counter":7,"displace":15,"dp":2,"garrison":4,"liberate":3,"phase":4,"ripple":4,"sermon":1,"shield":2,"wolfShadow":1},
"snaps": "d8f99986 287fd6f2 d2481758 42051775 65187a04 3a674d02" "snaps": "d8f99986 287fd6f2 d2481758 cd3eb977 47abb5b8"
}, },
"bond-soloShip-high": { "bond-soloShip-high": {
"about": "独行 high: tier 1 layers 999; chess_char_5_19_b chess_char_1_08_b chess_char_5_13_b chess_char_5_14_b chess_char_5_17_b chess_char_5_12_b chess_char_5_15_b chess_char_5_20_b", "about": "独行 high: tier 1 layers 999; chess_char_5_19_b chess_char_1_08_b chess_char_5_13_b chess_char_5_14_b chess_char_5_17_b chess_char_5_12_b chess_char_5_15_b chess_char_5_20_b",
@@ -1326,25 +1326,25 @@
"round": 10, "round": 10,
"seed": 3252010875, "seed": 3252010875,
"waveId": "act1autochess_h03", "waveId": "act1autochess_h03",
"time": 87.53, "time": 89.2,
"ticks": 2626, "ticks": 2676,
"reason": "cleared", "reason": "cleared",
"killed": 64, "killed": 66,
"total": 65, "total": 66,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 45, "rngDraws": 45,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":64,"total":65,"perfect":false,"leaks":1,"leaksUncounted":0,"coins":0,"dmg":148696,"bossDmg":0,"heal":2460,"deaths":3,"layerGains":{}}}, "players": {"p1":{"killed":66,"total":66,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":155671,"bossDmg":0,"heal":2251,"deaths":3,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",3907,1,6,14,30475,0,0,18,1], ["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",3907,1,6,15,32191,0,0,23,2],
["p1",2,"op","chess_char_1_08_b",1,"uniequip_002_texas",0,0,7,5,3785,3184,49,15,2], ["p1",2,"op","chess_char_1_08_b",1,"uniequip_002_texas",0,0,7,4,5226,2974,49,18,3],
["p1",3,"op","chess_char_5_13_b",1,"uniequip_002_ghost2",3364.8,1,8,4,15438,6038,339,21,1], ["p1",3,"op","chess_char_5_13_b",1,"uniequip_002_ghost2",3364.8,1,8,7,15573,6038,339,22,1],
["p1",4,"op","chess_char_5_14_b",1,"none",1994,1,78,6,19723,1994,0,14,6], ["p1",4,"op","chess_char_5_14_b",1,"none",1994,1,78,6,20263,1994,0,14,6],
["p1",5,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",2738,1,77,15,24518,3763,1025,28,1], ["p1",5,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",2738,1,77,15,24518,3763,1025,28,1],
["p1",6,"op","chess_char_5_12_b",0,"uniequip_002_dusk",1787,1,4,4,11386,0,0,9,7], ["p1",6,"op","chess_char_5_12_b",0,"uniequip_002_dusk",1787,1,4,5,15652,0,0,12,9],
["p1",7,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1170,1,5,10,18019,0,1048,11,3], ["p1",7,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1170,1,5,7,14176,0,838,9,3],
["p1",8,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1382,1,9,6,25351,0,0,21,2], ["p1",8,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1382,1,9,7,28071,0,0,26,3],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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], ["-","~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] ["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null]
@@ -1354,13 +1354,13 @@
"enemy_1196_msfyin": [28,28,0,0,56], "enemy_1196_msfyin": [28,28,0,0,56],
"enemy_1197_sfshu": [5,5,0,0,31104], "enemy_1197_sfshu": [5,5,0,0,31104],
"enemy_1198_msfshu": [15,15,0,0,45], "enemy_1198_msfshu": [15,15,0,0,45],
"enemy_1207_sfji": [2,1,1,13786,47793], "enemy_1207_sfji": [2,2,0,13576,54743],
"enemy_1208_msfji": [1,1,0,0,25] "enemy_1208_msfji": [2,2,0,0,50]
}, },
"hooks": [1,78,2626,154,154,302,300,516,67,68,23,23,0,7240,49,17,65,1,1,76,0,0,2], "hooks": [1,79,2676,169,169,334,332,514,69,69,28,26,0,7815,53,16,66,0,1,79,0,0,2],
"events": {"atk":200,"deploy":10,"die":67,"dmg":300,"engage":8,"fx":92,"heal":10,"leak":1,"skill":46,"spawn":76,"status":133}, "events": {"atk":215,"deploy":10,"die":69,"dmg":332,"engage":8,"fx":84,"heal":8,"skill":54,"spawn":77,"status":142},
"fx": {"aoe":9,"crit":5,"dodge":2,"dp":2,"sp":3,"substitute":2,"summon":20,"swap":1,"weightless":2,"zone":46}, "fx": {"aoe":11,"crit":5,"dodge":2,"dp":3,"sp":3,"substitute":2,"summon":21,"swap":1,"weightless":3,"zone":33},
"snaps": "99559343 38c0d1a5 4c359c39 82e6b34e fe2582dc d30cdc48 04b1e430 0f96ba1e 89fac4be" "snaps": "99559343 38c0d1a5 92dc29fe fc9b8613 719b1867 a2a129fe 0a35c013 011b0232 25a525eb"
}, },
"bond-steadShip-low": { "bond-steadShip-low": {
"about": "坚守 low: tier 1 layers 1; chess_char_1_02_a chess_char_1_10_a chess_char_4_11_a chess_char_4_04_a chess_char_4_07_a chess_char_4_09_a chess_char_4_06_a chess_char_4_10_a token_10041_cathy_catsld token_10041_cathy_catsld", "about": "坚守 low: tier 1 layers 1; chess_char_1_02_a chess_char_1_10_a chess_char_4_11_a chess_char_4_04_a chess_char_4_07_a chess_char_4_09_a chess_char_4_06_a chess_char_4_10_a token_10041_cathy_catsld token_10041_cathy_catsld",
@@ -1475,7 +1475,7 @@
"hooks": [1,32,1640,175,175,237,228,5,23,22,14,13,21,5955,504,16,21,0,1,23,0,0,0], "hooks": [1,32,1640,175,175,237,228,5,23,22,14,13,21,5955,504,16,21,0,1,23,0,0,0],
"events": {"atk":175,"deploy":8,"die":22,"dmg":225,"engage":6,"fx":45,"heal":1,"skill":29,"spawn":32,"status":101}, "events": {"atk":175,"deploy":8,"die":22,"dmg":225,"engage":6,"fx":45,"heal":1,"skill":29,"spawn":32,"status":101},
"fx": {"block":4,"explosion":3,"frostNova":6,"rockslide":1,"shieldBreak":8,"swordRain":12,"swordStorm":2,"thorns":9}, "fx": {"block":4,"explosion":3,"frostNova":6,"rockslide":1,"shieldBreak":8,"swordRain":12,"swordStorm":2,"thorns":9},
"snaps": "a178d904 2983cdc8 139d44ee c6071100 b5953eea e466bb8a" "snaps": "a178d904 2983cdc8 139d44ee c6071100 8fa030b9 36acfac5"
}, },
"bond-suntShip-high": { "bond-suntShip-high": {
"about": "绝技 high: tier 2 layers 999; chess_char_1_02_b chess_char_1_04_b chess_char_4_19_a chess_char_1_01_b chess_char_1_03_b chess_char_1_06_b chess_char_4_20_a chess_char_4_21_a", "about": "绝技 high: tier 2 layers 999; chess_char_1_02_b chess_char_1_04_b chess_char_4_19_a chess_char_1_01_b chess_char_1_03_b chess_char_1_06_b chess_char_4_20_a chess_char_4_21_a",
@@ -1486,8 +1486,8 @@
"round": 10, "round": 10,
"seed": 2806272209, "seed": 2806272209,
"waveId": "act1autochess_h03", "waveId": "act1autochess_h03",
"time": 140.27, "time": 136.97,
"ticks": 4208, "ticks": 4109,
"reason": "cleared", "reason": "cleared",
"killed": 9, "killed": 9,
"total": 24, "total": 24,
@@ -1495,22 +1495,22 @@
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 5, "rngDraws": 5,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":9,"total":24,"perfect":false,"leaks":15,"leaksUncounted":0,"coins":0,"dmg":230713,"bossDmg":0,"heal":15790,"deaths":4,"layerGains":{}}}, "players": {"p1":{"killed":9,"total":24,"perfect":false,"leaks":15,"leaksUncounted":0,"coins":0,"dmg":237073,"bossDmg":0,"heal":14495,"deaths":5,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",0,0,2,1,5187,5876,0,84,2], ["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",0,0,2,1,5117,5876,0,81,2],
["p1",2,"op","chess_char_1_04_b",1,"uniequip_002_udflow",2771.47,1,1,1,32730,133,0,97,3], ["p1",2,"op","chess_char_1_04_b",1,"uniequip_002_udflow",2904,1,1,1,31723,0,0,92,3],
["p1",3,"op","chess_char_4_19_a",2,null,1560,1,35,0,6981,1560,0,62,3], ["p1",3,"op","chess_char_4_19_a",2,null,0,0,3,0,6981,1560,0,62,3],
["p1",4,"op","chess_char_1_01_b",1,"uniequip_002_inside",1421,1,4,2,54217,2657,0,127,5], ["p1",4,"op","chess_char_1_01_b",1,"uniequip_002_inside",1421,1,4,2,60146,1772,0,127,5],
["p1",5,"op","chess_char_1_03_b",1,"uniequip_002_leizi",1391,1,7,4,79051,4252,0,33,2], ["p1",5,"op","chess_char_1_03_b",1,"uniequip_002_leizi",0,0,7,4,81309,4537,0,34,2],
["p1",6,"op","chess_char_1_06_b",1,"uniequip_002_vendla",1281.19,1,5,1,20681,1417,6655,76,4], ["p1",6,"op","chess_char_1_06_b",1,"uniequip_002_vendla",1268.97,1,5,1,19930,2126,6216,74,4],
["p1",7,"op","chess_char_4_20_a",2,null,1217,1,34,0,31866,1466,0,26,2], ["p1",7,"op","chess_char_4_20_a",2,null,1217,1,34,0,31866,1466,0,26,2],
["p1",8,"op","chess_char_4_21_a",1,null,1271,1,33,0,0,8607,9135,35,1] ["p1",8,"op","chess_char_4_21_a",1,null,1271,1,33,0,0,8607,8279,33,1]
], ],
"enemies": {"enemy_1166_dusbr_2":[14,8,6,5050,114778],"enemy_1169_duphlx_2":[7,1,6,2029,28344],"enemy_1172_dugago":[3,0,3,18888,87591]}, "enemies": {"enemy_1166_dusbr_2":[14,8,6,5020,114778],"enemy_1169_duphlx_2":[7,1,6,1993,28344],"enemy_1172_dugago":[3,0,3,18931,93950]},
"hooks": [1,35,4208,712,712,876,875,82,13,28,22,22,82,15310,268,12,24,15,1,15,0,0,1], "hooks": [1,34,4109,698,698,857,856,74,14,29,22,22,82,14208,264,11,24,15,1,16,0,0,1],
"events": {"atk":797,"deploy":11,"die":13,"dmg":875,"engage":7,"fx":20,"heal":82,"leak":15,"skill":44,"spawn":32,"status":239}, "events": {"atk":780,"deploy":10,"die":14,"dmg":856,"engage":7,"fx":19,"heal":74,"leak":15,"skill":44,"spawn":32,"status":241},
"fx": {"counter":3,"dodge":1,"featherArrow":2,"flame":3,"garrisonGrant":1,"healField":1,"revive":2,"riposte":1,"stone":2,"taunt":4}, "fx": {"counter":2,"dodge":1,"featherArrow":2,"flame":3,"garrisonGrant":1,"healField":1,"revive":2,"riposte":1,"stone":2,"taunt":4},
"snaps": "e8a58cae cc93867c 9aa85377 7ca07670 8057af22 e3c22593 ad0835c7 7ff82d39 5fe27d3c 6e667836 542993ce 0116e8e4 8ce69c48 ece782e2" "snaps": "e8a58cae cc93867c 9aa85377 7ca07670 8057af22 e3c22593 ad0835c7 2d6ec23f 64687ac4 614cc71d 237745fb 6cda5ff4 c86ba861 3f848835"
}, },
"bond-swiftShip-low": { "bond-swiftShip-low": {
"about": "迅捷 low: tier 1 layers 1; chess_char_4_23_a chess_char_4_22_a chess_char_1_19_a chess_char_1_01_a chess_char_4_24_a chess_char_4_25_a chess_char_4_26_a chess_char_3_01_a", "about": "迅捷 low: tier 1 layers 1; chess_char_4_23_a chess_char_4_22_a chess_char_1_19_a chess_char_1_01_a chess_char_4_24_a chess_char_4_25_a chess_char_4_26_a chess_char_3_01_a",
@@ -1556,33 +1556,33 @@
"round": 10, "round": 10,
"seed": 1175070139, "seed": 1175070139,
"waveId": "act1autochess_h03", "waveId": "act1autochess_h03",
"time": 126.2, "time": 118.8,
"ticks": 3786, "ticks": 3564,
"reason": "cleared", "reason": "cleared",
"killed": 23, "killed": 24,
"total": 24, "total": 24,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 329, "rngDraws": 351,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":23,"total":24,"perfect":false,"leaks":1,"leaksUncounted":0,"coins":0,"dmg":232419,"bossDmg":0,"heal":433,"deaths":4,"layerGains":{}}}, "players": {"p1":{"killed":24,"total":24,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":235584,"bossDmg":0,"heal":433,"deaths":4,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_4_11_b",1,"uniequip_002_cathy",0,0,4,0,0,4098,0,0,1], ["p1",1,"op","chess_char_4_11_b",1,"uniequip_002_cathy",0,0,4,0,35,4081,0,1,1],
["p1",2,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",0,0,6,1,4094,1971,0,22,1], ["p1",2,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",0,0,6,1,4143,1971,0,23,1],
["p1",3,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",0,0,7,0,1533,2383,0,11,11], ["p1",3,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",0,0,7,0,1533,2383,0,11,11],
["p1",4,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",2777.6,1,5,4,71892,0,0,29,4], ["p1",4,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",2777.6,1,5,5,73320,0,0,31,4],
["p1",5,"op","chess_char_1_01_b",1,"uniequip_002_inside",1421,1,1,4,21185,0,0,84,5], ["p1",5,"op","chess_char_1_01_b",1,"uniequip_002_inside",1421,1,1,3,21844,0,0,88,6],
["p1",6,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1561,1,2,8,69283,0,0,124,3], ["p1",6,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1561,1,2,8,70000,0,0,130,3],
["p1",7,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1664,1,3,3,37824,0,0,22,3], ["p1",7,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1664,1,3,4,38101,0,0,23,3],
["p1",8,"op","chess_char_4_12_b",2,"uniequip_002_glady",0,0,8,3,26608,2665,433,16,2], ["p1",8,"op","chess_char_4_12_b",2,"uniequip_002_glady",0,0,8,3,26608,2665,433,16,2],
["p1",9,"token","token_10041_cathy_catsld",null,null,100,1,9,0,0,0,0,0,null], ["p1",9,"token","token_10041_cathy_catsld",null,null,100,1,9,0,0,0,0,0,null],
["p1",10,"token","token_10041_cathy_catsld",null,null,100,1,10,0,0,0,0,0,null] ["p1",10,"token","token_10041_cathy_catsld",null,null,100,1,10,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1010_demon":[7,7,0,970,60480],"enemy_1422_lrsldr_2":[14,14,0,0,88704],"enemy_1425_lrcmra_2":[3,2,1,10147,83235]}, "enemies": {"enemy_1010_demon":[7,7,0,970,60480],"enemy_1422_lrsldr_2":[14,14,0,0,88704],"enemy_1425_lrcmra_2":[3,3,0,10131,86400]},
"hooks": [1,34,3786,327,327,635,635,233,27,28,30,28,84,3868,137,11,24,1,1,27,0,0,0], "hooks": [1,34,3564,342,342,663,663,233,28,28,31,28,88,3686,146,11,24,0,1,28,0,0,0],
"events": {"atk":372,"deploy":10,"die":27,"dmg":635,"engage":7,"fx":164,"leak":1,"skill":58,"spawn":34,"status":232}, "events": {"atk":387,"deploy":10,"die":28,"dmg":663,"engage":8,"fx":174,"skill":59,"spawn":34,"status":244},
"fx": {"charge":11,"crit":63,"dilemma":4,"displace":16,"garrisonGrant":1,"levitate":21,"overclock":1,"pull":1,"quadShot":3,"slippery":3,"sp":26,"splash":8,"tornado":1,"tornadoPulse":5}, "fx": {"charge":11,"crit":71,"dilemma":4,"displace":16,"garrisonGrant":1,"levitate":21,"overclock":1,"pull":1,"quadShot":3,"slippery":3,"sp":28,"splash":8,"tornado":1,"tornadoPulse":5},
"snaps": "52481b26 a970d314 da9bd295 cc77046e 802c2fa6 80ef9e23 e4cf0a30 d21017b5 55ff76b2 e2dc50e5 5d1fb6ad cf5c6907 a79f6670" "snaps": "52481b26 a970d314 da9bd295 cc77046e 45b52735 5082bd52 bcfbe796 e6c33b17 892f0a8f 3a4e3a57 9fd11e6b f7604ee8"
}, },
"bond-victoriaShip-low": { "bond-victoriaShip-low": {
"about": "维多利亚 low: tier 1 layers 1; chess_char_3_06_a chess_char_3_02_a chess_char_3_03_a chess_char_3_04_a chess_char_3_05_a chess_char_1_06_a chess_char_2_05_a chess_char_2_10_a", "about": "维多利亚 low: tier 1 layers 1; chess_char_3_06_a chess_char_3_02_a chess_char_3_03_a chess_char_3_04_a chess_char_3_05_a chess_char_1_06_a chess_char_2_05_a chess_char_2_10_a",
@@ -1687,8 +1687,8 @@
"round": 5, "round": 5,
"seed": 3923365115, "seed": 3923365115,
"waveId": "act1autochess_05", "waveId": "act1autochess_05",
"time": 59.67, "time": 60.73,
"ticks": 1790, "ticks": 1822,
"reason": "cleared", "reason": "cleared",
"killed": 16, "killed": 16,
"total": 17, "total": 17,
@@ -1709,10 +1709,10 @@
["p1",9,"token","token_10000_silent_healrb",null,null,1000,1,29,0,0,0,1372,18,null] ["p1",9,"token","token_10000_silent_healrb",null,null,1000,1,29,0,0,0,1372,18,null]
], ],
"enemies": {"enemy_1116_liprr":[11,11,0,2221,54450],"enemy_1116_liprr_2":[4,4,0,932,27000],"enemy_1118_lidbox_2":[2,1,1,5466,16462]}, "enemies": {"enemy_1116_liprr":[11,11,0,2221,54450],"enemy_1116_liprr_2":[4,4,0,932,27000],"enemy_1118_lidbox_2":[2,1,1,5466,16462]},
"hooks": [1,28,1790,191,191,208,208,32,18,21,16,16,0,8141,3,27,17,1,1,18,0,0,0], "hooks": [1,28,1822,191,191,208,208,32,18,21,16,16,0,8301,3,27,17,1,1,18,0,0,0],
"events": {"atk":226,"deploy":11,"die":20,"dmg":208,"engage":6,"fx":54,"heal":32,"leak":1,"skill":32,"spawn":26,"status":26}, "events": {"atk":226,"deploy":11,"die":20,"dmg":208,"engage":6,"fx":54,"heal":32,"leak":1,"skill":32,"spawn":26,"status":26},
"fx": {"aoe":1,"displace":19,"liberate":3,"phase":4,"pull":19,"strike":3,"summon":2,"volley":3}, "fx": {"aoe":1,"displace":19,"liberate":3,"phase":4,"pull":19,"strike":3,"summon":2,"volley":3},
"snaps": "351c8009 987b22dd 7d790a0c fadc11f1 fb446f70 8805598c" "snaps": "351c8009 987b22dd 7d790a0c fadc11f1 fb446f70 0454edfd"
}, },
"bond-visiShip-high": { "bond-visiShip-high": {
"about": "远见 high: tier 1 layers 999; chess_char_4_17_b chess_char_4_18_b chess_char_3_03_b chess_char_4_19_b chess_char_4_16_b chess_char_2_02_b chess_char_4_20_b chess_char_4_21_b token_10000_silent_healrb", "about": "远见 high: tier 1 layers 999; chess_char_4_17_b chess_char_4_18_b chess_char_3_03_b chess_char_4_19_b chess_char_4_16_b chess_char_2_02_b chess_char_4_20_b chess_char_4_21_b token_10000_silent_healrb",
@@ -1761,8 +1761,8 @@
"round": 5, "round": 5,
"seed": 1009948961, "seed": 1009948961,
"waveId": "act1autochess_05", "waveId": "act1autochess_05",
"time": 61.97, "time": 60.13,
"ticks": 1859, "ticks": 1804,
"reason": "cleared", "reason": "cleared",
"killed": 22, "killed": 22,
"total": 22, "total": 22,
@@ -1773,12 +1773,12 @@
"players": {"p1":{"killed":22,"total":22,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":91008,"bossDmg":0,"heal":152,"deaths":1,"layerGains":{}}}, "players": {"p1":{"killed":22,"total":22,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":91008,"bossDmg":0,"heal":152,"deaths":1,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_3_16_a",1,null,2173,1,8,0,0,0,0,0,0], ["p1",1,"op","chess_char_3_16_a",1,null,2173,1,8,0,0,0,0,0,0],
["p1",2,"op","chess_char_3_03_a",1,null,978.64,1,9,10,18910,399,0,35,0], ["p1",2,"op","chess_char_3_03_a",1,null,978.64,1,9,9,18838,399,0,33,0],
["p1",3,"op","chess_char_3_18_a",2,null,0,0,10,4,23899,1633,152,43,2], ["p1",3,"op","chess_char_3_18_a",2,null,0,0,10,4,23899,1633,152,43,2],
["p1",4,"op","chess_char_1_03_a",1,null,1041,1,4,1,9079,0,0,9,1], ["p1",4,"op","chess_char_1_03_a",1,null,1041,1,4,2,8993,0,0,9,1],
["p1",5,"op","chess_char_2_04_a",1,null,977,1,5,0,0,0,0,0,0], ["p1",5,"op","chess_char_2_04_a",1,null,977,1,5,0,0,0,0,0,0],
["p1",6,"op","chess_char_3_14_a",1,null,1251,1,11,1,7634,0,0,33,1], ["p1",6,"op","chess_char_3_14_a",1,null,1251,1,11,1,7495,0,0,32,1],
["p1",7,"op","chess_char_3_17_a",1,null,2246,1,12,6,31486,0,0,48,3], ["p1",7,"op","chess_char_3_17_a",1,null,2246,1,12,6,31783,0,0,49,3],
["p1",8,"op","chess_char_3_19_a",2,null,1439,1,6,0,0,0,0,0,1], ["p1",8,"op","chess_char_3_19_a",2,null,1439,1,6,0,0,0,0,0,1],
["p1",9,"token","token_10028_vigil_wolf",null,null,880,1,7,0,0,0,0,0,null], ["p1",9,"token","token_10028_vigil_wolf",null,null,880,1,7,0,0,0,0,0,null],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
@@ -1786,10 +1786,10 @@
["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null] ["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null]
], ],
"enemies": {"enemy_1166_dusbr":[15,15,0,163,51840],"enemy_1169_duphlx":[5,5,0,87,23040],"enemy_1170_dushld":[2,2,0,1783,16128]}, "enemies": {"enemy_1166_dusbr":[15,15,0,163,51840],"enemy_1169_duphlx":[5,5,0,87,23040],"enemy_1170_dushld":[2,2,0,1783,16128]},
"hooks": [1,34,1859,191,191,299,299,77,23,23,8,7,0,7045,59,19,22,0,1,25,0,0,0], "hooks": [1,34,1804,189,189,297,297,77,23,23,8,7,0,6934,58,19,22,0,1,25,0,0,0],
"events": {"atk":248,"deploy":9,"die":23,"dmg":299,"engage":5,"fx":8,"skill":15,"spawn":34,"status":150}, "events": {"atk":246,"deploy":9,"die":23,"dmg":297,"engage":5,"fx":8,"skill":15,"spawn":34,"status":148},
"fx": {"camouflage":1,"dp":3,"volley":3,"wolfShadow":1}, "fx": {"camouflage":1,"dp":3,"volley":3,"wolfShadow":1},
"snaps": "597235cf dd7dc4c1 9453a8aa c14bf7c3 8cea5518 9135a94b 3e0d971b" "snaps": "597235cf dd7dc4c1 9453a8aa c14bf7c3 8cea5518 59142b48"
}, },
"bond-yanShip-high": { "bond-yanShip-high": {
"about": "炎 high: tier 3 layers 999; chess_char_4_17_b chess_char_6_03_b chess_char_3_03_b chess_char_3_04_b chess_char_1_03_b chess_char_2_04_b chess_char_5_03_b chess_char_5_12_b chess_char_5_23_b", "about": "炎 high: tier 3 layers 999; chess_char_4_17_b chess_char_6_03_b chess_char_3_03_b chess_char_3_04_b chess_char_1_03_b chess_char_2_04_b chess_char_5_03_b chess_char_5_12_b chess_char_5_23_b",
+1800 -1797
View File
File diff suppressed because it is too large. Load diff
+380 -380
View File
File diff suppressed because it is too large. Load diff
+249 -260
View File
File diff suppressed because it is too large. Load diff
+851 -829
View File
File diff suppressed because it is too large. Load diff
+201 -213
View File
@@ -20,58 +20,58 @@
"time": 170, "time": 170,
"ticks": 5100, "ticks": 5100,
"reason": "timeout", "reason": "timeout",
"killed": 22, "killed": 19,
"total": 50, "total": 50,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 404, "rngDraws": 544,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": { "p1": {
"killed": 22, "killed": 19,
"total": 50, "total": 50,
"perfect": false, "perfect": false,
"leaks": 28, "leaks": 31,
"leaksUncounted": 0, "leaksUncounted": 0,
"coins": 4, "coins": 4,
"dmg": 266162, "dmg": 266231,
"bossDmg": 0, "bossDmg": 0,
"heal": 16178, "heal": 17643,
"deaths": 23, "deaths": 24,
"layerGains": {"raidShip":13,"visiShip":2} "layerGains": {"raidShip":13,"visiShip":2}
} }
}, },
"units": [ "units": [
["p1",1,"op","chess_char_3_12_a",2,null,0,0,73,4,63063,4029,0,26,3], ["p1",1,"op","chess_char_3_12_a",2,null,0,0,74,4,60651,4029,0,28,3],
["p1",2,"op","chess_char_4_09_a",0,null,333.6,1,82,4,41987,5634,0,33,2], ["p1",2,"op","chess_char_4_09_a",0,null,0,0,1,1,29760,2984,0,18,1],
["p1",3,"op","chess_char_3_05_a",2,null,1442.3,1,75,2,30691,11964,0,46,2], ["p1",3,"op","chess_char_3_05_a",2,null,2081.5,1,76,2,31495,11964,0,47,2],
["p1",4,"op","chess_char_3_18_a",2,null,0,0,7,0,12109,3090,0,27,1], ["p1",4,"op","chess_char_3_18_a",2,null,0,0,7,1,10578,3995,0,17,1],
["p1",5,"op","chess_char_4_04_a",1,null,951,1,90,2,20875,5420,0,75,9], ["p1",5,"op","chess_char_4_04_a",1,null,0,0,92,1,17499,7084,0,74,10],
["p1",6,"op","chess_char_4_07_a",1,null,0,0,76,1,16997,12466,0,39,1], ["p1",6,"op","chess_char_4_07_a",1,null,0,0,79,1,19230,13744,0,43,1],
["p1",7,"op","chess_char_4_16_a",1,null,0,0,88,1,7848,10473,0,110,10], ["p1",7,"op","chess_char_4_16_a",1,null,215.72,1,94,1,9789,11775,0,117,14],
["p1",8,"op","chess_char_3_01_a",2,null,1271,1,5,2,25558,0,0,144,2], ["p1",8,"op","chess_char_3_01_a",2,null,1271,1,5,0,22413,0,0,149,2],
["p1",9,"op","chess_char_3_04_a",2,null,1218,1,83,0,0,1218,16178,35,2], ["p1",9,"op","chess_char_3_04_a",2,null,1218,1,86,0,0,1599,17643,36,2],
["p1",10,"op","chess_char_3_21_a",2,null,1272,1,89,3,26523,1272,0,58,1], ["p1",10,"op","chess_char_3_21_a",2,null,716.85,1,6,6,42226,555,0,132,2],
["p1",11,"op","chess_char_4_02_a",1,null,0,0,9,2,11150,1653,0,50,1], ["p1",11,"op","chess_char_4_02_a",1,null,1272,1,89,1,7563,1272,0,68,1],
["p1",12,"op","chess_char_4_13_a",1,null,812,1,84,1,9361,812,0,25,1] ["p1",12,"op","chess_char_4_13_a",1,null,0,0,83,1,15028,1624,0,33,2]
], ],
"enemies": { "enemies": {
"enemy_10001_trslim": [1,1,0,8,4860], "enemy_10001_trslim": [1,1,0,8,4860],
"enemy_1000_gopro_2": [1,1,0,0,1836], "enemy_1000_gopro_2": [1,1,0,0,1836],
"enemy_10018_sgrobh": [1,1,0,3793,8100], "enemy_10018_sgrobh": [1,1,0,3753,8100],
"enemy_1001_bigbo": [1,0,1,2157,2613], "enemy_1001_bigbo": [1,0,1,1235,2656],
"enemy_10027_vtsk": [1,0,1,12395,936], "enemy_10027_vtsk": [1,0,1,12888,1289],
"enemy_10031_cnvsld": [1,0,1,0,0], "enemy_10031_cnvsld": [1,0,1,0,0],
"enemy_10034_cnvsax": [1,0,1,808,2545], "enemy_10034_cnvsax": [1,0,1,1235,5687],
"enemy_10042_prtrop": [1,0,1,0,0], "enemy_10042_prtrop": [1,0,1,0,0],
"enemy_1116_liprr_2": [21,14,7,7342,129693], "enemy_1116_liprr_2": [21,13,8,5313,129729],
"enemy_1119_vofsd": [12,4,7,12831,76140], "enemy_1119_vofsd": [12,2,8,12831,69965],
"enemy_1121_lifbos_2": [9,1,7,8976,39440] "enemy_1121_lifbos_2": [9,1,6,15758,42109]
}, },
"hooks": [1,90,5100,782,782,1274,1278,2889,45,81,35,32,0,17872,24,38,50,26,1,46,5,0,3], "hooks": [1,94,5100,874,874,1402,1411,3740,43,84,41,38,0,18511,42,43,50,27,1,46,5,0,2],
"events": {"atk":875,"bounty":2,"deploy":40,"die":55,"dmg":1278,"engage":11,"fx":87,"heal":35,"layer":5,"leak":26,"skill":67,"spawn":62,"status":127}, "events": {"atk":983,"bounty":2,"deploy":44,"die":57,"dmg":1411,"engage":11,"fx":90,"heal":36,"layer":5,"leak":27,"skill":79,"spawn":62,"status":157},
"fx": {"beam":8,"blink":10,"dodge":3,"dp":7,"garrison":5,"liberate":16,"phase":13,"slash":24,"telegraph":1}, "fx": {"beam":12,"blink":14,"dodge":2,"dp":7,"garrison":5,"liberate":12,"phase":13,"slash":24,"telegraph":1},
"snaps": "8b8be66d b3674b6a 84ebce5a 655e2381 01458f80 5429a40f 79ef58a7 e0c853b0 b82a9af1 80ef3ca7 cfdb8a3a 47523368 7134b000 32056871 69a04f4b c6c5ecc7 e01e6b80" "snaps": "8b8be66d b3674b6a 84ebce5a c4efeba6 05a2d3cd bf6f3985 249c5ebd 2bf68848 6faa6eb8 0275f0fb f4b16de1 f88b620c 3545e4d2 aa0d5a15 ecf73cfe 95a2451e a178591a"
}, },
"standin-02": { "standin-02": {
"about": "normal band 5 as stand-ins: chess_char_4_17_a→char_610_acfend chess_char_4_18_a→char_602_cdfend chess_char_5_05_a→char_602_cdfend chess_char_4_19_a→char_608_acpion chess_char_5_01_a→char_600_cpione chess_char_4_22_a→char_609_acguad chess_char_4_23_a→char_609_acguad chess_char_5_06_a→char_609_acguad chess_char_4_20_a→char_603_csnipe chess_char_4_24_a→char_604_ccast chess_char_5_02_a→char_604_ccast chess_char_5_03_a→char_612_accast", "about": "normal band 5 as stand-ins: chess_char_4_17_a→char_610_acfend chess_char_4_18_a→char_602_cdfend chess_char_5_05_a→char_602_cdfend chess_char_4_19_a→char_608_acpion chess_char_5_01_a→char_600_cpione chess_char_4_22_a→char_609_acguad chess_char_4_23_a→char_609_acguad chess_char_5_06_a→char_609_acguad chess_char_4_20_a→char_603_csnipe chess_char_4_24_a→char_604_ccast chess_char_5_02_a→char_604_ccast chess_char_5_03_a→char_612_accast",
@@ -89,42 +89,42 @@
"total": 68, "total": 68,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 108, "rngDraws": 106,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": {"killed":9,"total":68,"perfect":false,"leaks":59,"leaksUncounted":0,"coins":0,"dmg":102545,"bossDmg":0,"heal":0,"deaths":22,"layerGains":{"preciShip":12}} "p1": {"killed":9,"total":68,"perfect":false,"leaks":59,"leaksUncounted":0,"coins":0,"dmg":99809,"bossDmg":0,"heal":0,"deaths":22,"layerGains":{"preciShip":12}}
}, },
"units": [ "units": [
["p1",1,"op","chess_char_4_17_a",1,null,0,0,3,1,294,2604,0,4,1], ["p1",1,"op","chess_char_4_17_a",1,null,0,0,3,1,360,2604,0,3,1],
["p1",2,"op","chess_char_4_18_a",1,null,0,0,78,0,2350,6810,0,6,1], ["p1",2,"op","chess_char_4_18_a",1,null,0,0,85,0,2350,6810,0,6,1],
["p1",3,"op","chess_char_5_05_a",2,null,0,0,72,0,41,4256,0,3,1], ["p1",3,"op","chess_char_5_05_a",2,null,0,0,73,0,28,4256,0,2,1],
["p1",4,"op","chess_char_4_19_a",1,null,0,0,66,0,632,3058,0,12,1], ["p1",4,"op","chess_char_4_19_a",1,null,0,0,66,0,158,3058,0,11,1],
["p1",5,"op","chess_char_5_01_a",2,null,154.94,1,91,0,52,3520,0,3,0], ["p1",5,"op","chess_char_5_01_a",2,null,154.94,1,91,0,52,3520,0,3,0],
["p1",6,"op","chess_char_4_22_a",1,null,0,0,74,0,6886,5276,0,11,0], ["p1",6,"op","chess_char_4_22_a",1,null,0,0,72,0,6886,5276,0,9,0],
["p1",7,"op","chess_char_4_23_a",1,null,0,0,65,0,5497,5276,0,9,0], ["p1",7,"op","chess_char_4_23_a",1,null,0,0,65,0,5497,5276,0,9,0],
["p1",8,"op","chess_char_5_06_a",2,null,0,0,1,0,0,2638,0,0,0], ["p1",8,"op","chess_char_5_06_a",2,null,0,0,1,0,0,2638,0,0,0],
["p1",9,"op","chess_char_4_20_a",1,null,1271,1,92,1,11656,2542,0,25,0], ["p1",9,"op","chess_char_4_20_a",1,null,1271,1,92,1,11656,2542,0,25,0],
["p1",10,"op","chess_char_4_24_a",1,null,0,0,90,0,4203,3399,0,9,0], ["p1",10,"op","chess_char_4_24_a",1,null,0,0,90,0,4203,3399,0,9,0],
["p1",11,"op","chess_char_5_02_a",2,null,0,0,84,2,14070,2266,0,26,1], ["p1",11,"op","chess_char_5_02_a",2,null,0,0,78,2,12811,2266,0,25,1],
["p1",12,"op","chess_char_5_03_a",2,null,0,0,4,5,56863,1372,0,10,1] ["p1",12,"op","chess_char_5_03_a",2,null,0,0,4,5,55808,1372,0,10,1]
], ],
"enemies": { "enemies": {
"enemy_10042_prtrop_2": [1,0,1,4429,14122], "enemy_10042_prtrop_2": [1,0,1,4245,13584],
"enemy_10043_sailor": [1,1,0,1024,23649], "enemy_10043_sailor": [1,1,0,1107,23649],
"enemy_10044_wintun": [1,0,1,3812,11990], "enemy_10044_wintun": [1,0,1,4066,10026],
"enemy_10045_parrot": [1,0,1,0,4099], "enemy_10045_parrot": [1,0,1,0,4099],
"enemy_10054_cjhot": [1,0,1,2686,1997], "enemy_10054_cjhot": [1,0,1,2423,2176],
"enemy_1005_yokai": [27,8,19,0,29752], "enemy_1005_yokai": [27,8,19,0,30014],
"enemy_1005_yokai_2": [27,0,24,10786,3283], "enemy_1005_yokai_2": [27,0,24,11167,2144],
"enemy_1005_yokai_3": [6,0,6,20260,18054], "enemy_1005_yokai_3": [6,0,6,20008,18599],
"enemy_10065_ftzlc": [1,0,1,19,640], "enemy_10065_ftzlc": [1,0,1,0,560],
"enemy_10067_ftsjc": [1,0,1,0,680], "enemy_10067_ftsjc": [1,0,1,0,680],
"enemy_1006_shield": [1,0,1,0,760] "enemy_1006_shield": [1,0,1,0,760]
}, },
"hooks": [1,92,5700,335,335,575,545,0,31,87,6,6,0,13069,1,13,68,56,1,31,3,0,41], "hooks": [1,92,5700,326,326,561,533,0,31,87,6,6,0,12663,1,14,68,56,1,31,3,0,38],
"events": {"atk":343,"deploy":24,"die":31,"dmg":545,"engage":11,"fx":83,"layer":3,"leak":56,"skill":12,"spawn":80,"status":2}, "events": {"atk":334,"deploy":24,"die":31,"dmg":533,"engage":11,"fx":77,"layer":3,"leak":56,"skill":12,"spawn":80,"status":2},
"fx": {"aoe":4,"dodge":41,"dp":4,"explode":29,"garrison":3,"garrisonGrant":1,"zone":1}, "fx": {"aoe":4,"dodge":38,"dp":3,"explode":27,"garrison":3,"garrisonGrant":1,"zone":1},
"snaps": "bb11ef91 3dacfd27 a1a9e1ba 0c1cbf13 1a25c591 303d857a 3dc0bf41 8f47df11 f254e91e 21b1a437 0bef3640 47e52a7a d371b6b0 8a488ba7 9a40aca9 786c46b4 ca780f2a f8b06cfe 10e274ca" "snaps": "bb11ef91 9b91da1e 3c4f008c 878e68d7 24bb4a4a 8d8aeac2 afd35f69 eb5d4d7c eb84350d df25cd79 28a5ee62 7ca7b30b 51dff947 2a598d70 a2618471 b503b719 ee4a9a4a ece62e64 443cb0c6"
}, },
"standin-03": { "standin-03": {
"about": "normal band 5 as stand-ins: chess_char_5_08_a→char_610_acfend chess_char_5_14_a→char_608_acpion chess_char_5_19_a→char_617_sharp2 chess_char_5_07_a→char_601_cguard chess_char_5_13_a→char_609_acguad chess_char_5_17_a→char_615_acspec chess_char_5_10_a→char_606_csuppo chess_char_5_11_a→char_613_acmedc chess_char_5_12_a→char_614_acsupo chess_char_5_15_a→char_603_csnipe chess_char_5_18_a→char_611_acnipe chess_char_5_20_a→char_614_acsupo", "about": "normal band 5 as stand-ins: chess_char_5_08_a→char_610_acfend chess_char_5_14_a→char_608_acpion chess_char_5_19_a→char_617_sharp2 chess_char_5_07_a→char_601_cguard chess_char_5_13_a→char_609_acguad chess_char_5_17_a→char_615_acspec chess_char_5_10_a→char_606_csuppo chess_char_5_11_a→char_613_acmedc chess_char_5_12_a→char_614_acsupo chess_char_5_15_a→char_603_csnipe chess_char_5_18_a→char_611_acnipe chess_char_5_20_a→char_614_acsupo",
@@ -138,44 +138,44 @@
"time": 190, "time": 190,
"ticks": 5700, "ticks": 5700,
"reason": "timeout", "reason": "timeout",
"killed": 44, "killed": 41,
"total": 74, "total": 74,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 317, "rngDraws": 278,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":44,"total":74,"perfect":false,"leaks":30,"leaksUncounted":0,"coins":8,"dmg":357249,"bossDmg":0,"heal":48257,"deaths":10,"layerGains":{}}}, "players": {"p1":{"killed":41,"total":74,"perfect":false,"leaks":33,"leaksUncounted":0,"coins":8,"dmg":322054,"bossDmg":0,"heal":40884,"deaths":10,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_5_08_a",2,null,2206.8,1,91,0,5923,3841,0,59,1], ["p1",1,"op","chess_char_5_08_a",2,null,2206.8,1,91,0,5895,3841,0,57,1],
["p1",2,"op","chess_char_5_14_a",2,null,0,0,90,23,142481,7595,0,63,6], ["p1",2,"op","chess_char_5_14_a",2,null,0,0,90,23,138688,7595,0,63,6],
["p1",3,"op","chess_char_5_19_a",0,null,349.6,1,89,6,47622,15311,0,100,3], ["p1",3,"op","chess_char_5_19_a",0,null,349.6,1,89,6,47622,15311,0,100,3],
["p1",4,"op","chess_char_5_07_a",2,null,843.2,1,7,1,29523,11092,0,77,3], ["p1",4,"op","chess_char_5_07_a",2,null,2564,1,92,0,12112,3824,0,24,1],
["p1",5,"op","chess_char_5_13_a",2,null,822,1,11,7,56384,11384,0,123,4], ["p1",5,"op","chess_char_5_13_a",2,null,1801,1,11,7,56384,10325,0,123,4],
["p1",6,"op","chess_char_5_17_a",2,null,1154,1,92,0,4254,4200,0,59,0], ["p1",6,"op","chess_char_5_17_a",2,null,20,1,81,1,7284,4998,0,77,0],
["p1",7,"op","chess_char_5_10_a",2,null,932,1,2,1,8953,0,0,74,2], ["p1",7,"op","chess_char_5_10_a",2,null,932,1,2,1,7776,0,0,58,2],
["p1",8,"op","chess_char_5_11_a",2,null,1224,1,3,0,0,0,48257,71,2], ["p1",8,"op","chess_char_5_11_a",2,null,1224,1,3,0,0,0,40884,67,2],
["p1",9,"op","chess_char_5_12_a",2,null,1160,1,4,0,19483,0,0,77,2], ["p1",9,"op","chess_char_5_12_a",2,null,1160,1,4,0,19936,0,0,79,2],
["p1",10,"op","chess_char_5_15_a",2,null,0,0,84,2,8336,14152,0,96,2], ["p1",10,"op","chess_char_5_15_a",2,null,0,0,84,2,8336,14152,0,96,2],
["p1",11,"op","chess_char_5_18_a",2,null,0,0,1,4,27171,1272,0,32,1], ["p1",11,"op","chess_char_5_18_a",2,null,0,0,1,1,11149,1272,0,22,1],
["p1",12,"op","chess_char_5_20_a",2,null,0,0,5,0,7118,1972,0,39,2] ["p1",12,"op","chess_char_5_20_a",2,null,0,0,5,0,6872,1972,0,38,2]
], ],
"enemies": { "enemies": {
"enemy_1006_shield_2": [1,1,0,582,8000], "enemy_1006_shield_2": [1,1,0,582,8000],
"enemy_1006_shield_3": [1,0,1,10399,13075], "enemy_1006_shield_3": [1,0,1,11325,14488],
"enemy_10073_mpcar": [1,1,0,12,1600], "enemy_10073_mpcar": [1,1,0,12,1600],
"enemy_1007_slime": [1,1,0,0,440], "enemy_1007_slime": [1,1,0,0,440],
"enemy_10081_mpplai": [1,1,0,0,2000], "enemy_10081_mpplai": [1,1,0,0,2000],
"enemy_10087_hlchgr": [1,1,0,38,4800], "enemy_10087_hlchgr": [1,1,0,38,4800],
"enemy_10094_crstf": [1,1,0,28,3200], "enemy_10094_crstf": [1,1,0,28,3200],
"enemy_10097_crshd": [1,1,0,0,8000], "enemy_10097_crshd": [1,1,0,0,8000],
"enemy_1166_dusbr_2": [42,30,12,2728,121684], "enemy_1166_dusbr_2": [42,28,14,2956,110452],
"enemy_1170_dushld_2": [12,5,6,28117,47066], "enemy_1170_dushld_2": [12,5,6,26204,45033],
"enemy_9011_acrefr": [12,2,6,28914,147383] "enemy_9011_acrefr": [12,1,7,22144,124041]
}, },
"hooks": [1,92,5700,1098,1098,1657,1660,130,54,79,28,28,0,28379,3587,52,74,25,1,56,0,0,8], "hooks": [1,92,5700,1025,1025,1522,1523,112,51,79,26,26,0,27108,3400,51,74,28,1,52,0,0,10],
"events": {"atk":1229,"bounty":4,"deploy":18,"die":54,"dmg":1659,"engage":11,"fx":131,"heal":126,"leak":25,"skill":60,"spawn":86,"status":621}, "events": {"atk":1128,"bounty":4,"deploy":18,"die":51,"dmg":1522,"engage":11,"fx":134,"heal":106,"leak":28,"skill":55,"spawn":86,"status":609},
"fx": {"aoe":30,"displace":1,"dodge":13,"dp":29,"phase":1,"slash":48,"sp":1,"spGain":8}, "fx": {"aoe":30,"displace":1,"dodge":16,"dp":29,"phase":1,"slash":48,"sp":1,"spGain":8},
"snaps": "530ce9ab 3259d8c0 918a3cff a85e2d90 3b23751a 8f259c98 ac7cc207 e97f970a 310fc8e2 3ccf05ce 133339f2 3ce55224 a14db521 246e0ee0 c7100c7e 91ae8513 4b6a214c 8c1f8a7b 41afe990" "snaps": "530ce9ab 3259d8c0 918a3cff a85e2d90 3b23751a 8f259c98 9faf0458 b98e7e80 e64fb37d 38b17953 2458f514 b2894d2f 6c036845 609d268d 5a2493c6 23bae8dc e4a6485d 424e64d1 745ddf7a"
}, },
"standin-04": { "standin-04": {
"about": "normal band 6 as stand-ins: chess_char_6_03_a→char_610_acfend chess_char_6_02_a→char_608_acpion chess_char_6_07_a→char_617_sharp2 chess_char_6_10_a→char_617_sharp2 chess_char_6_11_a→char_608_acpion chess_char_6_06_a→char_609_acguad chess_char_5_22_a→char_611_acnipe chess_char_6_01_a→char_611_acnipe chess_char_6_04_a→char_614_acsupo chess_char_6_05_a→char_611_acnipe chess_char_6_08_a→char_612_accast chess_char_6_09_a→char_613_acmedc", "about": "normal band 6 as stand-ins: chess_char_6_03_a→char_610_acfend chess_char_6_02_a→char_608_acpion chess_char_6_07_a→char_617_sharp2 chess_char_6_10_a→char_617_sharp2 chess_char_6_11_a→char_608_acpion chess_char_6_06_a→char_609_acguad chess_char_5_22_a→char_611_acnipe chess_char_6_01_a→char_611_acnipe chess_char_6_04_a→char_614_acsupo chess_char_6_05_a→char_611_acnipe chess_char_6_08_a→char_612_accast chess_char_6_09_a→char_613_acmedc",
@@ -186,43 +186,31 @@
"round": 12, "round": 12,
"seed": 428893583, "seed": 428893583,
"waveId": "act1autochess_h05", "waveId": "act1autochess_h05",
"time": 201.73, "time": 201.43,
"ticks": 6052, "ticks": 6043,
"reason": "cleared", "reason": "cleared",
"killed": 146, "killed": 158,
"total": 158, "total": 158,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 614, "rngDraws": 612,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": { "p1": {"killed":158,"total":158,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":8,"dmg":1471553,"bossDmg":0,"heal":29310,"deaths":8,"layerGains":{"sargonShip":5}}
"killed": 146,
"total": 158,
"perfect": false,
"leaks": 12,
"leaksUncounted": 0,
"coins": 8,
"dmg": 1417534,
"bossDmg": 0,
"heal": 25396,
"deaths": 8,
"layerGains": {"sargonShip":5}
}
}, },
"units": [ "units": [
["p1",1,"op","chess_char_6_03_a",2,null,0,0,169,0,2034,5814,0,24,1], ["p1",1,"op","chess_char_6_03_a",2,null,0,0,169,0,1288,5814,0,12,1],
["p1",2,"op","chess_char_6_02_a",2,null,1026.4,1,171,6,34754,2032,0,3,6], ["p1",2,"op","chess_char_6_02_a",2,null,0,0,171,5,21360,3058,0,2,4],
["p1",3,"op","chess_char_6_07_a",0,null,1865,1,178,7,177671,1865,0,104,2], ["p1",3,"op","chess_char_6_07_a",0,null,0,0,6,19,254549,1865,0,146,3],
["p1",4,"op","chess_char_6_10_a",0,null,1865,1,177,5,99606,1865,0,99,2], ["p1",4,"op","chess_char_6_10_a",0,null,1865,1,177,6,128769,1865,0,109,2],
["p1",5,"op","chess_char_6_11_a",2,null,0,0,167,25,173830,8783,0,48,7], ["p1",5,"op","chess_char_6_11_a",2,null,1529,1,174,28,230418,10062,0,75,10],
["p1",6,"op","chess_char_6_06_a",2,null,2638,1,158,15,108249,19250,0,107,4], ["p1",6,"op","chess_char_6_06_a",2,null,2149.08,1,158,16,114781,20845,0,115,4],
["p1",7,"op","chess_char_5_22_a",2,null,1272,1,3,2,27182,0,0,23,2], ["p1",7,"op","chess_char_5_22_a",2,null,1272,1,3,2,27889,0,0,23,2],
["p1",8,"op","chess_char_6_01_a",2,null,1272,1,4,38,276396,0,0,159,2], ["p1",8,"op","chess_char_6_01_a",2,null,1272,1,4,36,251215,0,0,157,2],
["p1",9,"op","chess_char_6_04_a",2,null,1160,1,13,8,63813,0,0,118,2], ["p1",9,"op","chess_char_6_04_a",2,null,1160,1,13,5,66116,0,0,122,2],
["p1",10,"op","chess_char_6_05_a",2,null,1272,1,14,18,244695,2453,0,128,2], ["p1",10,"op","chess_char_6_05_a",2,null,1272,1,14,18,242842,2453,0,127,2],
["p1",11,"op","chess_char_6_08_a",2,null,1372,1,5,21,209303,0,0,53,3], ["p1",11,"op","chess_char_6_08_a",2,null,1372,1,5,21,132325,0,0,40,2],
["p1",12,"op","chess_char_6_09_a",2,null,1224,1,11,0,0,0,25396,42,2], ["p1",12,"op","chess_char_6_09_a",2,null,1224,1,11,0,0,0,29310,46,2],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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] ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
], ],
@@ -231,17 +219,17 @@
"enemy_10099_crvln": [1,1,0,2453,20736], "enemy_10099_crvln": [1,1,0,2453,20736],
"enemy_1009_lurker": [1,1,0,23,3041], "enemy_1009_lurker": [1,1,0,23,3041],
"enemy_1010_demon": [1,1,0,0,10368], "enemy_1010_demon": [1,1,0,0,10368],
"enemy_1010_demon_2": [28,24,4,9519,566154], "enemy_1010_demon_2": [28,28,0,11599,580608],
"enemy_10112_ymgds": [1,1,0,0,6912], "enemy_10112_ymgds": [1,1,0,0,6912],
"enemy_10116_ymgtop": [1,1,0,2924,13824], "enemy_10116_ymgtop": [1,1,0,2924,13824],
"enemy_10118_ymgprc": [1,0,1,8633,47535], "enemy_10118_ymgprc": [1,1,0,10510,69120],
"enemy_1071_dftman": [63,63,0,666,243855], "enemy_1071_dftman": [63,63,0,587,243855],
"enemy_1072_dlancer": [60,53,7,16266,482782] "enemy_1072_dlancer": [60,60,0,16287,497664]
}, },
"hooks": [1,178,6052,992,992,2073,2070,71,154,166,35,33,0,37600,3935,56,158,12,1,155,2,0,11], "hooks": [1,177,6043,1060,1060,2060,2055,76,166,166,36,35,0,37056,3588,58,158,0,1,168,2,0,13],
"events": {"atk":1138,"bounty":4,"deploy":18,"die":154,"dmg":2070,"engage":11,"fx":174,"heal":53,"layer":2,"leak":12,"skill":68,"spawn":172,"status":449}, "events": {"atk":1212,"bounty":4,"deploy":17,"die":166,"dmg":2055,"engage":11,"fx":181,"heal":58,"layer":2,"skill":71,"spawn":172,"status":436},
"fx": {"aoe":8,"dodge":14,"dp":44,"garrison":2,"revive":1,"slash":86,"sp":14,"spGain":3,"telegraph":2}, "fx": {"aoe":5,"dodge":17,"dp":47,"garrison":2,"revive":1,"slash":91,"sp":14,"spGain":2,"telegraph":2},
"snaps": "484fd662 4f4e076d 081948b0 d7bf1df0 c0aa2905 1b27e150 ab6cac50 1cbbd19b 1109a00b b8a562d0 58ac9b92 3126d9be 7b2d0323 7a11d03f b313b514 a71c9972 09816903 02ed5449 40a13ed4 00252786 174d9027" "snaps": "484fd662 4f4e076d 081948b0 d7bf1df0 c0aa2905 1b27e150 ab6cac50 d1148fdb fccd25dd 3bdf0cd3 bc78cb58 5914e59f e9a5d19b c18806ba 780d90bd f332e4d3 1b1a7814 b06c5778 2ebf5ca8 a00fc7c0 e0236981"
}, },
"standin-05": { "standin-05": {
"about": "normal band 6 as stand-ins: chess_char_6_17_a→char_608_acpion chess_char_6_13_a→char_615_acspec chess_char_6_19_a→char_615_acspec chess_char_6_12_a→char_612_accast chess_char_6_15_a→char_614_acsupo chess_char_6_18_a→char_612_accast chess_char_6_20_a→char_613_acmedc", "about": "normal band 6 as stand-ins: chess_char_6_17_a→char_608_acpion chess_char_6_13_a→char_615_acspec chess_char_6_19_a→char_615_acspec chess_char_6_12_a→char_612_accast chess_char_6_15_a→char_614_acsupo chess_char_6_18_a→char_612_accast chess_char_6_20_a→char_613_acmedc",
@@ -252,24 +240,24 @@
"round": 12, "round": 12,
"seed": 4096833445, "seed": 4096833445,
"waveId": "act1autochess_h05", "waveId": "act1autochess_h05",
"time": 215.57, "time": 220.27,
"ticks": 6467, "ticks": 6608,
"reason": "cleared", "reason": "cleared",
"killed": 5, "killed": 5,
"total": 104, "total": 104,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 215, "rngDraws": 225,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": {"killed":5,"total":104,"perfect":false,"leaks":99,"leaksUncounted":0,"coins":0,"dmg":414926,"bossDmg":0,"heal":451,"deaths":22,"layerGains":{"raidShip":3}} "p1": {"killed":5,"total":104,"perfect":false,"leaks":99,"leaksUncounted":0,"coins":0,"dmg":418583,"bossDmg":0,"heal":451,"deaths":23,"layerGains":{"raidShip":3}}
}, },
"units": [ "units": [
["p1",1,"op","chess_char_6_17_a",2,null,0,0,130,1,102521,9556,0,46,1], ["p1",1,"op","chess_char_6_17_a",2,null,0,0,130,1,102521,9556,0,46,1],
["p1",2,"op","chess_char_6_13_a",2,null,1154,1,135,0,23355,9232,0,75,0], ["p1",2,"op","chess_char_6_13_a",2,null,0,0,135,0,25983,10386,0,85,0],
["p1",3,"op","chess_char_6_19_a",2,null,0,0,133,3,24753,9232,0,127,0], ["p1",3,"op","chess_char_6_19_a",2,null,1154,1,136,3,24753,9232,0,127,0],
["p1",4,"op","chess_char_6_12_a",2,null,671.78,1,7,0,141278,975,0,83,2], ["p1",4,"op","chess_char_6_12_a",2,null,671.78,1,7,0,141278,975,0,83,2],
["p1",5,"op","chess_char_6_15_a",2,null,0,0,134,1,52715,4965,0,109,2], ["p1",5,"op","chess_char_6_15_a",2,null,0,0,134,1,53745,4965,0,110,2],
["p1",6,"op","chess_char_6_18_a",2,null,1372,1,85,0,70303,1372,0,42,2], ["p1",6,"op","chess_char_6_18_a",2,null,1372,1,85,0,70303,1372,0,42,2],
["p1",7,"op","chess_char_6_20_a",2,null,1224,1,4,0,0,451,451,1,1], ["p1",7,"op","chess_char_6_20_a",2,null,1224,1,4,0,0,451,451,1,1],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
@@ -286,13 +274,13 @@
"enemy_10156_mncrer": [1,0,1,0,1476], "enemy_10156_mncrer": [1,0,1,0,1476],
"enemy_10159_mntrjn": [1,0,1,0,0], "enemy_10159_mntrjn": [1,0,1,0,0],
"enemy_1381_winman": [27,4,23,2007,92343], "enemy_1381_winman": [27,4,23,2007,92343],
"enemy_1381_winman_2": [39,0,39,7769,165158], "enemy_1381_winman_2": [39,0,39,8923,168815],
"enemy_1387_winshd": [30,1,29,16725,136197] "enemy_1387_winshd": [30,1,29,16725,136197]
}, },
"hooks": [1,135,6467,577,577,964,964,2,27,128,8,24,0,14795,2484,27,104,99,1,27,1,0,0], "hooks": [1,136,6608,592,592,980,980,2,28,129,8,25,0,15091,2491,28,104,99,1,28,1,0,0],
"events": {"atk":608,"deploy":28,"die":29,"dmg":872,"engage":6,"fx":65,"heal":1,"layer":1,"leak":99,"skill":50,"spawn":114,"status":505}, "events": {"atk":623,"deploy":29,"die":30,"dmg":888,"engage":6,"fx":65,"heal":1,"layer":1,"leak":99,"skill":52,"spawn":114,"status":507},
"fx": {"aoe":5,"blink":2,"camouflage":1,"displace":29,"dodge":1,"dp":2,"explode":7,"garrison":1,"garrisonGrant":2,"slash":8,"zone":7}, "fx": {"aoe":5,"blink":2,"camouflage":1,"displace":29,"dodge":1,"dp":2,"explode":7,"garrison":1,"garrisonGrant":2,"slash":8,"zone":7},
"snaps": "7d1098cf eed27d14 68262b97 c6f234c7 8b38f4e3 21342a44 02b1ea83 cb4a0d82 ab536b9b 983e88e0 79e6d79f 29c12df3 10ec6f87 f8880188 2817d38e c8292cb4 c36fbc55 11c36bec 13e7ad67 fa20b3bf b4378733 2c35030e" "snaps": "7d1098cf a2545bc6 e235d106 8dfcbe4d 7418beb3 b07a14d3 d8595728 777b37c0 fcf9e593 4701b892 b3bb788e 48db2071 75eccfeb 54b87291 0c274801 025d0454 6e6490df e548bc32 a587ffae 097958c2 b5acd030 f192d5d8"
}, },
"standin-06": { "standin-06": {
"about": "elite band 5 as stand-ins: chess_char_3_12_b→char_608_acpion chess_char_4_09_b→char_617_sharp2 chess_char_3_05_b→char_601_cguard chess_char_3_18_b→char_609_acguad chess_char_4_04_b→char_607_cspec chess_char_4_07_b→char_601_cguard chess_char_4_16_b→char_615_acspec chess_char_3_01_b→char_603_csnipe chess_char_3_04_b→char_605_cmedic chess_char_3_21_b→char_611_acnipe chess_char_4_02_b→char_611_acnipe chess_char_4_13_b→char_614_acsupo", "about": "elite band 5 as stand-ins: chess_char_3_12_b→char_608_acpion chess_char_4_09_b→char_617_sharp2 chess_char_3_05_b→char_601_cguard chess_char_3_18_b→char_609_acguad chess_char_4_04_b→char_607_cspec chess_char_4_07_b→char_601_cguard chess_char_4_16_b→char_615_acspec chess_char_3_01_b→char_603_csnipe chess_char_3_04_b→char_605_cmedic chess_char_3_21_b→char_611_acnipe chess_char_4_02_b→char_611_acnipe chess_char_4_13_b→char_614_acsupo",
@@ -303,49 +291,49 @@
"round": 10, "round": 10,
"seed": 1442657168, "seed": 1442657168,
"waveId": "act1autochess_h03", "waveId": "act1autochess_h03",
"time": 183.7, "time": 185.13,
"ticks": 5511, "ticks": 5554,
"reason": "cleared", "reason": "cleared",
"killed": 25, "killed": 24,
"total": 98, "total": 98,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 272, "rngDraws": 262,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": {"killed":25,"total":98,"perfect":false,"leaks":73,"leaksUncounted":0,"coins":4,"dmg":397046,"bossDmg":0,"heal":12225,"deaths":31,"layerGains":{"raidShip":24}} "p1": {"killed":24,"total":98,"perfect":false,"leaks":74,"leaksUncounted":0,"coins":4,"dmg":379938,"bossDmg":0,"heal":9793,"deaths":31,"layerGains":{"raidShip":24}}
}, },
"units": [ "units": [
["p1",1,"op","chess_char_3_12_b",2,"none",1904,1,138,4,33527,4810,222,6,1], ["p1",1,"op","chess_char_3_12_b",2,"none",1904,1,138,4,33527,4810,222,6,1],
["p1",2,"op","chess_char_4_09_b",0,"none",0,0,6,2,12272,3510,0,5,1], ["p1",2,"op","chess_char_4_09_b",0,"none",0,0,6,2,10500,3510,0,5,1],
["p1",3,"op","chess_char_3_05_b",2,"none",0,0,90,1,29963,11344,0,19,2], ["p1",3,"op","chess_char_3_05_b",2,"none",0,0,90,1,29453,11344,0,19,2],
["p1",4,"op","chess_char_3_18_b",2,"none",0,0,12,1,32236,5744,2553,22,1], ["p1",4,"op","chess_char_3_18_b",2,"none",0,0,12,1,32236,5744,2553,22,1],
["p1",5,"op","chess_char_4_04_b",1,"none",0,0,137,0,21284,11506,0,43,9], ["p1",5,"op","chess_char_4_04_b",1,"none",0,0,137,0,21284,11506,0,43,9],
["p1",6,"op","chess_char_4_07_b",1,"none",0,0,93,0,13096,7538,0,19,1], ["p1",6,"op","chess_char_4_07_b",1,"none",0,0,93,0,13230,7538,0,21,1],
["p1",7,"op","chess_char_4_16_b",1,"none",0,0,135,2,26045,13645,0,38,12], ["p1",7,"op","chess_char_4_16_b",1,"none",0,0,135,2,22963,13645,0,38,12],
["p1",8,"op","chess_char_3_01_b",2,"none",0,0,128,1,13435,3020,0,21,1], ["p1",8,"op","chess_char_3_01_b",2,"none",0,0,128,2,11972,3020,0,20,1],
["p1",9,"op","chess_char_3_04_b",2,"none",0,0,4,0,0,1374,9451,11,1], ["p1",9,"op","chess_char_3_04_b",2,"none",0,0,4,0,0,1374,7019,10,1],
["p1",10,"op","chess_char_3_21_b",2,"none",0,0,112,11,185272,6695,0,50,1], ["p1",10,"op","chess_char_3_21_b",2,"none",0,0,111,9,171439,4263,0,48,1],
["p1",11,"op","chess_char_4_02_b",1,"none",0,0,2,0,16202,1483,0,17,1], ["p1",11,"op","chess_char_4_02_b",1,"none",0,0,2,0,19713,1483,0,16,1],
["p1",12,"op","chess_char_4_13_b",1,"none",0,0,101,3,13715,3085,0,23,1] ["p1",12,"op","chess_char_4_13_b",1,"none",0,0,101,3,13621,3085,0,23,1]
], ],
"enemies": { "enemies": {
"enemy_10162_mnctpt": [1,0,1,13739,31746], "enemy_10162_mnctpt": [1,0,1,13739,28023],
"enemy_1019_jshoot": [1,1,0,769,4479], "enemy_1019_jshoot": [1,1,0,769,4479],
"enemy_1019_jshoot_2": [1,1,0,1779,6718], "enemy_1019_jshoot_2": [1,1,0,1779,6718],
"enemy_1021_bslime": [1,1,0,2095,6121], "enemy_1021_bslime": [1,1,0,2095,6121],
"enemy_1023_jmage": [1,0,1,3326,1518], "enemy_1023_jmage": [1,0,1,2948,0],
"enemy_1025_reveng": [1,1,0,0,12442], "enemy_1025_reveng": [1,0,1,0,12429],
"enemy_1026_aghost": [1,1,0,0,9456], "enemy_1026_aghost": [1,1,0,0,9456],
"enemy_1043_zomsbr": [1,0,1,0,0], "enemy_1043_zomsbr": [1,0,1,0,0],
"enemy_1251_lysyta_2": [57,15,42,6671,148451], "enemy_1251_lysyta_2": [57,15,42,6671,144893],
"enemy_1252_lysytb_2": [21,4,17,25366,127156], "enemy_1252_lysytb_2": [21,4,17,25366,122606],
"enemy_1329_cbshld_2": [12,1,11,20011,48959] "enemy_1329_cbshld_2": [12,1,11,17957,45213]
}, },
"hooks": [1,138,5511,428,428,618,635,38,56,137,32,32,0,5767,24,40,98,73,1,59,3,0,6], "hooks": [1,138,5554,424,424,606,623,37,55,137,32,32,0,5902,24,41,98,74,1,58,3,0,6],
"events": {"atk":493,"bounty":2,"deploy":40,"die":64,"dmg":635,"engage":11,"fx":32,"heal":36,"layer":3,"leak":73,"skill":64,"spawn":110,"status":83}, "events": {"atk":484,"bounty":2,"deploy":40,"die":63,"dmg":623,"engage":11,"fx":33,"heal":35,"layer":3,"leak":74,"skill":64,"spawn":110,"status":81},
"fx": {"blink":8,"camouflage":1,"dodge":6,"dp":5,"explode":1,"garrison":3,"slash":8}, "fx": {"blink":8,"camouflage":1,"dodge":7,"dp":5,"explode":1,"garrison":3,"slash":8},
"snaps": "be6d1821 69cb5865 7bea5cb3 02fefb75 5eacb174 5bc1814c a70bea6d 0de1251c 172a35f2 f9001627 db7b6b38 a6083013 e2198a24 0adb9d99 8eed5e8b b756dcfe 538dc28e 876d2f95 835a73d1" "snaps": "be6d1821 33db37f0 1c42b6f6 5af04203 5e6c5512 babe8154 f176e4bc af2beda0 d11d4dd9 232a9af5 dbd39714 cdc694f1 7413a229 4dd3df34 ebd96e47 5f8b58f1 42af7a0d e3ac653d afa3953c"
}, },
"standin-07": { "standin-07": {
"about": "elite band 6 as stand-ins: chess_char_4_17_b→char_610_acfend chess_char_4_18_b→char_602_cdfend chess_char_5_05_b→char_602_cdfend chess_char_4_19_b→char_608_acpion chess_char_5_01_b→char_600_cpione chess_char_4_22_b→char_609_acguad chess_char_4_23_b→char_609_acguad chess_char_5_06_b→char_609_acguad chess_char_4_20_b→char_603_csnipe chess_char_4_24_b→char_604_ccast chess_char_5_02_b→char_604_ccast chess_char_5_03_b→char_612_accast", "about": "elite band 6 as stand-ins: chess_char_4_17_b→char_610_acfend chess_char_4_18_b→char_602_cdfend chess_char_5_05_b→char_602_cdfend chess_char_4_19_b→char_608_acpion chess_char_5_01_b→char_600_cpione chess_char_4_22_b→char_609_acguad chess_char_4_23_b→char_609_acguad chess_char_5_06_b→char_609_acguad chess_char_4_20_b→char_603_csnipe chess_char_4_24_b→char_604_ccast chess_char_5_02_b→char_604_ccast chess_char_5_03_b→char_612_accast",
@@ -359,21 +347,21 @@
"time": 223.57, "time": 223.57,
"ticks": 6707, "ticks": 6707,
"reason": "cleared", "reason": "cleared",
"killed": 9, "killed": 10,
"total": 80, "total": 80,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 82, "rngDraws": 81,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": { "p1": {
"killed": 9, "killed": 10,
"total": 80, "total": 80,
"perfect": false, "perfect": false,
"leaks": 71, "leaks": 70,
"leaksUncounted": 0, "leaksUncounted": 0,
"coins": 4, "coins": 4,
"dmg": 125257, "dmg": 143200,
"bossDmg": 0, "bossDmg": 0,
"heal": 0, "heal": 0,
"deaths": 25, "deaths": 25,
@@ -381,38 +369,38 @@
} }
}, },
"units": [ "units": [
["p1",1,"op","chess_char_4_17_b",1,"none",0,0,3,0,210,3211,0,2,1], ["p1",1,"op","chess_char_4_17_b",1,"none",0,0,3,0,189,3211,0,1,1],
["p1",2,"op","chess_char_4_18_b",1,"none",0,0,86,0,30,9306,0,1,1], ["p1",2,"op","chess_char_4_18_b",1,"none",0,0,86,0,60,9306,0,2,1],
["p1",3,"op","chess_char_5_05_b",2,"none",0,0,100,0,1145,5816,0,2,1], ["p1",3,"op","chess_char_5_05_b",2,"none",0,0,100,0,572,5816,0,1,1],
["p1",4,"op","chess_char_4_19_b",1,"none",1847.63,1,110,0,230,3864,0,7,1], ["p1",4,"op","chess_char_4_19_b",1,"none",1847.63,1,110,0,230,3864,0,7,1],
["p1",5,"op","chess_char_5_01_b",2,"none",1036.53,1,108,0,2197,3985,0,5,3], ["p1",5,"op","chess_char_5_01_b",2,"none",1036.53,1,108,1,2433,3985,0,6,3],
["p1",6,"op","chess_char_4_22_b",1,"none",3191,1,112,0,959,14040,0,6,1], ["p1",6,"op","chess_char_4_22_b",1,"none",3191,1,112,0,959,14040,0,6,1],
["p1",7,"op","chess_char_4_23_b",1,"none",0,0,71,0,3484,6865,0,8,1], ["p1",7,"op","chess_char_4_23_b",1,"none",0,0,71,0,3484,6865,0,8,1],
["p1",8,"op","chess_char_5_06_b",2,"uniequip_002_acguad",0,0,10,0,0,3820,0,0,0], ["p1",8,"op","chess_char_5_06_b",2,"uniequip_002_acguad",0,0,10,0,0,3820,0,0,0],
["p1",9,"op","chess_char_4_20_b",1,"none",1255.06,1,109,2,15749,4785,0,30,1], ["p1",9,"op","chess_char_4_20_b",1,"none",1255.06,1,109,2,15968,4785,0,30,1],
["p1",10,"op","chess_char_4_24_b",1,"none",1007.59,1,111,0,5710,3072,0,19,1], ["p1",10,"op","chess_char_4_24_b",1,"none",1007.59,1,111,1,5553,3072,0,19,1],
["p1",11,"op","chess_char_5_02_b",2,"none",0,0,105,1,8684,4080,0,19,1], ["p1",11,"op","chess_char_5_02_b",2,"none",0,0,105,1,8684,4080,0,19,1],
["p1",12,"op","chess_char_5_03_b",2,"uniequip_002_accast",0,0,4,6,86859,1749,0,10,1], ["p1",12,"op","chess_char_5_03_b",2,"uniequip_002_accast",0,0,4,5,105067,1749,0,10,1],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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] ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
], ],
"enemies": { "enemies": {
"enemy_1005_yokai_2": [18,3,15,3206,7232], "enemy_1005_yokai_2": [18,3,15,3234,10312],
"enemy_1041_lazerd_2": [24,3,21,43558,33530], "enemy_1041_lazerd_2": [24,3,21,43648,33749],
"enemy_1042_frostd": [30,1,29,0,25469], "enemy_1042_frostd": [30,2,28,0,34315],
"enemy_1045_hammer": [1,1,0,2106,15552], "enemy_1045_hammer": [1,1,0,2029,15552],
"enemy_1045_hammer_2": [1,0,1,5370,20295], "enemy_1045_hammer_2": [1,0,1,3891,18162],
"enemy_1046_agent": [1,1,0,72,3888], "enemy_1046_agent": [1,1,0,72,3888],
"enemy_1050_lslime": [1,0,1,8703,0], "enemy_1050_lslime": [1,0,1,9027,5281],
"enemy_1061_zomshd": [1,0,1,61,13862], "enemy_1061_zomshd": [1,0,1,61,13892],
"enemy_1062_rager_2": [1,0,1,1519,13929], "enemy_1062_rager_2": [1,0,1,2632,17550],
"enemy_1067_snslime": [1,0,1,0,0], "enemy_1067_snslime": [1,0,1,0,0],
"enemy_1071_dftman": [1,0,1,0,0] "enemy_1071_dftman": [1,0,1,0,0]
}, },
"hooks": [1,112,6707,301,301,557,549,545,34,105,13,13,0,9357,10,15,80,71,1,34,2,0,8], "hooks": [1,112,6707,296,296,579,572,568,35,105,13,13,0,9191,8,15,80,70,1,35,2,0,7],
"events": {"atk":327,"bounty":2,"deploy":30,"die":34,"dmg":549,"engage":11,"fx":22,"layer":2,"leak":71,"skill":26,"spawn":94,"status":117}, "events": {"atk":322,"bounty":2,"deploy":30,"die":35,"dmg":572,"engage":11,"fx":22,"layer":2,"leak":70,"skill":26,"spawn":94,"status":113},
"fx": {"aoe":1,"dodge":8,"dp":5,"garrison":2,"garrisonGrant":1,"palsy":2,"revive":3}, "fx": {"aoe":1,"dodge":7,"dp":6,"garrison":2,"garrisonGrant":1,"palsy":2,"revive":3},
"snaps": "801e90ec 5f30137a 2f821a94 27817b68 c0d15f75 e321526a 89ad955e 577c467d e5ab6fc3 ea5ef327 c886e093 8fb8ee86 0bcd89de 3e0a3556 5a88da95 d1f4e3bf c043e923 9e51b0d0 951fd650 26d039ea c8dfac53 49a41bb2 1aba0cf1" "snaps": "801e90ec 4ebbd3e8 f780653d ed5ed324 bd024323 babc565e 46a42524 cf9f3776 b854d31f 975c3869 9b059794 4a0e03a1 6e53c58b 0baee204 14791829 482e0160 46afd15b 48ab4dc8 11b59232 d2527d0d 9a65bb0e ae5b68b3 5e9c3da0"
}, },
"standin-08": { "standin-08": {
"about": "elite band 6 as stand-ins: chess_char_5_08_b→char_610_acfend chess_char_5_14_b→char_608_acpion chess_char_5_19_b→char_617_sharp2 chess_char_5_07_b→char_601_cguard chess_char_5_13_b→char_609_acguad chess_char_5_17_b→char_615_acspec chess_char_5_10_b→char_606_csuppo chess_char_5_11_b→char_613_acmedc chess_char_5_12_b→char_614_acsupo chess_char_5_15_b→char_603_csnipe chess_char_5_18_b→char_611_acnipe chess_char_5_20_b→char_614_acsupo", "about": "elite band 6 as stand-ins: chess_char_5_08_b→char_610_acfend chess_char_5_14_b→char_608_acpion chess_char_5_19_b→char_617_sharp2 chess_char_5_07_b→char_601_cguard chess_char_5_13_b→char_609_acguad chess_char_5_17_b→char_615_acspec chess_char_5_10_b→char_606_csuppo chess_char_5_11_b→char_613_acmedc chess_char_5_12_b→char_614_acsupo chess_char_5_15_b→char_603_csnipe chess_char_5_18_b→char_611_acnipe chess_char_5_20_b→char_614_acsupo",
@@ -423,50 +411,50 @@
"round": 12, "round": 12,
"seed": 2456427706, "seed": 2456427706,
"waveId": "act1autochess_h05", "waveId": "act1autochess_h05",
"time": 230, "time": 226.63,
"ticks": 6900, "ticks": 6799,
"reason": "timeout", "reason": "cleared",
"killed": 35, "killed": 42,
"total": 179, "total": 179,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 1045, "rngDraws": 981,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":35,"total":179,"perfect":false,"leaks":144,"leaksUncounted":0,"coins":2,"dmg":1736036,"bossDmg":0,"heal":110120,"deaths":11,"layerGains":{}}}, "players": {"p1":{"killed":42,"total":179,"perfect":false,"leaks":137,"leaksUncounted":0,"coins":2,"dmg":1733157,"bossDmg":0,"heal":77968,"deaths":13,"layerGains":{}}},
"units": [ "units": [
["p1",1,"op","chess_char_5_08_b",2,"uniequip_002_acfend",2051.95,1,164,4,77661,36640,0,117,3], ["p1",1,"op","chess_char_5_08_b",2,"uniequip_002_acfend",3242.12,1,7,5,122124,8280,0,159,4],
["p1",2,"op","chess_char_5_14_b",2,"uniequip_002_acpion",1904,1,194,9,521070,9584,0,48,8], ["p1",2,"op","chess_char_5_14_b",2,"uniequip_002_acpion",1904,1,201,14,520028,10508,0,46,6],
["p1",3,"op","chess_char_5_19_b",0,"uniequip_002_sharp2",4154.5,1,204,5,256988,30222,0,77,3], ["p1",3,"op","chess_char_5_19_b",0,"uniequip_002_sharp2",4154.5,1,207,5,264095,31935,0,79,3],
["p1",4,"op","chess_char_5_07_b",2,"none",2619.79,1,203,2,42832,27659,0,38,3], ["p1",4,"op","chess_char_5_07_b",2,"none",3334,1,205,2,42880,20656,0,36,3],
["p1",5,"op","chess_char_5_13_b",2,"uniequip_002_acguad",3411,1,205,4,86863,13306,0,44,2], ["p1",5,"op","chess_char_5_13_b",2,"uniequip_002_acguad",3411,1,206,4,80947,12473,0,40,2],
["p1",6,"op","chess_char_5_17_b",2,"uniequip_002_acspec",1448,1,189,4,87684,26616,0,145,0], ["p1",6,"op","chess_char_5_17_b",2,"uniequip_002_acspec",1448,1,188,4,90888,27092,0,116,0],
["p1",7,"op","chess_char_5_10_b",2,"none",1131,1,4,0,76667,0,0,155,4], ["p1",7,"op","chess_char_5_10_b",2,"none",1131,1,4,2,64373,0,0,134,4],
["p1",8,"op","chess_char_5_11_b",2,"uniequip_002_acmedc",2262.4,1,5,0,0,0,110120,78,3], ["p1",8,"op","chess_char_5_11_b",2,"uniequip_002_acmedc",2262.4,1,5,0,0,0,77968,77,3],
["p1",9,"op","chess_char_5_12_b",2,"uniequip_002_acsupo",1430,1,11,2,101246,0,0,136,3], ["p1",9,"op","chess_char_5_12_b",2,"uniequip_002_acsupo",1430,1,11,3,105459,0,0,135,3],
["p1",10,"op","chess_char_5_15_b",2,"none",1510,1,13,0,87081,0,0,232,4], ["p1",10,"op","chess_char_5_15_b",2,"none",1510,1,13,0,83399,0,0,215,4],
["p1",11,"op","chess_char_5_18_b",2,"uniequip_002_acnipe",2380.5,1,6,5,303540,0,0,167,3], ["p1",11,"op","chess_char_5_18_b",2,"uniequip_002_acnipe",2380.5,1,6,3,266479,0,0,178,3],
["p1",12,"op","chess_char_5_20_b",2,"uniequip_002_acsupo",1430,1,14,0,94405,0,0,125,3], ["p1",12,"op","chess_char_5_20_b",2,"uniequip_002_acsupo",1430,1,14,0,92485,0,0,125,3],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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], ["-","~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] ["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null]
], ],
"enemies": { "enemies": {
"enemy_1072_dlancer": [1,1,0,1609,37150], "enemy_1072_dlancer": [1,1,0,1609,37150],
"enemy_1081_sotisd": [1,0,1,194,28396], "enemy_1081_sotisd": [1,0,1,749,28802],
"enemy_1092_mdgint": [1,0,1,0,505], "enemy_1092_mdgint": [1,0,1,0,0],
"enemy_1116_liprr": [1,0,1,0,6095], "enemy_1116_liprr": [1,0,1,0,7850],
"enemy_1116_liprr_2": [1,0,1,0,2364], "enemy_1116_liprr_2": [1,0,1,0,1829],
"enemy_1118_lidbox_2": [1,0,1,0,1344], "enemy_1118_lidbox_2": [1,0,1,0,809],
"enemy_1119_vofsd": [1,0,1,0,889], "enemy_1119_vofsd": [1,0,1,0,889],
"enemy_1121_lifbos": [1,0,1,0,1997], "enemy_1121_lifbos": [1,0,1,4806,7013],
"enemy_1249_lysdb_2": [60,14,46,46440,808178], "enemy_1249_lysdb_2": [60,18,42,37448,866144],
"enemy_1251_lysyta": [63,18,45,8182,493665], "enemy_1251_lysyta": [63,22,41,7583,520464],
"enemy_1254_lypa_2": [48,2,45,87602,355453] "enemy_1254_lypa_2": [48,1,47,58748,262208]
}, },
"hooks": [1,205,6900,1792,1792,3023,3084,153,46,189,39,41,0,26837,16854,58,179,143,1,46,0,0,6], "hooks": [1,207,6799,1790,1790,3161,3225,149,55,192,38,43,0,26658,17254,63,179,137,1,55,0,0,6],
"events": {"atk":2045,"bounty":1,"deploy":23,"die":46,"dmg":3073,"engage":11,"fx":280,"heal":140,"leak":143,"skill":84,"spawn":194,"status":1275}, "events": {"atk":2022,"bounty":1,"deploy":25,"die":55,"dmg":3200,"engage":11,"fx":302,"heal":133,"leak":137,"skill":88,"spawn":194,"status":1230},
"fx": {"aoe":90,"displace":4,"dodge":34,"dp":17,"shieldBreak":59,"slash":64,"sp":2,"spGain":10}, "fx": {"aoe":120,"displace":8,"dodge":31,"dp":20,"liberate":1,"phase":1,"shieldBreak":60,"slash":48,"sp":1,"spGain":12},
"snaps": "c4ba1bfb fae78ec3 d95288ac 1e7366a4 dbbd0efb 2511f256 d2703cda dc932034 2d5006eb 8fcfa286 0f2d3b1e af1f7c99 b655c535 e4d7c5af 88362233 8adc2140 c0aab784 c923256c 5e8e81a4 b5c29988 bf00ddb2 6593e2b4 58d326a5" "snaps": "c4ba1bfb fae78ec3 4853328f 674d8548 bcbe6142 1a53e0eb 214c2462 a608c08f 504eb3ba 4e0e6e68 d4d1daf8 a6dc8003 1ce13419 a363753a 07e954ca 3e70563d 7e686001 0f4877a6 ba4f9efe e6778a6d 6675e221 520b5fe5 4464a0d3"
}, },
"standin-09": { "standin-09": {
"about": "elite band 7 as stand-ins: chess_char_6_03_b→char_610_acfend chess_char_6_02_b→char_608_acpion chess_char_6_07_b→char_617_sharp2 chess_char_6_10_b→char_617_sharp2 chess_char_6_11_b→char_608_acpion chess_char_6_06_b→char_609_acguad chess_char_5_22_b→char_611_acnipe chess_char_6_01_b→char_611_acnipe chess_char_6_04_b→char_614_acsupo chess_char_6_05_b→char_611_acnipe chess_char_6_08_b→char_612_accast chess_char_6_09_b→char_613_acmedc", "about": "elite band 7 as stand-ins: chess_char_6_03_b→char_610_acfend chess_char_6_02_b→char_608_acpion chess_char_6_07_b→char_617_sharp2 chess_char_6_10_b→char_617_sharp2 chess_char_6_11_b→char_608_acpion chess_char_6_06_b→char_609_acguad chess_char_5_22_b→char_611_acnipe chess_char_6_01_b→char_611_acnipe chess_char_6_04_b→char_614_acsupo chess_char_6_05_b→char_611_acnipe chess_char_6_08_b→char_612_accast chess_char_6_09_b→char_613_acmedc",
@@ -522,7 +510,7 @@
"hooks": [1,174,5953,812,812,1599,1718,168,159,159,37,36,0,29335,2593,62,158,0,1,159,3,1,17], "hooks": [1,174,5953,812,812,1599,1718,168,159,159,37,36,0,29335,2593,62,158,0,1,159,3,1,17],
"events": {"atk":917,"bounty":4,"deploy":13,"die":159,"dmg":1707,"engage":7,"fx":298,"heal":127,"layer":3,"skill":73,"spawn":173,"status":324}, "events": {"atk":917,"bounty":4,"deploy":13,"die":159,"dmg":1707,"engage":7,"fx":298,"heal":127,"layer":3,"skill":73,"spawn":173,"status":324},
"fx": {"aoe":2,"burst":1,"dodge":19,"dp":55,"garrison":3,"shieldBreak":60,"slash":144,"sp":12,"strike":2}, "fx": {"aoe":2,"burst":1,"dodge":19,"dp":55,"garrison":3,"shieldBreak":60,"slash":144,"sp":12,"strike":2},
"snaps": "526d4c63 f61576c6 e1be6631 53288d14 7de80a4f 26575d3b 14b2dc7b 09bff769 03f7af9b 81a2c2a0 80d45921 19ddd297 25520dc8 270c7d09 288a246a 05a0a7ec ed5b2582 a7da7717 af272d65 435b22b3" "snaps": "526d4c63 f61576c6 e1be6631 53288d14 7de80a4f 26575d3b 14b2dc7b 09bff769 03f7af9b 266de1dd a9bf82a4 d80af3de da82ae39 706186e0 9d862b1f bcccab65 19598dab ba7df686 a486add4 e9e501f2"
}, },
"standin-10": { "standin-10": {
"about": "elite band 7 as stand-ins: chess_char_6_17_b→char_608_acpion chess_char_6_13_b→char_615_acspec chess_char_6_19_b→char_615_acspec chess_char_6_12_b→char_612_accast chess_char_6_15_b→char_614_acsupo chess_char_6_18_b→char_612_accast chess_char_6_20_b→char_613_acmedc", "about": "elite band 7 as stand-ins: chess_char_6_17_b→char_608_acpion chess_char_6_13_b→char_615_acspec chess_char_6_19_b→char_615_acspec chess_char_6_12_b→char_612_accast chess_char_6_15_b→char_614_acsupo chess_char_6_18_b→char_612_accast chess_char_6_20_b→char_613_acmedc",
@@ -540,25 +528,25 @@
"total": 131, "total": 131,
"unspawned": 0, "unspawned": 0,
"bossHpLeft": null, "bossHpLeft": null,
"rngDraws": 262, "rngDraws": 263,
"errors": {"count":0,"kinds":[]}, "errors": {"count":0,"kinds":[]},
"players": { "players": {
"p1": {"killed":28,"total":131,"perfect":false,"leaks":103,"leaksUncounted":0,"coins":2,"dmg":537630,"bossDmg":0,"heal":10974,"deaths":25,"layerGains":{"raidShip":6}} "p1": {"killed":28,"total":131,"perfect":false,"leaks":103,"leaksUncounted":0,"coins":2,"dmg":538265,"bossDmg":0,"heal":10974,"deaths":25,"layerGains":{"raidShip":6}}
}, },
"units": [ "units": [
["p1",1,"op","chess_char_6_17_b",2,"uniequip_002_acpion",480.36,1,164,9,211459,13918,0,77,10], ["p1",1,"op","chess_char_6_17_b",2,"uniequip_002_acpion",954.91,1,164,10,211581,13444,0,77,10],
["p1",2,"op","chess_char_6_13_b",2,"uniequip_002_acspec",0,0,165,5,46951,13356,0,105,0], ["p1",2,"op","chess_char_6_13_b",2,"uniequip_002_acspec",0,0,165,5,46991,13356,0,106,0],
["p1",3,"op","chess_char_6_19_b",2,"uniequip_002_acspec",1484,1,166,4,74447,16324,0,138,0], ["p1",3,"op","chess_char_6_19_b",2,"uniequip_002_acspec",1484,1,166,4,75038,16324,0,138,0],
["p1",4,"op","chess_char_6_12_b",2,"uniequip_002_accast",2265.49,1,4,4,78264,281,0,32,2], ["p1",4,"op","chess_char_6_12_b",2,"uniequip_002_accast",2265.49,1,4,4,78264,281,0,32,2],
["p1",5,"op","chess_char_6_15_b",2,"uniequip_002_acsupo",0,0,147,2,54506,6494,0,39,3], ["p1",5,"op","chess_char_6_15_b",2,"uniequip_002_acsupo",0,0,147,2,54506,6494,0,39,3],
["p1",6,"op","chess_char_6_18_b",2,"uniequip_002_accast",1819,1,8,4,72003,900,0,43,2], ["p1",6,"op","chess_char_6_18_b",2,"uniequip_002_accast",1819,1,8,3,71885,900,0,43,2],
["p1",7,"op","chess_char_6_20_b",2,"uniequip_002_acmedc",1464,1,9,0,0,4263,10974,19,1], ["p1",7,"op","chess_char_6_20_b",2,"uniequip_002_acmedc",1464,1,9,0,0,4263,10974,19,1],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null], ["-","~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] ["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
], ],
"enemies": { "enemies": {
"enemy_1006_shield_3": [21,1,20,16907,164045], "enemy_1006_shield_3": [21,1,20,16907,164634],
"enemy_1043_zomsbr": [66,22,44,926,136167], "enemy_1043_zomsbr": [66,22,44,908,136175],
"enemy_1162_magmot": [1,0,1,4704,11483], "enemy_1162_magmot": [1,0,1,4704,11483],
"enemy_1165_duhond": [1,1,0,93,4645], "enemy_1165_duhond": [1,1,0,93,4645],
"enemy_1165_duhond_2": [1,0,1,0,0], "enemy_1165_duhond_2": [1,0,1,0,0],
@@ -567,12 +555,12 @@
"enemy_1168_dumage": [1,1,0,1897,7465], "enemy_1168_dumage": [1,1,0,1897,7465],
"enemy_1168_dumage_2": [1,1,0,4932,10783], "enemy_1168_dumage_2": [1,1,0,4932,10783],
"enemy_1169_duphlx": [1,0,1,0,1489], "enemy_1169_duphlx": [1,0,1,0,1489],
"enemy_1402_tgshd_2": [36,2,33,26077,201554] "enemy_1402_tgshd_2": [36,2,33,25620,201592]
}, },
"hooks": [1,166,6900,579,579,900,914,7045,53,158,18,38,0,8737,1167,49,131,102,1,53,1,1,0], "hooks": [1,166,6900,578,578,900,914,7048,53,158,18,38,0,8737,1167,48,131,102,1,53,1,1,0],
"events": {"atk":586,"bounty":1,"deploy":33,"die":56,"dmg":848,"engage":6,"fx":538,"heal":25,"layer":1,"leak":102,"skill":78,"spawn":140,"status":384}, "events": {"atk":585,"bounty":1,"deploy":33,"die":56,"dmg":848,"engage":6,"fx":539,"heal":25,"layer":1,"leak":102,"skill":78,"spawn":140,"status":384},
"fx": {"aoe":5,"blink":3,"burst":1,"displace":18,"dodge":1,"dp":19,"expose":413,"garrison":1,"garrisonGrant":3,"slash":74}, "fx": {"aoe":4,"blink":3,"burst":1,"displace":18,"dodge":1,"dp":20,"expose":414,"garrison":1,"garrisonGrant":3,"slash":74},
"snaps": "fba27448 de0d1730 e90ea321 52a21ef0 85a0833c 2a8e4ffa 3b4a24e3 f3d67a0b 9f0134f0 9cb0d19a e7da4c3d 843017d8 4557a167 130155ab 0afb1b21 d4aa9c6c c0ffca41 9e9e17c9 975fc2dd 20398d66 00b5e499 52760797 5a270974" "snaps": "fba27448 40f8ddeb 904aa1c4 7f5fd3e3 9795959e b8c7a6c7 f5b1092e b4109451 8082d0cc a86cc61b fb1870c6 9cf94d5d 1d3df05d ceb38c64 2d46f54e 5fd7022a d8ef7fcc 55250098 09b8ad07 d6c97808 bbb9cfcc a2163482 34deba04"
} }
} }
} }
+142
View File
@@ -0,0 +1,142 @@
// test/sim/feedback5-attack-clip-rest.test.js — community report of 2026-10-07 on the 鸭爵 strategy's 流泪小子 (GitHub #214's
// 「泪眼汪汪」): 「哭狗一摸干员、干员直接晕、哭狗瞬间隐匿没有后摇马上就到下一格干员的脸上秒抬手秒晕」.
// Official, and kept: its strike stuns the blocker for 3.5 s (enemy_database Combat.attack@stun), a stunned operator
// blocks nothing (gamedata_const ba.stun 「无法移动、阻挡、攻击及使用技能」; PRTS 异常效果 STUNNED 「无法攻击、释放技能、阻挡敌人
// 类单位」), its 隐匿 is back 0 s after the block ends (PRTS 流泪小子 「隐匿(解除阻挡0秒后恢复)」), and its cooldown runs on the
// walk, so its first swing at the next operator starts at once and strikes 0.767 s later (the Attack clip's OnAttack).
// The deviation (fixed in 0.2.0): it walked on the very tick of its strike. PRTS 状态机: an enemy's ATTACK / COMBAT state
// checks only 异常状态 every frame and "攻击结束后回退到MOVE状态" (only a character's COMBAT drops when its blocker is gone),
// so any enemy whose block ends after its strike — the strike stunned or knocked out its blocker, the blocker left —
// stands for the rest of its attack clip first (server/sim/ai.js enemyAttack / attackStand); a displacement (失衡) ends
// that stand (Battle.displace). The copies here are spawned without the band's 'duck' tag: the official rules throughout.
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { readFileSync } from 'node:fs';
import { makeBattle, chessRec, checkInvariants } from '../helpers/battleHarness.js';
import * as enemiesMod from '../../server/sim/content/enemies.js';
import { TICK } from '../../server/sim/constants.js';
import { attackStand, attackWindup } from '../../server/sim/ai.js';
import { enemyStealthed } from '../../server/sim/targeting.js';
const E = JSON.parse(readFileSync(new URL('../../data/enemies.json', import.meta.url), 'utf8'));
const DOG = 'enemy_2034_sythef_2'; // 流泪小子 (the 鸭爵 strategy's version: 4500 HP, 3.5 s stun)
const ENVOY = 'enemy_1438_dspred'; // 复核洋流使者: a plain melee enemy (stats only) with a 2.133 s clip, strike at 0.733 s
const WALL = (id, hp = 1e7) => chessRec({ id, profession: 'TANK', stats: { atk: 0, maxHp: hp, def: 0, blockCnt: 1 }, rangeGrid: [[0, 0]], skill: null });
const NOATK = () => ({ trait: { noAttack: true } });
function arena(units) {
return makeBattle({
content: 'generic', extraContent: [enemiesMod], seed: 7, autoFinish: false, timeLimit: 600,
defs: { chess: { w1: WALL('w1'), w2: WALL('w2'), weak: WALL('weak', 100) } }, kits: { w1: NOATK, w2: NOATK, weak: NOATK },
units, hooks: ['statusApplied', 'attack', 'death'],
});
}
/** Walk an enemy down route 0 (row 9, from the gate at col 10 towards col 2) until its first strike; returns its time. */
function untilStrike(h, e) {
assert.ok(h.runUntil(() => e.stats.attacks >= 1, 60), 'it strikes');
return h.b.time;
}
test('流泪小子 numbers (enemy_database / its Spine clip): 0.8 move speed, 2.0 s interval, 3.5 s stun, strike 0.767 s into its 1.567 s Attack clip, 隐匿 back 0 s after a block', () => {
const d = E[DOG];
assert.equal(d.stats.moveSpeed, 0.8);
assert.equal(d.stats.bat, 2);
assert.equal(d.applyWay, 'MELEE');
assert.equal(d.talents.bb['Combat.attack@stun'], 3.5);
assert.deepEqual(d.attackAnim, { clip: 'Attack', dur: 1.567, hit: 0.767 });
const h = arena([]);
h.step();
const e = h.spawn(DOG, { routeIndex: 0 });
assert.ok(Math.abs(attackWindup(e) - 0.767) < 1e-9);
assert.ok(Math.abs(attackStand(e).rest - 0.8) < 1e-9);
assert.equal(e.findBuff('ab:stealth').data.stealthRestore, 0);
});
test('流泪小子: its strike stuns the blocker, which lets it go at once (晕眩 blocks nothing) and its 隐匿 is back at once — then it stands for the rest of its clip (0.8 s) before it walks on', () => {
const h = arena([{ chessId: 'w1', row: 9, col: 6 }]);
h.step();
const wall = h.unit('w1');
const e = h.spawn(DOG, { routeIndex: 0 });
assert.ok(h.runUntil(() => e.blockedBy === wall, 30), 'blocked by the wall');
assert.equal(enemyStealthed(e), false, 'revealed while blocked');
const t0 = h.b.time;
const ts = untilStrike(h, e);
// its cooldown was ready: the swing starts on contact and strikes after the 0.767 s wind-up
assert.ok(Math.abs(ts - t0 - attackWindup(e)) < 2 * TICK + 1e-9, `strike ${ts - t0} s after the contact`);
const stun = h.hooksOf('statusApplied').find((c) => c.status === 'stun' && c.target === wall);
assert.ok(stun && Math.abs(stun.duration - 3.5) < 1e-9, 'the wall is stunned for 3.5 s');
assert.equal(e.blockedBy, null, 'a stunned operator blocks nothing');
assert.equal(wall.blocking.length, 0);
assert.equal(enemyStealthed(e), true, '隐匿 0 s after the block ends');
const x0 = e.x;
h.run(attackStand(e).rest - 2 * TICK);
assert.equal(e.x, x0, 'it stands for the rest of its Attack clip (pre-0.2.0: it walked on at once)');
assert.equal(e.moving, false);
h.run(0.2);
assert.ok(e.x < x0 - 0.02 && e.moving, `then it walks on (${x0} → ${e.x})`);
checkInvariants(h.b);
});
test('流泪小子 down a lane of two operators: the second one is reached a stand later, struck 0.767 s after the contact, and the first one takes it over again once its stun ends (contact rule)', () => {
const h = arena([{ chessId: 'w1', row: 9, col: 7 }, { chessId: 'w2', row: 9, col: 6 }]);
h.step();
const [w1, w2] = [h.unit('w1'), h.unit('w2')];
const e = h.spawn(DOG, { routeIndex: 0 });
const ts1 = untilStrike(h, e);
assert.ok(h.runUntil(() => e.blockedBy === w2, 10), 'the second operator blocks it');
const tb2 = h.b.time;
// 0.8 s stand + 1 tile at 0.4 tiles/s (moveSpeed 0.8 × the level's 0.5) between the two contacts
assert.ok(tb2 - ts1 > attackStand(e).rest + 2.4, `${(tb2 - ts1).toFixed(3)} s from the first strike to the second contact`);
assert.ok(h.runUntil(() => e.stats.attacks >= 2, 5));
assert.ok(Math.abs(h.b.time - tb2 - attackWindup(e)) < 2 * TICK + 1e-9, 'its cooldown ran on the walk: struck after the wind-up');
assert.ok(w2.s.flags.stun);
// it stands 0.8 s inside w1's block radius (0.7071): w1, whose 3.5 s stun is over by then, blocks it again
assert.ok(h.runUntil(() => e.blockedBy === w1, 2), 'the first operator takes it over again');
checkInvariants(h.b);
});
test('a plain melee enemy whose strike knocks out its blocker stands for the rest of its clip, then walks on', () => {
const h = arena([{ chessId: 'weak', row: 9, col: 6 }]);
h.step();
const e = h.spawn(ENVOY, { routeIndex: 0 });
const rest = attackStand(e).rest;
assert.ok(Math.abs(rest - (2.133 - 0.733)) < 1e-9);
untilStrike(h, e);
assert.ok(!h.unit('weak').alive && !e.blockedBy, 'the blocker is knocked out');
const x0 = e.x;
h.run(rest - 2 * TICK);
assert.equal(e.x, x0, 'it finishes its clip where it struck');
h.run(0.2);
assert.ok(e.x < x0 - 0.02, 'then it walks on');
});
test('a blocker leaving later in the clip leaves only the rest of it; a displacement ends the stand; a blocked enemy keeps striking every interval', () => {
const h = arena([{ chessId: 'w1', row: 9, col: 6 }]);
h.step();
const wall = h.unit('w1');
const e = h.spawn(ENVOY, { routeIndex: 0 });
const ts = untilStrike(h, e);
// still blocked: the next strike comes one interval later, as before
assert.ok(h.runUntil(() => e.stats.attacks >= 2, 10));
assert.ok(Math.abs(h.b.time - ts - e.s.interval) < 2 * TICK + 1e-9, 'one strike per interval while blocked');
const t2 = h.b.time;
h.run(1); // 1 s into the 1.4 s rest: the wall is gone
h.b.releaseBlocked(wall);
wall.s.flags.noBlock = true; // (keeps it from taking the enemy over again: _blockerFor)
const x0 = e.x;
h.run(t2 + attackStand(e).rest - h.b.time - 2 * TICK);
assert.equal(e.x, x0, 'it stands until its clip is over');
h.run(0.2);
assert.ok(e.x < x0 - 0.02, 'then it walks');
// a displacement (失衡) during the stand ends it: it walks on from where it lands
const h2 = arena([{ chessId: 'weak', row: 9, col: 6 }]);
h2.step();
const e2 = h2.spawn(ENVOY, { routeIndex: 0 });
untilStrike(h2, e2);
assert.ok(h2.b.time < e2.atkStandUntil, 'standing');
assert.ok(h2.b.displace(e2, { x: 1, y: 0 }, 0.3) > 0);
const x1 = e2.x;
h2.run(0.2);
assert.ok(e2.x < x1 - 0.02, `after the push it walks on at once (${x1} → ${e2.x})`);
});