feedback5: merge R19E — every enemy finishes its attack clip after a strike before it moves on (PRTS 状态机: ATTACK → MOVE after the attack ends; the 鸭爵 swap's 流泪小子 no longer walks off on its strike tick, community report and GitHub #214), and the 鸭爵 strategy's swapped-in 流泪小子 hides again 1 s after a block ends instead of 0 s (the owner's decision of 2026-10-07, a deliberate deviation for that copy only); golden as R19E's commits (216 scenarios + solo-HARD-2), the merged tree differs from the branch only in R19G's three 蕾缪安 scenarios
This commit is contained in:
commit
11fd65a5a5
19 files changed
+4061
-3741
No files matched your search
@@ -23,6 +23,7 @@
|
||||
- 效果作用在召唤物范围上的技能,敌人进入场上召唤物对应的范围时也会释放:麦哲伦一技能(龙腾的范围,含空中)、令三技能(每个召唤物周围的十字范围,仅地面)、电弧二技能(赛柯的范围,仅地面)和三技能(桑特拉的范围,含空中),不再只等敌人走进干员自己的攻击范围(维护者 2026-10-06 的决定)。
|
||||
- 望:本模式里放在棋盘上的棋子原本不占她的持有库存,技能叠到上限 7 枚后一直阻回,整场只能放一次。现在场上的棋子占用库存,棋子退场会回到库存、原地再部署时再占一枚,库存满时退场一枚就会降到 6 枚,技能整场都能循环释放(维护者 2026-10-06 的决定,与本模式「不消耗持有数量」的说明不同)。
|
||||
- 乌尔比安三技能【移动】后被击倒时,回到自己的部署位倒地,并在那里再部署,不再留在【移动】后的位置(社区反馈;维护者 2026-10-07 的决定。PRTS 的规则是在倒下的位置再部署,这里只对他的三技能例外)。
|
||||
- 策略「鸭爵」换来的流泪小子,解除阻挡后要过 1 秒才重新隐匿(官方是 0 秒):它晕眩干员、被放开以后,周围的干员有一秒可以攻击它;别处出现的流泪小子(悬赏敌人)仍按官方 0 秒(社区反馈、GitHub #214;维护者 2026-10-07 的决定)。
|
||||
|
||||
### 规则(按官方)
|
||||
|
||||
@@ -72,6 +73,7 @@
|
||||
- 被冻结或晕眩的敌人仍会被接触到的干员阻挡:干员再部署到它身边、或阻挡数空出来时会立即挡住它,隐匿的敌人也随之破隐,不用再等冻结或晕眩结束;沉睡、浮空、恐惧和不可阻挡的敌人仍然不会被阻挡(GitHub #232,感谢 @ccyl、@kukiC)。
|
||||
- 蕾缪安三技能锁定时攻击范围里没有敌人,技能不会再自动结束:剩余子弹和已有的锁定都保留,下一个敌人进入范围就立即继续锁定,子弹打完才结束并开始轰炸,等待期间锁定标记一直显示(社区反馈;弹药类技能打完才结束,PRTS 卫戍协议帮助「通常不会自动关闭技能」)。
|
||||
- 五人阿戈尔:开场吞噬击倒的阿戈尔,等所有吞噬结算完,再按棋盘位置从左下开始复活(从最左一列起,每列从下往上),最多 3 名,不再按被击倒的先后;作战中之后首次被击倒的阿戈尔按时间先后用剩下的名额,没被击倒的阿戈尔仍然不占名额(社区反馈)。
|
||||
- 敌人打出一次攻击后,即使阻挡它的干员正好被这一下晕眩、击倒或撤走,也会先把这次攻击的动作做完再继续前进(例如流泪小子约 0.8 秒),不再当场就走;被推开或拉动会打断这段动作(社区反馈「哭狗瞬间隐匿没有后摇」、GitHub #214,感谢 @FrogThai;PRTS 状态机:敌人的攻击状态在攻击结束后才回到移动)。
|
||||
|
||||
### 界面
|
||||
|
||||
@@ -131,6 +133,7 @@
|
||||
- 以下没有复现,需要具体的对局(干员、地图、回合或录像):野鬃把敌人顶出地图、锏拉动领袖、昆图斯占地变小、炼金单元没有伤害、归溟幽灵鲨被吞噬时进入再部署、炎佑被空中单位阻挡、选 Pith 策略时联防里阿戈尔的加成被清空、满血时源石溶剂不生效(社区反馈)。
|
||||
- 整备区里的拉普兰德照样叠【叙拉古】层数,但叙拉古要已经激活(只数作战区里不同的叙拉古干员,整备区里的她不算在内),而且每回合只看她经历的第一次主动刷新,那次没激活就要等下一回合;临时整备区不算整备区。赫默的特质没有「此干员在整备区时也有效」,和官方数据一样只在作战区生效(社区反馈;文档补充了说明)。
|
||||
- 阿戈尔的生命值加成在开场吞噬之前就已生效,和官方一致:精二深巡(2904 生命、655 防御)被吞噬一次受到 4345 点,阿戈尔 15 层起就能扛住。生命超过 5000 的阿戈尔扛得住一次吞噬,但站在吞噬链中间时,身后的每一名阿戈尔都会各吞噬它一次(每次 5000 点物理流失,按防御减免),这也和官方一致(社区反馈;PRTS 盟约记录)。
|
||||
- 策略「鸭爵」换来的流泪小子(「泪眼汪汪」「哭狗」):攻击使干员晕眩 3.5 秒,而被晕眩的干员不能阻挡(官方术语「晕眩:无法移动、阻挡、攻击及使用技能」),所以它会接着走向下一名干员;官方解除阻挡后 0 秒就重新隐匿(本模式对鸭爵换来的这一只改为 1 秒,见「有意与官方不同的调整」),移动速度 0.8,攻击间隔 2 秒,走到下一名干员面前马上抬手、0.767 秒后命中,这些都与官方数据一致。AI 队友选了鸭爵,你的作战同样会换怪(策略原文「你和队友遭遇的部分敌人」),最终攻势和隐秘核心也会换,换上的敌人走被替换敌人的路线(社区反馈、GitHub #214,感谢 @FrogThai)。
|
||||
|
||||
## 0.1.4 — 2026-10-06
|
||||
|
||||
|
||||
+1
-1
@@ -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` |
|
||||
| `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`) |
|
||||
| `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`) |
|
||||
|
||||
## 10. `factions.json` — special enemies (特训敌人)
|
||||
|
||||
+1
-1
@@ -82,7 +82,7 @@
|
||||
- **元素损伤条**在单位自己的血条正下方:左边是元素图标,白条是剩余的元素值,只有真正爆发时才会耗尽;爆发后条变成元素的颜色、图标闪烁,在冷却期间慢慢回满(这段时间不会再积累元素损伤)。
|
||||
- **敌人**:远程敌人的射程按官方从干员的碰撞体积(半径 0.25 格)算起,比数据上的攻击范围半径远 0.25 格——例如萨卡兹枯朽战车(射程 2.2)能打到中心 2.45 格以内、站在低地的干员。没被阻挡的远程敌人每次攻击都会站定、播完攻击动作,两次攻击之间才继续前进。它的第一下攻击就是「秽蚀轰击」(在目标处留下半径 1.7、持续 10 秒的污染区:低地每秒 50、高台 25 点真实伤害,同名不叠加),被阻挡时普通攻击伤害翻倍。“萨科塔之翼”等血量第一次低于一半时会在原地小范围乱飞 5 秒(官方叫「恐惧」);叙拉古、妮芙等干员造成的恐惧会让敌人朝远离干员的方向逃跑。隐匿的敌人只有被阻挡(或被揭示)时才能被选为攻击目标,溅射、技能的圆形范围伤害也打不到没被挡住的隐匿敌人(和官方一样);阻挡解除后 3 秒内它仍然可以被选中(官方页面注明 0 秒或 1 秒的敌人按页面),之后才重新隐匿:深池逐火战士每次被击倒后先重生 1 秒,然后变成继续往前走的隐匿「余烬」(需要 5 次伤害击倒,护卫的「火灰」10 次),一般要用干员挡住它才能选中(挡住时它不再半透明;被阻挡时被击倒的,重生结束后约 2 秒内也能用远程或范围伤害补刀),10 秒内没打掉就满血站起来;敌人重生时身上的减速、恐惧等状态会被清空、技能冷却从头开始,被恐惧的逐火战士变成余烬后也能被挡住;转译基底·α 原始形态受到的伤害全部无效,受到第 4 次物理伤害、第 4 次法术伤害或被阻挡时花 2 秒变成寻仇者、特战术师或幽灵,之后才能被击倒。
|
||||
- **复活**(策略「埃芒加德」的前 3 次、M3茧甲)与官方一致:算作一次被击倒,紧接着在倒下的位置免费立即再部署——干员「被击倒时」和「部署时」的效果都会触发(例如砾的不屈 / 卡西米尔层数、瑕光的层数、卡西米尔盟约的部署攻击力),技力和身上的增益像普通再部署一样重置。
|
||||
- **策略「鸭爵」(“神秘顾客”)**:从第 5 回合起,你和队友的每场作战(**最终攻势和隐秘核心也算**,联防不另外替换)有 0–2 名地面敌人(不含领袖及其部件、悬赏敌人)被替换为特殊版本的鸭爵、高普尼克、流泪小子或圆仔,出现在被替换敌人的时间和路线上(两人同场的领袖战里,各自只替换走向自己保护目标点的敌人);击倒者获得 1 资金(联防中的队友也算),漏进保护目标点照常扣 1 点目标生命值。鸭爵和圆仔**不攻击、无法被阻挡**:鸭爵受到伤害后移动速度 +300%;圆仔始终面向我方干员较多的一侧,来自正面的物理 / 法术伤害 −80%。流泪小子隐匿(被阻挡时才能被选中),攻击使目标晕眩 3.5 秒;高普尼克免疫晕眩、冻结和浮空。
|
||||
- **策略「鸭爵」(“神秘顾客”)**:从第 5 回合起,你和队友的每场作战(**最终攻势和隐秘核心也算**,联防不另外替换)有 0–2 名地面敌人(不含领袖及其部件、悬赏敌人)被替换为特殊版本的鸭爵、高普尼克、流泪小子或圆仔,出现在被替换敌人的时间和路线上(两人同场的领袖战里,各自只替换走向自己保护目标点的敌人);击倒者获得 1 资金(联防中的队友也算),漏进保护目标点照常扣 1 点目标生命值。鸭爵和圆仔**不攻击、无法被阻挡**:鸭爵受到伤害后移动速度 +300%;圆仔始终面向我方干员较多的一侧,来自正面的物理 / 法术伤害 −80%。流泪小子隐匿(被阻挡时才能被选中),攻击使目标晕眩 3.5 秒,被晕眩的干员挡不住它(官方规则);它被放开后要过 1 秒才重新隐匿(官方是 0 秒,本模式有意放宽,维护者 2026-10-07 的决定);高普尼克免疫晕眩、冻结和浮空。
|
||||
- 右上角 🔍▶▶ 可以查看本回合即将来袭的敌人(预览区),左上角 🔍 查看本局信息(禁用盟约、禁用干员、策略)。
|
||||
|
||||
## 5. 联防(同盟)
|
||||
|
||||
+6
-3
@@ -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
|
||||
(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`
|
||||
(「不停止移动」) enemy never stops; a stun 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
|
||||
(「不停止移动」) 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. 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`:
|
||||
转译基底·α'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
|
||||
@@ -621,7 +624,7 @@ of coverage per 3 s), kept because the current wording no longer says so (feedba
|
||||
| `tremble` (战栗) | 被阻挡后无法进行普通攻击: no normal attack **while blocked** (abilities still fire) | – |
|
||||
| `palsy` (麻痹) | each stack cancels one enemy normal attack (max 3, lasts until consumed); refused by 麻痹免疫 (data `palsyImmune`); each cancel fires the hook `palsyTrigger` (§5) | stacks, default 1 |
|
||||
| `disarm` | no normal attacks | – |
|
||||
| `stealth` / `reveal` | 隐匿: untargetable unless blocked (an ally: only the enemy it blocks attacks it, and an enemy's area effects and buff auras skip it even when it blocks that enemy — `targeting.js areaSelectable` / `auraSelectable`, GitHub #97, owner 2026-10-04; 0.1.2 made an exception for that blocker) / cancels stealth. An enemy's 隐匿 also stays off after a block: each block's end (`Battle._stealthSwitch`, every release path) switches each of its 隐匿 sources off for `STEALTH_RESTORE` (3) s — PRTS 作战机制 §隐匿 "不被阻挡的3秒后重新进入隐匿" — or the source's own "(解除阻挡N秒后恢复)" (buff `data.stealthRestore`: 0 s for 业余竞演者, 节日爵士乐手, 假想敌:骨刺, 流泪小子, 访问团强攻冠军 and 清明's veil, 1 s for the 家族灭迹人); a new block inside it lifts it again and its end restarts the window; our operators' 隐匿 / 迷彩 never lift by blocking (DESIGN §22.8). `targeting.js enemyStealthed` is the one test: the b.snap stealth bit is set only while its 隐匿 is on (drawn solid otherwise); an operator's radius area damage (`foesInRadius`) skips it too (PRTS 作战机制 §AOE伤害判定 "对攻击范围内的每个可以被选中的敌人进行判定"; until 0.1.1 the splash still hit it) | – |
|
||||
| `stealth` / `reveal` | 隐匿: untargetable unless blocked (an ally: only the enemy it blocks attacks it, and an enemy's area effects and buff auras skip it even when it blocks that enemy — `targeting.js areaSelectable` / `auraSelectable`, GitHub #97, owner 2026-10-04; 0.1.2 made an exception for that blocker) / cancels stealth. An enemy's 隐匿 also stays off after a block: each block's end (`Battle._stealthSwitch`, every release path) switches each of its 隐匿 sources off for `STEALTH_RESTORE` (3) s — PRTS 作战机制 §隐匿 "不被阻挡的3秒后重新进入隐匿" — or the source's own "(解除阻挡N秒后恢复)" (buff `data.stealthRestore`: 0 s for 业余竞演者, 节日爵士乐手, 假想敌:骨刺, 流泪小子, 访问团强攻冠军 and 清明's veil, 1 s for the 家族灭迹人 — and no less than 1 s for a 鸭爵 swap, spawn tag `'duck'`: `content/enemies/helpers.js DUCK_STEALTH_RESTORE`, the owner's decision of 2026-10-07, a deliberate deviation for its 流泪小子); a new block inside it lifts it again and its end restarts the window; our operators' 隐匿 / 迷彩 never lift by blocking (DESIGN §22.8). `targeting.js enemyStealthed` is the one test: the b.snap stealth bit is set only while its 隐匿 is on (drawn solid otherwise); an operator's radius area damage (`foesInRadius`) skips it too (PRTS 作战机制 §AOE伤害判定 "对攻击范围内的每个可以被选中的敌人进行判定"; until 0.1.1 the splash still hit it) | – |
|
||||
| `camou` (迷彩) | an ally's camouflage (ba.camou "不阻挡时不成为敌方普通攻击的目标(无法躲避溅射类攻击)"): like `stealth` for enemy targeting (only the enemy it blocks attacks it) — but an enemy's splash and other area effects still hit it (`areaSelectable` does not check it) — and on screen (b.snap stealth bit, `snapshot.js flagsOf`), but not 隐匿 for 隐匿-conditions (叙拉古, 家族徽章) and under its own buff keys. 忍冬 S3 (key `vulpis:camou`, until her next cast), 寒芒克洛丝 S1 | – |
|
||||
| `invulnerable` | ignores damage | – |
|
||||
| `levitate` (浮空) | stun + unblockable (unblocks enemies) + 失衡免疫 (`noDisplace`); an air unit meanwhile (`isFlying`: melee cannot hit it); **half duration on units with (current) massLevel > 3**; refused on data flyers (`motion` FLY) that hold no 缚地 and on units already levitated (PRTS 异常效果 "若单位数据上为飞行单位且不持有缚地异常或是持有浮空异常则Buff取消") — a 近地悬浮 enemy is WALK in its data, so it can be levitated; 浮空 is not one of the 近地悬浮 enemies' drop triggers | – |
|
||||
|
||||
@@ -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).
|
||||
- **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).
|
||||
- **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).
|
||||
- **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).
|
||||
@@ -175,7 +175,7 @@ Each domain file `server/sim/content/{tokens,bonds,garrisons,items,bands,enemies
|
||||
- bonds: 23 (battle + meta), exact per-layer formulas from research 02.
|
||||
- garrisons: 43 effect keys (IN_BATTLE via hooks; SERVER_* via meta registry).
|
||||
- items: 56 equipment (+golden) + 3 Arts; 变形同构体 bond grant; VI-tier set/combos.
|
||||
- bands: 40 strategies (meta + battle). 鸭爵 “神秘顾客” swaps 0–2 ground enemies (not the leader, its parts or bounties; on a pair boss field only the player's half — the boss / hidden `onBattleStart` event carries `routes` and `side`) in every teammate's normal / Final Assault / Hidden Core battle from R5 into the act2 鸭爵 / 高普尼克 / 流泪小子 / 圆仔 (lpr 1, 1 fund to the killer, 联防 included) (§21.5).
|
||||
- bands: 40 strategies (meta + battle). 鸭爵 “神秘顾客” swaps 0–2 ground enemies (not the leader, its parts or bounties; on a pair boss field only the player's half — the boss / hidden `onBattleStart` event carries `routes` and `side`) in every teammate's normal / Final Assault / Hidden Core battle from R5 into the act2 鸭爵 / 高普尼克 / 流泪小子 / 圆仔 (lpr 1, 1 fund to the killer, 联防 included) (§21.5); the swaps carry the spawn tag `'duck'`, and the swapped 流泪小子 hides again 1 s after a block ends, not the official 0 s (the owner's decision of 2026-10-07, §25.22.6).
|
||||
- enemies: special-type behaviours (FLY, TIMES, ELEMENT, DOT, INVISIBLE, REFLECTION, SPECIAL) and notable individual abilities from `data/enemies.json`; bosses 1–10 scripted — the huge leaders (假想敌:胄 ×2, 假想敌:管 ×2, 盐风主教昆图斯, 阿利斯泰尔, “萨米的意志”) are 自缚 + 无法被阻挡 (PRTS 天赋; `content/bosses.js SELF_BOUND`: a persistent noMove + unblockable buff from spawn) with their hit area (§19.4); 圆仔 and 鸭爵 are 无法被阻挡 (PRTS 天赋, §21.5); the knock-out forms follow PRTS — 深池逐火 余烬 (5 / 10 hits, 隐匿, blockable, back after 10 s), 转译基底·α (damage cancelled until its 2 s change into 寻仇者 / 特战术师 / 幽灵), the leaders' 重生, 守墓石像's statue and flight — and every 重生 clears what operators put on the enemy and restarts its skills from their initial cooldown (§21.4, §21.19); the mode's air units are 静态刚体, never moved (§21.9); leader parts (斩胄之剑 / 破胄之锤 / 碎铳之簧) pass every damage they take to their leader 1:1 as 无来源 HP loss (`PART_TRANSFER` 1, PRTS "等量"), a 假想敌:胄 drone that dies costs it 2 % of the pool (`DRONE_LINK_BASE 'pool'`) (§20.10, §20.13); devices/terrain.
|
||||
- choices: 机变 families (悬赏决策 bounties, 道具补给, 机密商店, 战术决策 team/personal buffs). 悬赏决策 = the official structure of its round (choices.json `bountyDrafts`, 86 drafted cards: R3 a fixed set of six 两场 cards, R9 6 of a boss group's list, R11 6 of a seen 7-card list; §21.2); 机密商店 (R11 the official composition) and 战术决策 can offer the same card twice (`shopDraft` / `tacticDraft`); bounty cards carry `descRaw`; no draft offers a multi-round card, and 教鞭's lasts two battles (`choices.js MULTI_ROUND_BOUNTY_BATTLES`, §20.6). 教鞭 = a random 战术特训 card (3 drawn, 1 taken).
|
||||
|
||||
|
||||
@@ -2122,3 +2122,69 @@ here, each reproduced first; the rest were answered (not a bug, already fixed in
|
||||
`build-data --offline`; only `tiers[0]` / `tiers[2]` / `algorithm[3]` / `assumed[0]` changed — the stale assumption
|
||||
「5000 physical 流失 ignores DEF and shields」, wrong since 0.1.1, gave way to the scan reading), DESIGN §5's `death` row
|
||||
(design/engine.md), docs/SIM.md (`death` hook), the core.js comments; §24.3's title points here.
|
||||
#### 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`).
|
||||
- **Deliberate deviation — the owner's decision of 2026-10-07** (「鸭爵策略产生的泪眼汪汪我想了一下,要不等待个1秒这样再重新隐匿,
|
||||
或者提供点别的降低难度的方案」): the 鸭爵 swap's copies (spawn tag `'duck'`, `content/bands/meta.js duckReplace` — in
|
||||
practice 流泪小子, the only one of the four with 隐匿) get their 隐匿 back no sooner than 1 s after a block ends
|
||||
(`content/enemies/helpers.js DUCK_STEALTH_RESTORE`, `archetypes.js stealth`; officially 0 s). The same enemy anywhere
|
||||
else — the bounty card's 流泪小子 (`enemy_2034_sythef`), any other spawn — keeps 0 s; a copy leaked into 联防 keeps its
|
||||
tag and the 1 s. After each strike it is now revealed through its 0.8 s stand and 0.2 s of walking.
|
||||
- Measured, 8 seeds each (W: 3 elite melee operators in a lane + an elite sniper against the R6 wave's ground enemies with
|
||||
one swapped 流泪小子; B: 8 elite operators on 战场#01 against the whole R6 wave with one swap) — leaked, HP left, revealed
|
||||
s per battle: before 0.2.0's fixes W 5/8, 42 %, 2.3 / B 8/8, 47 %, 3.2; after the clip fix W 5/8, 31 %, 2.6 / B 8/8,
|
||||
58 %, 2.5; with the 1 s W 4/8, 31 %, 4.0 / B 8/8, 56 %, 5.5. Other options, measured on the fixed engine and not built:
|
||||
2 s — W 4/8, 31 %, 5.4 / B 8/8, 46 %, 8.5; 3 s (the general 隐匿 rule of PRTS 作战机制) — W 4/8, 31 %, 6.4 / B 8/8,
|
||||
39 %, 11.5; a 1.5 s stun on the copy (below its 2 s interval: its blocker recovers while it still stands in its block
|
||||
radius and takes it over again) — W 4/8, 2 %, 4.0 / B 4/8, 6 %, 5.5; a 1 s stun — knocked out in all 16; the 1 s delay
|
||||
with a 2 s stun — W 4/8, 21 %, 5.1 / B 5/8, 26 %, 8.1. Worse, not offered: half speed while 隐匿 (B 8/8, 76 % — it
|
||||
stays hidden longer), a stunned operator that keeps blocking it (pins that operator for the whole battle).
|
||||
- Golden (this rule alone): matches solo-HARD-2 — its bot holds 鸭爵; the swapped 流泪小子 of round 13 is free and revealed
|
||||
for 49 ticks in its 1 s windows (the round-12 one is never released by a block), so the match parts at round 13 and
|
||||
ends in a victory instead of a defeat; the other 282 scenarios are unchanged. Tests:
|
||||
`test/content/feedback5-duck-restealth.test.js` (3; the swap's 1 s and the band path fail before it, the 0 s guard
|
||||
for the same enemy elsewhere passes on both).
|
||||
+16
-6
@@ -23,7 +23,9 @@
|
||||
// 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
|
||||
// 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
|
||||
// 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
|
||||
@@ -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
|
||||
* first-hand memory of the official game: a ranged enemy stops for each attack's animation and walks on between
|
||||
* attacks; the handbook names attacking on the move as a special ability, “十字路口”量产型's 「不停止移动的四向攻击」).
|
||||
* How long an enemy stands for one attack: an unblocked ranged enemy for its whole clip (GitHub #58 — the owner's
|
||||
* decision of 2026-10-04 from first-hand memory of the official game: a ranged enemy stops for each attack's animation
|
||||
* 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
|
||||
* 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
|
||||
@@ -850,8 +854,14 @@ function enemyAttack(b, e, prevCd) {
|
||||
}
|
||||
if (b._hooks.attack) b.emit('attack', { attacker: e, targets, isSkill: false });
|
||||
e.atkCd = e.s.interval;
|
||||
// stands for the rest of its attack clip (attackStand; the wind-up was stood before the strike)
|
||||
if (!e.blockedBy && radius > 0) e.atkStandUntil = b.time + attackStand(e, STAND).rest;
|
||||
// stands for the rest of its attack clip (attackStand; the wind-up was stood before the strike) — every enemy, blocked
|
||||
// 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;
|
||||
}
|
||||
|
||||
|
||||
@@ -139,6 +139,8 @@ export class BattleDisplacement {
|
||||
}
|
||||
if (moved > 0) {
|
||||
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;
|
||||
this.fx('displace', { x: e.x, y: e.y, id: e.id });
|
||||
}
|
||||
|
||||
@@ -373,7 +373,9 @@ K.preparation_start_add_special_goods_every_n_round = (ps) => ({
|
||||
// share taken over that half [ASSUMED: "你和队友遭遇的敌人" — the enemies heading for the player's own protection point;
|
||||
// each official client simulates its own battle, docs/research/08 appendix A]. The originals never exist, so none of
|
||||
// their death / kill / leak effects happen. Reaching the protection point costs 1 LP ("但进入保护目标点将减少1点目标生命值":
|
||||
// the enemies' data lpr, tools/build-data.mjs).
|
||||
// the enemies' data lpr, tools/build-data.mjs). The swaps carry the spawn tag 'duck': their 隐匿 (流泪小子) comes back no
|
||||
// sooner than 1 s after a block ends, not the official 0 s (content/enemies/helpers.js DUCK_STEALTH_RESTORE — the owner's
|
||||
// decision of 2026-10-07, a deliberate deviation).
|
||||
|
||||
export const DUCK_BAND = 'band_ducklord';
|
||||
/** "击倒这些敌人者获得1资金奖励" (the blackboard's `count` is 1 too). */
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
// unbalanced, artsBarrier, husk, statue, bleed, pollution, dmgZone, skill(), blinkForward … and the archetype kits
|
||||
// reused by several keys (kitEp, kitTimes …).
|
||||
|
||||
import { MOVE_SCALE, COLS } from '../../constants.js';
|
||||
import { MOVE_SCALE, COLS, STEALTH_RESTORE } from '../../constants.js';
|
||||
import {
|
||||
HUSK_REBIRTH, BOOM_RADIUS, POLLUTION_INTERVAL, STEALTH_RESTORE_BY_KEY, nthOf, stOf, safe, num, T, elem, hurt,
|
||||
HUSK_REBIRTH, BOOM_RADIUS, POLLUTION_INTERVAL, STEALTH_RESTORE_BY_KEY, DUCK_STEALTH_RESTORE, nthOf, stOf, safe, num, T, elem, hurt,
|
||||
areaAllies, areaAlliesInTiles, zone, spawnChildren, stepToward, setHits, hitCount, setForm, absorbArts, auraBuff,
|
||||
} from './helpers.js';
|
||||
|
||||
@@ -14,11 +14,13 @@ import {
|
||||
|
||||
/**
|
||||
* 隐匿: permanent stealth. Blocked it is lifted; it hides again STEALTH_RESTORE s after the block ends, or after its own
|
||||
* "(解除阻挡N秒后恢复)" (STEALTH_RESTORE_BY_KEY → buff `data.stealthRestore`; Battle._stealthSwitch).
|
||||
* "(解除阻挡N秒后恢复)" (STEALTH_RESTORE_BY_KEY → buff `data.stealthRestore`; Battle._stealthSwitch) — a 鸭爵 swap (tag
|
||||
* 'duck') no sooner than DUCK_STEALTH_RESTORE s (the owner's decision of 2026-10-07, a deliberate deviation).
|
||||
*/
|
||||
const stealth = () => ({
|
||||
spawn(b, e, a, ab) {
|
||||
const n = STEALTH_RESTORE_BY_KEY[ab.key];
|
||||
let n = STEALTH_RESTORE_BY_KEY[ab.key];
|
||||
if (e.tag === 'duck' && (n ?? STEALTH_RESTORE) < DUCK_STEALTH_RESTORE) n = DUCK_STEALTH_RESTORE;
|
||||
b.addBuff(e, { key: 'ab:stealth', flags: { stealth: true }, persist: true, data: n != null ? { stealthRestore: n } : {} });
|
||||
},
|
||||
});
|
||||
|
||||
@@ -44,6 +44,15 @@ const STEALTH_RESTORE_BY_KEY = Object.freeze({
|
||||
enemy_1283_sgkill_2: 1, // 家族暗影灭迹人
|
||||
});
|
||||
|
||||
/**
|
||||
* 隐匿 of the 鸭爵 strategy's swapped-in enemies (spawn tag 'duck': content/bands/meta.js duckReplace) comes back no sooner
|
||||
* than this many seconds after a block ends — in practice 流泪小子 (enemy_2034_sythef_2, the only one of the four with 隐匿;
|
||||
* officially 0 s, STEALTH_RESTORE_BY_KEY). A deliberate deviation from the official game: the owner's decision of
|
||||
* 2026-10-07 「鸭爵策略产生的泪眼汪汪…要不等待个1秒这样再重新隐匿」 (community report of 2026-10-07, GitHub #214). The same
|
||||
* enemy anywhere else — the 流泪小子 of a bounty card (enemy_2034_sythef), a test spawn — keeps the official time.
|
||||
*/
|
||||
const DUCK_STEALTH_RESTORE = 1;
|
||||
|
||||
/** Splash radius (中点判定 around the target) of 烹泉 / 沏虹's attack (PRTS 天赋 "普通攻击对目标对及目标周围半径1.0范围内的所有
|
||||
* 我方单位造成法术普通伤害(无视迷彩,不可对空)") and of 集团军重型火炮's shell (PRTS "对目标半径1.0范围内的所有我方单位造成攻击力
|
||||
* 100%的物理伤害(此弹道会强制击中主目标,碰撞无视迷彩,不可对空)"). */
|
||||
@@ -387,6 +396,6 @@ const onTerrain = (b, u, terrain) => { const [r, c] = tileOf(u); return b.grid.t
|
||||
|
||||
// used by the other enemy modules (content/enemies.js and content/enemies/*.js)
|
||||
export {
|
||||
BOOM_RADIUS, POLLUTION_INTERVAL, STEALTH_RESTORE_BY_KEY, TEA_SPLASH_RADIUS, SHELL_SPLASH_RADIUS, stOf, safe, dispatch,
|
||||
BOOM_RADIUS, POLLUTION_INTERVAL, STEALTH_RESTORE_BY_KEY, DUCK_STEALTH_RESTORE, TEA_SPLASH_RADIUS, SHELL_SPLASH_RADIUS, stOf, safe, dispatch,
|
||||
num, auraBuff, watchDeaths, onTerrain,
|
||||
};
|
||||
@@ -0,0 +1,79 @@
|
||||
// test/content/feedback5-duck-restealth.test.js — the owner's decision of 2026-10-07 (「鸭爵策略产生的泪眼汪汪我想了一下,要不
|
||||
// 等待个1秒这样再重新隐匿」, after the community report of 2026-10-07 and GitHub #214): the 鸭爵 strategy's swapped-in
|
||||
// 流泪小子 (spawn tag 'duck', content/bands/meta.js duckReplace) hides again 1 s after a block ends instead of the official
|
||||
// 0 s (content/enemies/helpers.js DUCK_STEALTH_RESTORE) — a deliberate deviation, so the operators beside the one it
|
||||
// stuns get a second to hit it. The same enemy anywhere else keeps the official 0 s.
|
||||
|
||||
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 { duckReplace } from '../../server/sim/content/bands/meta.js';
|
||||
import { TICK } from '../../server/sim/constants.js';
|
||||
import { enemyStealthed } from '../../server/sim/targeting.js';
|
||||
|
||||
const E = JSON.parse(readFileSync(new URL('../../data/enemies.json', import.meta.url), 'utf8'));
|
||||
const BANDS = JSON.parse(readFileSync(new URL('../../data/bands.json', import.meta.url), 'utf8'));
|
||||
const DOG = 'enemy_2034_sythef_2';
|
||||
const BIG = [];
|
||||
for (let dr = -4; dr <= 4; dr++) for (let dc = -12; dc <= 12; dc++) BIG.push([dr, dc]);
|
||||
const WALL = chessRec({ id: 'w1', profession: 'TANK', stats: { atk: 0, maxHp: 1e7, def: 0, blockCnt: 1 }, rangeGrid: [[0, 0]], skill: null });
|
||||
const GUN = chessRec({ id: 'gun', profession: 'SNIPER', projectile: 'none', stats: { atk: 400, maxHp: 1e7, bat: 1, blockCnt: 0 }, rangeGrid: BIG, skill: null });
|
||||
|
||||
function arena(o = {}) {
|
||||
return makeBattle({
|
||||
content: 'generic', extraContent: [enemiesMod], seed: 7, autoFinish: false, timeLimit: 600,
|
||||
defs: { chess: { w1: WALL, gun: GUN } }, kits: { w1: () => ({ trait: { noAttack: true } }) }, ...o,
|
||||
});
|
||||
}
|
||||
|
||||
test('the 鸭爵 swap\'s 流泪小子 hides again 1 s after its strike frees it (its stunned blocker lets go), and a ranged operator hits it in that second', () => {
|
||||
const h = arena({ units: [{ chessId: 'w1', row: 9, col: 6 }, { chessId: 'gun', row: 11, col: 3 }] });
|
||||
h.step();
|
||||
const e = h.spawn(DOG, { routeIndex: 0, tag: 'duck', bounty: { coins: 1, ownerPlayerId: 'p1' } });
|
||||
assert.equal(e.findBuff('ab:stealth').data.stealthRestore, 1);
|
||||
assert.ok(enemyStealthed(e), '隐匿 on its way');
|
||||
assert.ok(h.runUntil(() => e.stats.attacks >= 1, 60), 'it strikes its blocker');
|
||||
assert.equal(e.blockedBy, null, 'the stunned wall let it go');
|
||||
const ts = h.b.time, hp0 = e.hp;
|
||||
h.run(1 - 2 * TICK);
|
||||
assert.equal(enemyStealthed(e), false, 'still revealed 1 s after (officially 隐匿 at once)');
|
||||
assert.ok(e.hp < hp0, 'the sniper hit it in that second');
|
||||
h.run(4 * TICK);
|
||||
assert.equal(enemyStealthed(e), true, `隐匿 again ${(h.b.time - ts).toFixed(3)} s after the strike`);
|
||||
checkInvariants(h.b);
|
||||
});
|
||||
|
||||
test('the same enemy outside the swap keeps the official 0 s: the act2 copy spawned without the tag, and the original 流泪小子 of the bounty card', () => {
|
||||
const h = arena({ units: [{ chessId: 'w1', row: 9, col: 6 }] });
|
||||
h.step();
|
||||
for (const key of [DOG, 'enemy_2034_sythef']) {
|
||||
const e = h.spawn(key, { pos: [10, 8], routeIndex: 0, mods: { speedMul: 0 } });
|
||||
assert.equal(e.findBuff('ab:stealth').data.stealthRestore, 0, key);
|
||||
}
|
||||
const e = h.spawn(DOG, { routeIndex: 0 });
|
||||
assert.ok(h.runUntil(() => e.stats.attacks >= 1, 60));
|
||||
assert.equal(enemyStealthed(e), true, 'untagged: 隐匿 the moment its strike frees it');
|
||||
// a 3 s 隐匿 stays 3 s even when tagged (the rule only lengthens a shorter restore)
|
||||
const lurker = h.spawn('enemy_1009_lurker', { pos: [10, 7], routeIndex: 0, tag: 'duck', mods: { speedMul: 0 } });
|
||||
assert.equal(lurker.findBuff('ab:stealth').data.stealthRestore, undefined);
|
||||
});
|
||||
|
||||
test('the band\'s own swap (duckReplace) tags the copy, and the battle it builds gives that copy the 1 s', () => {
|
||||
const p = BANDS.band_ducklord.params;
|
||||
assert.ok(p.enemylist.split(',').includes(DOG));
|
||||
const spawns = [{ time: 2, enemyKey: 'enemy_1007_slime', routeIndex: 0, count: 4, interval: 3 }];
|
||||
const ctx = { gd: { enemy: (k) => E[k] }, rng: { int: () => 1, shuffle: (a) => a.slice(), pick: (a) => (a.includes(DOG) ? DOG : a[0]) } };
|
||||
const out = duckReplace(ctx, spawns, p, 'p1');
|
||||
assert.equal(out.length, 1);
|
||||
assert.equal(out[0].enemyKey, DOG);
|
||||
assert.equal(out[0].tag, 'duck');
|
||||
const h = arena({
|
||||
enemies: spawns.map((s) => ({ key: s.enemyKey, time: s.time, route: s.routeIndex, count: s.count ?? 1, interval: s.interval ?? 0, tag: s.tag ?? null, bounty: s.bounty ?? null })),
|
||||
});
|
||||
assert.ok(h.runUntil(() => h.b.enemies.some((x) => x.defId === DOG), 30), 'the copy spawns');
|
||||
const dog = h.b.enemies.find((x) => x.defId === DOG);
|
||||
assert.equal(dog.tag, 'duck');
|
||||
assert.equal(dog.findBuff('ab:stealth').data.stealthRestore, 1);
|
||||
});
|
||||
+237
-237
@@ -93,8 +93,8 @@
|
||||
"round": 5,
|
||||
"seed": 4108057433,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 60.97,
|
||||
"ticks": 1829,
|
||||
"time": 61.37,
|
||||
"ticks": 1841,
|
||||
"reason": "cleared",
|
||||
"killed": 17,
|
||||
"total": 21,
|
||||
@@ -102,7 +102,7 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 29,
|
||||
"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": [
|
||||
["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],
|
||||
@@ -110,16 +110,16 @@
|
||||
["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",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],
|
||||
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
|
||||
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {"enemy_1249_lysdb_2":[5,3,2,358,25821],"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],
|
||||
"events": {"atk":196,"deploy":8,"die":18,"dmg":223,"engage":8,"fx":36,"leak":4,"skill":30,"spawn":31,"status":25},
|
||||
"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,1841,180,180,229,224,0,18,22,15,15,0,9936,15,9,21,4,1,18,0,0,0],
|
||||
"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},
|
||||
"snaps": "b677776a 05df3ce3 0909a76f 5ebbf5d3 c7c03797 29c796e5"
|
||||
"snaps": "b677776a 05df3ce3 0909a76f 5ebbf5d3 c7c03797 ad0a9173 c47fca8c"
|
||||
},
|
||||
"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",
|
||||
@@ -268,20 +268,20 @@
|
||||
"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":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_4_01_a",2,null,2638,1,4,1,1862,0,0,17,0],
|
||||
["p1",2,"op","chess_char_4_04_a",1,null,1760,1,6,1,13315,150,0,29,2],
|
||||
["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,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",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",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]
|
||||
],
|
||||
"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],
|
||||
"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},
|
||||
"snaps": "190730ef 1287aa6f 455af4b6 ffbb8c4d 69de4849 0da77d28 a99ce87b"
|
||||
"snaps": "190730ef 1287aa6f 455af4b6 1f8ca5ac 59c133b0 aef8816c c68e57c2"
|
||||
},
|
||||
"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",
|
||||
@@ -292,33 +292,33 @@
|
||||
"round": 10,
|
||||
"seed": 1870248576,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 153.6,
|
||||
"ticks": 4608,
|
||||
"time": 135.5,
|
||||
"ticks": 4065,
|
||||
"reason": "cleared",
|
||||
"killed": 12,
|
||||
"killed": 13,
|
||||
"total": 13,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 65,
|
||||
"rngDraws": 67,
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_4_17_b",1,"uniequip_002_hsguma",3513,1,6,0,2200,2642,837,48,0],
|
||||
["p1",2,"op","chess_char_4_18_b",1,"uniequip_002_mudrok",6104,1,7,4,68841,2772,2772,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",4,"op","chess_char_4_22_b",2,"uniequip_002_svrash",0,0,8,3,71089,4106,1537,81,2],
|
||||
["p1",5,"op","chess_char_2_14_b",1,"uniequip_002_flower",1544,1,3,0,0,0,1805,16,2],
|
||||
["p1",6,"op","chess_char_3_10_b",1,"uniequip_002_pinecn",2120,1,4,5,62114,0,0,60,4],
|
||||
["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",5824.3,1,7,5,66592,3263,2984,29,7],
|
||||
["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",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,3877,22,2],
|
||||
["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",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],
|
||||
["-","~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]},
|
||||
"hooks": [1,23,4608,348,348,675,665,10930,13,14,16,16,0,7308,16,29,13,1,1,16,0,0,2],
|
||||
"events": {"atk":448,"deploy":8,"die":13,"dmg":654,"engage":6,"fx":107,"heal":25,"leak":1,"skill":34,"spawn":23,"status":45},
|
||||
"fx": {"block":8,"dodge":2,"flame":1,"garrisonGrant":1,"riposte":2,"rockslide":7,"shieldBreak":11,"slash":40,"thorns":33,"truesilver":2},
|
||||
"snaps": "48d2a0bc 7a5c72a3 dfc092f7 82b8653f 0b0a1e81 6a336839 88aa8eb8 34fe4520 f8c8bcd6 c425daea 895cf1c1 6267707c 2a91ead1 f11bba77 603569c9 d7811c9c"
|
||||
"enemies": {"enemy_1045_hammer_2":[2,2,0,7213,46080],"enemy_1061_zomshd":[11,11,0,827,185058]},
|
||||
"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":461,"deploy":8,"die":13,"dmg":677,"engage":5,"fx":107,"heal":28,"skill":31,"spawn":23,"status":43},
|
||||
"fx": {"block":8,"garrisonGrant":1,"rockslide":7,"shieldBreak":10,"slash":40,"thorns":39,"truesilver":2},
|
||||
"snaps": "48d2a0bc 7a5c72a3 dfc092f7 82b8653f 0b0a1e81 7d5ce8ad 2bd0b6be 2add6c80 daee01b4 0386f71e 15ac33ed 95e9c95e 6935c702 3d725b20"
|
||||
},
|
||||
"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",
|
||||
@@ -329,20 +329,20 @@
|
||||
"round": 5,
|
||||
"seed": 1441167629,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 69,
|
||||
"ticks": 2070,
|
||||
"time": 69.03,
|
||||
"ticks": 2071,
|
||||
"reason": "cleared",
|
||||
"killed": 18,
|
||||
"total": 18,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 12,
|
||||
"rngDraws": 11,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"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}}
|
||||
},
|
||||
"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",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],
|
||||
@@ -356,11 +356,11 @@
|
||||
["-","~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]
|
||||
],
|
||||
"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]},
|
||||
"hooks": [1,32,2070,171,171,272,277,1058,21,21,12,12,0,6047,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},
|
||||
"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,2071,170,170,271,276,1058,21,21,12,12,0,6046,103,8,18,0,1,21,1,0,3],
|
||||
"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},
|
||||
"snaps": "50aa73ae 0df6cf78 0121335c ab457333 b3f5b1ca 57fd8a43 2ad35d9b"
|
||||
"snaps": "50aa73ae 0df6cf78 0121335c 2a1ad688 4502f534 b72117d2 a88adb8f"
|
||||
},
|
||||
"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",
|
||||
@@ -374,28 +374,28 @@
|
||||
"time": 190,
|
||||
"ticks": 5700,
|
||||
"reason": "timeout",
|
||||
"killed": 13,
|
||||
"killed": 14,
|
||||
"total": 22,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 309,
|
||||
"rngDraws": 316,
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_1_20_b",1,"uniequip_002_liskam",2892,1,58,1,28896,50874,7197,107,7],
|
||||
["p1",2,"op","chess_char_3_16_b",1,"uniequip_002_snakek",3100,1,5,0,0,0,3150,0,0],
|
||||
["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,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",4,"op","chess_char_5_01_b",1,"uniequip_002_excu2",1174.58,1,56,9,205206,37563,17911,196,8],
|
||||
["p1",5,"op","chess_char_2_12_b",1,"uniequip_002_gravel",2468.4,1,50,1,15644,29113,8736,197,5],
|
||||
["p1",6,"op","chess_char_4_24_b",1,"uniequip_002_billro",2178,1,54,2,72229,4214,4303,65,4],
|
||||
["p1",7,"op","chess_char_4_25_b",2,"uniequip_002_cetsyr",1671,1,51,0,0,7103,5985,0,2],
|
||||
["p1",8,"op","chess_char_4_26_b",0,"uniequip_002_bldsk",1522,1,55,0,0,17721,26801,37,9]
|
||||
["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,48,1,15644,29113,8359,197,5],
|
||||
["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,49,0,0,7103,5908,0,2],
|
||||
["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]},
|
||||
"hooks": [1,58,5700,890,890,1451,1434,4113,41,47,35,33,100,4048,235,79,22,6,1,41,0,0,17],
|
||||
"events": {"atk":1291,"deploy":36,"die":41,"dmg":1430,"engage":4,"fx":185,"heal":212,"leak":6,"skill":68,"spawn":30,"status":588},
|
||||
"fx": {"bandage":9,"dodge":17,"extraAttack":56,"garrisonGrant":1,"mote":35,"redistribute":30,"revive":25,"reweave":2,"sandChains":4,"shield":5,"spGift":1},
|
||||
"snaps": "7d5f326c b27b8121 c23f4b8e b11158be 745858a1 bc233c02 36600c75 96f7bb77 dd25f731 4dcd794a acc9ff4c 889ddf60 c6455ec2 9e49b82f 26bf91e4 65dd88be eddb6226 14e89108 5e61cdf9"
|
||||
"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,53,5700,854,854,1395,1375,3858,37,44,34,33,97,4064,196,65,22,7,1,37,0,0,20],
|
||||
"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":20,"extraAttack":57,"garrisonGrant":1,"mote":35,"redistribute":30,"revive":20,"reweave":2,"sandChains":3,"shield":5,"spGift":1},
|
||||
"snaps": "7d5f326c b27b8121 c23f4b8e b11158be 939db446 e58c984b b773c4c3 0bbe4790 af6fd37e f19f3164 3f3ea885 a388515f 2e1c5fd1 57beebec 2c67317e 697660bf d6af810b 6570b7c9 41e50f43"
|
||||
},
|
||||
"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",
|
||||
@@ -406,25 +406,25 @@
|
||||
"round": 5,
|
||||
"seed": 411444759,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 84,
|
||||
"ticks": 2520,
|
||||
"time": 85.97,
|
||||
"ticks": 2579,
|
||||
"reason": "cleared",
|
||||
"killed": 18,
|
||||
"total": 18,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 29,
|
||||
"rngDraws": 31,
|
||||
"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": [
|
||||
["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",3,"op","chess_char_5_14_a",1,null,1386.45,1,5,0,8599,895,729,29,5],
|
||||
["p1",4,"op","chess_char_4_19_a",2,null,30.76,1,8,1,2659,1529,0,21,1],
|
||||
["p1",5,"op","chess_char_3_04_a",1,null,657.84,1,9,7,16474,2320,0,30,0],
|
||||
["p1",6,"op","chess_char_4_16_a",2,null,1246,1,42,4,13371,1246,0,20,3],
|
||||
["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,1401.97,1,5,1,8837,895,745,30,5],
|
||||
["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,429.84,1,9,7,16757,2548,0,33,0],
|
||||
["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",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],
|
||||
["-","~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],
|
||||
@@ -440,15 +440,15 @@
|
||||
["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","~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","~15","token","token_10031_swire2_gdtrap",null,null,1000,0,44,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,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]
|
||||
],
|
||||
"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]},
|
||||
"hooks": [1,45,2520,224,224,300,303,477,21,33,12,12,0,6575,45,10,18,0,1,22,0,0,8],
|
||||
"events": {"atk":233,"deploy":25,"die":33,"dmg":299,"engage":7,"fx":86,"skill":28,"spawn":44,"status":73},
|
||||
"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},
|
||||
"snaps": "371a1f9a 0e7ef0c6 fd309dbf f797fdbf 5d03f106 6a6a672f 1b0fa006 5186fdb1 f4984156"
|
||||
"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,2579,229,229,308,309,486,22,34,12,12,0,6574,46,11,18,0,1,23,0,0,9],
|
||||
"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":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 3a2e3059 6880e89a cb92201c 756e5f00 a9df75a6 7a2568de 3c8d4ff4"
|
||||
},
|
||||
"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",
|
||||
@@ -497,8 +497,8 @@
|
||||
"round": 5,
|
||||
"seed": 2071095439,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 69.47,
|
||||
"ticks": 2084,
|
||||
"time": 69.73,
|
||||
"ticks": 2092,
|
||||
"reason": "cleared",
|
||||
"killed": 16,
|
||||
"total": 16,
|
||||
@@ -507,7 +507,7 @@
|
||||
"rngDraws": 0,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"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": [
|
||||
["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",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",7,"op","chess_char_4_24_a",1,null,1726,1,5,3,8775,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",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,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],
|
||||
["-","~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]
|
||||
],
|
||||
"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],
|
||||
"events": {"atk":263,"deploy":8,"die":18,"dmg":431,"engage":5,"fx":60,"heal":49,"layer":1,"skill":15,"spawn":27,"status":49},
|
||||
"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":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},
|
||||
"snaps": "86cad855 f20e9695 1939f464 021173dc a7a02fb2 bf56e726 24bf526e"
|
||||
"snaps": "86cad855 f20e9695 1939f464 021173dc a7a02fb2 bf56e726 19f0e5fb"
|
||||
},
|
||||
"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",
|
||||
@@ -537,8 +537,8 @@
|
||||
"round": 10,
|
||||
"seed": 3009624823,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 87.1,
|
||||
"ticks": 2613,
|
||||
"time": 87.3,
|
||||
"ticks": 2619,
|
||||
"reason": "cleared",
|
||||
"killed": 30,
|
||||
"total": 30,
|
||||
@@ -546,24 +546,24 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 19,
|
||||
"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": [
|
||||
["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",3,"op","chess_char_5_08_b",2,"uniequip_002_horn",610.48,1,7,10,66609,4063,1898,52,2],
|
||||
["p1",4,"op","chess_char_4_19_b",2,"uniequip_002_flamtl",2118,1,8,1,19858,0,0,17,2],
|
||||
["p1",5,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",0,0,9,3,83060,1971,0,50,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,2,17415,0,0,15,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",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],
|
||||
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
|
||||
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {"enemy_10124_uashld_2":[2,2,0,4508,124416],"enemy_1043_zomsbr":[23,23,0,20,146972],"enemy_1061_zomshd":[5,5,0,4181,132223]},
|
||||
"hooks": [1,41,2613,239,239,480,595,3447,33,33,15,13,0,5189,999,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},
|
||||
"fx": {"aoe":24,"displace":14,"dodge":5,"flame":2,"overload":2,"riposte":1,"shield":2,"volley":3},
|
||||
"snaps": "5a72bba9 62d17d06 7af61b0e 145770cc 0e2d980c b193a626 7b9e061d 3713fd93 dd49f202"
|
||||
"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,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":54,"skill":27,"spawn":40,"status":123},
|
||||
"fx": {"aoe":25,"displace":14,"dodge":5,"flame":2,"overload":2,"riposte":1,"shield":2,"volley":3},
|
||||
"snaps": "5a72bba9 62d17d06 7af61b0e 049de829 804698e6 af344f2a 1f8648c8 7c641222 54fb5f62"
|
||||
},
|
||||
"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",
|
||||
@@ -630,23 +630,23 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 9,
|
||||
"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": [
|
||||
["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",3,"op","chess_char_2_05_b",1,"uniequip_002_harold",15542.19,1,4,0,0,50,1553,10,1],
|
||||
["p1",4,"op","chess_char_3_11_b",1,"uniequip_002_snhunt",2137.5,1,7,12,115208,1212,0,22,9],
|
||||
["p1",5,"op","chess_char_3_14_b",1,"uniequip_002_slbell",1968.75,1,5,1,5804,50,0,1,1],
|
||||
["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,1403,8,1],
|
||||
["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,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",7,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",2436.25,1,3,1,1916,50,0,2,3],
|
||||
["p1",8,"op","chess_char_5_12_b",0,"uniequip_002_dusk",2183.75,1,6,1,48000,1303,0,11,11],
|
||||
["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,2,48948,1253,0,11,11],
|
||||
["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]},
|
||||
"hooks": [1,26,2174,71,71,122,122,15,18,18,30,30,0,7789,1580,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},
|
||||
"fx": {"coldWind":2,"frostNova":3,"healAoe":4,"strike":9,"summon":1,"volley":9,"zone":13},
|
||||
"snaps": "90b7f22d b531ce35 fbce9828 6d380cb9 987fb042 7ad0629c b4438ae2 c77be816"
|
||||
"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,69,69,120,120,14,18,18,29,29,0,7646,1581,4,17,0,1,18,0,0,0],
|
||||
"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":2,"healAoe":4,"strike":9,"summon":1,"volley":9,"zone":13},
|
||||
"snaps": "90b7f22d 48abf948 ab24ccfb 0b59b737 b36b901e 8b9d506f 13d6dc16 0b9fe7cc"
|
||||
},
|
||||
"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",
|
||||
@@ -694,8 +694,8 @@
|
||||
"round": 10,
|
||||
"seed": 4098169220,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 79.73,
|
||||
"ticks": 2392,
|
||||
"time": 79.9,
|
||||
"ticks": 2397,
|
||||
"reason": "cleared",
|
||||
"killed": 30,
|
||||
"total": 30,
|
||||
@@ -703,22 +703,22 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 7,
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",5165.77,1,4,0,26791,317,0,13,1],
|
||||
["p1",2,"op","chess_char_5_13_b",1,"uniequip_002_ghost2",3645.2,1,6,1,13289,3644,0,19,1],
|
||||
["p1",3,"op","chess_char_5_14_b",1,"none",0,0,7,2,27169,2078,84,2,5],
|
||||
["p1",4,"op","chess_char_1_01_b",1,"uniequip_002_inside",1421,1,1,6,235290,0,0,231,1],
|
||||
["p1",5,"op","chess_char_2_01_b",1,"uniequip_002_excu",2146,1,2,3,41154,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",7,"op","chess_char_3_21_b",2,"uniequip_002_archet",1590,1,5,5,69468,0,0,61,2],
|
||||
["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,0,13466,3644,0,19,1],
|
||||
["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,7,234959,0,0,228,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,66840,0,0,55,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]
|
||||
],
|
||||
"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]},
|
||||
"hooks": [1,38,2392,437,437,766,766,5305,32,32,14,12,239,4696,28,12,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},
|
||||
"fx": {"aoe":5,"buff":2,"counter":8,"displace":38,"expose":266,"reload":1,"ripple":9,"sermon":1,"shield":3,"substitute":1},
|
||||
"snaps": "86f46177 a7754041 6fc8742b 8a13c6b9 5312c442 0902c6cf 16463025 94610e2a"
|
||||
"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,2397,435,435,769,769,5366,32,32,14,12,236,4690,28,11,30,0,1,37,0,0,0],
|
||||
"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":267,"reload":1,"ripple":9,"sermon":1,"shield":3,"substitute":1},
|
||||
"snaps": "86f46177 a7754041 6fc8742b 8a13c6b9 570d4f1b f551616a dc275f12 5ca99140"
|
||||
},
|
||||
"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",
|
||||
@@ -844,36 +844,36 @@
|
||||
"round": 10,
|
||||
"seed": 2841335436,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 153.8,
|
||||
"ticks": 4614,
|
||||
"time": 155.93,
|
||||
"ticks": 4678,
|
||||
"reason": "cleared",
|
||||
"killed": 18,
|
||||
"total": 18,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 322,
|
||||
"rngDraws": 334,
|
||||
"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}}},
|
||||
"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",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",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",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],
|
||||
["-","~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","~2","token","token_10022_kazema_shadow",null,null,2214,0,30,0,1900,0,0,9,null],
|
||||
["p1","~3","token","token_10022_kazema_shadow",null,null,2214,1,32,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,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]},
|
||||
"hooks": [1,33,4614,493,493,809,823,0,20,22,39,36,12,11457,77,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},
|
||||
"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},
|
||||
"snaps": "ae3e9ee4 e795ca48 af286313 5aa3428e a826aeb9 81e82a3d 3953a160 f1ec4be1 5a94a792 d0a07cdb cb15f41a 7270a596 a5058f10 aa5f31c4 829ad975 cdde39b0"
|
||||
"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":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":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 0849783a a28271cc f019eec0 93a51c53 68a65584 a892034d 42b4f6e0 8e061436"
|
||||
},
|
||||
"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",
|
||||
@@ -964,14 +964,14 @@
|
||||
"round": 5,
|
||||
"seed": 806507299,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 53.63,
|
||||
"ticks": 1609,
|
||||
"time": 50.87,
|
||||
"ticks": 1526,
|
||||
"reason": "cleared",
|
||||
"killed": 17,
|
||||
"total": 17,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 27,
|
||||
"rngDraws": 23,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {
|
||||
@@ -983,28 +983,28 @@
|
||||
"coins": 0,
|
||||
"dmg": 126144,
|
||||
"bossDmg": 0,
|
||||
"heal": 2616,
|
||||
"heal": 2611,
|
||||
"deaths": 1,
|
||||
"layerGains": {"preciShip":4,"raidShip":1}
|
||||
}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_4_17_a",1,null,1910.66,1,3,1,295,938,0,5,0],
|
||||
["p1",2,"op","chess_char_4_18_a",1,null,3295.65,1,5,2,21486,1508,216,15,3],
|
||||
["p1",3,"op","chess_char_2_09_a",1,null,2047.24,1,17,3,20715,0,0,25,1],
|
||||
["p1",4,"op","chess_char_4_19_a",2,null,0,0,9,1,15228,1560,0,23,1],
|
||||
["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,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,21927,0,0,26,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",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",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],
|
||||
["-","~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]},
|
||||
"hooks": [1,30,1609,197,197,240,235,80,18,21,12,12,0,4590,247,20,17,0,1,18,2,0,7],
|
||||
"events": {"atk":213,"deploy":11,"die":21,"dmg":222,"engage":7,"fx":52,"heal":50,"layer":2,"skill":26,"spawn":27,"status":83},
|
||||
"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},
|
||||
"snaps": "0d70c7b9 c3f43a03 eb2f3dd4 b15a471d 59890be2 3a914fb6"
|
||||
"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,1526,190,190,230,225,81,18,21,12,12,0,4561,227,19,17,0,1,18,2,0,8],
|
||||
"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,"dodge":8,"flame":1,"frostNova":4,"garrison":2,"garrisonGrant":1,"liberate":4,"phase":11,"riposte":7,"rockslide":3,"shieldBreak":4},
|
||||
"snaps": "0d70c7b9 c3f43a03 69c7558a e477fd91 67bf565c"
|
||||
},
|
||||
"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",
|
||||
@@ -1101,22 +1101,22 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 45,
|
||||
"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": [
|
||||
["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",3,"op","chess_char_3_06_b",1,"uniequip_002_philae",6058.8,1,4,1,10213,1356,1575,4,1],
|
||||
["p1",4,"op","chess_char_4_23_b",2,"uniequip_002_gvial2",0,0,5,15,168100,2811,0,95,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,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",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",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]},
|
||||
"hooks": [1,39,3215,187,187,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},
|
||||
"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":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},
|
||||
"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": {
|
||||
"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,
|
||||
"seed": 3227754780,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 76.73,
|
||||
"ticks": 2302,
|
||||
"time": 71.57,
|
||||
"ticks": 2147,
|
||||
"reason": "cleared",
|
||||
"killed": 19,
|
||||
"total": 19,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 22,
|
||||
"rngDraws": 18,
|
||||
"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": [
|
||||
["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",3,"op","chess_char_2_16_a",1,null,0,0,6,1,11208,1791,0,28,1],
|
||||
["p1",4,"op","chess_char_3_02_a",1,null,0,0,3,4,16019,1911,0,38,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,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",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",8,"op","chess_char_1_07_a",0,null,1215,1,1,4,13369,0,0,21,0],
|
||||
["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,3,11080,0,0,17,0],
|
||||
["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]},
|
||||
"hooks": [1,28,2302,229,229,281,303,0,24,24,5,5,0,4757,29,25,19,0,1,24,0,0,0],
|
||||
"events": {"atk":230,"deploy":9,"die":24,"dmg":303,"engage":7,"fx":47,"skill":14,"spawn":28,"status":57},
|
||||
"fx": {"aoe":8,"coin":4,"crit":6,"dp":1,"strike":27,"summon":1},
|
||||
"snaps": "d4f0d969 3a7c5df7 2ef957aa a7f6517c 59a77ce3 96b3b4ea d486812a 5107747b"
|
||||
"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,2147,225,225,283,309,0,22,22,5,3,0,4561,31,24,19,0,1,22,0,1,0],
|
||||
"events": {"atk":227,"deploy":9,"die":22,"dmg":309,"engage":7,"fx":47,"skill":12,"spawn":28,"status":62},
|
||||
"fx": {"aoe":11,"burst":1,"coin":4,"crit":6,"dp":1,"strike":23,"summon":1},
|
||||
"snaps": "d4f0d969 3a7c5df7 2ef957aa a7f6517c 1f015c2e 9e66eaa3 3895ada5 cceaeba6"
|
||||
},
|
||||
"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",
|
||||
@@ -1274,8 +1274,8 @@
|
||||
"round": 5,
|
||||
"seed": 2364080280,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 52.87,
|
||||
"ticks": 1586,
|
||||
"time": 49.93,
|
||||
"ticks": 1498,
|
||||
"reason": "cleared",
|
||||
"killed": 17,
|
||||
"total": 17,
|
||||
@@ -1293,29 +1293,29 @@
|
||||
"coins": 0,
|
||||
"dmg": 126144,
|
||||
"bossDmg": 0,
|
||||
"heal": 222,
|
||||
"heal": 0,
|
||||
"deaths": 2,
|
||||
"layerGains": {"lateranoShip":1,"siracusaShip":6}
|
||||
}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_3_16_a",1,null,1895.28,1,3,0,16,861,40,1,1],
|
||||
["p1",2,"op","chess_char_4_01_a",2,null,0,0,5,2,11758,4221,0,15,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,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",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",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",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],
|
||||
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
|
||||
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {"enemy_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]},
|
||||
"hooks": [1,28,1586,190,190,330,330,96,19,19,9,6,7,6989,40,22,17,0,1,25,4,0,0],
|
||||
"events": {"atk":238,"deploy":9,"die":19,"dmg":328,"engage":9,"fx":49,"layer":4,"skill":15,"spawn":28,"status":116},
|
||||
"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},
|
||||
"snaps": "d8f99986 287fd6f2 d2481758 42051775 65187a04 3a674d02"
|
||||
"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,1498,173,173,310,310,0,19,19,7,4,7,6736,34,19,17,0,1,24,4,0,0],
|
||||
"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":2,"garrison":4,"liberate":3,"phase":4,"ripple":4,"sermon":1,"shield":2,"wolfShadow":1},
|
||||
"snaps": "d8f99986 287fd6f2 d2481758 cd3eb977 47abb5b8"
|
||||
},
|
||||
"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",
|
||||
@@ -1326,25 +1326,25 @@
|
||||
"round": 10,
|
||||
"seed": 3252010875,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 87.53,
|
||||
"ticks": 2626,
|
||||
"time": 89.2,
|
||||
"ticks": 2676,
|
||||
"reason": "cleared",
|
||||
"killed": 64,
|
||||
"total": 65,
|
||||
"killed": 66,
|
||||
"total": 66,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 45,
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",3907,1,6,14,30475,0,0,18,1],
|
||||
["p1",2,"op","chess_char_1_08_b",1,"uniequip_002_texas",0,0,7,5,3785,3184,49,15,2],
|
||||
["p1",3,"op","chess_char_5_13_b",1,"uniequip_002_ghost2",3364.8,1,8,4,15438,6038,339,21,1],
|
||||
["p1",4,"op","chess_char_5_14_b",1,"none",1994,1,78,6,19723,1994,0,14,6],
|
||||
["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,4,5226,2974,49,18,3],
|
||||
["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,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",6,"op","chess_char_5_12_b",0,"uniequip_002_dusk",1787,1,4,4,11386,0,0,9,7],
|
||||
["p1",7,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1170,1,5,10,18019,0,1048,11,3],
|
||||
["p1",8,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1382,1,9,6,25351,0,0,21,2],
|
||||
["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,7,14176,0,838,9,3],
|
||||
["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],
|
||||
["-","~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]
|
||||
@@ -1354,13 +1354,13 @@
|
||||
"enemy_1196_msfyin": [28,28,0,0,56],
|
||||
"enemy_1197_sfshu": [5,5,0,0,31104],
|
||||
"enemy_1198_msfshu": [15,15,0,0,45],
|
||||
"enemy_1207_sfji": [2,1,1,13786,47793],
|
||||
"enemy_1208_msfji": [1,1,0,0,25]
|
||||
"enemy_1207_sfji": [2,2,0,13576,54743],
|
||||
"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],
|
||||
"events": {"atk":200,"deploy":10,"die":67,"dmg":300,"engage":8,"fx":92,"heal":10,"leak":1,"skill":46,"spawn":76,"status":133},
|
||||
"fx": {"aoe":9,"crit":5,"dodge":2,"dp":2,"sp":3,"substitute":2,"summon":20,"swap":1,"weightless":2,"zone":46},
|
||||
"snaps": "99559343 38c0d1a5 4c359c39 82e6b34e fe2582dc d30cdc48 04b1e430 0f96ba1e 89fac4be"
|
||||
"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":215,"deploy":10,"die":69,"dmg":332,"engage":8,"fx":84,"heal":8,"skill":54,"spawn":77,"status":142},
|
||||
"fx": {"aoe":11,"crit":5,"dodge":2,"dp":3,"sp":3,"substitute":2,"summon":21,"swap":1,"weightless":3,"zone":33},
|
||||
"snaps": "99559343 38c0d1a5 92dc29fe fc9b8613 719b1867 a2a129fe 0a35c013 011b0232 25a525eb"
|
||||
},
|
||||
"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",
|
||||
@@ -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],
|
||||
"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},
|
||||
"snaps": "a178d904 2983cdc8 139d44ee c6071100 b5953eea e466bb8a"
|
||||
"snaps": "a178d904 2983cdc8 139d44ee c6071100 8fa030b9 36acfac5"
|
||||
},
|
||||
"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",
|
||||
@@ -1486,8 +1486,8 @@
|
||||
"round": 10,
|
||||
"seed": 2806272209,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 140.27,
|
||||
"ticks": 4208,
|
||||
"time": 136.97,
|
||||
"ticks": 4109,
|
||||
"reason": "cleared",
|
||||
"killed": 9,
|
||||
"total": 24,
|
||||
@@ -1495,22 +1495,22 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 5,
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",0,0,2,1,5187,5876,0,84,2],
|
||||
["p1",2,"op","chess_char_1_04_b",1,"uniequip_002_udflow",2771.47,1,1,1,32730,133,0,97,3],
|
||||
["p1",3,"op","chess_char_4_19_a",2,null,1560,1,35,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",5,"op","chess_char_1_03_b",1,"uniequip_002_leizi",1391,1,7,4,79051,4252,0,33,2],
|
||||
["p1",6,"op","chess_char_1_06_b",1,"uniequip_002_vendla",1281.19,1,5,1,20681,1417,6655,76,4],
|
||||
["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",2904,1,1,1,31723,0,0,92,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,60146,1772,0,127,5],
|
||||
["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",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",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]},
|
||||
"hooks": [1,35,4208,712,712,876,875,82,13,28,22,22,82,15310,268,12,24,15,1,15,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},
|
||||
"fx": {"counter":3,"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"
|
||||
"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,34,4109,698,698,857,856,74,14,29,22,22,82,14208,264,11,24,15,1,16,0,0,1],
|
||||
"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":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 2d6ec23f 64687ac4 614cc71d 237745fb 6cda5ff4 c86ba861 3f848835"
|
||||
},
|
||||
"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",
|
||||
@@ -1556,33 +1556,33 @@
|
||||
"round": 10,
|
||||
"seed": 1175070139,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 126.2,
|
||||
"ticks": 3786,
|
||||
"time": 118.8,
|
||||
"ticks": 3564,
|
||||
"reason": "cleared",
|
||||
"killed": 23,
|
||||
"killed": 24,
|
||||
"total": 24,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 329,
|
||||
"rngDraws": 351,
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_4_11_b",1,"uniequip_002_cathy",0,0,4,0,0,4098,0,0,1],
|
||||
["p1",2,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",0,0,6,1,4094,1971,0,22,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,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",4,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",2777.6,1,5,4,71892,0,0,29,4],
|
||||
["p1",5,"op","chess_char_1_01_b",1,"uniequip_002_inside",1421,1,1,4,21185,0,0,84,5],
|
||||
["p1",6,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1561,1,2,8,69283,0,0,124,3],
|
||||
["p1",7,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1664,1,3,3,37824,0,0,22,3],
|
||||
["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,3,21844,0,0,88,6],
|
||||
["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,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",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]
|
||||
],
|
||||
"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]},
|
||||
"hooks": [1,34,3786,327,327,635,635,233,27,28,30,28,84,3868,137,11,24,1,1,27,0,0,0],
|
||||
"events": {"atk":372,"deploy":10,"die":27,"dmg":635,"engage":7,"fx":164,"leak":1,"skill":58,"spawn":34,"status":232},
|
||||
"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},
|
||||
"snaps": "52481b26 a970d314 da9bd295 cc77046e 802c2fa6 80ef9e23 e4cf0a30 d21017b5 55ff76b2 e2dc50e5 5d1fb6ad cf5c6907 a79f6670"
|
||||
"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,3564,342,342,663,663,233,28,28,31,28,88,3686,146,11,24,0,1,28,0,0,0],
|
||||
"events": {"atk":387,"deploy":10,"die":28,"dmg":663,"engage":8,"fx":174,"skill":59,"spawn":34,"status":244},
|
||||
"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 45b52735 5082bd52 bcfbe796 e6c33b17 892f0a8f 3a4e3a57 9fd11e6b f7604ee8"
|
||||
},
|
||||
"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",
|
||||
@@ -1687,8 +1687,8 @@
|
||||
"round": 5,
|
||||
"seed": 3923365115,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 59.67,
|
||||
"ticks": 1790,
|
||||
"time": 60.73,
|
||||
"ticks": 1822,
|
||||
"reason": "cleared",
|
||||
"killed": 16,
|
||||
"total": 17,
|
||||
@@ -1709,10 +1709,10 @@
|
||||
["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]},
|
||||
"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},
|
||||
"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": {
|
||||
"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,
|
||||
"seed": 1009948961,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 61.97,
|
||||
"ticks": 1859,
|
||||
"time": 60.13,
|
||||
"ticks": 1804,
|
||||
"reason": "cleared",
|
||||
"killed": 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":{}}},
|
||||
"units": [
|
||||
["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",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",6,"op","chess_char_3_14_a",1,null,1251,1,11,1,7634,0,0,33,1],
|
||||
["p1",7,"op","chess_char_3_17_a",1,null,2246,1,12,6,31486,0,0,48,3],
|
||||
["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,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",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],
|
||||
@@ -1786,10 +1786,10 @@
|
||||
["-","~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]},
|
||||
"hooks": [1,34,1859,191,191,299,299,77,23,23,8,7,0,7045,59,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},
|
||||
"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":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},
|
||||
"snaps": "597235cf dd7dc4c1 9453a8aa c14bf7c3 8cea5518 9135a94b 3e0d971b"
|
||||
"snaps": "597235cf dd7dc4c1 9453a8aa c14bf7c3 8cea5518 59142b48"
|
||||
},
|
||||
"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",
|
||||
|
||||
+1800
-1797
File diff suppressed because it is too large.
Load diff
+366
-366
File diff suppressed because it is too large.
Load diff
+247
-258
File diff suppressed because it is too large.
Load diff
+873
-851
File diff suppressed because it is too large.
Load diff
+201
-213
@@ -20,58 +20,58 @@
|
||||
"time": 170,
|
||||
"ticks": 5100,
|
||||
"reason": "timeout",
|
||||
"killed": 22,
|
||||
"killed": 19,
|
||||
"total": 50,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 404,
|
||||
"rngDraws": 544,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {
|
||||
"killed": 22,
|
||||
"killed": 19,
|
||||
"total": 50,
|
||||
"perfect": false,
|
||||
"leaks": 28,
|
||||
"leaks": 31,
|
||||
"leaksUncounted": 0,
|
||||
"coins": 4,
|
||||
"dmg": 266162,
|
||||
"dmg": 266231,
|
||||
"bossDmg": 0,
|
||||
"heal": 16178,
|
||||
"deaths": 23,
|
||||
"heal": 17643,
|
||||
"deaths": 24,
|
||||
"layerGains": {"raidShip":13,"visiShip":2}
|
||||
}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_3_12_a",2,null,0,0,73,4,63063,4029,0,26,3],
|
||||
["p1",2,"op","chess_char_4_09_a",0,null,333.6,1,82,4,41987,5634,0,33,2],
|
||||
["p1",3,"op","chess_char_3_05_a",2,null,1442.3,1,75,2,30691,11964,0,46,2],
|
||||
["p1",4,"op","chess_char_3_18_a",2,null,0,0,7,0,12109,3090,0,27,1],
|
||||
["p1",5,"op","chess_char_4_04_a",1,null,951,1,90,2,20875,5420,0,75,9],
|
||||
["p1",6,"op","chess_char_4_07_a",1,null,0,0,76,1,16997,12466,0,39,1],
|
||||
["p1",7,"op","chess_char_4_16_a",1,null,0,0,88,1,7848,10473,0,110,10],
|
||||
["p1",8,"op","chess_char_3_01_a",2,null,1271,1,5,2,25558,0,0,144,2],
|
||||
["p1",9,"op","chess_char_3_04_a",2,null,1218,1,83,0,0,1218,16178,35,2],
|
||||
["p1",10,"op","chess_char_3_21_a",2,null,1272,1,89,3,26523,1272,0,58,1],
|
||||
["p1",11,"op","chess_char_4_02_a",1,null,0,0,9,2,11150,1653,0,50,1],
|
||||
["p1",12,"op","chess_char_4_13_a",1,null,812,1,84,1,9361,812,0,25,1]
|
||||
["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,0,0,1,1,29760,2984,0,18,1],
|
||||
["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,1,10578,3995,0,17,1],
|
||||
["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,79,1,19230,13744,0,43,1],
|
||||
["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,0,22413,0,0,149,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,716.85,1,6,6,42226,555,0,132,2],
|
||||
["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,0,0,83,1,15028,1624,0,33,2]
|
||||
],
|
||||
"enemies": {
|
||||
"enemy_10001_trslim": [1,1,0,8,4860],
|
||||
"enemy_1000_gopro_2": [1,1,0,0,1836],
|
||||
"enemy_10018_sgrobh": [1,1,0,3793,8100],
|
||||
"enemy_1001_bigbo": [1,0,1,2157,2613],
|
||||
"enemy_10027_vtsk": [1,0,1,12395,936],
|
||||
"enemy_10018_sgrobh": [1,1,0,3753,8100],
|
||||
"enemy_1001_bigbo": [1,0,1,1235,2656],
|
||||
"enemy_10027_vtsk": [1,0,1,12888,1289],
|
||||
"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_1116_liprr_2": [21,14,7,7342,129693],
|
||||
"enemy_1119_vofsd": [12,4,7,12831,76140],
|
||||
"enemy_1121_lifbos_2": [9,1,7,8976,39440]
|
||||
"enemy_1116_liprr_2": [21,13,8,5313,129729],
|
||||
"enemy_1119_vofsd": [12,2,8,12831,69965],
|
||||
"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],
|
||||
"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},
|
||||
"fx": {"beam":8,"blink":10,"dodge":3,"dp":7,"garrison":5,"liberate":16,"phase":13,"slash":24,"telegraph":1},
|
||||
"snaps": "8b8be66d b3674b6a 84ebce5a 655e2381 01458f80 5429a40f 79ef58a7 e0c853b0 b82a9af1 80ef3ca7 cfdb8a3a 47523368 7134b000 32056871 69a04f4b c6c5ecc7 e01e6b80"
|
||||
"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":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":12,"blink":14,"dodge":2,"dp":7,"garrison":5,"liberate":12,"phase":13,"slash":24,"telegraph":1},
|
||||
"snaps": "8b8be66d b3674b6a 84ebce5a c4efeba6 05a2d3cd bf6f3985 249c5ebd 2bf68848 6faa6eb8 0275f0fb f4b16de1 f88b620c 3545e4d2 aa0d5a15 ecf73cfe 95a2451e a178591a"
|
||||
},
|
||||
"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",
|
||||
@@ -89,42 +89,42 @@
|
||||
"total": 68,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 108,
|
||||
"rngDraws": 106,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_4_17_a",1,null,0,0,3,1,294,2604,0,4,1],
|
||||
["p1",2,"op","chess_char_4_18_a",1,null,0,0,78,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",4,"op","chess_char_4_19_a",1,null,0,0,66,0,632,3058,0,12,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,85,0,2350,6810,0,6,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,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",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",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",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",12,"op","chess_char_5_03_a",2,null,0,0,4,5,56863,1372,0,10,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,55808,1372,0,10,1]
|
||||
],
|
||||
"enemies": {
|
||||
"enemy_10042_prtrop_2": [1,0,1,4429,14122],
|
||||
"enemy_10043_sailor": [1,1,0,1024,23649],
|
||||
"enemy_10044_wintun": [1,0,1,3812,11990],
|
||||
"enemy_10042_prtrop_2": [1,0,1,4245,13584],
|
||||
"enemy_10043_sailor": [1,1,0,1107,23649],
|
||||
"enemy_10044_wintun": [1,0,1,4066,10026],
|
||||
"enemy_10045_parrot": [1,0,1,0,4099],
|
||||
"enemy_10054_cjhot": [1,0,1,2686,1997],
|
||||
"enemy_1005_yokai": [27,8,19,0,29752],
|
||||
"enemy_1005_yokai_2": [27,0,24,10786,3283],
|
||||
"enemy_1005_yokai_3": [6,0,6,20260,18054],
|
||||
"enemy_10065_ftzlc": [1,0,1,19,640],
|
||||
"enemy_10054_cjhot": [1,0,1,2423,2176],
|
||||
"enemy_1005_yokai": [27,8,19,0,30014],
|
||||
"enemy_1005_yokai_2": [27,0,24,11167,2144],
|
||||
"enemy_1005_yokai_3": [6,0,6,20008,18599],
|
||||
"enemy_10065_ftzlc": [1,0,1,0,560],
|
||||
"enemy_10067_ftsjc": [1,0,1,0,680],
|
||||
"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],
|
||||
"events": {"atk":343,"deploy":24,"die":31,"dmg":545,"engage":11,"fx":83,"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},
|
||||
"snaps": "bb11ef91 3dacfd27 a1a9e1ba 0c1cbf13 1a25c591 303d857a 3dc0bf41 8f47df11 f254e91e 21b1a437 0bef3640 47e52a7a d371b6b0 8a488ba7 9a40aca9 786c46b4 ca780f2a f8b06cfe 10e274ca"
|
||||
"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":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":38,"dp":3,"explode":27,"garrison":3,"garrisonGrant":1,"zone":1},
|
||||
"snaps": "bb11ef91 9b91da1e 3c4f008c 878e68d7 24bb4a4a 8d8aeac2 afd35f69 eb5d4d7c eb84350d df25cd79 28a5ee62 7ca7b30b 51dff947 2a598d70 a2618471 b503b719 ee4a9a4a ece62e64 443cb0c6"
|
||||
},
|
||||
"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",
|
||||
@@ -138,44 +138,44 @@
|
||||
"time": 190,
|
||||
"ticks": 5700,
|
||||
"reason": "timeout",
|
||||
"killed": 44,
|
||||
"killed": 41,
|
||||
"total": 74,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 317,
|
||||
"rngDraws": 278,
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_5_08_a",2,null,2206.8,1,91,0,5923,3841,0,59,1],
|
||||
["p1",2,"op","chess_char_5_14_a",2,null,0,0,90,23,142481,7595,0,63,6],
|
||||
["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,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",4,"op","chess_char_5_07_a",2,null,843.2,1,7,1,29523,11092,0,77,3],
|
||||
["p1",5,"op","chess_char_5_13_a",2,null,822,1,11,7,56384,11384,0,123,4],
|
||||
["p1",6,"op","chess_char_5_17_a",2,null,1154,1,92,0,4254,4200,0,59,0],
|
||||
["p1",7,"op","chess_char_5_10_a",2,null,932,1,2,1,8953,0,0,74,2],
|
||||
["p1",8,"op","chess_char_5_11_a",2,null,1224,1,3,0,0,0,48257,71,2],
|
||||
["p1",9,"op","chess_char_5_12_a",2,null,1160,1,4,0,19483,0,0,77,2],
|
||||
["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,1801,1,11,7,56384,10325,0,123,4],
|
||||
["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,7776,0,0,58,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,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",11,"op","chess_char_5_18_a",2,null,0,0,1,4,27171,1272,0,32,1],
|
||||
["p1",12,"op","chess_char_5_20_a",2,null,0,0,5,0,7118,1972,0,39,2]
|
||||
["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,6872,1972,0,38,2]
|
||||
],
|
||||
"enemies": {
|
||||
"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_1007_slime": [1,1,0,0,440],
|
||||
"enemy_10081_mpplai": [1,1,0,0,2000],
|
||||
"enemy_10087_hlchgr": [1,1,0,38,4800],
|
||||
"enemy_10094_crstf": [1,1,0,28,3200],
|
||||
"enemy_10097_crshd": [1,1,0,0,8000],
|
||||
"enemy_1166_dusbr_2": [42,30,12,2728,121684],
|
||||
"enemy_1170_dushld_2": [12,5,6,28117,47066],
|
||||
"enemy_9011_acrefr": [12,2,6,28914,147383]
|
||||
"enemy_1166_dusbr_2": [42,28,14,2956,110452],
|
||||
"enemy_1170_dushld_2": [12,5,6,26204,45033],
|
||||
"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],
|
||||
"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},
|
||||
"fx": {"aoe":30,"displace":1,"dodge":13,"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"
|
||||
"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":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":16,"dp":29,"phase":1,"slash":48,"sp":1,"spGain":8},
|
||||
"snaps": "530ce9ab 3259d8c0 918a3cff a85e2d90 3b23751a 8f259c98 9faf0458 b98e7e80 e64fb37d 38b17953 2458f514 b2894d2f 6c036845 609d268d 5a2493c6 23bae8dc e4a6485d 424e64d1 745ddf7a"
|
||||
},
|
||||
"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",
|
||||
@@ -186,43 +186,31 @@
|
||||
"round": 12,
|
||||
"seed": 428893583,
|
||||
"waveId": "act1autochess_h05",
|
||||
"time": 201.73,
|
||||
"ticks": 6052,
|
||||
"time": 201.43,
|
||||
"ticks": 6043,
|
||||
"reason": "cleared",
|
||||
"killed": 146,
|
||||
"killed": 158,
|
||||
"total": 158,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 614,
|
||||
"rngDraws": 612,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {
|
||||
"killed": 146,
|
||||
"total": 158,
|
||||
"perfect": false,
|
||||
"leaks": 12,
|
||||
"leaksUncounted": 0,
|
||||
"coins": 8,
|
||||
"dmg": 1417534,
|
||||
"bossDmg": 0,
|
||||
"heal": 25396,
|
||||
"deaths": 8,
|
||||
"layerGains": {"sargonShip":5}
|
||||
}
|
||||
"p1": {"killed":158,"total":158,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":8,"dmg":1471553,"bossDmg":0,"heal":29310,"deaths":8,"layerGains":{"sargonShip":5}}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_6_03_a",2,null,0,0,169,0,2034,5814,0,24,1],
|
||||
["p1",2,"op","chess_char_6_02_a",2,null,1026.4,1,171,6,34754,2032,0,3,6],
|
||||
["p1",3,"op","chess_char_6_07_a",0,null,1865,1,178,7,177671,1865,0,104,2],
|
||||
["p1",4,"op","chess_char_6_10_a",0,null,1865,1,177,5,99606,1865,0,99,2],
|
||||
["p1",5,"op","chess_char_6_11_a",2,null,0,0,167,25,173830,8783,0,48,7],
|
||||
["p1",6,"op","chess_char_6_06_a",2,null,2638,1,158,15,108249,19250,0,107,4],
|
||||
["p1",7,"op","chess_char_5_22_a",2,null,1272,1,3,2,27182,0,0,23,2],
|
||||
["p1",8,"op","chess_char_6_01_a",2,null,1272,1,4,38,276396,0,0,159,2],
|
||||
["p1",9,"op","chess_char_6_04_a",2,null,1160,1,13,8,63813,0,0,118,2],
|
||||
["p1",10,"op","chess_char_6_05_a",2,null,1272,1,14,18,244695,2453,0,128,2],
|
||||
["p1",11,"op","chess_char_6_08_a",2,null,1372,1,5,21,209303,0,0,53,3],
|
||||
["p1",12,"op","chess_char_6_09_a",2,null,1224,1,11,0,0,0,25396,42,2],
|
||||
["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,0,0,171,5,21360,3058,0,2,4],
|
||||
["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,6,128769,1865,0,109,2],
|
||||
["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,2149.08,1,158,16,114781,20845,0,115,4],
|
||||
["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,36,251215,0,0,157,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,242842,2453,0,127,2],
|
||||
["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,29310,46,2],
|
||||
["-","~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]
|
||||
],
|
||||
@@ -231,17 +219,17 @@
|
||||
"enemy_10099_crvln": [1,1,0,2453,20736],
|
||||
"enemy_1009_lurker": [1,1,0,23,3041],
|
||||
"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_10116_ymgtop": [1,1,0,2924,13824],
|
||||
"enemy_10118_ymgprc": [1,0,1,8633,47535],
|
||||
"enemy_1071_dftman": [63,63,0,666,243855],
|
||||
"enemy_1072_dlancer": [60,53,7,16266,482782]
|
||||
"enemy_10118_ymgprc": [1,1,0,10510,69120],
|
||||
"enemy_1071_dftman": [63,63,0,587,243855],
|
||||
"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],
|
||||
"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},
|
||||
"fx": {"aoe":8,"dodge":14,"dp":44,"garrison":2,"revive":1,"slash":86,"sp":14,"spGain":3,"telegraph":2},
|
||||
"snaps": "484fd662 4f4e076d 081948b0 d7bf1df0 c0aa2905 1b27e150 ab6cac50 1cbbd19b 1109a00b b8a562d0 58ac9b92 3126d9be 7b2d0323 7a11d03f b313b514 a71c9972 09816903 02ed5449 40a13ed4 00252786 174d9027"
|
||||
"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":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":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 d1148fdb fccd25dd 3bdf0cd3 bc78cb58 5914e59f e9a5d19b c18806ba 780d90bd f332e4d3 1b1a7814 b06c5778 2ebf5ca8 a00fc7c0 e0236981"
|
||||
},
|
||||
"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",
|
||||
@@ -252,24 +240,24 @@
|
||||
"round": 12,
|
||||
"seed": 4096833445,
|
||||
"waveId": "act1autochess_h05",
|
||||
"time": 215.57,
|
||||
"ticks": 6467,
|
||||
"time": 220.27,
|
||||
"ticks": 6608,
|
||||
"reason": "cleared",
|
||||
"killed": 5,
|
||||
"total": 104,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 215,
|
||||
"rngDraws": 225,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"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": [
|
||||
["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",3,"op","chess_char_6_19_a",2,null,0,0,133,3,24753,9232,0,127,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,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",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",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],
|
||||
@@ -286,13 +274,13 @@
|
||||
"enemy_10156_mncrer": [1,0,1,0,1476],
|
||||
"enemy_10159_mntrjn": [1,0,1,0,0],
|
||||
"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]
|
||||
},
|
||||
"hooks": [1,135,6467,577,577,964,964,2,27,128,8,24,0,14795,2484,27,104,99,1,27,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},
|
||||
"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":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},
|
||||
"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": {
|
||||
"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,
|
||||
"seed": 1442657168,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 183.7,
|
||||
"ticks": 5511,
|
||||
"time": 185.13,
|
||||
"ticks": 5554,
|
||||
"reason": "cleared",
|
||||
"killed": 25,
|
||||
"killed": 24,
|
||||
"total": 98,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 272,
|
||||
"rngDraws": 262,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"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": [
|
||||
["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",3,"op","chess_char_3_05_b",2,"none",0,0,90,1,29963,11344,0,19,2],
|
||||
["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,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",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",7,"op","chess_char_4_16_b",1,"none",0,0,135,2,26045,13645,0,38,12],
|
||||
["p1",8,"op","chess_char_3_01_b",2,"none",0,0,128,1,13435,3020,0,21,1],
|
||||
["p1",9,"op","chess_char_3_04_b",2,"none",0,0,4,0,0,1374,9451,11,1],
|
||||
["p1",10,"op","chess_char_3_21_b",2,"none",0,0,112,11,185272,6695,0,50,1],
|
||||
["p1",11,"op","chess_char_4_02_b",1,"none",0,0,2,0,16202,1483,0,17,1],
|
||||
["p1",12,"op","chess_char_4_13_b",1,"none",0,0,101,3,13715,3085,0,23,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,22963,13645,0,38,12],
|
||||
["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,7019,10,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,19713,1483,0,16,1],
|
||||
["p1",12,"op","chess_char_4_13_b",1,"none",0,0,101,3,13621,3085,0,23,1]
|
||||
],
|
||||
"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_2": [1,1,0,1779,6718],
|
||||
"enemy_1021_bslime": [1,1,0,2095,6121],
|
||||
"enemy_1023_jmage": [1,0,1,3326,1518],
|
||||
"enemy_1025_reveng": [1,1,0,0,12442],
|
||||
"enemy_1023_jmage": [1,0,1,2948,0],
|
||||
"enemy_1025_reveng": [1,0,1,0,12429],
|
||||
"enemy_1026_aghost": [1,1,0,0,9456],
|
||||
"enemy_1043_zomsbr": [1,0,1,0,0],
|
||||
"enemy_1251_lysyta_2": [57,15,42,6671,148451],
|
||||
"enemy_1252_lysytb_2": [21,4,17,25366,127156],
|
||||
"enemy_1329_cbshld_2": [12,1,11,20011,48959]
|
||||
"enemy_1251_lysyta_2": [57,15,42,6671,144893],
|
||||
"enemy_1252_lysytb_2": [21,4,17,25366,122606],
|
||||
"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],
|
||||
"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},
|
||||
"fx": {"blink":8,"camouflage":1,"dodge":6,"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"
|
||||
"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":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":7,"dp":5,"explode":1,"garrison":3,"slash":8},
|
||||
"snaps": "be6d1821 33db37f0 1c42b6f6 5af04203 5e6c5512 babe8154 f176e4bc af2beda0 d11d4dd9 232a9af5 dbd39714 cdc694f1 7413a229 4dd3df34 ebd96e47 5f8b58f1 42af7a0d e3ac653d afa3953c"
|
||||
},
|
||||
"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",
|
||||
@@ -359,21 +347,21 @@
|
||||
"time": 223.57,
|
||||
"ticks": 6707,
|
||||
"reason": "cleared",
|
||||
"killed": 9,
|
||||
"killed": 10,
|
||||
"total": 80,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 82,
|
||||
"rngDraws": 81,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {
|
||||
"killed": 9,
|
||||
"killed": 10,
|
||||
"total": 80,
|
||||
"perfect": false,
|
||||
"leaks": 71,
|
||||
"leaks": 70,
|
||||
"leaksUncounted": 0,
|
||||
"coins": 4,
|
||||
"dmg": 125257,
|
||||
"dmg": 143200,
|
||||
"bossDmg": 0,
|
||||
"heal": 0,
|
||||
"deaths": 25,
|
||||
@@ -381,38 +369,38 @@
|
||||
}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_4_17_b",1,"none",0,0,3,0,210,3211,0,2,1],
|
||||
["p1",2,"op","chess_char_4_18_b",1,"none",0,0,86,0,30,9306,0,1,1],
|
||||
["p1",3,"op","chess_char_5_05_b",2,"none",0,0,100,0,1145,5816,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,60,9306,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",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",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",9,"op","chess_char_4_20_b",1,"none",1255.06,1,109,2,15749,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",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,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",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],
|
||||
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {
|
||||
"enemy_1005_yokai_2": [18,3,15,3206,7232],
|
||||
"enemy_1041_lazerd_2": [24,3,21,43558,33530],
|
||||
"enemy_1042_frostd": [30,1,29,0,25469],
|
||||
"enemy_1045_hammer": [1,1,0,2106,15552],
|
||||
"enemy_1045_hammer_2": [1,0,1,5370,20295],
|
||||
"enemy_1005_yokai_2": [18,3,15,3234,10312],
|
||||
"enemy_1041_lazerd_2": [24,3,21,43648,33749],
|
||||
"enemy_1042_frostd": [30,2,28,0,34315],
|
||||
"enemy_1045_hammer": [1,1,0,2029,15552],
|
||||
"enemy_1045_hammer_2": [1,0,1,3891,18162],
|
||||
"enemy_1046_agent": [1,1,0,72,3888],
|
||||
"enemy_1050_lslime": [1,0,1,8703,0],
|
||||
"enemy_1061_zomshd": [1,0,1,61,13862],
|
||||
"enemy_1062_rager_2": [1,0,1,1519,13929],
|
||||
"enemy_1050_lslime": [1,0,1,9027,5281],
|
||||
"enemy_1061_zomshd": [1,0,1,61,13892],
|
||||
"enemy_1062_rager_2": [1,0,1,2632,17550],
|
||||
"enemy_1067_snslime": [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],
|
||||
"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},
|
||||
"fx": {"aoe":1,"dodge":8,"dp":5,"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"
|
||||
"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":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":7,"dp":6,"garrison":2,"garrisonGrant":1,"palsy":2,"revive":3},
|
||||
"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": {
|
||||
"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,
|
||||
"seed": 2456427706,
|
||||
"waveId": "act1autochess_h05",
|
||||
"time": 230,
|
||||
"ticks": 6900,
|
||||
"reason": "timeout",
|
||||
"killed": 35,
|
||||
"time": 226.63,
|
||||
"ticks": 6799,
|
||||
"reason": "cleared",
|
||||
"killed": 42,
|
||||
"total": 179,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 1045,
|
||||
"rngDraws": 981,
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_5_08_b",2,"uniequip_002_acfend",2051.95,1,164,4,77661,36640,0,117,3],
|
||||
["p1",2,"op","chess_char_5_14_b",2,"uniequip_002_acpion",1904,1,194,9,521070,9584,0,48,8],
|
||||
["p1",3,"op","chess_char_5_19_b",0,"uniequip_002_sharp2",4154.5,1,204,5,256988,30222,0,77,3],
|
||||
["p1",4,"op","chess_char_5_07_b",2,"none",2619.79,1,203,2,42832,27659,0,38,3],
|
||||
["p1",5,"op","chess_char_5_13_b",2,"uniequip_002_acguad",3411,1,205,4,86863,13306,0,44,2],
|
||||
["p1",6,"op","chess_char_5_17_b",2,"uniequip_002_acspec",1448,1,189,4,87684,26616,0,145,0],
|
||||
["p1",7,"op","chess_char_5_10_b",2,"none",1131,1,4,0,76667,0,0,155,4],
|
||||
["p1",8,"op","chess_char_5_11_b",2,"uniequip_002_acmedc",2262.4,1,5,0,0,0,110120,78,3],
|
||||
["p1",9,"op","chess_char_5_12_b",2,"uniequip_002_acsupo",1430,1,11,2,101246,0,0,136,3],
|
||||
["p1",10,"op","chess_char_5_15_b",2,"none",1510,1,13,0,87081,0,0,232,4],
|
||||
["p1",11,"op","chess_char_5_18_b",2,"uniequip_002_acnipe",2380.5,1,6,5,303540,0,0,167,3],
|
||||
["p1",12,"op","chess_char_5_20_b",2,"uniequip_002_acsupo",1430,1,14,0,94405,0,0,125,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,201,14,520028,10508,0,46,6],
|
||||
["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",3334,1,205,2,42880,20656,0,36,3],
|
||||
["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,188,4,90888,27092,0,116,0],
|
||||
["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,77968,77,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,83399,0,0,215,4],
|
||||
["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,92485,0,0,125,3],
|
||||
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
|
||||
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null],
|
||||
["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {
|
||||
"enemy_1072_dlancer": [1,1,0,1609,37150],
|
||||
"enemy_1081_sotisd": [1,0,1,194,28396],
|
||||
"enemy_1092_mdgint": [1,0,1,0,505],
|
||||
"enemy_1116_liprr": [1,0,1,0,6095],
|
||||
"enemy_1116_liprr_2": [1,0,1,0,2364],
|
||||
"enemy_1118_lidbox_2": [1,0,1,0,1344],
|
||||
"enemy_1081_sotisd": [1,0,1,749,28802],
|
||||
"enemy_1092_mdgint": [1,0,1,0,0],
|
||||
"enemy_1116_liprr": [1,0,1,0,7850],
|
||||
"enemy_1116_liprr_2": [1,0,1,0,1829],
|
||||
"enemy_1118_lidbox_2": [1,0,1,0,809],
|
||||
"enemy_1119_vofsd": [1,0,1,0,889],
|
||||
"enemy_1121_lifbos": [1,0,1,0,1997],
|
||||
"enemy_1249_lysdb_2": [60,14,46,46440,808178],
|
||||
"enemy_1251_lysyta": [63,18,45,8182,493665],
|
||||
"enemy_1254_lypa_2": [48,2,45,87602,355453]
|
||||
"enemy_1121_lifbos": [1,0,1,4806,7013],
|
||||
"enemy_1249_lysdb_2": [60,18,42,37448,866144],
|
||||
"enemy_1251_lysyta": [63,22,41,7583,520464],
|
||||
"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],
|
||||
"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},
|
||||
"fx": {"aoe":90,"displace":4,"dodge":34,"dp":17,"shieldBreak":59,"slash":64,"sp":2,"spGain":10},
|
||||
"snaps": "c4ba1bfb fae78ec3 d95288ac 1e7366a4 dbbd0efb 2511f256 d2703cda dc932034 2d5006eb 8fcfa286 0f2d3b1e af1f7c99 b655c535 e4d7c5af 88362233 8adc2140 c0aab784 c923256c 5e8e81a4 b5c29988 bf00ddb2 6593e2b4 58d326a5"
|
||||
"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":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":120,"displace":8,"dodge":31,"dp":20,"liberate":1,"phase":1,"shieldBreak":60,"slash":48,"sp":1,"spGain":12},
|
||||
"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": {
|
||||
"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],
|
||||
"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},
|
||||
"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": {
|
||||
"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,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 262,
|
||||
"rngDraws": 263,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"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": [
|
||||
["p1",1,"op","chess_char_6_17_b",2,"uniequip_002_acpion",480.36,1,164,9,211459,13918,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",3,"op","chess_char_6_19_b",2,"uniequip_002_acspec",1484,1,166,4,74447,16324,0,138,0],
|
||||
["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,46991,13356,0,106,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",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],
|
||||
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
|
||||
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {
|
||||
"enemy_1006_shield_3": [21,1,20,16907,164045],
|
||||
"enemy_1043_zomsbr": [66,22,44,926,136167],
|
||||
"enemy_1006_shield_3": [21,1,20,16907,164634],
|
||||
"enemy_1043_zomsbr": [66,22,44,908,136175],
|
||||
"enemy_1162_magmot": [1,0,1,4704,11483],
|
||||
"enemy_1165_duhond": [1,1,0,93,4645],
|
||||
"enemy_1165_duhond_2": [1,0,1,0,0],
|
||||
@@ -567,12 +555,12 @@
|
||||
"enemy_1168_dumage": [1,1,0,1897,7465],
|
||||
"enemy_1168_dumage_2": [1,1,0,4932,10783],
|
||||
"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],
|
||||
"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},
|
||||
"fx": {"aoe":5,"blink":3,"burst":1,"displace":18,"dodge":1,"dp":19,"expose":413,"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"
|
||||
"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":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":4,"blink":3,"burst":1,"displace":18,"dodge":1,"dp":20,"expose":414,"garrison":1,"garrisonGrant":3,"slash":74},
|
||||
"snaps": "fba27448 40f8ddeb 904aa1c4 7f5fd3e3 9795959e b8c7a6c7 f5b1092e b4109451 8082d0cc a86cc61b fb1870c6 9cf94d5d 1d3df05d ceb38c64 2d46f54e 5fd7022a d8ef7fcc 55250098 09b8ad07 d6c97808 bbb9cfcc a2163482 34deba04"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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})`);
|
||||
});
|
||||
Reference in new issue
Block a user