feedback7: merge fb7-unbalance — the official 失衡 (UNBALANCE) after a push / pull (the idea of PR #392 by @xcdoge, re-implemented from PRTS): no walking, attacking or skills while it lasts; pushes by the 推力-位移 time table, pulls by the force window (0.5 / 1 s), static bodies 0.1 s pushed / the window pulled; 弧光锋卫 bleeds 400 / 0.066 s while unbalanced; the client slide uses the same time
- The owner asked to verify the official rule before deciding (research: PRTS 失衡位移机制 / 推与拉 / 游戏数据基础 / 特殊机制,
the client's Rigidbody2D data); the PR's 0.6387·√tiles formula and fear exemption were not taken.
- Grok review: MERGE AFTER FIXES — two HIGH (static pulls, 弧光锋卫's bleed), skills during the hold, husk 重生, exact
frames — fixed on the branch (1db84d79).
- Golden union: bond-miraShip-low differs from HEAD (fewer enemy attacks: 169 → 166 events, same kills) though the
branch alone left it — HEAD's ×1.1 练度 path now displaces an enemy there. Broad node --test 5681 (5679 pass, 0 fail,
2 skipped); lint 0 errors.
This commit is contained in:
commit
0ae2fac2b1
27 files changed
+1452
-1058
No files matched your search
+1
-1
@@ -81,7 +81,7 @@
|
||||
- **阻挡**看接触:干员阻挡中心距离约 0.7 格以内、与它接触的敌人(地面干员挡不住飞行和近地悬浮的敌人)。敌人卡在两名干员之间时,阻挡它的干员倒下、撤退或被晕眩后,另一名仍与它接触、还有空余阻挡数的干员会**立刻接替阻挡**;都没有空位时敌人才会走掉。被冻结或晕眩的敌人同样会被接触到的干员挡住:干员再部署到它身边就会阻挡它,隐匿的敌人也随之破隐(沉睡、浮空、恐惧的敌人仍然挡不住)。迎面走来的敌人会停在干员格子前面。**阻挡了就一定能打到**:任何干员(包括站在近战位的远程干员和召唤物)总能攻击自己阻挡的敌人,不管它在不在攻击范围内、在干员哪一侧,并且优先攻击它——只有速射手例外:攻击范围内有飞行敌人时先打飞行敌人(特性「优先攻击空中单位」,维护者 2026-10-08 的决定,GitHub #220)(医疗干员除外:咒愈师以外的医疗挡住敌人时照常治疗队友,不会攻击它;「停止攻击」类技能期间也除外;技能原文另有限制的也按原文:普罗旺斯二技能开启时不以生命值高于 80% 的敌人为目标,寒檀二技能的冰凌随机落在攻击范围内的地块上)。
|
||||
- 开战时干员按**逐列从左到右、每列从上到下**的顺序部署(最左一列最先,与阿戈尔吞噬「更靠左和靠上」的顺序相同),召唤物在所有干员之后。被阻挡的敌人先打阻挡它的干员;没被阻挡的远程敌人先打嘲讽等级高的,同级时打最后部署的(召唤物、最右一列靠下的干员和刚再部署的干员更容易挨打)。隐匿的干员只会被它阻挡的敌人攻击,没被它挡住的敌人的溅射、爆炸、范围技能、留下的伤害区域(包括假想敌:蚀裂被击倒后喷出的毒雾)以及深池伙友卫队、扎罗的减攻速光环也落不到它身上(和官方一样;写明「无视无法选择」的效果如污染秽蚀照常能打到,寒霜的减攻速光环和“墓碑”这类地图效果照常生效);**迷彩**(如忍冬三技能期间击倒敌人后、寒芒克洛丝一技能)同样只会被它阻挡的敌人攻击,也显示为半透明,但躲不开溅射、爆炸和范围伤害(同时打范围内所有单位的普通攻击——如“斩胄之剑”“破胄之锤”“灵幛”——打不到它),也不算隐匿(不触发叙拉古等「隐匿时」效果)。叙拉古的隐匿按时(32 秒 + 每层 0.4 秒)结束;忍冬的迷彩按官方持续到她下一次开技能。**蒂比起飞**期间只挡飞行敌人,地面敌人不会选她为目标(普通攻击、溅射、技能范围、燃烧区域和要选中目标的减益都落不到她身上);飞行和悬浮敌人、写明「无视无法选择」的效果(如污染秽蚀)照常能打到她;地面敌人的光环和全场效果(如“墓碑”让全场攻击力、防御力减半)、她攻击敌人时招来的反制(如重装侦察兵的暴露)照常生效,起飞前已挂上的持续伤害也照常跳。
|
||||
- **技能自动释放**按官方「技能策略」:一般的手动技能在技能就绪、即将攻击 / 治疗且初始攻击范围内有敌人(治疗技能:有受伤的队友)时释放;**带独立技能范围**的技能(如德克萨斯「剑雨」、凛御银灰「御敌的锋锐」、锏「归于宁静」,不含「攻击范围扩大」类)在**技能范围内出现敌人**时就释放,不必先攻击;**开启后攻击范围比平时大**的手动技能(如莫斯提马「序时之匙」、银灰「真银斩」、史尔特尔「黄昏」、白面鸮「脑啡肽」)在**开启后的攻击范围内出现敌人**(治疗技能:有受伤的队友)时就释放,不必等敌人走进平时的攻击范围,这是本作按玩家反馈有意与官方不同的地方;**重装干员**的手动技能在受到伤害时释放(例外:深巡、雷蛇的二技能,号角的二、三技能,灰毫的一、二技能按玩家反馈改为攻击范围内有敌人时就释放(深巡二技能按开启后更远的攻击范围判断),余的二技能「厚礼上宾」改为周围两格(技能范围)内有敌人时就释放,这是本作有意与官方不同的地方;深巡一技能仍要受到伤害);执旗手 / 战术家 / 吟游者技能就绪即释放,解放者 / 阵法术师在初始攻击范围内有敌人时释放(开启后攻击范围扩大的技能——薄绿「风语」、蜜蜡「沙暴扩散」、卡涅利安「食噬之印」、玛恩纳「未宽解的悲哀」,以及安洁莉娜「秘杖·反重力模式」——同样按开启后的攻击范围判断)。**自动触发**的技能按其本身规则:只作用于队友的(如引星棘刺「度算浪波」、浊心斯卡蒂「同葬无光之愿」、纯烬艾雅法拉「无声润物」)技力满就释放,不用等敌人或伤员;立即生效、本身不是一次攻击的技能(如度算浪波、先锋的回费技能)两次释放之间至少隔一个攻击间隔(释放本身不占用普通攻击),攻速越快放得越勤,迅捷返还的技力再多也不会每一帧都放(GitHub #298);伺夜「领袖的呼唤」「领袖的馈赠」只在场上有狼群时释放:狼群处于战术点形态时,「领袖的呼唤」也会释放并让它立刻带着 1 只狼影回到场上(狼影未满时改为加 1 只狼影,已满时把狼群的生命值回满),「领袖的馈赠」也会释放(立即获得费用,强化留给回来的狼群的下一次攻击);又如古米「备用军粮」在身边(技能范围内)有受伤的队友时就会发动,下一次攻击改为治疗该队友(不用先接敌;她的二技能「食粮烹制」是手动技能,按重装规则在受到伤害时释放);塞雷娅「急救」在她即将攻击时、身边有生命不高于一半的队友才发动,这次攻击直接改为治疗;新约能天使二技能的护盾按官方给攻击范围内**仇恨最高**的队友(嘲讽等级高的优先,同级时给最后部署的),不一定是站在最前面挨打的那个。手动技能的自动释放有 3 秒冷却:开战部署后先等 3 秒,之后同一干员两次自动释放至少间隔 3 秒(可充能的技能不会同时放完)。白铁的「铁钳号·原型机」能被我方干员攻击(不受伤害):它在攻击范围 / 技能范围内时,能作用到它的技能会像遇到敌人一样自动开启并消耗弹药(项目维护者 2026-10-08 按官方体验确认;白铁™多功能平台不会被攻击);技能效果只会挑选敌人、打不到它的技能(如德克萨斯「剑雨」)不会为它开启,留给真正的敌人。
|
||||
- **推开 / 拉拽**按官方「力度 − 重量」决定距离:例如野鬃二技能(中等力度)把重量 0 / 1 / 2 / 3 的敌人推开约 2.1 / 1.7 / 0.4 / 0.1 格,重量 4 以上推不动——轻型敌人反而推得更远。野鬃二技能沿她的朝向推开:正前方 45° 以内按上面的距离,身后、侧面或贴身的敌人只被轻推一下(约 0.4 格以内);琳琅诗怀雅三技能的金币则从她身边向外推开,落在她前方 2–4 格的范围(官方「范围2-4」)内的地面敌人和她阻挡的敌人身上。攻击速度最低为 20(沼泽、寒霜等减速叠满时也不会更慢)。
|
||||
- **推开 / 拉拽**按官方「力度 − 重量」决定距离:例如野鬃二技能(中等力度)把重量 0 / 1 / 2 / 3 的敌人推开约 2.1 / 1.7 / 0.4 / 0.1 格,重量 4 以上推不动——轻型敌人反而推得更远。野鬃二技能沿她的朝向推开:正前方 45° 以内按上面的距离,身后、侧面或贴身的敌人只被轻推一下(约 0.4 格以内);琳琅诗怀雅三技能的金币则从她身边向外推开,落在她前方 2–4 格的范围(官方「范围2-4」)内的地面敌人和她阻挡的敌人身上。被推开、拉动的敌人会进入官方的**失衡**状态,这段时间里不走路、也不发动普通攻击:推开按力度减重量的档位持续 0.2–约 1.17 秒(中等力度推重量 1 的敌人为 0.8 秒),拉拽持续 1 秒(力度比重量低 2 档时 0.5 秒,拉到身前后也一样),失衡期间也不会放技能(例如弑君者的闪现)或执行脚本移动(例如枯朽之种俯冲),弧光锋卫则在失衡期间每 0.066 秒受到 400 点真实伤害;推不动的空中单位(静态刚体)被推时停顿 0.1 秒、被拉时停顿整个拉力作用时间;浮空、重生和路线上的瞬移出现都会立刻解除失衡。画面上的滑行也用同样的时间(默认 2 倍速下现实时间减半)。攻击速度最低为 20(沼泽、寒霜等减速叠满时也不会更慢)。
|
||||
- **生命回复不是治疗**(与官方一致):吟游者的特性(魔王、浊心斯卡蒂及其海嗣)、调香师的天赋、瑕光二技能、铃兰三技能、锡人和引星棘刺(一、二技能)的炼金单元给友军的「每秒恢复生命」是提高对方的**生命回复速度**,不是治疗:收割者 / 不屈者 / 武者(如隐德来希、圣约送葬人、折桠)这类「无法被友方治疗」的干员和处于禁疗的干员也能吃到,治疗量加成(如「受到的治疗效果提升」)也不会放大它;铃兰三技能开启后的第一秒没有回复。直接治疗(医疗干员的治疗、技能的「恢复…生命」)仍然对这些干员无效。
|
||||
- **元素损伤条**在单位自己的血条正下方:左边是元素图标,白条是剩余的元素值,只有真正爆发时才会耗尽;爆发后条变成元素的颜色、图标闪烁,在冷却期间慢慢回满(这段时间不会再积累元素损伤)。
|
||||
- **弹药、狼影和「我执」**也画在血条上(0.2.2):弹药类技能(如隐现的二技能,14 发)开启时,血条下方的技力条换成**分格的黄色弹药条**——一格一发,打一发少一格,补弹时回来;这类技能开启期间脚下不再有持续的金色光环。伺夜的狼群在血条下方有一排**菱形**,亮的是剩下的狼影,暗的是已用掉的空位(最多 3 个),进入战术点形态时消失。斩业星熊进入「我执」后,绿色血条停在 1 点,超出的伤害涨成血条上的**红条**,红条满了才会倒下。这些只是显示,不改变任何战斗数值。
|
||||
|
||||
+4
-4
@@ -897,8 +897,8 @@ instance) and skip `'counter'` / `'reflect'` damage. When the guard trips, the l
|
||||
| `moveRedeploy(unit, r, c, { clearSp })` | a 【移动】 (PRTS 术语释义: "不退场,以当前血量在目标位置部署", a special retreat + redeploy): `relocate`'s checks (false = refused, nothing changed), then a new deployment (`deploySeq` / `aggroSeq` / `deployedAt`) and `deploy {initial:false, move:true}` (deploy effects fire again); no `die` / `death`, timer or cost (不屈 / 阿戈尔's revive never see it); HP, buffs and a running skill are kept (owner's deviation, DESIGN §22.3); `clearSp` empties the SP before the deploy handlers run — 乌尔比安 S3's move (kits/ops/chess_char_5_05-ulpia.js) and 【返回】 (`clearSp`; also the 从不混淆的方向 fallback, content/tokens.js) |
|
||||
| `redeploy(unit, { free=true, tile, keepSp })` | immediate (re)deployment of a dead/retreated ally (full HP, `deploy {initial:false}`); `free: false` pays `base.cost` DP (refused without it); without `tile` it lands on the unit's rest tile (`restTile`: where a knocked-out operator lies, else home); `tile: [r, c]` lands on that tile once (home unchanged; refused when off-rect, occupied or a knocked-out operator's tile, no fallback); `keepSp` keeps SP/charges (保留技力), restored before `deploy` fires — but not for a skill that costs no SP, which the reset re-arms as at every deployment (伊内丝 S3 casts again on a 突袭 landing) — 突袭 raids, 阿戈尔 / 不屈 revives where the unit lies |
|
||||
| `refreshRange(unit)`, `setExtraRange(unit, keys)`, `rangeChanged(unit)` | rebuild the ranges after changing `unit.rangeGrid` (流形 copies); extra targetable tiles (absolute keys; merged into every later rebuild until set again; `null` clears; never in `baseRangeKeys`): 蕾缪安 wanted, 维娜 S3 |
|
||||
| `push(enemy, force, {from, dir, fixed, fixedAngle, inward, effect})`, `pull(enemy, force, {to, center, stop})`, `pullToFront(enemy, unit, force)`, `forceLevel(enemy, force)`, `pushDistance(enemy, force, {effect})` | the official 位移 (PRTS 游戏数据基础 §重量公式 / 推与拉; user playtest #6 item 14): 受力等级 = 力度 (微小力 −1, 小力 0, 中力 1, 较大力 2, 大力 3 …) − current 重量等级 (massLevel, 失重 counts). Push distance per level (`constants.js PUSH_TILES`, PRTS 推与拉's 弹道 column): ≤ −3 → 0, −2 → 0.12, −1 → 0.44, 0 → 1.7, 1 → 2.14, 2 → 2.96, ≥ 3 → 3.53 tiles; `effect` = a 特效 push (`PUSH_TILES_EFFECT`: −2 → 0.085, −1 → 0.374, 0 → 1.562, 1 → 1.987, 2 → 2.773, ≥ 3 → 3.331 — 见行者 S1 / S2, `PUSH_EFFECT_SKILLS`; every other pusher uses the 弹道 column [ASSUMED]); radial (away from `from`; the client's buff template `knockback[relative]`: 莫斯提马 S3, 山 S3, 琳琅诗怀雅 S3 — also PRTS 备注 "推开效果为径向推动") unless `dir` (directional; template `knockback[dir]` = Knockback {`_useSourceDirection` true, `_decreaseForceLevelWhenNotInDirection` 2}: 推击手, 野鬃 S2 "往攻击方向" (charpack char_496_wildmn: buff `wildmn_s_2[force]`) — > 45° off or < 0.25 tile ⇒ radial and level −2; `fixed` waives both (圣聆初雪 S1 朝部署方向, `KnockBackWithCharacterDirection`), `fixedAngle` only the angle (见行者 S2)); `inward` = a push towards `from` (薄绿 S2), stopping at the 急停 radius. Pull: level ≥ 0 → to `to` / the 急停 radius around `center`, −1 → 35 % of the way, −2 → 0.03, ≤ −3 → 0; `pullToFront` aims at the 拉力起点 0.5 tile ahead of the unit with the 急停 radius 0.6708 around it (never moves an enemy the unit itself blocks — nor does a pull towards an ally's centre, e.g. the 流形 S3 pulse) A 静态刚体 (data `staticBody`: every air unit of the mode except “炎佑”, plus 昆图斯 — PRTS 特殊机制 "可以进入失衡状态…但物理层面上无法产生任何速度或移动", "与单位的行动方式无关") moves 0 from every source while the skills that reach it still hit it (薄绿 S2, 锏 S3, the 钩索师 …; player report after 0.1.0) |
|
||||
| `displace(enemy, {x, y}, tiles)` | the raw mover behind push / pull: along passable tiles (by `motion`: FLY in the rect, else ground-passable), no weight rule; nothing for 失衡免疫 (`noDisplace`: 近地悬浮 incl. 喷气人's 飞行模式, 浮空, the 胄 parts, 守墓石像's statue and flight), 静态刚体 (`def.staticBody`) and leaders (`_displaceable`); unblocks + re-paths |
|
||||
| `push(enemy, force, {from, dir, fixed, fixedAngle, inward, effect})`, `pull(enemy, force, {to, center, stop})`, `pullToFront(enemy, unit, force)`, `forceLevel(enemy, force)`, `pushDistance(enemy, force, {effect})` | the official 位移 (PRTS 游戏数据基础 §重量公式 / 推与拉; user playtest #6 item 14): 受力等级 = 力度 (微小力 −1, 小力 0, 中力 1, 较大力 2, 大力 3 …) − current 重量等级 (massLevel, 失重 counts). Push distance per level (`constants.js PUSH_TILES`, PRTS 推与拉's 弹道 column): ≤ −3 → 0, −2 → 0.12, −1 → 0.44, 0 → 1.7, 1 → 2.14, 2 → 2.96, ≥ 3 → 3.53 tiles; `effect` = a 特效 push (`PUSH_TILES_EFFECT`: −2 → 0.085, −1 → 0.374, 0 → 1.562, 1 → 1.987, 2 → 2.773, ≥ 3 → 3.331 — 见行者 S1 / S2, `PUSH_EFFECT_SKILLS`; every other pusher uses the 弹道 column [ASSUMED]); radial (away from `from`; the client's buff template `knockback[relative]`: 莫斯提马 S3, 山 S3, 琳琅诗怀雅 S3 — also PRTS 备注 "推开效果为径向推动") unless `dir` (directional; template `knockback[dir]` = Knockback {`_useSourceDirection` true, `_decreaseForceLevelWhenNotInDirection` 2}: 推击手, 野鬃 S2 "往攻击方向" (charpack char_496_wildmn: buff `wildmn_s_2[force]`) — > 45° off or < 0.25 tile ⇒ radial and level −2; `fixed` waives both (圣聆初雪 S1 朝部署方向, `KnockBackWithCharacterDirection`), `fixedAngle` only the angle (见行者 S2)); `inward` = a push towards `from` (薄绿 S2), stopping at the 急停 radius. Pull: level ≥ 0 → to `to` / the 急停 radius around `center`, −1 → 35 % of the way, −2 → 0.03, ≤ −3 → 0; `pullToFront` aims at the 拉力起点 0.5 tile ahead of the unit with the 急停 radius 0.6708 around it (never moves an enemy the unit itself blocks — nor does a pull towards an ally's centre, e.g. the 流形 S3 pulse) A 静态刚体 (data `staticBody`: every air unit of the mode except “炎佑”, plus 昆图斯 — PRTS 特殊机制 "可以进入失衡状态…但物理层面上无法产生任何速度或移动", "与单位的行动方式无关") moves 0 from every source while the skills that reach it still hit it (薄绿 S2, 锏 S3, the 钩索师 …; player report after 0.1.0). **失衡 (UNBALANCE)** (PR #392's idea, its timing re-done from the sources): the move stays instant, then the enemy is held in the 失衡 state — a state machine, not a status (PRTS 失衡位移机制; 异常效果 「失衡…不属于异常效果」: no stun, no immunity, SP untouched), `enemy.unbalanceUntil`, read by `ai.js updateEnemy`: no walking (恐惧 / 诱导 included — no fear exemption) and no normal attack started, a swing short of its frame cut, the attack clip's stand ended; and no skill (失衡免疫 「失衡期间无法自主移动、发动攻击、使用技能」): content skills wait (`enemies/helpers.js canCast(e, sil, battle)`, `unbalancedNow`), so do blinks (`blinkForward`) and scripted moves (枯朽之种's dive, the 碎铳之簧 / 铳 charges), and 乌顶巨角卢鲁's clash waits for its end. Left running on purpose: checks the state does not stop (异常效果: 水遁忍者's damage — 「仍然能正常造成伤害」), passive auras and terrain / periodic effects (no skills), death / damage-taken triggers, skill cooldowns (only the cast waits) — and 弧光锋卫's bleed, which is the state's own (天赋 「处于失衡状态时,每0.066s受到400点无来源真实持续伤害」: every 0.066 s for as long as it lasts — until 0.2.2 one hit per tile moved [ASSUMED]). Length, game seconds: a push — the 位移时间 of its 受力等级, PRTS 游戏数据基础 推力-位移近似对应表 (`constants.js PUSH_UNBALANCE`: −2 → 0.2, −1 → 0.4, 0 → 0.8, 1 → 0.9, 2 → 32/30, ≥ 3 → 35/30), the level push() computes (the −2 correction included), kept when the 特效 column or a wall shortens the slide ([ASSUMED] for the wall; a wall at the first step → the 0.1 s floor [ASSUMED]); a pull — its force window, 推与拉 「作用时间默认为 1 s;若本次受力等级 < −1,作用时间改为 0.5 s」 (`PULL_UNBALANCE` / `_WEAK`), to its end after the 急停 too (「目标将仍保持失衡状态至拉力作用时间结束为止」), none at ≤ −3; a 静态刚体 hit by a force > 0 — no movement, the state while the force acts (特殊机制 静态刚体: 「在失去施力后立刻」 out, 「0.1 秒保底」): a push 0.1 s (`UNBALANCE_MIN`; a push's force is instant), a pull its window; 失衡免疫 and leaders never. 浮空 ends it (术语释义 浮空), so do a 重生 (重生 / 逐火's 余烬) and a route APPEAR relocation — forced state switches (失衡位移机制). The end compares with 1e-9 so a float-summed 35/30 s keeps its 35 frames. The `displace` fx carries the length (`dur`): the client's slide takes as long (render/units.js slideTo). PR #392's 0.6387·√tiles (from the page's μ = 0.5 单位假设) and iLine truncated
|
||||
| `displace(enemy, {x, y}, tiles, {dur})` | the raw mover behind push / pull: along passable tiles (by `motion`: FLY in the rect, else ground-passable), no weight rule, no 失衡 state of its own (push / pull add it; `dur` only rides on its `displace` fx); nothing for 失衡免疫 (`noDisplace`: 近地悬浮 incl. 喷气人's 飞行模式, 浮空, the 胄 parts, 守墓石像's statue and flight), 静态刚体 (`def.staticBody`) and leaders (`_displaceable`); unblocks + re-paths |
|
||||
| `after(seconds, fn, {owner})`, `every(seconds, fn, {owner, immediate})` | return `{cancel()}`; fn(battle, sched) |
|
||||
| `fx(kind, params)`, `rng()` (+ `rng.int/range/chance/pick/shuffle/weighted`) | never use Math.random; for distances, angles and powers use `hypot`, `sin`, `cos`, `atan2`, `powi` from `server/sim/detmath.js`, never `Math.hypot` / `sin` / `cos` / `atan2` / `pow` / `**` (their last bits differ between browsers) |
|
||||
| `forceAttack(unit, targets?, { noAmmo })` | an immediate attack with the current profile (hooks, attack SP, a running ammo skill's bullet); `noAmmo: true` = spends no bullet and emits no `ammoUsed` (圣约送葬人 extra attack). Returns true when it attacked |
|
||||
@@ -1520,8 +1520,8 @@ id, `loadout` the selection with `diy` = the checked pick `{ charId, skillIndex,
|
||||
`diy` (spec.js keeps `charId` / `skillIndex` / `uniEquipId` when well-formed); Battle fields a DIY slot only with a legal
|
||||
pick (none ⇒ no unit), and each unit resolves its own pick — two players filling one slot id differently are exact.
|
||||
Assumptions taken here (documented choices): element burst numbers for necrosis/apoptosis; unspawned enemies at timeout
|
||||
are dropped (not leaks); geek drain is non-lethal; tactician reinforcement stats; displacement is instantaneous (the official 失衡 slide over ≈ 0.4–1.2 s is not
|
||||
modelled — only its distance, `push` / `pull`); pushes PRTS does not classify use the 弹道 distance column (`PUSH_TILES`);
|
||||
are dropped (not leaks); geek drain is non-lethal; tactician reinforcement stats; displacement is instantaneous, followed by the 失衡 hold (push: the 位移时间 table; pull: the force
|
||||
window — `push` / `pull`; a wall-shortened slide keeps its row time, a wall at the first step gets the 0.1 s floor); pushes PRTS does not classify use the 弹道 distance column (`PUSH_TILES`);
|
||||
platforms/mounds are ground obstacles that elevate operators; the generic kit maps 凋亡 to `apoptosis` (侵蚀 has no element key
|
||||
yet — enemy content must pick one); 抵抗 covers the control statuses of `RESIST_STATUSES` (the official term lists 晕眩/寒冷/
|
||||
冻结/恐惧/诱导…, the rest follow the operator kits that grant it) and caps at 0.95; tactical points prefer enemy path tiles.
|
||||
@@ -113,7 +113,7 @@ Base stats (from data): `maxHp, atk, def, res` (0–100), `aspd` (100 base), `ba
|
||||
|
||||
DamageInfo: `{ amount (pre-mitigation), type: 'phys'|'arts'|'true'|'element', element?: 'burn'|'necrosis'|'neural'|'apoptosis', atkScale, defIgnoreFlat, defIgnorePct, resIgnoreFlat, resIgnorePct, mul (multiplier), canDodge, isSkill, isSplash, ignoreSelect (no selection — a 无视无法选择 ability, a direct pick, a debuff's tick: it reaches an airborne 起飞 ally, §21.22), tags[] }`.
|
||||
|
||||
Engine helpers (content must use these, never touch internals): `battle.dealDamage(source, target, dmgInfo)`, `battle.heal(source, target, amount, {overheal=false})`, `battle.applyStatus(target, key, { duration, source, value })`, `battle.addBuff(unit, buff)`, `battle.removeBuff(unit, key)`, `battle.spawnToken(ownerUnit|playerId, tokenId, row, col, opts)`, `battle.spawnEnemy(enemyKey, { routeIndex, pos, mods, tag })`, `battle.addProjectile({ from, to|target, speed, onHit, visual })`, `battle.push(e, force, { from, dir, fixed, fixedAngle, inward, effect })` / `battle.pull(e, force, { to, center, stop })` / `battle.pullToFront(e, unit, force)` / `battle.forceLevel(e, force)` / `battle.pushDistance(e, force, { effect })` (the official 力度 − 重量 tables, §20.3; a 静态刚体 — data `staticBody` — is never moved, §21.9; `battle.displace(e, dir, distance)` is the raw mover), `battle.allySelectable(a, by)` / `battle.alliesFor(by, ownerId)` (friendly selection, skipping 孤立 units, §20.3), `battle.unitsInGrid(unit, grid)`, `battle.enemiesInRadius(x, y, r)` (every enemy: enemy-side auras / heals, collisions), `battle.foesInRadius(x, y, r)` (the enemies an operator's area effect can select — no untargetable, no unblocked unrevealed 隐匿 enemy; PRTS 作战机制 §AOE伤害判定, §21.19), `battle.alliesInRadius(x, y, r, ownerId?)`, `battle.addLayers(playerId, bondId, n, reason)` (no-op when gains disabled; at most the room left under `BOND_LAYER_CAP` 999 — `shared/constants.js layerGainRoom`, §20.12; records into result), `battle.loseHp(target, amount, { source, from, sourceless })` (流失 — it skips the damage events: no 受击回复, TAKE_DAMAGE, shield or counter, `damage.js isHpLoss`; only for what the official calls 流失 — "N 真实伤害 per second" effects such as 源石溶剂 are `periodicDamage` damage, §21.12; a 物理流失 is first reduced by the target's DEF, 阿戈尔's devour, §21.19; `sourceless` = 无来源, `source` keeps the credit — leader parts pass damage on 1:1 with it, §20.10), `battle.addCoins(playerId, n)`, `battle.fx(kind, params)` (client VFX event), `battle.rng()` (never `Math.random`), `battle.getPlayer(playerId)` (bonds/band/effects view), `battle.redeploy(unit)` (on its rest tile: where a knocked-out operator lies, else its home; `battle.isReservedTile(r, c)` = a tile no automatic placement takes, `battle.downOn(r, c)` = the knocked-out operator lying there, whose tile no ally deploys or moves onto — §21.24), `battle.after(seconds, fn)` (scheduled callbacks), `battle.every(seconds, fn)`.
|
||||
Engine helpers (content must use these, never touch internals): `battle.dealDamage(source, target, dmgInfo)`, `battle.heal(source, target, amount, {overheal=false})`, `battle.applyStatus(target, key, { duration, source, value })`, `battle.addBuff(unit, buff)`, `battle.removeBuff(unit, key)`, `battle.spawnToken(ownerUnit|playerId, tokenId, row, col, opts)`, `battle.spawnEnemy(enemyKey, { routeIndex, pos, mods, tag })`, `battle.addProjectile({ from, to|target, speed, onHit, visual })`, `battle.push(e, force, { from, dir, fixed, fixedAngle, inward, effect })` / `battle.pull(e, force, { to, center, stop })` / `battle.pullToFront(e, unit, force)` / `battle.forceLevel(e, force)` / `battle.pushDistance(e, force, { effect })` (the official 力度 − 重量 tables, §20.3; a 静态刚体 — data `staticBody` — is never moved, §21.9; a push / pull then holds the enemy in its 失衡 state — no walking, normal attack or skill — for the PRTS 位移时间 / force window, 0.2.2, SIM.md §6; `battle.displace(e, dir, distance)` is the raw mover), `battle.allySelectable(a, by)` / `battle.alliesFor(by, ownerId)` (friendly selection, skipping 孤立 units, §20.3), `battle.unitsInGrid(unit, grid)`, `battle.enemiesInRadius(x, y, r)` (every enemy: enemy-side auras / heals, collisions), `battle.foesInRadius(x, y, r)` (the enemies an operator's area effect can select — no untargetable, no unblocked unrevealed 隐匿 enemy; PRTS 作战机制 §AOE伤害判定, §21.19), `battle.alliesInRadius(x, y, r, ownerId?)`, `battle.addLayers(playerId, bondId, n, reason)` (no-op when gains disabled; at most the room left under `BOND_LAYER_CAP` 999 — `shared/constants.js layerGainRoom`, §20.12; records into result), `battle.loseHp(target, amount, { source, from, sourceless })` (流失 — it skips the damage events: no 受击回复, TAKE_DAMAGE, shield or counter, `damage.js isHpLoss`; only for what the official calls 流失 — "N 真实伤害 per second" effects such as 源石溶剂 are `periodicDamage` damage, §21.12; a 物理流失 is first reduced by the target's DEF, 阿戈尔's devour, §21.19; `sourceless` = 无来源, `source` keeps the credit — leader parts pass damage on 1:1 with it, §20.10), `battle.addCoins(playerId, n)`, `battle.fx(kind, params)` (client VFX event), `battle.rng()` (never `Math.random`), `battle.getPlayer(playerId)` (bonds/band/effects view), `battle.redeploy(unit)` (on its rest tile: where a knocked-out operator lies, else its home; `battle.isReservedTile(r, c)` = a tile no automatic placement takes, `battle.downOn(r, c)` = the knocked-out operator lying there, whose tile no ally deploys or moves onto — §21.24), `battle.after(seconds, fn)` (scheduled callbacks), `battle.every(seconds, fn)`.
|
||||
|
||||
### 5.5 Combat rules (engine)
|
||||
|
||||
@@ -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 — a 速射手's air priority (优先攻击空中单位) excepted, which comes before the enemy it blocks (the owner's decision of 2026-10-08, GitHub #220) — ("可以选择且优先选择阻挡单位", 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); 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).
|
||||
- **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) and holds the enemy in its 失衡 state (0.2.2: no walking, no attack started, no skill — PRTS 失衡位移机制). 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).
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
| 摩擦是谁的参数 | **地板(地形)+ 单位质量**,**不是**技能参数:`GrasslandType { NORMAL_LAND, ICE_LAND, SLIME_LAND }`,每格是一条 `GrasslandData { modeIdx, grasslandType, additionalFriction }`,运行时还会被 `UpdateFrictionFactor` / `RestoreFrictionFactor` 临时改写 |
|
||||
| 卫戍协议里有几种地板 | **实际只有普通地面**:11 张地图共 18 种格子字符,无冰面/黏液 ⇒ 本模式下摩擦恒定,滑行时长**不必按地板分档** |
|
||||
| 飞行目标怎么算 | **没有独立的空中摩擦**(`boatAirFactor` / `m_airBase` 属于"船"玩法):飞行用的是**同一套**公式(单位摩擦 × 所在格子的 `additionalFriction`);差别只在**运动模式**(`ENEMY_MOTION_TYPE_FLY`、`HEIGHT_CHANGED_TO_FLY_BLOCK_MOTION_MODE` ⇒ 忽略地面阻挡),以及**失衡免疫 / 静态刚体**的空中单位根本不可位移 |
|
||||
| 曲线形状 | 恒定减速 ⇒ `d/D = 2k − k²`(ease-out quad)、`T ∝ √D`;客户端用的 `T = 0.14·√D`(夹 0.12–0.45 s)是我们拟定的 [ASSUMED],没有来源给出官方时长 |
|
||||
| 曲线形状 | 恒定减速 ⇒ `d/D = 2k − k²`(ease-out quad) |
|
||||
| 推多久 / 拉多久 | **失衡(UNBALANCE)状态机**的时长(0.2.2,PR #392 的思路、按来源重做):推 = PRTS 游戏数据基础「推力-位移近似对应表」的**位移时间**(受力等级 −2/−1/0/1/2/≥3 → 0.2 / 0.4 / 0.8 / 0.9 / 32⁄30 / 35⁄30 游戏秒,正好是 30 fps 的整帧);拉 = 推与拉的**拉力作用时间**(1 s,受力等级 < −1 时 0.5 s,急停后仍保持到结束);静态刚体受力 > 0 时 0.1 s 保底。客户端滑行用同一段游戏时间(默认 2 倍速 ⇒ 现实时间减半);`T = 0.14·√D` 只留作旧录像(fx 不带 `dur`)的回退 [ASSUMED] |
|
||||
|
||||
## 1. 官方类与字段(`global-metadata.dat`)
|
||||
|
||||
@@ -101,14 +102,17 @@ p ×77(预览栏) d ×76(装置) S ×66(起点) I / E ×33(路
|
||||
|
||||
## 5. 客户端的做法(本次实现)
|
||||
|
||||
`render/units.js`:模拟位移是**瞬时**的(`sim/battle/displacement.js` 在一次调用里走完 0.1 格步进),快照只带终点,
|
||||
所以客户端补上中间帧——`UnitView.slideTo(x, y, { friction })` 建立一次滑行,`update()` **逐帧做速度积分**
|
||||
`render/units.js`:模拟位移是**瞬时**的(`sim/battle/displacement.js` 在一次调用里走完 0.1 格步进),随后敌人处于
|
||||
**失衡状态**(0.2.2:不走路、不发动普通攻击,时长见 §0「推多久 / 拉多久」),快照只带终点,
|
||||
所以客户端补上中间帧——`UnitView.slideTo(x, y, { dur, friction })` 建立一次滑行,`update()` **逐帧做速度积分**
|
||||
(`v ← max(0, v − a·dt)`、`d ← d + v·dt`),终点由模拟给出(**权威**),`v0 = 2D/T`、`a = v0/T` 保证
|
||||
`T` 秒内正好走完 `D` 且速度归零 —— 即官方"冲量 + 摩擦"的等效形式;`T = 0.14·√D`(夹 0.12–0.45 s)是我们拟定的
|
||||
[ASSUMED](让画面按模拟的距离到位;没有来源给出官方时长),`friction` 是**地板因子**(本模式恒为 1;将来有冰面就乘
|
||||
< 1 ⇒ 滑得更久)。`render/app.js` 在插值器开始显示「以带终点的快照结尾」的那一段时就用 `displace` fx 启动滑行:
|
||||
`T` 秒内正好走完 `D` 且速度归零 —— 即官方"冲量 + 摩擦"的等效形式;`T` = `displace` fx 带来的失衡时长 `dur`(游戏秒)÷
|
||||
播放倍率(`ctx.animRate`,默认 2 ⇒ 受力等级 0 的推 0.8 游戏秒 = 0.4 现实秒),滑行结束时模拟的失衡也正好结束;fx 不带
|
||||
`dur`(0.2.2 以前的录像)时才回退到 `T = 0.14·√D`(夹 0.12–0.45 s)[ASSUMED]。`friction` 是**地板因子**(本模式恒为 1;将来有冰面就乘
|
||||
< 1 ⇒ 滑得更久)。PR #392 的 `0.6387·√格` / `0.3194` 是用 PRTS 页面的「μ = 0.5 单位假设」推出来的,页面没有写出、也对不上
|
||||
位移时间表(每档高约一帧),未采用。`render/app.js` 在插值器开始显示「以带终点的快照结尾」的那一段时就用 `displace` fx 启动滑行:
|
||||
到达那张快照之前画面停在原处,之后从原处减速滑入模拟的实时位置(终点,以及敌人随后继续走的路),落地不跳。
|
||||
**模拟层、协议、golden 一律未改。**
|
||||
(PR #380 合入时模拟层、协议、golden 未改;0.2.2 的失衡状态改了模拟层,`displace` fx 多带一个 `dur`。)
|
||||
|
||||
滑行途中死亡:滑行照常走完,尸体停在被推到的位置(模拟里它已经在那里;0.2.2 合入时改掉了原 PR 的「回到出发格」);
|
||||
倒地的单位交给 `setDown` 放到它的格子上。
|
||||
|
||||
@@ -1453,7 +1453,7 @@ export async function createFieldView(host, options = {}) {
|
||||
if (e[1] === 'displace') {
|
||||
const d = e[4] && typeof e[4] === 'object' ? e[4] : null;
|
||||
const v = d && d.id != null ? views.get(d.id) : null;
|
||||
if (v && v.slideTo) v.slideTo(Number(e[2]), Number(e[3]));
|
||||
if (v && v.slideTo) v.slideTo(Number(e[2]), Number(e[3]), Number(d.dur) > 0 ? { dur: Number(d.dur) } : {});
|
||||
}
|
||||
// an enemy's mode change — the `form` of a sim setForm fx (shared/protocol.js fxForm: 掠海漂移体 → 爬行模式, user
|
||||
// playtest #5 item 1; 转译基底's forms, a 逐火 ember and its revival, the leaders' 重生, 守墓石像 — user report after
|
||||
@@ -1513,7 +1513,8 @@ export async function createFieldView(host, options = {}) {
|
||||
if (!Array.isArray(e) || e[0] !== 'fx' || e[1] !== 'displace') return;
|
||||
const extra = e[4] && typeof e[4] === 'object' ? e[4] : null;
|
||||
const v = extra && extra.id != null ? views.get(extra.id) : null;
|
||||
if (v && v.slideTo) v.slideTo(Number(e[2]), Number(e[3]), { at: slideAt });
|
||||
// `dur`: the push / pull's 失衡 time in game seconds (battle/displacement.js) — the slide's length
|
||||
if (v && v.slideTo) v.slideTo(Number(e[2]), Number(e[3]), Number(extra.dur) > 0 ? { at: slideAt, dur: Number(extra.dur) } : { at: slideAt });
|
||||
}
|
||||
let renderT0Battle = null; // game time of the first rendered battle frame (spawn puffs skip the initial wave)
|
||||
let downSeq = 0; // syncBattle pass counter: a view still marked down after a pass left the `down` list
|
||||
|
||||
+13
-13
@@ -178,16 +178,14 @@ const RAISED_Z = 0.12;
|
||||
*/
|
||||
export const FLY_HOVER = 1.3;
|
||||
/**
|
||||
* A push / pull slide (推拉, PR #380 by @xcdoge): real seconds per √tile of travel. The sim displaces at once —
|
||||
* server/sim/battle/displacement.js walks its 0.1-tile steps inside one call — so the snapshots only ever show the
|
||||
* destination, and a pushed / pulled enemy appeared at the end of its path (a ≤ 2.5-tile push in one snapshot interval,
|
||||
* a longer pull snapped). The view now slides there under a constant deceleration (UnitView.slideTo): the official
|
||||
* knockback abilities (`Knockback`, `KnockBackWithDirection`, `DragTowardSource` in the client's metadata) carry an
|
||||
* impulse (`m_force`) and a velocity decaying under friction (`m_friction`, the tile's `additionalFriction`), and the data
|
||||
* has no per-skill duration (docs/research/13-knockback-official.md). The duration T = DISPLACE_SLIDE·√D, kept in
|
||||
* 0.12–0.45 s, is ours [ASSUMED: a fit so the view arrives where the sim put it — no source gives the official
|
||||
* timing]; v0 = 2D/T, a = v0/T then run the distance in exactly T. Purely visual: the sim's timing, damage, blocking and
|
||||
* the golden digests are untouched.
|
||||
* A push / pull slide (推拉, PR #380 by @xcdoge). The sim displaces at once — server/sim/battle/displacement.js walks its
|
||||
* 0.1-tile steps inside one call — and then holds the enemy in its 失衡 (UNBALANCE) state (PR #392's idea): a push for the
|
||||
* 位移时间 of its 受力等级 (PRTS 游戏数据基础 推力-位移近似对应表: 0.2 … 35/30 game s), a pull for its force window (推与拉:
|
||||
* 0.5 / 1 s). The snapshots only ever show the destination, so the view slides there under a constant deceleration
|
||||
* (UnitView.slideTo) for that same span: the `displace` fx carries it (`dur`, game seconds) and the view divides it by the
|
||||
* playback rate (ctx.animRate — 2 game s per real second by default: a 0.8 s push slides 0.4 real s) — it lands as the
|
||||
* sim's state ends. v0 = 2D/T, a = v0/T then run the distance in exactly T. DISPLACE_SLIDE (real s per √tile, kept in
|
||||
* 0.12–0.45 s) is only the fallback for an fx without `dur` (a recording made before 0.2.2) [ASSUMED].
|
||||
*/
|
||||
export const DISPLACE_SLIDE = 0.14;
|
||||
/**
|
||||
@@ -860,7 +858,8 @@ export class UnitView {
|
||||
}
|
||||
|
||||
/**
|
||||
* Slide to a displacement's destination (推拉, the `displace` fx at (x, y)) instead of appearing there (DISPLACE_SLIDE).
|
||||
* Slide to a displacement's destination (推拉, the `displace` fx at (x, y)) instead of appearing there: `opts.dur` = the
|
||||
* fx's 失衡 time in game seconds (real seconds = dur / ctx.animRate), else the DISPLACE_SLIDE·√D fallback.
|
||||
* `at` (game s): the time of the snapshot that carries the destination — render/app.js starts the slide as soon as the
|
||||
* interpolator shows the interval before it, and until the render clock reaches `at` the view holds where it stood
|
||||
* (the sample in between is a lerp or a snap towards the destination). From then on it eases from there into the
|
||||
@@ -877,8 +876,9 @@ export class UnitView {
|
||||
const D = Math.hypot(dx, dy);
|
||||
if (!this.alive || !(D > 0.05)) { this.x = x; this.y = y; this.slide = null; return; }
|
||||
const f = Number.isFinite(opts.friction) && opts.friction > 0 ? opts.friction : SLIDE_FRICTION;
|
||||
// a slippery tile (f < 1) slides longer; the duration still follows √D (constant deceleration)
|
||||
const T = Math.max(0.05, (opts.dur > 0 ? opts.dur : clamp(DISPLACE_SLIDE * Math.sqrt(D), 0.12, 0.45)) / f);
|
||||
// the sim's 失衡 time (game s) at the playback rate; a slippery tile (f < 1) slides longer
|
||||
const rate = this.ctx.animRate?.() || 1;
|
||||
const T = Math.max(0.05, (opts.dur > 0 ? opts.dur / rate : clamp(DISPLACE_SLIDE * Math.sqrt(D), 0.12, 0.45)) / f);
|
||||
// v0 = 2D/T and a = v0/T run the distance in exactly T with the velocity reaching 0 there, integrated in update().
|
||||
// The official turns a displaced unit towards the force (its _dontChangeFaceByDirection is an opt-in flag), while
|
||||
// our facing comes from the snapshot's vx — which points back down the route the enemy resumes after the
|
||||
|
||||
+14
-7
@@ -537,13 +537,17 @@ export function updateEnemy(b, e, dt) {
|
||||
// hidden (teleporting) enemies only advance wait legs
|
||||
const stunned = e.s.flags.stun;
|
||||
if (stunned || e.hidden || e.s.flags.fear) b._cutAttackStand(e);
|
||||
// 失衡 (UNBALANCE, battle/displacement.js _unbalance): a state machine, not a status — 浮空 ends it (PRTS 术语释义 浮空
|
||||
// 「触发浮空时清除受到的推/拉力…无法陷入失衡」); while it lasts the enemy neither walks nor starts a normal attack
|
||||
if (e.s.flags.levitate && e.unbalanceUntil > b.time) e.unbalanceUntil = -Infinity;
|
||||
const unbalanced = b.time < e.unbalanceUntil - 1e-9; // (the 1e-9: a float-summed end such as 35/30 s keeps its frame)
|
||||
const prevCd = e.atkCd;
|
||||
if (e.atkCd > 0 && !stunned && !e.hidden) e.atkCd = Math.max(0, e.atkCd - dt);
|
||||
// a stun / freeze / sleep / 浮空 — or leaving the field — takes the enemy out of its attack: a swing short of its damage
|
||||
// frame does not land, and the attack starts again from its wind-up afterwards (enemyAttack)
|
||||
if (e.swing && (stunned || e.hidden)) e.swing = false;
|
||||
// a stun / freeze / sleep / 浮空 / 失衡 — or leaving the field — takes the enemy out of its attack: a swing short of its
|
||||
// damage frame does not land, and the attack starts again from its wind-up afterwards (enemyAttack)
|
||||
if (e.swing && (stunned || e.hidden || unbalanced)) e.swing = false;
|
||||
// true: an unblocked ranged enemy in the wind-up of its next attack with a target in range (it stands)
|
||||
const winding = !e.hidden && !stunned && enemyAttack(b, e, prevCd);
|
||||
const winding = !e.hidden && !stunned && !unbalanced && enemyAttack(b, e, prevCd);
|
||||
if (!e.alive) return;
|
||||
// a stun / freeze / sleep cuts the attack clip short: no stand left once it ends [ASSUMED]. 沉睡 also holds 不可阻挡
|
||||
// (PRTS 异常效果 SLEEPING = 无法行动+无敌+不可阻挡): a sleeper's blocker lets go — its swing was cut above; Battle.applyStatus
|
||||
@@ -572,12 +576,13 @@ export function updateEnemy(b, e, dt) {
|
||||
if (b.time < e.pauseUntil) return;
|
||||
// standing for an attack clip (attackStand, GitHub #58): only the walking waits — a checkpoint's WAIT keeps running
|
||||
// and DISAPPEAR / APPEAR legs still happen (advanceRoute); drawn idle (the client plays the clip, then Move again);
|
||||
// a 恐惧 runs at once (it cannot attack)
|
||||
const standing = winding || (b.time < e.atkStandUntil && !e.s.flags.fear);
|
||||
// a 恐惧 runs at once (it cannot attack). 失衡 holds the walking too — under 恐惧 / 诱导 as well (失衡免疫 says 「失衡期间
|
||||
// 无法自主移动」; no source exempts a fear)
|
||||
const standing = winding || unbalanced || (b.time < e.atkStandUntil && !e.s.flags.fear);
|
||||
if (e.s.flags.noMove) { e.moving = false; return; } // standing (a 重生, a form change): drawn idle, not walking
|
||||
// 恐惧 (ba.fear "无法被阻挡并四散逃跑"; PRTS 诱发移动: 恐惧 outranks 诱导): runs to random tiles of the fan away from
|
||||
// its source — a self-inflicted fear flutters inside its own tile (fear.js); the route re-plans once it ends
|
||||
if (e.s.flags.fear && !e.hidden) { moveFeared(b, e, dt); return; }
|
||||
if (e.s.flags.fear && !e.hidden) { if (unbalanced) e.moving = false; else moveFeared(b, e, dt); return; }
|
||||
if (e.mem.fearMove) endFear(e);
|
||||
// 诱导 (ba.attract "无法被阻挡并向目标位置移动"): walks to the attract point instead of following its route
|
||||
if (e.s.flags.attract) { if (standing) e.moving = false; else moveAttracted(b, e, dt); return; }
|
||||
@@ -658,6 +663,8 @@ function advanceRoute(b, e, dt, R, standing = false) {
|
||||
if (leg.t === 'appear') {
|
||||
e.x = leg.c; e.y = leg.r;
|
||||
b._setHidden(e, false);
|
||||
// a relocation is a forced state switch: it ends a 失衡 (PRTS 失衡位移机制 「被强制切换至其他状态机」)
|
||||
e.unbalanceUntil = -Infinity;
|
||||
R.legIdx++; R.pts = null;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
// directional), pull, the raw mover displace and who can be moved at all.
|
||||
// Installed on Battle.prototype by server/sim/Battle.js (a method container: never instantiated; `this` is the battle).
|
||||
|
||||
import { COLS, PUSH_TILES, PUSH_TILES_EFFECT, PULL_WEAK_SHARE, PULL_CRAWL, PULL_ORIGIN, PULL_STOP_RADIUS, PUSH_DIRECTIONAL_MIN_DIST } from '../constants.js';
|
||||
import {
|
||||
COLS, PUSH_TILES, PUSH_TILES_EFFECT, PULL_WEAK_SHARE, PULL_CRAWL, PULL_ORIGIN, PULL_STOP_RADIUS, PUSH_DIRECTIONAL_MIN_DIST,
|
||||
PUSH_UNBALANCE, PULL_UNBALANCE, PULL_UNBALANCE_WEAK, UNBALANCE_MIN,
|
||||
} from '../constants.js';
|
||||
import { fin } from './util.js';
|
||||
import { hypot } from '../detmath.js';
|
||||
|
||||
@@ -16,6 +19,18 @@ export function pushTiles(level, effect = false) {
|
||||
return (effect ? PUSH_TILES_EFFECT : PUSH_TILES)[Math.min(3, l)];
|
||||
}
|
||||
|
||||
/** 失衡 (UNBALANCE) of a push of 受力等级 `level`, game seconds (constants.js PUSH_UNBALANCE: ≤ −3 → 0, ≥ 3 → the 3 value). */
|
||||
export function pushUnbalance(level) {
|
||||
const l = Math.round(fin(level, -99));
|
||||
return l <= -3 ? 0 : PUSH_UNBALANCE[Math.min(3, l)];
|
||||
}
|
||||
|
||||
/** 失衡 of a pull of 受力等级 `level`: its force window (PULL_UNBALANCE, 0.5 s below −1), none at ≤ −3 (force 0). */
|
||||
export function pullUnbalance(level) {
|
||||
const l = Math.round(fin(level, -99));
|
||||
return l <= -3 ? 0 : l < -1 ? PULL_UNBALANCE_WEAK : PULL_UNBALANCE;
|
||||
}
|
||||
|
||||
export class BattleDisplacement {
|
||||
/**
|
||||
* 受力等级 of enemy `e` under a push / pull of 力度 `force` (微小力 −1, 小力 0, 中力 1, 较大力 2, 大力 3, 大力+1 4, 特大力 5):
|
||||
@@ -40,7 +55,7 @@ export class BattleDisplacement {
|
||||
* Returns the tiles moved.
|
||||
*/
|
||||
push(e, force, { from = null, dir = null, fixed = false, fixedAngle = false, inward = false, effect = false } = {}) {
|
||||
if (!this._displaceable(e)) return 0;
|
||||
if (!this._displaceable(e)) { this._staticForce(e, force, false); return 0; }
|
||||
let level = this.forceLevel(e, force);
|
||||
const fx0 = fin(from?.x, e.x), fy0 = fin(from?.y, e.y);
|
||||
const vx = e.x - fx0, vy = e.y - fy0, d = hypot(vx, vy);
|
||||
@@ -58,7 +73,12 @@ export class BattleDisplacement {
|
||||
else return 0;
|
||||
let dist = pushTiles(level, effect);
|
||||
if (inward && !(dl > 0)) { ux = -ux; uy = -uy; dist = Math.min(dist, Math.max(0, d - PULL_STOP_RADIUS)); }
|
||||
return this.displace(e, { x: ux, y: uy }, dist);
|
||||
// 失衡 for the row's 位移时间 — also when the 特效 column or a wall shortens the slide [ASSUMED for the wall]; a slide a
|
||||
// wall stops at the first step gets the 0.1 s floor, like a body that cannot move [ASSUMED: 碰撞、停止 is 待补充]
|
||||
const hold = pushUnbalance(level);
|
||||
const moved = this.displace(e, { x: ux, y: uy }, dist, { dur: hold });
|
||||
if (hold > 0) this._unbalance(e, moved > 0 ? hold : UNBALANCE_MIN);
|
||||
return moved;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -68,12 +88,17 @@ export class BattleDisplacement {
|
||||
* the official 拉力起点 in front of an operator. Returns the tiles moved.
|
||||
*/
|
||||
pull(e, force, { to, center = null, stop = PULL_STOP_RADIUS } = {}) {
|
||||
if (!this._displaceable(e) || !to) return 0;
|
||||
if (!to) return 0;
|
||||
// an enemy the puller itself blocks already stands in front of it (at contact) [ASSUMED: no pull, no unblocking]
|
||||
if (center && center.side === 'ally' && e.blockedBy === center) return 0;
|
||||
if (e && center && center.side === 'ally' && e.blockedBy === center) return 0;
|
||||
if (!this._displaceable(e)) { this._staticForce(e, force, true); return 0; }
|
||||
const level = this.forceLevel(e, force);
|
||||
// 失衡 for the force window, whatever the travel: the 急停 zeroes the movement, the state lasts to the window's end
|
||||
const hold = pullUnbalance(level);
|
||||
if (!(hold > 0)) return 0;
|
||||
const tx = fin(to.x, e.x), ty = fin(to.y, e.y);
|
||||
const dx = tx - e.x, dy = ty - e.y, d0 = hypot(dx, dy);
|
||||
if (!(d0 > 1e-6)) return 0;
|
||||
if (!(d0 > 1e-6)) { this._unbalance(e, hold); return 0; }
|
||||
const ux = dx / d0, uy = dy / d0;
|
||||
// travel until inside the stop circle around `center` (smaller root of |e + t·u − c| = stop), else up to `to`
|
||||
let full = d0;
|
||||
@@ -84,9 +109,10 @@ export class BattleDisplacement {
|
||||
const disc = wu * wu - w2 + r * r;
|
||||
if (disc >= 0) { const t = -wu - Math.sqrt(disc); if (t >= 0) full = Math.min(full, t); }
|
||||
}
|
||||
const level = this.forceLevel(e, force);
|
||||
const dist = level >= 0 ? full : level === -1 ? Math.min(full, PULL_WEAK_SHARE * d0) : level === -2 ? Math.min(full, PULL_CRAWL) : 0;
|
||||
return dist > 1e-6 ? this.displace(e, { x: ux, y: uy }, dist) : 0;
|
||||
const dist = level >= 0 ? full : level === -1 ? Math.min(full, PULL_WEAK_SHARE * d0) : Math.min(full, PULL_CRAWL);
|
||||
const moved = dist > 1e-6 ? this.displace(e, { x: ux, y: uy }, dist, { dur: hold }) : 0;
|
||||
this._unbalance(e, hold);
|
||||
return moved;
|
||||
}
|
||||
|
||||
/** Official distance (tiles) a push of 力度 `force` would move `e` on open ground (0 when it cannot be displaced). */
|
||||
@@ -107,12 +133,43 @@ export class BattleDisplacement {
|
||||
* 失衡状态 … 但物理层面上无法产生任何速度或移动" — every air unit of the mode except “炎佑”, plus the boss 昆图斯 (build-data
|
||||
* STATIC_BODIES; player report after 0.1.0, "飞机可以被薄绿的技能拉走"). A skill that reaches it still hits it (its targeting
|
||||
* is the skill's own: 锏 S3, 薄绿, the 钩索师 …); only the movement is 0, so distance-based effects (drag damage, 见行者 S2's
|
||||
* wall stun) come to nothing. [ASSUMED] the 0.1 s 失衡硬直 a 静态刚体 still gets is not modelled (no displacement models it).
|
||||
* wall stun) come to nothing — but a force > 0 still puts it in the 失衡 state for its 0.1 s floor (_staticForce).
|
||||
*/
|
||||
_displaceable(e) {
|
||||
return !!(e && e.alive && e.side === 'enemy' && !e.isBoss && !e.s.flags.noDisplace && !(e.def && e.def.staticBody));
|
||||
}
|
||||
|
||||
/**
|
||||
* A push (`pull` false) / pull of 力度 `force` on a 静态刚体 (data `staticBody`; not 失衡免疫 `noDisplace` — PRTS 特殊机制
|
||||
* 静态刚体: unlike 失衡免疫 it "可以进入失衡状态并启用物理,但物理层面上无法产生任何速度或移动", leaving it 「在失去施力后立刻」 with
|
||||
* 「0.1 秒保底持续时间」): no movement, the state as long as the force acts — a push's is instant (推与拉 「作用时间:瞬间」) so
|
||||
* the UNBALANCE_MIN floor, a pull's is its window (pullUnbalance: 1 s, 0.5 s below −1); a force > 0 (受力等级 ≥ −2) only.
|
||||
* Leaders (the boss pool) stay out.
|
||||
*/
|
||||
_staticForce(e, force, pull = false) {
|
||||
if (!(e && e.alive && e.side === 'enemy' && !e.isBoss && !e.s.flags.noDisplace && e.def && e.def.staticBody)) return;
|
||||
const level = this.forceLevel(e, force);
|
||||
if (level >= -2) this._unbalance(e, pull ? Math.max(UNBALANCE_MIN, pullUnbalance(level)) : UNBALANCE_MIN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Put enemy `e` in the 失衡 (UNBALANCE) state for `dur` game seconds from now (a running one is kept when it lasts longer):
|
||||
* a state machine, not a status (PRTS 异常效果: no 阻止攻击 status — no stun, no immunity, SP untouched) — ai.js
|
||||
* updateEnemy reads `unbalanceUntil`: the enemy neither walks (恐惧 / 诱导 included) nor starts a normal attack, a swing
|
||||
* short of its frame is cut; checks that ignore the state (水遁忍者's damage, content abilities) go on. The state machine
|
||||
* switch ends the attack clip it stood for (PRTS 状态机: the states are exclusive — UNBALANCE, then DEFAULT → MOVE). It
|
||||
* ends with its time, or at once with 浮空 (术语释义 浮空 「触发浮空时清除受到的推/拉力…无法陷入失衡」, ai.js), a 重生 or a route
|
||||
* APPEAR (forced state switches). No skill meanwhile either (失衡免疫 「…使用技能」): content skills, blinks and scripted moves
|
||||
* check `enemies/helpers.js unbalancedNow` (docs/SIM.md lists what deliberately keeps running).
|
||||
*/
|
||||
_unbalance(e, dur) {
|
||||
if (!(dur > 0) || !e || !e.alive) return;
|
||||
const until = this.time + dur;
|
||||
if (!(e.unbalanceUntil >= until)) e.unbalanceUntil = until;
|
||||
this._cutAttackStand(e);
|
||||
e.atkStandUntil = -Infinity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move an enemy `distance` tiles along `dir` = {x, y} (normalised internally) over passable tiles — the raw mover of
|
||||
* push() / pull(), which apply the official 力度 − 重量 rules (content uses those; the old `force` option is gone).
|
||||
@@ -120,7 +177,7 @@ export class BattleDisplacement {
|
||||
* ⇒ no movement (_displaceable). The tiles it may cross follow its movement (`motion`): a hovering enemy walks the
|
||||
* ground, so it stays on ground-passable tiles.
|
||||
*/
|
||||
displace(e, dir, distance) {
|
||||
displace(e, dir, distance, { dur = 0 } = {}) {
|
||||
if (!this._displaceable(e) || !dir) return 0;
|
||||
const dxv = fin(dir.x, 0), dyv = fin(dir.y, 0);
|
||||
const len = hypot(dxv, dyv);
|
||||
@@ -144,7 +201,8 @@ export class BattleDisplacement {
|
||||
this._cutAttackStand(e);
|
||||
e.atkStandUntil = -Infinity;
|
||||
if (e.route) e.route.pts = null;
|
||||
this.fx('displace', { x: e.x, y: e.y, id: e.id });
|
||||
// `dur` (game s): the 失衡 the push / pull gives — the client's slide takes that long (render/units.js slideTo)
|
||||
this.fx('displace', dur > 0 ? { x: e.x, y: e.y, id: e.id, dur } : { x: e.x, y: e.y, id: e.id });
|
||||
}
|
||||
return moved;
|
||||
}
|
||||
|
||||
@@ -137,6 +137,7 @@ export class BattleSpawns {
|
||||
e.atkCd = 0;
|
||||
e.pauseUntil = -Infinity; // content holds (暴鸰's drop)
|
||||
e.atkStandUntil = -Infinity; // standing for its attack clip (ai.js attackStand)
|
||||
e.unbalanceUntil = -Infinity; // 失衡 (UNBALANCE) after a push / pull (battle/displacement.js _unbalance, ai.js)
|
||||
e.atkStandCutAt = -Infinity; // display metadata: when its stand was last cut or ignored (snapshot standCut)
|
||||
e.swing = false; // a normal attack swung, its damage frame not reached yet (ai.js enemyAttack)
|
||||
// every enemy profile starts with the same fields (stable object shapes keep the hot loop's property reads fast);
|
||||
|
||||
@@ -128,6 +128,22 @@ export const PULL_CRAWL = 0.03;
|
||||
export const PULL_ORIGIN = 0.5;
|
||||
export const PULL_STOP_RADIUS = 0.6708;
|
||||
export const PUSH_DIRECTIONAL_MIN_DIST = 0.25;
|
||||
/**
|
||||
* 失衡 (UNBALANCE) — the state machine a force > 0 puts an enemy in (PRTS 失衡位移机制 「当一名敌方单位受到一个任意来源的力,
|
||||
* 并且受力大小 > 0 时,该敌方单位将进入失衡(UNBALANCE)状态机」; 异常效果图鉴/失衡免疫 「失衡期间无法自主移动、发动攻击、使用技能」 —
|
||||
* not an abnormal status: 异常效果 「失衡…不属于异常效果,它是一种状态机」, so it is no stun). Its length in game seconds:
|
||||
* PUSH_UNBALANCE = a push by 受力等级 — PRTS 游戏数据基础 推力-位移近似对应表 「位移时间」 (whole frames at 30 fps: 6, 12, 24,
|
||||
* 27, 32, 35; the 0.1 s floor is inside them); PULL_UNBALANCE / PULL_UNBALANCE_WEAK = a pull's force window — 推与拉 §拉力
|
||||
* 「作用时间默认为 1 s;若本次受力等级 < −1,作用时间改为 0.5 s」, the state lasting to its end after the 急停 too (「目标将仍保持
|
||||
* 失衡状态至拉力作用时间结束为止」); UNBALANCE_MIN = the 失衡硬直 floor (「立刻拥有 0.1 s 的“失衡硬直”。此期间无法解除失衡状态机
|
||||
* ——哪怕已经没有被移动或者受力」) — what a 静态刚体 hit by a push gets (特殊机制 静态刚体 「失衡状态拥有 0.1 秒保底持续时间」; a pulled
|
||||
* one stays for the pull's window, its force lasting that long).
|
||||
* PR #392 by @xcdoge brought the state; its 0.6387·√tiles was derived from the page's μ = 0.5 单位假设, not printed.
|
||||
*/
|
||||
export const PUSH_UNBALANCE = Object.freeze({ '-2': 0.2, '-1': 0.4, 0: 0.8, 1: 0.9, 2: 32 / 30, 3: 35 / 30 });
|
||||
export const PULL_UNBALANCE = 1;
|
||||
export const PULL_UNBALANCE_WEAK = 0.5;
|
||||
export const UNBALANCE_MIN = 0.1;
|
||||
|
||||
/**
|
||||
* Fallback freeze when a second 寒冷 lands and neither the remaining cold nor the incoming one has a duration
|
||||
|
||||
@@ -73,7 +73,7 @@ import { compileRoute } from '../ai.js';
|
||||
import { normalizeRoute } from '../simdata.js';
|
||||
import {
|
||||
ensureInstalled, abOf, attach, T, elem, hurt, targetsNear, allTargets, byPriority, areaAllies, areaAlliesInTiles, fieldAllies,
|
||||
remainingRoute, stayRoute, stepToward, setHits, hitCount, lpLoss, blinkForward, canCast, absorbArts, nthOf,
|
||||
remainingRoute, stayRoute, stepToward, setHits, hitCount, lpLoss, blinkForward, canCast, unbalancedNow, absorbArts, nthOf,
|
||||
} from './enemies.js';
|
||||
import { hypot, powi } from '../detmath.js';
|
||||
|
||||
@@ -539,7 +539,7 @@ function kitBlade(ab, e, b, tpl) {
|
||||
if (P.state === 'dive' && e2.alive && ++P.hits >= (bb.max_hit_cnt ?? Infinity)) shotDown(b2, e2); // 仅1次
|
||||
},
|
||||
tick(b2, e2, a, dt) {
|
||||
if (P.state !== 'dive' || !canCast(e2)) return; // a stunned blade does not fly on
|
||||
if (P.state !== 'dive' || !canCast(e2, false, b2)) return; // a stunned blade does not fly on
|
||||
const t = P.target;
|
||||
if (!stepToward(e2, t.c, t.r, e2.s.moveSpeed * MOVE_SCALE * dt)) return;
|
||||
// arrival: 3×3 stun + DoT (无来源: credited to 胄, as the shell's), then the 初始模式 copy takes over
|
||||
@@ -593,7 +593,7 @@ function kitGun(ab, e, b) {
|
||||
dealt(c, b2, e2) { elem(b2, e2, c.target, 'erosion', e2.s.atk * (T(ab, '1.ep_damage_ratio') ?? 0)); }, // 攻击时附带侵蚀损伤
|
||||
tick(b2, e2, a, dt) {
|
||||
const ch = P.charge;
|
||||
if (!ch) return;
|
||||
if (!ch || unbalancedNow(b2, e2)) return; // (失衡: no scripted move meanwhile)
|
||||
const t = ch.target;
|
||||
const sp = (e2.s.moveSpeed + (T(ab, '3.move_speed') ?? 0)) * MOVE_SCALE * dt;
|
||||
const nx = e2.x, ny = e2.y;
|
||||
@@ -711,7 +711,7 @@ function kitSpring(ab, e) {
|
||||
tick(b, e2, a, dt) {
|
||||
if (!P.up && P.downAt != null && b.time - P.downAt >= regen) raise(b);
|
||||
const d = e2.mem.ab.dash;
|
||||
if (!d) return;
|
||||
if (!d || unbalancedNow(b, e2)) return; // (失衡: no scripted move meanwhile)
|
||||
// 追逐模式 lasts the whole gain (PRTS 末日布道 "令全场的“碎铳之簧”获得5秒增益…增益期间切换为追逐模式"; “碎铳之簧”
|
||||
// 追逐模式 "持续追踪令其进入该形态的场上的假想敌:铳移动" — no arrival clause, unlike the 铳's own 冲锋模式): reaching
|
||||
// the gun does not end it, the spring keeps following the gun until the 5 s are over (PR #347 by @CXUtk; until
|
||||
@@ -820,7 +820,7 @@ function pipeCore(ab, e, b, tpl, { form, prefix }) {
|
||||
tick(b2, e2, a, dt) {
|
||||
P.acc += dt;
|
||||
if (P.acc >= (e2.hpRatio < thr ? lo : hi)) { P.acc = 0; summon(b2, e2); }
|
||||
if (!canCast(e2, false)) return;
|
||||
if (!canCast(e2, false, b2)) return;
|
||||
P.atk += dt;
|
||||
if (P.atk < e2.s.interval) return;
|
||||
const t = b2.rng.pick(echoesOf(b2, form)); // 优先攻击…形态余音
|
||||
@@ -1052,7 +1052,7 @@ function kitLion(ab, e, b) {
|
||||
b2.addBuff(e2, { key: 'boss:advance', persist: true, visible: true, mods: { defPct: T(ab, 'advance.def') ?? 0, resFlat: T(ab, 'advance.magic_resistance') ?? 0 } });
|
||||
b2.fx('phase', { x: e2.x, y: e2.y, id: e2.id, kind: 'lionAdvance' });
|
||||
}
|
||||
if (!canCast(e2, false)) return;
|
||||
if (!canCast(e2, false, b2)) return;
|
||||
P.sp += dt * ENEMY_SP_PER_SEC;
|
||||
if (P.sp >= cost && decree(b2, e2)) P.sp = 0;
|
||||
// 【莫非王土】: ANIMATE_DELAY s after equipment first lies on the field, then once per 王权号令 cycle
|
||||
@@ -1100,7 +1100,7 @@ function kitDeer(ab, e) {
|
||||
b.addBuff(e2, { key: 'boss:madness', persist: true, visible: true, mods: { physTakenMul: 1 - dr, artsTakenMul: 1 - dr } }); // 物理和法术伤害降低
|
||||
b.fx('phase', { x: e2.x, y: e2.y, id: e2.id, kind: 'deerMadness' });
|
||||
}
|
||||
if (!canCast(e2, false)) return;
|
||||
if (!canCast(e2, false, b)) return;
|
||||
P.acc += dt;
|
||||
if (P.acc < e2.s.interval) return;
|
||||
const cands = fairOrder(b, e2, allTargets(b, e2), P);
|
||||
|
||||
@@ -119,7 +119,7 @@ import { LEADER_KITS } from './enemies/leaders.js';
|
||||
import { hypot } from '../detmath.js';
|
||||
|
||||
export {
|
||||
EROSION, EROSION_BURST, HUSK_REBIRTH, nthOf, abOf, attach, T, silenced, canCast, elem, hurt, alliesInTiles,
|
||||
EROSION, EROSION_BURST, HUSK_REBIRTH, nthOf, abOf, attach, T, silenced, canCast, unbalancedNow, elem, hurt, alliesInTiles,
|
||||
targetsNear, allTargets, areaAllies, areaAlliesInTiles, fieldAllies, auraAllies, targetAndArea, byPriority, zone,
|
||||
remainingRoute, stayRoute, spawnChildren, stepToward, setHits, hitCount, isHitCount, setForm, lpLoss, expose,
|
||||
expectedFinal, absorbArts,
|
||||
@@ -260,7 +260,7 @@ function onTick(b, dt) {
|
||||
}
|
||||
if (a.fire && a.cd != null) {
|
||||
a.left -= dt;
|
||||
if (a.left <= 1e-9 && canCast(e, a.sil) && (!a.cond || safe(b, e, () => a.cond(b, e, a)))) {
|
||||
if (a.left <= 1e-9 && canCast(e, a.sil, b) && (!a.cond || safe(b, e, () => a.cond(b, e, a)))) {
|
||||
a.left = Math.max(TICK, a.cd);
|
||||
a.casts = (a.casts ?? 0) + 1;
|
||||
e.skillAnimUntil = b.time + 0.5;
|
||||
|
||||
@@ -7,6 +7,7 @@ import { MOVE_SCALE, COLS, STEALTH_RESTORE } from '../../constants.js';
|
||||
import {
|
||||
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,
|
||||
unbalancedNow,
|
||||
} from './helpers.js';
|
||||
import { hypot } from '../../detmath.js';
|
||||
|
||||
@@ -356,6 +357,7 @@ function reborn({ dur = 0, hpRatio = 1, invincible = 0, onKo = null, during = nu
|
||||
a.state = 'reborn';
|
||||
a.t0 = b.time;
|
||||
a.noAtk = e.profile.noAttack;
|
||||
e.unbalanceUntil = -Infinity; // a 重生 is a forced state change: it ends a 失衡 (PRTS 失衡位移机制 「例如复活」)
|
||||
rebirthCleanse(b, e);
|
||||
e.hp = Math.min(1, e.s.maxHp);
|
||||
if (onKo) safe(b, e, () => onKo(b, e, a));
|
||||
@@ -477,6 +479,7 @@ function husk({ hits, delay, stealthy = true, unblock = false, onHusk = null, ke
|
||||
if (a.state === 'husk' || !(hits > 0) || !(delay > 0)) return false; // the husk's knock-out is the real death
|
||||
a.state = 'husk';
|
||||
a.rebornUntil = b.time + HUSK_REBIRTH;
|
||||
e.unbalanceUntil = -Infinity; // a 重生 is a forced state change: it ends a 失衡 (PRTS 失衡位移机制 「例如复活」)
|
||||
a.noAtk = e.profile.noAttack;
|
||||
a.max = a.max ?? e.base.maxHp;
|
||||
rebirthCleanse(b, e);
|
||||
@@ -601,6 +604,7 @@ const skill = (s, fire, { cond = null, sil = false, cd = null, icd = null, id =
|
||||
|
||||
/** Blink past the blocker along the path (弑君者 / 卢西恩). Returns the start position. */
|
||||
export function blinkForward(b, e, dist) {
|
||||
if (unbalancedNow(b, e)) return null; // 失衡: 「无法…使用技能」 — no blink meanwhile
|
||||
const from = { x: e.x, y: e.y };
|
||||
const R = e.route;
|
||||
let left = dist;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import { TICK, MOVE_SCALE, PROJECTILE_SPEEDS, ALLY_COLLIDER_RADIUS } from '../../constants.js';
|
||||
import {
|
||||
num, T, hurt, targetsNear, allTargets, areaAllies, areaAlliesInTiles, fieldAllies, byPriority, spawnChildren,
|
||||
stepToward, setForm, expose,
|
||||
stepToward, setForm, expose, unbalancedNow,
|
||||
} from './helpers.js';
|
||||
import { enemyAura, allyAura, selfFear, skill, kitSelfFear } from './archetypes.js';
|
||||
import { hypot } from '../../detmath.js';
|
||||
@@ -258,6 +258,7 @@ export const FLY_KITS = Object.freeze({
|
||||
spawn(b, e) { e.profile.noAttack = true; },
|
||||
tick(b, e, a, dt) {
|
||||
if (a.t && !a.t.alive) { a.t = null; b.removeBuff(e, 'ab:dive'); }
|
||||
if (unbalancedNow(b, e)) return; // 失衡: no dive, no blast meanwhile
|
||||
if (!a.t) {
|
||||
const l = targetsNear(b, e, e.base.rangeRadius || 1).sort((p, q) => hypot(p.x - e.x, p.y - e.y) - hypot(q.x - e.x, q.y - e.y));
|
||||
if (!l.length) return;
|
||||
|
||||
@@ -132,7 +132,15 @@ export function T(ab, ...keys) { for (const k of keys) { const v = ab.t[k]; if (
|
||||
|
||||
export function silenced(e) { return !!e.s.flags.silence; }
|
||||
|
||||
export function canCast(e, sil) { return e.alive && !e.hidden && !e.s.flags.stun && !(sil && e.s.flags.silence); }
|
||||
/**
|
||||
* Is enemy `e` in its 失衡 (UNBALANCE) state now (battle/displacement.js _unbalance; the 1e-9 keeps a float-summed
|
||||
* end — 35/30 s — on its frame)? PRTS 异常效果图鉴/失衡免疫: 「失衡期间无法自主移动、发动攻击、使用技能」 — content skills
|
||||
* (canCast), blinks and scripted moves wait for its end.
|
||||
*/
|
||||
export function unbalancedNow(b, e) { return !!(b && e && b.time < e.unbalanceUntil - 1e-9); }
|
||||
|
||||
/** Can enemy `e` use a skill now: alive, on the field, not stunned, not silenced (`sil`), not in its 失衡 state (`b` given). */
|
||||
export function canCast(e, sil, b = null) { return e.alive && !e.hidden && !e.s.flags.stun && !(sil && e.s.flags.silence) && !unbalancedNow(b, e); }
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------------
|
||||
// helpers (exported for bosses.js)
|
||||
|
||||
@@ -6,7 +6,7 @@ import { aggroCmp, areaSelectable } from '../../targeting.js';
|
||||
import { periodicDamage } from '../../damage.js';
|
||||
import {
|
||||
nthOf, T, hurt, alliesInTiles, targetsNear, allTargets, areaAllies, areaAlliesInTiles, auraAllies, targetAndArea,
|
||||
byPriority, setForm, auraBuff, watchDeaths,
|
||||
byPriority, setForm, auraBuff, watchDeaths, unbalancedNow,
|
||||
} from './helpers.js';
|
||||
import {
|
||||
unblockable, maxTargets, onHitStatus, splashAttack, pathKeysAhead, noAirTargets, resist, nthAttackStatus, lowHpBuff,
|
||||
@@ -60,8 +60,6 @@ const XI_CROSS_REACH = 2;
|
||||
* Until 0.1.3: 2.5 / 2.5 / −30, the aura only during the 重生 [ASSUMED]. */
|
||||
const WOLF_RANGE = 1.25, WOLF_AWE_RADIUS = 1.5, WOLF_AWE_ASPD = -50;
|
||||
|
||||
/** 失衡 movement speed that turns 弧光锋卫's per-interval bleed into HP per tile moved [ASSUMED]. */
|
||||
const UNBALANCE_SPEED = 5;
|
||||
|
||||
/** 乌顶巨角卢鲁 【角力对决】: the operator cannot be pushed (fixed tiles) ⇒ "更多伤害" multiplier [ASSUMED]. */
|
||||
const ELK_FAIL_SCALE = 2;
|
||||
@@ -722,7 +720,7 @@ function kitElk(ab) {
|
||||
const ch = P.ch;
|
||||
if (!ch) return;
|
||||
if (e.s.flags.stun || !ch.t.alive || e.blockedBy !== ch.t) { stop(b, e); b.fx('phase', { x: e.x, y: e.y, id: e.id, kind: 'chargeBroken' }); return; }
|
||||
if (b.time + 1e-9 < ch.until) return;
|
||||
if (b.time + 1e-9 < ch.until || unbalancedNow(b, e)) return; // a 失衡 that did not move it holds the clash (no skill meanwhile)
|
||||
stop(b, e);
|
||||
b.fx('explode', { x: ch.t.x, y: ch.t.y, r: 0.5, kind: 'elkClash' });
|
||||
hurt(b, e, ch.t, e.s.atk * ((s && s.bb.atk_scale_s) ?? 1) * ELK_FAIL_SCALE, 'phys');
|
||||
@@ -773,12 +771,23 @@ export const LEADER_KITS = Object.freeze({
|
||||
enemy_2085_skzjxd: (ab) => [unblockable(), frontGuard(T(ab, 'Weakness.damage_resistance') ?? 0, faceCrowd)],
|
||||
enemy_2085_skzjxd_2: (ab) => [unblockable(), frontGuard(T(ab, 'Weakness.damage_resistance') ?? 0, faceCrowd)], // (鸭爵 strategy) same
|
||||
// 失衡 (pushed / pulled by operators)
|
||||
enemy_1328_cbjedi: (ab) => [unbalanced((b, e, a, d) => { // 弧光锋卫 · takes damage in proportion to the distance moved while unbalanced
|
||||
// PRTS 修正 "失衡移动时持续受到真实伤害", "处于失衡状态时,每0.066s受到400点无来源真实持续伤害" (伤害分类: 弧光锋卫失衡状态下的自残
|
||||
// 伤害 is BUFF damage): damage, not a 流失 (player report D1 audit)
|
||||
const v = T(ab, 'unbalanced_bleed.damage') ?? 0, iv = T(ab, 'unbalanced_bleed.interval') ?? 1;
|
||||
if (v > 0 && iv > 0) b.dealDamage(null, e, { ...periodicDamage((v * d) / (iv * UNBALANCE_SPEED)), tags: ['dot', 'periodic', 'unbalanced'] });
|
||||
})],
|
||||
enemy_1328_cbjedi: (ab) => { // 弧光锋卫 · bleeds while in its 失衡 state
|
||||
// PRTS 修正 "失衡移动时持续受到真实伤害", 天赋 "处于失衡状态时,每0.066s受到400点无来源真实持续伤害" (data unbalanced_bleed.damage /
|
||||
// .interval; 伤害分类: 弧光锋卫失衡状态下的自残伤害 is BUFF damage): damage, not a 流失 (player report D1 audit) — every `interval`
|
||||
// s for as long as the state lasts (battle/displacement.js _unbalance: a push's 位移时间, a pull's force window even
|
||||
// after the 急停 or with no movement). Until 0.2.2 one hit in proportion to the tiles moved [ASSUMED], from the position jump.
|
||||
const v = T(ab, 'unbalanced_bleed.damage') ?? 0, iv = T(ab, 'unbalanced_bleed.interval') ?? 0;
|
||||
return [{
|
||||
tick(b, e, a, dt) {
|
||||
if (!(v > 0 && iv > 0) || !unbalancedNow(b, e)) { a.bleed = 0; return; }
|
||||
a.bleed = (a.bleed ?? 0) + dt;
|
||||
while (a.bleed >= iv - 1e-9 && e.alive) {
|
||||
a.bleed -= iv;
|
||||
b.dealDamage(null, e, { ...periodicDamage(v), tags: ['dot', 'periodic', 'unbalanced'] });
|
||||
}
|
||||
},
|
||||
}];
|
||||
},
|
||||
enemy_10112_ymgds: (ab) => [unbalanced((b, e) => { // 冒失的小弟 · stunned after being unbalanced
|
||||
const st = T(ab, 'StunAfterUnbalance.stun') ?? 0;
|
||||
if (st > 0) b.applyStatus(e, 'stun', { duration: st, source: null });
|
||||
|
||||
@@ -2068,7 +2068,7 @@ test(`${nm('enemy_10098_crhro')}: 重生 once after ${tb('enemy_10098_crhro', 'r
|
||||
assert.ok(!e.alive);
|
||||
});
|
||||
|
||||
test('失衡: 弧光锋卫 bleeds per tile pushed; 冒失的小弟 is stunned; 拥霜羽兽 drops its egg (faster, unblockable)', () => {
|
||||
test('失衡: 弧光锋卫 bleeds every 0.066 s while unbalanced; 冒失的小弟 is stunned; 拥霜羽兽 drops its egg (faster, unblockable)', () => {
|
||||
const h = arena({ hooks: ['statusApplied'] });
|
||||
h.step();
|
||||
const j = put(h, 'enemy_1328_cbjedi', [10, 7]);
|
||||
@@ -2076,17 +2076,20 @@ test('失衡: 弧光锋卫 bleeds per tile pushed; 冒失的小弟 is stunned;
|
||||
const p = put(h, 'enemy_10141_xdpeng_2', [12, 7]);
|
||||
h.step(2);
|
||||
const hp0 = j.hp;
|
||||
const moved = h.b.displace(j, { x: 1, y: 0 }, 1, { force: 3 });
|
||||
// 弧光锋卫: its 失衡 state — a 受力等级 0 push holds 0.8 s (24 frames) — bleeds unbalanced_bleed.damage every .interval s
|
||||
// (PRTS "处于失衡状态时,每0.066s受到400点无来源真实持续伤害"): 12 hits; until 0.2.2 one hit per tile moved [ASSUMED]
|
||||
h.b.push(j, j.s.massLevel, { from: { x: j.x - 1, y: j.y } });
|
||||
h.b.displace(g, { x: 1, y: 0 }, 1, { force: 3 });
|
||||
h.b.displace(p, { x: 1, y: 0 }, 1, { force: 3 });
|
||||
h.step();
|
||||
approx(hp0 - j.hp, (tb('enemy_1328_cbjedi', 'unbalanced_bleed.damage') * moved) / (tb('enemy_1328_cbjedi', 'unbalanced_bleed.interval') * 5), 0.05);
|
||||
assert.equal(statuses(h, g.id, 'stun').length, 1);
|
||||
approx(statuses(h, g.id, 'stun')[0].duration, tb('enemy_10112_ymgds', 'StunAfterUnbalance.stun'));
|
||||
assert.ok(p.s.flags.unblockable);
|
||||
assert.equal(p.findBuff('ab:noEgg').mods.moveMul, 1 + tb('enemy_10141_xdpeng_2', 'speed.move_speed'));
|
||||
assert.ok(p.profile.noAttack, '拥霜羽兽 失去蛋的模式: 不进行普通攻击 (no attack, so no stand for its clip)');
|
||||
assert.equal(typeof p.profile.canTarget === 'function' && p.profile.canTarget({ isFlying: true }), false, '拥霜羽兽: 不会攻击飞行单位');
|
||||
h.run(0.8);
|
||||
approx(hp0 - j.hp, 12 * tb('enemy_1328_cbjedi', 'unbalanced_bleed.damage'), 1e-6);
|
||||
// 雪孩子: pushed into high ground (row 12 col 2 is 'h' on the flat stage) ⇒ hitWall.value
|
||||
const sn = put(h, 'enemy_10138_xdsnow', [10, 3]);
|
||||
const sn2 = put(h, 'enemy_10138_xdsnow', [11, 6]);
|
||||
|
||||
@@ -450,8 +450,8 @@ test('enemy-side BUFF damage (PRTS 伤害分类 "深水区/涨潮水蚀", "弧
|
||||
const j = h.spawn('enemy_1328_cbjedi', { pos: [10, 7], routeIndex: 0, mods: { speedMul: 0 } });
|
||||
h.step(2);
|
||||
const hp0 = j.hp;
|
||||
h.b.displace(j, { x: 1, y: 0 }, 1, { force: 3 });
|
||||
h.step();
|
||||
h.b.push(j, 3, { from: { x: j.x - 1, y: j.y } }); // its 失衡 state (the bleed runs while it lasts)
|
||||
h.run(0.2);
|
||||
const bleed = h.hooksOf('damaged').filter((c) => c.target === j);
|
||||
assert.ok(bleed.length >= 1 && hp0 > j.hp, 'bled');
|
||||
for (const c of bleed) { assert.equal(c.source, null); assert.equal(c.type, 'true'); assert.ok(!hpLoss(c), '失衡 bleed is damage'); }
|
||||
|
||||
+164
-163
@@ -93,8 +93,8 @@
|
||||
"round": 5,
|
||||
"seed": 4108057433,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 57.2,
|
||||
"ticks": 1716,
|
||||
"time": 51.27,
|
||||
"ticks": 1538,
|
||||
"reason": "cleared",
|
||||
"killed": 21,
|
||||
"total": 21,
|
||||
@@ -102,24 +102,24 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 28,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":21,"total":21,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":72617,"bossDmg":0,"heal":0,"deaths":0,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":21,"total":21,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":68325,"bossDmg":0,"heal":0,"deaths":0,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_3_12_a",2,null,349.99,1,3,6,14393,2217,0,29,1],
|
||||
["p1",2,"op","chess_char_1_06_a",1,null,1250.7,1,4,2,2848,0,0,12,1],
|
||||
["p1",3,"op","chess_char_1_13_a",1,null,1004.3,1,6,4,2847,0,0,11,1],
|
||||
["p1",4,"op","chess_char_3_08_a",1,null,1753.4,1,8,1,7273,0,0,9,1],
|
||||
["p1",5,"op","chess_char_3_09_a",1,null,1393.7,1,9,0,15329,0,0,26,1],
|
||||
["p1",1,"op","chess_char_3_12_a",2,null,1393.34,1,3,6,11192,1174,0,24,1],
|
||||
["p1",2,"op","chess_char_1_06_a",1,null,1250.7,1,4,2,2639,0,0,12,1],
|
||||
["p1",3,"op","chess_char_1_13_a",1,null,1004.3,1,6,4,2502,0,0,11,1],
|
||||
["p1",4,"op","chess_char_3_08_a",1,null,1753.4,1,8,1,8314,0,0,10,1],
|
||||
["p1",5,"op","chess_char_3_09_a",1,null,1393.7,1,9,0,15349,0,0,26,1],
|
||||
["p1",6,"op","chess_char_3_10_a",1,null,1815,1,10,0,7744,0,0,8,1],
|
||||
["p1",7,"op","chess_char_3_11_a",1,null,1447.6,1,5,8,17050,0,0,21,3],
|
||||
["p1",8,"op","chess_char_3_13_a",1,null,1170.4,1,7,0,5133,0,0,29,6],
|
||||
["p1",7,"op","chess_char_3_11_a",1,null,1447.6,1,5,8,15366,0,0,18,2],
|
||||
["p1",8,"op","chess_char_3_13_a",1,null,1170.4,1,7,0,5220,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,5,0,205,27000],"enemy_1251_lysyta":[15,15,0,72,37125],"enemy_1328_cbjedi":[1,1,0,1940,9000]},
|
||||
"hooks": [1,31,1716,166,166,208,203,0,21,21,15,14,0,9256,9,11,21,0,1,21,0,0,0],
|
||||
"events": {"atk":185,"deploy":8,"die":21,"dmg":203,"engage":8,"fx":36,"skill":29,"spawn":31,"status":16},
|
||||
"fx": {"aoe":1,"displace":11,"pull":11,"shieldBreak":5,"strike":3,"taunt":1,"volley":3,"zone":1},
|
||||
"snaps": "42f7b9fe 233f1b74 8a406fcc 9d4d597a dfd67749 3aa4fca7"
|
||||
"enemies": {"enemy_1249_lysdb_2":[5,5,0,168,27000],"enemy_1251_lysyta":[15,15,0,36,37125],"enemy_1328_cbjedi":[1,1,0,970,9000]},
|
||||
"hooks": [1,31,1538,152,152,197,192,0,21,21,14,13,0,8070,8,11,21,0,1,21,0,0,0],
|
||||
"events": {"atk":171,"deploy":8,"die":21,"dmg":192,"engage":8,"fx":38,"skill":27,"spawn":31,"status":15},
|
||||
"fx": {"aoe":1,"displace":13,"pull":13,"shieldBreak":5,"strike":2,"taunt":1,"volley":2,"zone":1},
|
||||
"snaps": "42f7b9fe 233f1b74 f2db6212 33f9d8da 5b3e3259 db0d1f8f"
|
||||
},
|
||||
"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",
|
||||
@@ -144,8 +144,8 @@
|
||||
["p1",1,"op","chess_char_4_11_b",1,"uniequip_002_cathy",2908.4,1,5,0,0,0,0,0,0],
|
||||
["p1",2,"op","chess_char_1_06_b",1,"uniequip_002_vendla",1491.38,1,7,1,42136,5760,5825,36,3],
|
||||
["p1",3,"op","chess_char_1_13_b",1,"uniequip_002_podego",897.05,1,9,3,35454,0,0,31,5],
|
||||
["p1",4,"op","chess_char_2_14_b",1,"uniequip_002_flower",1698.4,1,10,0,0,0,429,19,1],
|
||||
["p1",5,"op","chess_char_1_06_a",1,null,1250.7,1,11,1,24935,1457,976,39,1],
|
||||
["p1",4,"op","chess_char_2_14_b",1,"uniequip_002_flower",1698.4,1,10,0,0,0,444,19,1],
|
||||
["p1",5,"op","chess_char_1_06_a",1,null,1250.7,1,11,1,24935,1457,961,39,1],
|
||||
["p1",6,"op","chess_char_1_13_a",1,null,1004.3,1,4,0,0,0,0,0,0],
|
||||
["p1",7,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1830.4,1,8,1,11824,64,0,8,2],
|
||||
["p1",8,"op","chess_char_4_12_b",2,"uniequip_002_glady",2455.2,1,6,1,15423,31,31,7,1],
|
||||
@@ -156,10 +156,10 @@
|
||||
["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {"enemy_1005_yokai_2":[4,4,0,85,5357],"enemy_1005_yokai_3":[2,2,0,831,69120],"enemy_9009_acfort":[2,2,0,636,55296]},
|
||||
"hooks": [1,21,2889,199,199,332,332,1891,8,8,13,11,0,11186,97,0,8,0,1,7,0,0,0],
|
||||
"hooks": [1,21,2889,199,199,332,332,1884,8,8,13,11,0,11186,97,0,8,0,1,7,0,0,0],
|
||||
"events": {"atk":199,"deploy":10,"die":8,"dmg":332,"engage":5,"fx":36,"heal":77,"skill":24,"spawn":21,"status":71},
|
||||
"fx": {"beam":2,"counter":16,"pull":1,"slippery":2,"taunt":4,"tornado":1,"tornadoPulse":5,"zone":5},
|
||||
"snaps": "0c87dcd6 e3efa7c8 673a8b06 1c87f5a2 d3358d4c bfa46477 2104435d 603b979f a1ff5513 f0e70fad"
|
||||
"snaps": "0c87dcd6 e3efa7c8 673a8b06 1c87f5a2 d3358d4c bfa46477 b58e4edf 42f0c41a cf561d7c f117ba2c"
|
||||
},
|
||||
"bond-egirShip-low": {
|
||||
"about": "阿戈尔 low: tier 1 layers 1; chess_char_1_04_a chess_char_3_16_a chess_char_2_07_a chess_char_3_18_a chess_char_3_05_a chess_char_3_14_a chess_char_3_17_a chess_char_3_19_a token_10028_vigil_wolf",
|
||||
@@ -281,7 +281,7 @@
|
||||
"hooks": [1,25,1908,163,163,235,235,340,19,19,6,5,0,7133,17,8,17,0,1,19,0,0,0],
|
||||
"events": {"atk":194,"deploy":8,"die":19,"dmg":234,"engage":6,"fx":29,"skill":11,"spawn":25,"status":42},
|
||||
"fx": {"crit":7,"displace":5,"ripple":7,"shadowWeave":5,"shield":2,"shieldBreak":1,"stealth":2},
|
||||
"snaps": "ce6ed542 4d2f9ba3 dd56e449 6248c040 270f81cd 0e802c5e 40ce188c"
|
||||
"snaps": "ce6ed542 4d2f9ba3 dd56e449 6248c040 fef0c993 5d962727 a901e4b9"
|
||||
},
|
||||
"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",
|
||||
@@ -495,8 +495,8 @@
|
||||
"round": 5,
|
||||
"seed": 2071095439,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 59,
|
||||
"ticks": 1770,
|
||||
"time": 59.77,
|
||||
"ticks": 1793,
|
||||
"reason": "cleared",
|
||||
"killed": 16,
|
||||
"total": 16,
|
||||
@@ -505,26 +505,26 @@
|
||||
"rngDraws": 0,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {"killed":16,"total":16,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":122886,"bossDmg":0,"heal":10842,"deaths":0,"layerGains":{"kazimierzShip":1}}
|
||||
"p1": {"killed":16,"total":16,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":122956,"bossDmg":0,"heal":10467,"deaths":0,"layerGains":{"kazimierzShip":1}}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_2_18_a",0,null,2439.8,1,7,5,47133,118,0,19,1],
|
||||
["p1",1,"op","chess_char_2_18_a",0,null,2439.8,1,7,6,49269,141,0,19,1],
|
||||
["p1",2,"op","chess_char_4_23_a",2,null,2396.9,1,6,0,0,0,0,0,0],
|
||||
["p1",3,"op","chess_char_4_22_a",2,null,2224.2,1,8,4,27203,0,0,17,1],
|
||||
["p1",4,"op","chess_char_1_19_a",1,null,52.91,1,9,2,17849,5486,0,40,1],
|
||||
["p1",5,"op","chess_char_2_12_a",1,null,2291.31,1,10,4,24381,3693,2278,50,1],
|
||||
["p1",6,"op","chess_char_4_21_a",1,null,1398.1,1,4,0,0,0,6552,33,1],
|
||||
["p1",7,"op","chess_char_4_24_a",1,null,1898.6,1,5,1,6320,0,0,8,1],
|
||||
["p1",8,"op","chess_char_4_25_a",2,null,1343.1,1,11,0,0,3137,2012,0,1],
|
||||
["p1",3,"op","chess_char_4_22_a",2,null,2224.2,1,8,3,26311,0,0,16,1],
|
||||
["p1",4,"op","chess_char_1_19_a",1,null,370.81,1,9,2,17075,5486,0,40,1],
|
||||
["p1",5,"op","chess_char_2_12_a",1,null,2354.02,1,10,3,23368,3589,1960,49,1],
|
||||
["p1",6,"op","chess_char_4_21_a",1,null,1398.1,1,4,0,0,0,6853,34,1],
|
||||
["p1",7,"op","chess_char_4_24_a",1,null,1898.6,1,5,2,6932,0,0,9,1],
|
||||
["p1",8,"op","chess_char_4_25_a",2,null,1343.1,1,11,0,0,2462,1653,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,3323,69696],"enemy_1116_liprr_2":[4,4,0,123,34560],"enemy_1121_lifbos":[1,1,0,5486,23040]},
|
||||
"hooks": [1,27,1770,209,209,371,371,1035,16,16,7,6,0,6312,8,16,16,0,1,16,1,0,0],
|
||||
"events": {"atk":229,"deploy":8,"die":16,"dmg":363,"engage":5,"fx":55,"heal":44,"layer":1,"skill":13,"spawn":27,"status":39},
|
||||
"fx": {"displace":15,"garrison":1,"healField":1,"liberate":3,"phase":2,"redistribute":12,"reweave":1,"sandChains":1,"shield":1,"slash":17,"truesilver":1},
|
||||
"snaps": "9b219002 bf19bf12 bd72dc42 2a180b41 131a76f0 80a6cad3"
|
||||
"enemies": {"enemy_1116_liprr":[11,11,0,2671,69696],"enemy_1116_liprr_2":[4,4,0,18,34560],"enemy_1121_lifbos":[1,1,0,5486,23040]},
|
||||
"hooks": [1,27,1793,204,204,365,365,941,16,16,7,6,0,6427,9,13,16,0,1,16,1,0,0],
|
||||
"events": {"atk":223,"deploy":8,"die":16,"dmg":357,"engage":5,"fx":52,"heal":45,"layer":1,"skill":13,"spawn":27,"status":41},
|
||||
"fx": {"displace":13,"garrison":1,"healField":1,"liberate":3,"phase":2,"redistribute":12,"reweave":1,"sandChains":1,"shield":1,"slash":16,"truesilver":1},
|
||||
"snaps": "9b219002 f4c5b23d 16c95fd4 cf1ba74b bd5ba32d 3e36b42f"
|
||||
},
|
||||
"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",
|
||||
@@ -544,24 +544,24 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 14,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":401694,"bossDmg":0,"heal":1532,"deaths":1,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":401834,"bossDmg":0,"heal":1532,"deaths":1,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_2_18_b",0,"uniequip_002_ashlok",3470.5,1,3,9,74391,0,0,15,1],
|
||||
["p1",2,"op","chess_char_3_12_b",2,"uniequip_002_blemsh",3405.6,1,5,0,0,0,0,0,0],
|
||||
["p1",3,"op","chess_char_5_08_b",2,"uniequip_002_horn",792.82,1,7,5,79715,3791,1532,52,2],
|
||||
["p1",3,"op","chess_char_5_08_b",2,"uniequip_002_horn",792.82,1,7,3,82303,3791,1532,52,2],
|
||||
["p1",4,"op","chess_char_4_19_b",2,"uniequip_002_flamtl",2329.8,1,8,0,1973,0,0,1,1],
|
||||
["p1",5,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",1583.49,1,9,2,77147,585,0,44,2],
|
||||
["p1",6,"op","chess_char_2_12_b",1,"uniequip_002_gravel",2837.12,1,41,6,67802,2837,0,50,2],
|
||||
["p1",5,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",1583.49,1,9,4,75522,585,0,45,2],
|
||||
["p1",6,"op","chess_char_2_12_b",1,"uniequip_002_gravel",2837.12,1,41,6,66979,2837,0,50,2],
|
||||
["p1",7,"op","chess_char_3_17_b",1,"uniequip_002_shotst",3785.76,1,4,8,97715,0,0,30,3],
|
||||
["p1",8,"op","chess_char_5_10_b",2,"uniequip_002_lisa",1628,1,6,0,2952,0,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_10124_uashld_2":[2,2,0,0,124416],"enemy_1043_zomsbr":[23,23,0,0,145329],"enemy_1061_zomshd":[5,5,0,3422,131949]},
|
||||
"hooks": [1,41,2330,216,216,437,542,2546,31,31,12,11,0,4702,924,7,30,0,1,50,0,0,5],
|
||||
"events": {"atk":216,"deploy":9,"die":31,"dmg":430,"engage":7,"fx":46,"skill":23,"spawn":40,"status":119},
|
||||
"fx": {"aoe":21,"displace":12,"dodge":5,"flame":1,"overload":2,"shield":2,"volley":3},
|
||||
"snaps": "bcb7af7b 0b099705 7f7b8a21 965e8211 1de37c7b b40b7c67 a5e36d7c 73915652"
|
||||
"enemies": {"enemy_10124_uashld_2":[2,2,0,0,124416],"enemy_1043_zomsbr":[23,23,0,0,145449],"enemy_1061_zomshd":[5,5,0,3422,131969]},
|
||||
"hooks": [1,41,2330,217,217,441,546,2594,31,31,12,11,0,4702,923,6,30,0,1,52,0,0,5],
|
||||
"events": {"atk":217,"deploy":9,"die":31,"dmg":434,"engage":7,"fx":44,"skill":23,"spawn":40,"status":117},
|
||||
"fx": {"aoe":20,"displace":11,"dodge":5,"flame":1,"overload":2,"shield":2,"volley":3},
|
||||
"snaps": "bcb7af7b b66560ff e9e8137e 9fca99d4 bcc04e91 bef3fef0 eef8af5f 2670ddc4"
|
||||
},
|
||||
"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",
|
||||
@@ -678,7 +678,7 @@
|
||||
"hooks": [1,25,1867,107,107,449,449,0,21,21,6,4,14,6913,0,1,17,0,1,21,1,0,0],
|
||||
"events": {"atk":145,"deploy":8,"die":21,"dmg":449,"engage":7,"fx":21,"layer":1,"skill":10,"spawn":25,"status":1},
|
||||
"fx": {"buff":1,"displace":1,"garrison":1,"pull":1,"zone":17},
|
||||
"snaps": "058883ca 9d63e6b8 9b21100e 3caaf919 fe24e996 0b241325 ee7a5f78"
|
||||
"snaps": "058883ca 9d63e6b8 9b21100e 3caaf919 fe24e996 0b241325 a6a32036"
|
||||
},
|
||||
"bond-lateranoShip-high": {
|
||||
"about": "拉特兰 high: tier 2 layers 999; chess_char_4_01_b chess_char_5_13_b chess_char_5_14_b chess_char_1_01_b chess_char_2_01_b chess_char_3_01_b chess_char_3_21_b chess_char_4_02_b",
|
||||
@@ -698,22 +698,22 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 7,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":580979,"bossDmg":0,"heal":502,"deaths":2,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":580688,"bossDmg":0,"heal":518,"deaths":2,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",3890.7,1,4,0,10506,0,0,21,0],
|
||||
["p1",2,"op","chess_char_5_13_b",1,"uniequip_002_ghost2",4194.78,1,6,3,17749,4194,0,19,1],
|
||||
["p1",3,"op","chess_char_5_14_b",1,"none",0,0,7,0,32877,2894,502,5,5],
|
||||
["p1",4,"op","chess_char_1_01_b",1,"uniequip_002_inside",1563.1,1,1,7,241670,0,0,183,1],
|
||||
["p1",1,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",3890.7,1,4,0,11105,0,0,21,0],
|
||||
["p1",2,"op","chess_char_5_13_b",1,"uniequip_002_ghost2",4194.78,1,6,2,17889,4194,0,19,1],
|
||||
["p1",3,"op","chess_char_5_14_b",1,"none",0,0,7,1,32251,2910,518,5,5],
|
||||
["p1",4,"op","chess_char_1_01_b",1,"uniequip_002_inside",1563.1,1,1,7,240010,0,0,182,1],
|
||||
["p1",5,"op","chess_char_2_01_b",1,"uniequip_002_excu",2360.6,1,2,0,6790,0,0,2,1],
|
||||
["p1",6,"op","chess_char_3_01_b",2,"uniequip_002_angel",2075.81,1,3,7,80348,0,0,49,2],
|
||||
["p1",7,"op","chess_char_3_21_b",2,"uniequip_002_archet",1749,1,5,4,94496,0,0,61,2],
|
||||
["p1",8,"op","chess_char_4_02_b",2,"uniequip_002_mostma",0,0,8,9,96543,1865,0,14,1]
|
||||
["p1",6,"op","chess_char_3_01_b",2,"uniequip_002_angel",2075.81,1,3,7,78620,0,0,49,2],
|
||||
["p1",7,"op","chess_char_3_21_b",2,"uniequip_002_archet",1749,1,5,5,98081,0,0,61,2],
|
||||
["p1",8,"op","chess_char_4_02_b",2,"uniequip_002_mostma",0,0,8,8,95943,1865,0,14,1]
|
||||
],
|
||||
"enemies": {"enemy_1006_shield_3":[3,3,0,3917,298598],"enemy_1043_zomsbr":[23,23,0,24,152988],"enemy_1402_tgshd_2":[4,4,0,5011,129393]},
|
||||
"hooks": [1,38,2282,366,366,608,608,3874,32,32,13,11,183,4166,30,10,30,0,1,34,0,0,0],
|
||||
"events": {"atk":420,"deploy":8,"die":32,"dmg":608,"engage":8,"fx":234,"skill":24,"spawn":38,"status":112},
|
||||
"fx": {"aoe":5,"buff":2,"displace":24,"expose":191,"ripple":9,"shield":2,"substitute":1},
|
||||
"snaps": "10006333 403f3141 ee47ccf0 e8f67a62 f87763e6 fe12502e f4fad1c6 e05429af"
|
||||
"enemies": {"enemy_1006_shield_3":[3,3,0,3933,298598],"enemy_1043_zomsbr":[23,23,0,24,152697],"enemy_1402_tgshd_2":[4,4,0,5011,129393]},
|
||||
"hooks": [1,38,2282,365,365,612,612,3770,32,32,13,11,182,4171,28,10,30,0,1,34,0,0,0],
|
||||
"events": {"atk":419,"deploy":8,"die":32,"dmg":612,"engage":8,"fx":238,"skill":24,"spawn":38,"status":108},
|
||||
"fx": {"aoe":5,"buff":2,"displace":24,"expose":195,"ripple":9,"shield":2,"substitute":1},
|
||||
"snaps": "10006333 2a47b4ad b25df4fa e7bc5d9c bca3f135 e24688e1 85715a54 50c019a0"
|
||||
},
|
||||
"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",
|
||||
@@ -811,7 +811,7 @@
|
||||
"total": 17,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 33,
|
||||
"rngDraws": 31,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":17,"total":17,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":126144,"bossDmg":0,"heal":0,"deaths":0,"layerGains":{}}},
|
||||
"units": [
|
||||
@@ -820,15 +820,15 @@
|
||||
["p1",3,"op","chess_char_3_18_a",2,null,1629.1,1,8,0,0,0,0,0,0],
|
||||
["p1",4,"op","chess_char_3_01_a",2,null,1663.13,1,1,4,27102,0,0,23,1],
|
||||
["p1",5,"op","chess_char_3_17_a",1,null,2470.6,1,4,5,35015,0,0,31,3],
|
||||
["p1",6,"op","chess_char_3_20_a",1,null,753.28,1,5,2,6204,480,0,31,1],
|
||||
["p1",6,"op","chess_char_3_20_a",1,null,753.28,1,5,2,5684,480,0,29,1],
|
||||
["p1",7,"op","chess_char_3_21_a",2,null,1500.4,1,2,1,22690,0,0,21,1],
|
||||
["p1",8,"op","chess_char_4_02_a",2,null,138.16,1,7,5,35133,1433,0,17,1]
|
||||
["p1",8,"op","chess_char_4_02_a",2,null,138.16,1,7,5,35653,1433,0,17,1]
|
||||
],
|
||||
"enemies": {"enemy_1116_liprr":[11,11,0,1380,69696],"enemy_1116_liprr_2":[4,4,0,0,34560],"enemy_1118_lidbox_2":[2,2,0,532,21888]},
|
||||
"hooks": [1,25,1585,135,135,283,283,0,17,17,7,6,0,4909,8,9,17,0,1,17,0,0,0],
|
||||
"events": {"atk":169,"deploy":8,"die":17,"dmg":282,"engage":5,"fx":20,"skill":13,"spawn":25,"status":62},
|
||||
"hooks": [1,25,1585,133,133,281,281,0,17,17,7,6,0,4909,8,9,17,0,1,17,0,0,0],
|
||||
"events": {"atk":166,"deploy":8,"die":17,"dmg":280,"engage":5,"fx":20,"skill":13,"spawn":25,"status":62},
|
||||
"fx": {"buff":1,"displace":8,"ripple":5,"shield":2,"shieldBreak":1,"volley":3},
|
||||
"snaps": "cb2e289d a5132eea 48240882 4807a9fc 90d153b9 291801e2"
|
||||
"snaps": "cb2e289d a5132eea 48240882 4807a9fc cdb65a9f f01a76ba"
|
||||
},
|
||||
"bond-miraShip-high": {
|
||||
"about": "奇迹 high: tier 1 layers 999; chess_char_4_01_b chess_char_2_11_b chess_char_4_04_b chess_char_4_07_b chess_char_3_01_b chess_char_5_22_b chess_char_4_02_b chess_char_4_06_b",
|
||||
@@ -839,33 +839,34 @@
|
||||
"round": 10,
|
||||
"seed": 2841335436,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 129.3,
|
||||
"ticks": 3879,
|
||||
"time": 130.1,
|
||||
"ticks": 3903,
|
||||
"reason": "cleared",
|
||||
"killed": 18,
|
||||
"total": 18,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 264,
|
||||
"rngDraws": 250,
|
||||
"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":1,"layerGains":{"visiShip":12}}},
|
||||
"players": {"p1":{"killed":18,"total":18,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":346374,"bossDmg":0,"heal":0,"deaths":2,"layerGains":{"visiShip":12}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",3890.7,1,3,0,0,0,0,0,0],
|
||||
["p1",2,"op","chess_char_2_11_b",1,"uniequip_002_kazema",2435.4,1,5,0,0,0,0,0,0],
|
||||
["p1",3,"op","chess_char_4_04_b",1,"uniequip_002_ines",311.62,1,6,5,71356,2052,0,125,5],
|
||||
["p1",4,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",0,0,9,4,42803,2621,0,49,20],
|
||||
["p1",5,"op","chess_char_3_01_b",2,"uniequip_002_angel",2075.81,1,7,1,29533,0,0,54,2],
|
||||
["p1",6,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1772.1,1,8,4,62766,0,0,12,7],
|
||||
["p1",7,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1864.5,1,10,2,95869,0,0,21,1],
|
||||
["p1",8,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1940.32,1,4,2,44047,0,0,92,2],
|
||||
["p1",1,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",3890.7,1,3,0,0,0,0,1,0],
|
||||
["p1",2,"op","chess_char_2_11_b",1,"uniequip_002_kazema",1217.7,1,5,0,552,1218,0,1,1],
|
||||
["p1",3,"op","chess_char_4_04_b",1,"uniequip_002_ines",0,0,6,3,71463,2364,0,123,5],
|
||||
["p1",4,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",0,0,9,5,42303,2621,0,40,16],
|
||||
["p1",5,"op","chess_char_3_01_b",2,"uniequip_002_angel",2075.81,1,7,1,26017,0,0,62,2],
|
||||
["p1",6,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1772.1,1,8,4,58790,0,0,10,7],
|
||||
["p1",7,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1864.5,1,10,2,103360,0,0,24,1],
|
||||
["p1",8,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1940.32,1,4,2,42283,0,0,92,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]
|
||||
["-","~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,1,29,1,1605,0,0,1,null]
|
||||
],
|
||||
"enemies": {"enemy_1381_winman":[9,9,0,88,129890],"enemy_1381_winman_2":[5,5,0,597,97044],"enemy_1387_winshd":[4,4,0,3988,119439]},
|
||||
"hooks": [1,28,3879,370,370,648,655,0,19,19,37,36,0,10561,58,5,18,0,1,19,3,3,0],
|
||||
"events": {"atk":399,"deploy":8,"die":19,"dmg":655,"engage":6,"fx":131,"layer":3,"skill":73,"spawn":28,"status":121},
|
||||
"fx": {"aoe":7,"buff":1,"burst":3,"charge":20,"crit":42,"displace":24,"garrison":3,"quadShot":2,"ripple":9,"shadowWeave":11,"shield":1,"soul":3,"stealth":5},
|
||||
"snaps": "2dcf7871 59a0a9fe 75f32560 938a17d5 d1f14832 8df95e14 e669604c ec86ef4c 78ba8c36 ed25f024 e08f5a92 3d3214cc c89f28ba"
|
||||
"enemies": {"enemy_1381_winman":[9,9,0,19,129890],"enemy_1381_winman_2":[5,5,0,896,97044],"enemy_1387_winshd":[4,4,0,4070,119439]},
|
||||
"hooks": [1,29,3903,373,373,657,665,0,20,20,34,33,0,10137,57,6,18,0,1,20,3,3,0],
|
||||
"events": {"atk":408,"deploy":9,"die":20,"dmg":665,"engage":9,"fx":132,"layer":3,"skill":67,"spawn":29,"status":118},
|
||||
"fx": {"aoe":8,"buff":1,"burst":3,"charge":16,"crit":41,"displace":27,"garrison":3,"quadShot":2,"ripple":9,"sentry":1,"shadowWeave":11,"shield":1,"soul":3,"stealth":5,"summon":1},
|
||||
"snaps": "2dcf7871 f949cb0c dd94884a 69cda65b 0ce071e3 85817647 9b4ee35a 1c0654fd 32f73af1 50d7baba 5de30b60 5ddd3f1f 1b99ee82"
|
||||
},
|
||||
"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",
|
||||
@@ -876,8 +877,8 @@
|
||||
"round": 5,
|
||||
"seed": 2452926770,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 52.23,
|
||||
"ticks": 1567,
|
||||
"time": 52.27,
|
||||
"ticks": 1568,
|
||||
"reason": "cleared",
|
||||
"killed": 21,
|
||||
"total": 21,
|
||||
@@ -888,13 +889,13 @@
|
||||
"players": {"p1":{"killed":21,"total":21,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":73125,"bossDmg":0,"heal":0,"deaths":0,"layerGains":{"visiShip":6}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_4_11_a",1,null,2358.4,1,6,0,0,0,0,0,0],
|
||||
["p1",2,"op","chess_char_4_04_a",1,null,1936,1,7,5,5356,0,0,22,2],
|
||||
["p1",3,"op","chess_char_4_07_a",1,null,1472.8,1,8,3,5487,439,0,18,4],
|
||||
["p1",4,"op","chess_char_4_09_a",1,null,2351.36,1,10,9,32119,0,0,16,2],
|
||||
["p1",2,"op","chess_char_4_04_a",1,null,1936,1,7,4,6921,0,0,23,2],
|
||||
["p1",3,"op","chess_char_4_07_a",1,null,1472.8,1,8,4,5709,439,0,18,4],
|
||||
["p1",4,"op","chess_char_4_09_a",1,null,2351.36,1,10,8,31533,0,0,16,2],
|
||||
["p1",5,"op","chess_char_1_09_a",1,null,1947,1,4,0,0,0,0,0,0],
|
||||
["p1",6,"op","chess_char_1_17_a",1,null,1252.9,1,5,0,0,0,0,0,0],
|
||||
["p1",7,"op","chess_char_4_10_a",1,null,1416.8,1,9,1,11032,0,0,11,1],
|
||||
["p1",8,"op","chess_char_4_12_a",2,null,1929.4,1,11,3,19130,0,0,18,1],
|
||||
["p1",7,"op","chess_char_4_10_a",1,null,1416.8,1,9,2,10154,0,0,11,1],
|
||||
["p1",8,"op","chess_char_4_12_a",2,null,1929.4,1,11,3,18809,0,0,19,1],
|
||||
["p1",9,"token","token_10041_cathy_catsld",null,null,100,1,12,0,0,0,0,0,null],
|
||||
["p1",10,"token","token_10041_cathy_catsld",null,null,100,1,13,0,0,0,0,0,null],
|
||||
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
|
||||
@@ -902,10 +903,10 @@
|
||||
["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {"enemy_1249_lysdb_2":[5,5,0,0,27000],"enemy_1251_lysyta":[15,15,0,0,37125],"enemy_1328_cbjedi":[1,1,0,439,9000]},
|
||||
"hooks": [1,34,1567,86,86,132,127,0,21,21,10,7,0,6471,25,1,21,0,1,21,3,0,0],
|
||||
"events": {"atk":100,"deploy":10,"die":21,"dmg":127,"engage":5,"fx":56,"layer":3,"skill":17,"spawn":34,"status":36},
|
||||
"fx": {"charge":4,"dilemma":2,"displace":13,"garrison":3,"levitate":9,"pull":1,"shadowWeave":8,"shieldBreak":5,"slippery":1,"splash":2,"stealth":2,"tornado":1,"tornadoPulse":5},
|
||||
"snaps": "76268a87 af222d6b a268dbec 68f19c61 eebca264 2cc373ad"
|
||||
"hooks": [1,34,1568,88,88,136,131,0,21,21,10,7,0,6463,27,1,21,0,1,21,3,0,0],
|
||||
"events": {"atk":103,"deploy":10,"die":21,"dmg":131,"engage":5,"fx":58,"layer":3,"skill":17,"spawn":34,"status":38},
|
||||
"fx": {"charge":4,"dilemma":2,"displace":13,"garrison":3,"levitate":9,"pull":1,"shadowWeave":10,"shieldBreak":5,"slippery":1,"splash":2,"stealth":2,"tornado":1,"tornadoPulse":5},
|
||||
"snaps": "76268a87 af222d6b 134ba3e2 6e49bbd8 0e2f5c88 ebb96951"
|
||||
},
|
||||
"bond-preciShip-high": {
|
||||
"about": "精准 high: tier 2 layers 999; chess_char_4_11_b chess_char_4_09_b chess_char_1_09_b chess_char_1_17_b chess_char_2_01_b chess_char_4_10_b chess_char_4_12_b chess_char_4_13_b token_10041_cathy_catsld token_10041_cathy_catsld",
|
||||
@@ -1195,8 +1196,8 @@
|
||||
"round": 5,
|
||||
"seed": 1832872952,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 51.17,
|
||||
"ticks": 1535,
|
||||
"time": 49.77,
|
||||
"ticks": 1493,
|
||||
"reason": "cleared",
|
||||
"killed": 19,
|
||||
"total": 19,
|
||||
@@ -1206,23 +1207,23 @@
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":19,"total":19,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":71550,"bossDmg":0,"heal":0,"deaths":0,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_3_12_a",2,null,2321,1,5,1,7854,246,0,19,1],
|
||||
["p1",2,"op","chess_char_1_14_a",1,null,1259.5,1,7,2,2337,0,0,7,0],
|
||||
["p1",3,"op","chess_char_2_04_a",1,null,1074.7,1,9,2,8298,0,0,28,1],
|
||||
["p1",4,"op","chess_char_3_08_a",1,null,1753.4,1,11,2,10630,0,0,11,1],
|
||||
["p1",5,"op","chess_char_3_09_a",1,null,1393.7,1,4,4,5566,0,0,17,1],
|
||||
["p1",6,"op","chess_char_3_10_a",1,null,1815,1,6,2,7835,0,0,11,1],
|
||||
["p1",7,"op","chess_char_3_11_a",1,null,1447.6,1,8,3,17985,0,0,15,2],
|
||||
["p1",8,"op","chess_char_3_14_a",1,null,1376.1,1,10,3,11045,0,0,27,1],
|
||||
["p1",1,"op","chess_char_3_12_a",2,null,2351.8,1,5,2,8263,216,0,19,1],
|
||||
["p1",2,"op","chess_char_1_14_a",1,null,1259.5,1,7,2,1886,0,0,6,0],
|
||||
["p1",3,"op","chess_char_2_04_a",1,null,1074.7,1,9,2,8267,0,0,28,1],
|
||||
["p1",4,"op","chess_char_3_08_a",1,null,1753.4,1,11,2,11384,0,0,11,1],
|
||||
["p1",5,"op","chess_char_3_09_a",1,null,1393.7,1,4,1,4342,0,0,16,1],
|
||||
["p1",6,"op","chess_char_3_10_a",1,null,1815,1,6,3,8600,0,0,11,1],
|
||||
["p1",7,"op","chess_char_3_11_a",1,null,1447.6,1,8,5,17503,0,0,15,2],
|
||||
["p1",8,"op","chess_char_3_14_a",1,null,1376.1,1,10,2,11305,0,0,27,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_1010_demon":[3,3,0,23,20250],"enemy_1010_demon_2":[1,1,0,223,13500],"enemy_1071_dftman":[15,15,0,0,37800]},
|
||||
"hooks": [1,30,1535,142,142,196,196,0,19,19,8,7,0,7615,38,3,19,0,1,19,0,0,0],
|
||||
"events": {"atk":189,"deploy":8,"die":19,"dmg":196,"engage":8,"fx":47,"skill":15,"spawn":30,"status":64},
|
||||
"enemies": {"enemy_1010_demon":[3,3,0,46,20250],"enemy_1010_demon_2":[1,1,0,169,13500],"enemy_1071_dftman":[15,15,0,0,37800]},
|
||||
"hooks": [1,30,1493,140,140,194,194,0,19,19,8,6,0,7345,37,3,19,0,1,19,0,0,0],
|
||||
"events": {"atk":185,"deploy":8,"die":19,"dmg":194,"engage":8,"fx":47,"skill":14,"spawn":30,"status":64},
|
||||
"fx": {"aoe":1,"displace":20,"pull":20,"sleep":2,"strike":2,"volley":2},
|
||||
"snaps": "6955b9bf 4fd6d944 6c845197 c1cc663b ab5e9cb4 aa2cd2c0"
|
||||
"snaps": "6955b9bf 4fd6d944 88839f65 e6e9efa9 5f5b7c0b"
|
||||
},
|
||||
"bond-skillfulShip-high": {
|
||||
"about": "灵巧 high: tier 1 layers 999; chess_char_5_08_b chess_char_5_05_b chess_char_5_07_b chess_char_1_14_b chess_char_2_04_b chess_char_5_02_b chess_char_5_03_b chess_char_5_10_b",
|
||||
@@ -1282,8 +1283,8 @@
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_3_16_a",1,null,2987.88,1,3,0,0,0,0,0,0],
|
||||
["p1",2,"op","chess_char_4_01_a",2,null,3675.4,1,5,1,7818,967,0,10,1],
|
||||
["p1",3,"op","chess_char_1_08_a",1,null,0,0,6,1,7992,2615,0,13,1],
|
||||
["p1",2,"op","chess_char_4_01_a",2,null,4478.82,1,5,1,7496,164,0,9,1],
|
||||
["p1",3,"op","chess_char_1_08_a",1,null,0,0,6,1,8313,2615,0,14,1],
|
||||
["p1",4,"op","chess_char_3_18_a",2,null,0,0,10,5,39236,2036,0,38,1],
|
||||
["p1",5,"op","chess_char_3_19_a",2,null,1978.63,1,7,1,10896,0,0,21,1],
|
||||
["p1",6,"op","chess_char_3_20_a",1,null,1541.38,1,9,2,682,0,0,8,1],
|
||||
@@ -1293,11 +1294,11 @@
|
||||
["-","~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,41,69696],"enemy_1116_liprr_2":[4,4,0,297,34560],"enemy_1118_lidbox_2":[2,2,0,5308,21888]},
|
||||
"hooks": [1,28,1542,152,152,267,267,0,19,19,7,5,3,6783,32,17,17,0,1,23,1,0,0],
|
||||
"events": {"atk":190,"deploy":9,"die":19,"dmg":265,"engage":8,"fx":40,"layer":1,"skill":12,"spawn":28,"status":98},
|
||||
"fx": {"aoe":1,"camouflage":1,"counter":3,"displace":17,"dp":3,"garrison":1,"liberate":2,"phase":3,"ripple":5,"sermon":1,"shield":2,"wolfShadow":1},
|
||||
"snaps": "9d9fca14 73c7feb6 9951a5ab aca839a1 fc4534aa d90b45d6"
|
||||
"enemies": {"enemy_1116_liprr":[11,11,0,41,69696],"enemy_1116_liprr_2":[4,4,0,297,34560],"enemy_1118_lidbox_2":[2,2,0,4504,21888]},
|
||||
"hooks": [1,28,1542,150,150,265,265,0,19,19,7,5,2,6807,32,17,17,0,1,23,1,0,0],
|
||||
"events": {"atk":186,"deploy":9,"die":19,"dmg":263,"engage":8,"fx":39,"layer":1,"skill":12,"spawn":28,"status":98},
|
||||
"fx": {"aoe":1,"camouflage":1,"counter":2,"displace":17,"dp":3,"garrison":1,"liberate":2,"phase":3,"ripple":5,"sermon":1,"shield":2,"wolfShadow":1},
|
||||
"snaps": "9d9fca14 73c7feb6 9951a5ab 64c03508 adeddfc3 d9d98110"
|
||||
},
|
||||
"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",
|
||||
@@ -1400,26 +1401,26 @@
|
||||
"total": 30,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 64,
|
||||
"rngDraws": 59,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":202522,"bossDmg":0,"heal":3741,"deaths":0,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":30,"total":30,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":202522,"bossDmg":0,"heal":3611,"deaths":0,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",51066.13,1,3,0,0,839,0,0,2],
|
||||
["p1",2,"op","chess_char_1_10_b",0,"uniequip_002_sunbr",36239.05,1,5,0,0,839,2528,29,29],
|
||||
["p1",3,"op","chess_char_2_08_b",1,"uniequip_002_bubble",49053.43,1,7,5,30834,973,0,0,2],
|
||||
["p1",4,"op","chess_char_4_04_b",1,"uniequip_002_ines",28729.17,1,9,12,62878,2564,0,99,4],
|
||||
["p1",5,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",23721.17,1,4,2,8684,0,0,31,2],
|
||||
["p1",6,"op","chess_char_5_22_b",1,"uniequip_002_nymph",23459.06,1,6,5,27376,0,0,18,9],
|
||||
["p1",7,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",23444.5,1,8,0,0,0,1213,4,1],
|
||||
["p1",8,"op","chess_char_4_02_b",2,"uniequip_002_mostma",24682.25,1,10,6,72749,1213,0,26,2],
|
||||
["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",51066.13,1,3,0,0,828,0,0,2],
|
||||
["p1",2,"op","chess_char_1_10_b",0,"uniequip_002_sunbr",36239.05,1,5,0,0,828,2458,31,31],
|
||||
["p1",3,"op","chess_char_2_08_b",1,"uniequip_002_bubble",49053.43,1,7,2,26152,927,0,0,2],
|
||||
["p1",4,"op","chess_char_4_04_b",1,"uniequip_002_ines",28721.71,1,9,15,64035,2572,0,98,4],
|
||||
["p1",5,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",23721.17,1,4,1,11961,0,0,32,2],
|
||||
["p1",6,"op","chess_char_5_22_b",1,"uniequip_002_nymph",23459.06,1,6,4,27052,0,0,18,8],
|
||||
["p1",7,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",23444.5,1,8,0,0,0,1153,4,1],
|
||||
["p1",8,"op","chess_char_4_02_b",2,"uniequip_002_mostma",24682.25,1,10,8,73322,1153,0,26,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_1251_lysyta_2":[19,19,0,0,70042],"enemy_1252_lysytb_2":[7,7,0,1624,72576],"enemy_1329_cbshld_2":[4,4,0,2287,59904]},
|
||||
"hooks": [1,40,3025,206,217,314,325,41,30,30,51,48,0,13628,43,1,30,0,1,30,0,1,0],
|
||||
"events": {"atk":243,"deploy":8,"die":30,"dmg":325,"engage":3,"fx":149,"heal":41,"skill":99,"spawn":40,"status":97},
|
||||
"fx": {"aoe":9,"burst":1,"counter":8,"displace":32,"heal":29,"iceSpike":31,"ripple":14,"shadowWeave":20,"soul":1,"stealth":4},
|
||||
"snaps": "bdce10e5 31a50594 0c7a45ac 43ea4659 bddc085c b5b2a509 7e70f962 1f9a380c b1772f03 00b73e29"
|
||||
"enemies": {"enemy_1251_lysyta_2":[19,19,0,7,70042],"enemy_1252_lysytb_2":[7,7,0,1530,72576],"enemy_1329_cbshld_2":[4,4,0,2287,59904]},
|
||||
"hooks": [1,40,3025,206,217,320,331,43,30,30,52,49,0,13568,48,4,30,0,1,30,0,1,0],
|
||||
"events": {"atk":245,"deploy":8,"die":30,"dmg":331,"engage":3,"fx":147,"heal":43,"skill":101,"spawn":40,"status":111},
|
||||
"fx": {"aoe":8,"burst":1,"counter":6,"displace":31,"heal":31,"iceSpike":32,"ripple":14,"shadowWeave":19,"soul":1,"stealth":4},
|
||||
"snaps": "bdce10e5 a3db798d f316ff1e 1dd6dd88 8b3da656 36d216cf 71a41915 363c758f 7b14f0c9 02725bf1"
|
||||
},
|
||||
"bond-suntShip-low": {
|
||||
"about": "绝技 low: tier 1 layers 1; chess_char_1_02_b chess_char_4_17_a chess_char_4_18_a chess_char_4_16_a chess_char_1_01_b chess_char_4_12_a chess_char_4_13_a chess_char_4_14_a",
|
||||
@@ -1503,31 +1504,31 @@
|
||||
"round": 5,
|
||||
"seed": 2212044350,
|
||||
"waveId": "act1autochess_05",
|
||||
"time": 44.07,
|
||||
"ticks": 1322,
|
||||
"time": 42.27,
|
||||
"ticks": 1268,
|
||||
"reason": "cleared",
|
||||
"killed": 21,
|
||||
"total": 21,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 10,
|
||||
"rngDraws": 8,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":21,"total":21,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":68768,"bossDmg":0,"heal":0,"deaths":0,"layerGains":{"miraShip":1}}},
|
||||
"players": {"p1":{"killed":21,"total":21,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":66165,"bossDmg":0,"heal":0,"deaths":0,"layerGains":{"miraShip":1}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_4_23_a",2,null,2396.9,1,2,0,0,0,0,0,0],
|
||||
["p1",2,"op","chess_char_4_22_a",2,null,2224.2,1,4,4,9011,0,0,15,1],
|
||||
["p1",3,"op","chess_char_1_19_a",1,null,1630.2,1,6,3,3462,0,0,11,1],
|
||||
["p1",4,"op","chess_char_1_01_a",1,null,1235.3,1,7,5,14833,0,0,24,1],
|
||||
["p1",5,"op","chess_char_4_24_a",1,null,1898.6,1,8,1,16786,0,0,16,1],
|
||||
["p1",2,"op","chess_char_4_22_a",2,null,2224.2,1,4,3,6083,0,0,11,1],
|
||||
["p1",3,"op","chess_char_1_19_a",1,null,1630.2,1,6,2,3444,0,0,10,1],
|
||||
["p1",4,"op","chess_char_1_01_a",1,null,1235.3,1,7,4,14540,0,0,23,1],
|
||||
["p1",5,"op","chess_char_4_24_a",1,null,1898.6,1,8,3,16984,0,0,16,1],
|
||||
["p1",6,"op","chess_char_4_25_a",2,null,1517.7,1,1,0,0,0,0,0,0],
|
||||
["p1",7,"op","chess_char_4_26_a",0,null,1504.8,1,3,0,0,0,0,0,0],
|
||||
["p1",8,"op","chess_char_3_01_a",2,null,1663.13,1,5,8,24676,0,0,40,1]
|
||||
["p1",8,"op","chess_char_3_01_a",2,null,1663.13,1,5,9,25114,0,0,38,1]
|
||||
],
|
||||
"enemies": {"enemy_1249_lysdb_2":[5,5,0,0,27000],"enemy_1251_lysyta":[15,15,0,0,37125],"enemy_1328_cbjedi":[1,1,0,0,9000]},
|
||||
"hooks": [1,29,1322,106,106,243,238,1,21,21,5,3,14,5655,31,0,21,0,1,21,1,0,0],
|
||||
"events": {"atk":125,"deploy":8,"die":21,"dmg":238,"engage":5,"fx":47,"layer":1,"skill":8,"spawn":29,"status":89},
|
||||
"fx": {"buff":1,"displace":8,"garrison":1,"garrisonGrant":1,"mote":16,"sandChains":1,"shieldBreak":5,"slash":5,"sp":1,"spGift":7,"truesilver":1},
|
||||
"snaps": "ce4ae366 60b39bd4 6c9b8241 8501f756 77d062af"
|
||||
"hooks": [1,29,1268,98,98,241,236,1,21,21,5,3,14,5437,31,0,21,0,1,21,1,0,0],
|
||||
"events": {"atk":117,"deploy":8,"die":21,"dmg":236,"engage":5,"fx":40,"layer":1,"skill":8,"spawn":29,"status":83},
|
||||
"fx": {"buff":1,"displace":8,"garrison":1,"garrisonGrant":1,"mote":14,"sandChains":1,"shieldBreak":5,"slash":2,"sp":1,"spGift":5,"truesilver":1},
|
||||
"snaps": "ce4ae366 908d4034 1a604bbb b1db17bc bb7bd6fa"
|
||||
},
|
||||
"bond-swiftShip-high": {
|
||||
"about": "迅捷 high: tier 1 layers 999; chess_char_4_11_b chess_char_1_19_b chess_char_4_07_b chess_char_4_09_b chess_char_1_01_b chess_char_4_06_b chess_char_4_10_b chess_char_4_12_b token_10041_cathy_catsld token_10041_cathy_catsld",
|
||||
@@ -1538,33 +1539,33 @@
|
||||
"round": 10,
|
||||
"seed": 1175070139,
|
||||
"waveId": "act1autochess_h03",
|
||||
"time": 102.03,
|
||||
"ticks": 3061,
|
||||
"time": 100.47,
|
||||
"ticks": 3014,
|
||||
"reason": "cleared",
|
||||
"killed": 24,
|
||||
"total": 24,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 283,
|
||||
"rngDraws": 253,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":24,"total":24,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":235584,"bossDmg":0,"heal":618,"deaths":3,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":24,"total":24,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":235584,"bossDmg":0,"heal":1236,"deaths":3,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_4_11_b",1,"uniequip_002_cathy",3255.01,1,4,0,0,1253,0,0,1],
|
||||
["p1",2,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",0,0,6,2,7192,2168,0,23,2],
|
||||
["p1",3,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",0,0,7,1,13362,2621,0,24,24],
|
||||
["p1",4,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",3055.36,1,5,2,47111,0,0,24,3],
|
||||
["p1",5,"op","chess_char_1_01_b",1,"uniequip_002_inside",1563.1,1,1,2,31749,0,0,71,5],
|
||||
["p1",6,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1717.1,1,2,13,69301,0,0,105,3],
|
||||
["p1",7,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1830.4,1,3,3,40532,0,0,19,2],
|
||||
["p1",8,"op","chess_char_4_12_b",2,"uniequip_002_glady",0,0,8,1,26338,3073,618,15,2],
|
||||
["p1",2,"op","chess_char_1_19_b",1,"uniequip_002_wildmn",0,0,6,0,5159,2168,0,20,1],
|
||||
["p1",3,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",0,0,7,0,12532,2621,0,16,16],
|
||||
["p1",4,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",3055.36,1,5,4,49296,0,0,23,3],
|
||||
["p1",5,"op","chess_char_1_01_b",1,"uniequip_002_inside",1563.1,1,1,3,33115,0,0,64,4],
|
||||
["p1",6,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1717.1,1,2,10,69403,0,0,102,3],
|
||||
["p1",7,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1830.4,1,3,4,41176,0,0,19,2],
|
||||
["p1",8,"op","chess_char_4_12_b",2,"uniequip_002_glady",0,0,8,3,24904,3691,1236,23,3],
|
||||
["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,1177,60480],"enemy_1422_lrsldr_2":[14,14,0,0,88704],"enemy_1425_lrcmra_2":[3,3,0,7939,86400]},
|
||||
"hooks": [1,34,3061,298,298,520,520,302,27,27,42,38,71,3445,100,9,24,0,1,27,0,0,0],
|
||||
"events": {"atk":325,"deploy":10,"die":27,"dmg":520,"engage":7,"fx":166,"skill":80,"spawn":34,"status":157},
|
||||
"fx": {"charge":24,"crit":46,"dilemma":3,"displace":16,"garrisonGrant":1,"levitate":23,"overclock":1,"pull":1,"quadShot":2,"slippery":2,"sp":37,"splash":4,"tornado":1,"tornadoPulse":5},
|
||||
"snaps": "520ef70a 4b85425a e51a3f5c 3213f78d f299e4d0 d44c6e95 32af0090 98b8dea8 911a860a 4eb667bf 67da2408"
|
||||
"enemies": {"enemy_1010_demon":[7,7,0,0,60480],"enemy_1422_lrsldr_2":[14,14,0,102,88704],"enemy_1425_lrcmra_2":[3,3,0,9632,86400]},
|
||||
"hooks": [1,34,3014,287,287,509,509,604,27,27,33,29,64,3746,89,13,24,0,1,27,0,0,0],
|
||||
"events": {"atk":321,"deploy":10,"die":27,"dmg":509,"engage":7,"fx":138,"skill":62,"spawn":34,"status":136},
|
||||
"fx": {"charge":16,"crit":37,"dilemma":3,"displace":15,"garrisonGrant":1,"levitate":21,"overclock":1,"pull":1,"quadShot":2,"slippery":2,"sp":28,"splash":5,"tornado":1,"tornadoPulse":5},
|
||||
"snaps": "ed51672c 4dcef100 b30305e6 fb2364ba 12739558 cdc4676d 4fb99eaa f487c924 144ef4cc d593d637"
|
||||
},
|
||||
"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",
|
||||
@@ -1680,21 +1681,21 @@
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":17,"total":17,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":98550,"bossDmg":0,"heal":4085,"deaths":0,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_3_12_a",2,null,2567.4,1,3,0,71,0,0,1,0],
|
||||
["p1",1,"op","chess_char_3_12_a",2,null,2567.4,1,3,0,0,0,0,0,0],
|
||||
["p1",2,"op","chess_char_3_03_a",1,null,1515.8,1,6,0,0,0,0,0,0],
|
||||
["p1",3,"op","chess_char_2_02_a",1,null,1540,1,1,0,0,0,2942,13,2],
|
||||
["p1",4,"op","chess_char_3_08_a",1,null,1724.8,1,4,3,17803,29,0,8,1],
|
||||
["p1",5,"op","chess_char_3_09_a",1,null,1393.7,1,5,3,24650,443,0,25,1],
|
||||
["p1",6,"op","chess_char_3_10_a",1,null,1815,1,2,2,6994,1716,0,9,1],
|
||||
["p1",6,"op","chess_char_3_10_a",1,null,1815,1,2,2,7065,1716,0,9,1],
|
||||
["p1",7,"op","chess_char_3_11_a",1,null,1426.7,1,7,7,37341,804,0,25,3],
|
||||
["p1",8,"op","chess_char_3_13_a",1,null,510,1,8,2,11691,1804,0,38,7],
|
||||
["p1",9,"token","token_10000_silent_healrb",null,null,1000,1,29,0,0,0,1144,15,null]
|
||||
],
|
||||
"enemies": {"enemy_1116_liprr":[11,11,0,2296,54450],"enemy_1116_liprr_2":[4,4,0,783,27000],"enemy_1118_lidbox_2":[2,2,0,1716,17100]},
|
||||
"hooks": [1,28,1626,169,169,180,180,28,17,19,15,15,0,7323,2,25,17,0,1,17,0,0,0],
|
||||
"events": {"atk":196,"deploy":11,"die":19,"dmg":180,"engage":6,"fx":48,"heal":28,"skill":30,"spawn":26,"status":23},
|
||||
"hooks": [1,28,1626,168,168,179,179,28,17,19,15,15,0,7317,2,24,17,0,1,17,0,0,0],
|
||||
"events": {"atk":195,"deploy":11,"die":19,"dmg":179,"engage":5,"fx":48,"heal":28,"skill":30,"spawn":26,"status":23},
|
||||
"fx": {"aoe":1,"displace":16,"liberate":2,"phase":5,"pull":16,"strike":3,"summon":2,"volley":3},
|
||||
"snaps": "3aee43aa 402f030a 3c8b65ca 1da7d815 34c3d285 51055bc9"
|
||||
"snaps": "3aee43aa 402f030a 20ed7a57 828d8738 db9a9285 16fb0a39"
|
||||
},
|
||||
"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",
|
||||
|
||||
+188
-190
@@ -2153,24 +2153,24 @@
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_5_diy1_b",0,"uniequip_002_thumpy",4085.4,1,3,0,0,0,0,0,0],
|
||||
["p1",2,"op","chess_char_5_diy2_b",1,"uniequip_002_thumpy",4085.4,1,4,0,0,0,0,0,0],
|
||||
["p1",3,"op","chess_char_5_diy1_b",2,"uniequip_002_thumpy",4085.4,1,5,10,89086,0,0,0,2],
|
||||
["p1",3,"op","chess_char_5_diy1_b",2,"uniequip_002_thumpy",4085.4,1,5,9,88041,0,0,0,2],
|
||||
["p1",4,"op","chess_char_6_diy1_a",0,null,3118.5,1,7,0,0,0,0,0,0],
|
||||
["p1",5,"op","chess_char_6_diy2_a",1,null,3118.5,1,11,33,279274,0,0,0,4],
|
||||
["p1",6,"op","chess_char_6_diy1_a",2,null,3017.3,1,13,29,213929,101,0,70,2],
|
||||
["p1",7,"op","chess_char_6_diy2_b",0,"none",3568.4,1,14,11,105507,242,0,123,3],
|
||||
["p1",5,"op","chess_char_6_diy2_a",1,null,3118.5,1,11,34,285448,0,0,0,4],
|
||||
["p1",6,"op","chess_char_6_diy1_a",2,null,3017.3,1,13,31,211820,101,0,70,2],
|
||||
["p1",7,"op","chess_char_6_diy2_b",0,"none",3568.4,1,14,10,107932,242,0,123,3],
|
||||
["p1",8,"op","chess_char_6_diy1_b",1,"none",3810.4,1,8,8,80737,0,0,0,4],
|
||||
["p1",9,"op","chess_char_6_diy2_b",2,"none",3665.2,1,12,10,72479,145,0,68,2],
|
||||
["p1",10,"op","chess_char_6_diy1_b",0,"uniequip_002_thumpy",4305.4,1,9,0,0,0,0,0,0],
|
||||
["p1",11,"op","chess_char_6_diy2_b",1,"uniequip_002_thumpy",4305.4,1,10,13,118028,0,0,0,2],
|
||||
["p1",11,"op","chess_char_6_diy2_b",1,"uniequip_002_thumpy",4305.4,1,10,12,112583,0,0,0,2],
|
||||
["p1",12,"op","chess_char_6_diy1_b",2,"uniequip_002_thumpy",4305.4,1,6,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_1381_winman":[27,27,0,198,150336],"enemy_1381_winman_2":[48,48,0,158,359424],"enemy_1387_winshd":[39,39,0,132,449280]},
|
||||
"hooks": [1,128,5952,583,583,2387,4000,0,114,114,19,19,0,22085,759,120,114,0,1,114,0,188,0],
|
||||
"events": {"atk":714,"deploy":12,"die":114,"dmg":3708,"engage":3,"fx":687,"skill":38,"spawn":128,"status":1842},
|
||||
"hooks": [1,128,5952,584,584,2395,4014,0,114,114,19,19,0,22085,765,121,114,0,1,114,0,188,0],
|
||||
"events": {"atk":715,"deploy":12,"die":114,"dmg":3721,"engage":3,"fx":687,"skill":38,"spawn":128,"status":1853},
|
||||
"fx": {"burst":188,"displace":13,"shield":470,"zone":16},
|
||||
"snaps": "dd9767b5 5f98cb16 b276f77b 48c86552 94927ade e431b263 d14f111e 06d02908 bf2db8ac cf404cd8 d862b55f e3bbab40 1b284643 d91b0305 102e6a65 f2b21b7f bf96c981 92113132 de65075a 7a07f354"
|
||||
"snaps": "dd9767b5 5f98cb16 b276f77b cb36086e f27007e8 f77cf9fb 89906b97 1a8f8342 0c3afb39 6459a28f a234c9ef 4f3cdd69 b4e46bd2 1829195c 58b71fc4 3bc6447a 036e06d1 8b3854a7 ec332aaf 12fbddb5"
|
||||
},
|
||||
"diy-054": {
|
||||
"about": "5_diy1_a=zumama/S1 5_diy2_a=zumama/S2 5_diy1_a=zumama/S3 5_diy2_b=zumama/S1 5_diy1_b=zumama/S2 5_diy2_b=zumama/S3 5_diy1_b=zumama/S1/002_zumama 5_diy2_b=zumama/S2/002_zumama 5_diy1_b=zumama/S3/002_zumama 5_diy2_b=zumama/S1/003_zumama 5_diy1_b=zumama/S2/003_zumama 5_diy2_b=zumama/S3/003_zumama",
|
||||
@@ -3609,7 +3609,7 @@
|
||||
"hooks": [1,99,5790,206,206,505,505,0,40,96,16,16,0,9134,36,2,75,56,1,40,0,0,0],
|
||||
"events": {"atk":206,"deploy":22,"die":40,"dmg":505,"engage":12,"fx":31,"leak":56,"skill":32,"spawn":89,"status":39},
|
||||
"fx": {"displace":2,"zone":29},
|
||||
"snaps": "52c264df 4bf0695c c49bb020 4e76789f 41a1adab dec308dc 573e73bd 643cc076 f4bd0223 0db47676 76026118 0b647035 b5924f12 1157dd87 9263f19b b93fedaf cf4e7e10 af3a9bda 1e2a9105 77843189"
|
||||
"snaps": "52c264df 4bf0695c c49bb020 4e76789f 41a1adab dec308dc 573e73bd 643cc076 cbc783ba 65ad2cfa 3b726024 76eb99e9 b6e95fde 07be0753 a09bd00f 2e4600f3 754aacec eb48b2e6 a74b1839 1c12c7b5"
|
||||
},
|
||||
"diy-085": {
|
||||
"about": "6_diy1_a=ray/S1 6_diy2_a=ray/S2 6_diy1_a=ray/S3 6_diy2_b=ray/S1 6_diy1_b=ray/S2 6_diy2_b=ray/S3 6_diy1_b=ray/S1/002_ray 6_diy2_b=ray/S2/002_ray 6_diy1_b=ray/S3/002_ray 6_diy2_b=ray/S1/003_ray 6_diy1_b=ray/S2/003_ray 6_diy2_b=ray/S3/003_ray",
|
||||
@@ -3623,32 +3623,32 @@
|
||||
"time": 226.4,
|
||||
"ticks": 6792,
|
||||
"reason": "cleared",
|
||||
"killed": 3,
|
||||
"killed": 4,
|
||||
"total": 78,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 0,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":3,"total":78,"perfect":false,"leaks":75,"leaksUncounted":0,"coins":0,"dmg":486516,"bossDmg":0,"heal":0,"deaths":20,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":4,"total":78,"perfect":false,"leaks":74,"leaksUncounted":0,"coins":0,"dmg":509487,"bossDmg":0,"heal":0,"deaths":20,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_6_diy1_a",0,null,1657.7,1,2,0,72076,0,0,76,15],
|
||||
["p1",2,"op","chess_char_6_diy2_a",1,null,1657.7,1,3,0,51345,0,0,66,1],
|
||||
["p1",3,"op","chess_char_6_diy1_a",2,null,1657.7,1,4,0,86075,0,0,78,4],
|
||||
["p1",4,"op","chess_char_6_diy2_b",0,"none",0,0,98,0,49731,5904,0,34,6],
|
||||
["p1",5,"op","chess_char_6_diy1_b",1,"none",0,0,101,0,20826,5904,0,24,1],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"none",1967.9,1,102,1,32573,3936,0,17,1],
|
||||
["p1",7,"op","chess_char_6_diy1_b",0,"uniequip_002_ray",0,0,64,0,16642,4376,0,16,4],
|
||||
["p1",8,"op","chess_char_6_diy2_b",1,"uniequip_002_ray",0,0,57,0,10402,4376,0,14,0],
|
||||
["p1",9,"op","chess_char_6_diy1_b",2,"uniequip_002_ray",0,0,77,1,38414,4376,0,24,2],
|
||||
["p1",10,"op","chess_char_6_diy2_b",0,"uniequip_003_ray",0,0,54,1,39655,4376,0,20,4],
|
||||
["p1",11,"op","chess_char_6_diy1_b",1,"uniequip_003_ray",0,0,85,0,26780,4376,0,24,1],
|
||||
["p1",12,"op","chess_char_6_diy2_b",2,"uniequip_003_ray",0,0,91,0,41997,4376,0,26,1]
|
||||
["p1",1,"op","chess_char_6_diy1_a",0,null,1657.7,1,2,0,75104,0,0,76,15],
|
||||
["p1",2,"op","chess_char_6_diy2_a",1,null,1657.7,1,3,0,53950,0,0,65,1],
|
||||
["p1",3,"op","chess_char_6_diy1_a",2,null,1657.7,1,4,1,94631,0,0,77,4],
|
||||
["p1",4,"op","chess_char_6_diy2_b",0,"none",0,0,98,1,46854,5904,0,34,6],
|
||||
["p1",5,"op","chess_char_6_diy1_b",1,"none",0,0,101,0,20701,5904,0,24,1],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"none",1967.9,1,102,2,30699,3936,0,18,1],
|
||||
["p1",7,"op","chess_char_6_diy1_b",0,"uniequip_002_ray",0,0,64,0,16720,4376,0,17,4],
|
||||
["p1",8,"op","chess_char_6_diy2_b",1,"uniequip_002_ray",0,0,57,0,10269,4376,0,14,0],
|
||||
["p1",9,"op","chess_char_6_diy1_b",2,"uniequip_002_ray",0,0,75,0,40427,4376,0,25,1],
|
||||
["p1",10,"op","chess_char_6_diy2_b",0,"uniequip_003_ray",0,0,54,0,41517,4376,0,20,4],
|
||||
["p1",11,"op","chess_char_6_diy1_b",1,"uniequip_003_ray",0,0,85,0,34498,4376,0,27,1],
|
||||
["p1",12,"op","chess_char_6_diy2_b",2,"uniequip_003_ray",0,0,91,0,44118,4376,0,26,1]
|
||||
],
|
||||
"enemies": {"enemy_1045_hammer_2":[18,0,18,15795,91356],"enemy_1061_zomshd":[60,3,57,26203,395160]},
|
||||
"hooks": [1,102,6792,476,476,476,476,20318,23,98,40,39,0,18642,59,23,78,75,1,23,0,0,0],
|
||||
"events": {"atk":476,"deploy":24,"die":23,"dmg":476,"engage":12,"fx":10,"leak":75,"skill":79,"spawn":90,"status":49},
|
||||
"fx": {"displace":10},
|
||||
"snaps": "58983778 13e92284 379e41f7 e58ffa7b 8b32b563 f572fa57 d37b97e1 3646d8dc 873cacef eebcb191 ab451294 a7349b13 6386567f 3dd0ac1b 72b5f945 1cd89d40 69927459 a5c01b22 4ee9912d 5c61ce3d f0b4e716 af4d8667 6d8ed5b0"
|
||||
"enemies": {"enemy_1045_hammer_2":[18,0,18,13526,62951],"enemy_1061_zomshd":[60,4,56,28472,446537]},
|
||||
"hooks": [1,102,6792,482,482,481,481,21278,24,98,39,38,0,18700,59,22,78,74,1,24,0,0,0],
|
||||
"events": {"atk":482,"deploy":24,"die":24,"dmg":481,"engage":12,"fx":11,"leak":74,"skill":77,"spawn":90,"status":64},
|
||||
"fx": {"displace":11},
|
||||
"snaps": "947ebb89 5ea55c31 5fa70ee1 696e15cf d0278da1 8156ac3f ef980823 c7d8381f 1f753481 7c7a145c 6a77abc5 04216ce9 6434b433 62511a79 e86acda0 408ca232 75ad6c37 b625fd9f 361b6288 1175b639 f58597f3 21906e0a 41501df6"
|
||||
},
|
||||
"diy-086": {
|
||||
"about": "5_diy1_a=ascln/S1 5_diy2_a=ascln/S2 5_diy1_a=ascln/S3 5_diy2_b=ascln/S1 5_diy1_b=ascln/S2 5_diy2_b=ascln/S3 5_diy1_b=ascln/S1/002_ascln 5_diy2_b=ascln/S2/002_ascln 5_diy1_b=ascln/S3/002_ascln 5_diy2_b=ascln/S1/003_ascln 5_diy1_b=ascln/S2/003_ascln 5_diy2_b=ascln/S3/003_ascln",
|
||||
@@ -4297,32 +4297,32 @@
|
||||
"time": 230,
|
||||
"ticks": 6900,
|
||||
"reason": "timeout",
|
||||
"killed": 23,
|
||||
"killed": 22,
|
||||
"total": 114,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 954,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":23,"total":114,"perfect":false,"leaks":91,"leaksUncounted":0,"coins":0,"dmg":323633,"bossDmg":0,"heal":34511,"deaths":22,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":22,"total":114,"perfect":false,"leaks":92,"leaksUncounted":0,"coins":0,"dmg":313635,"bossDmg":0,"heal":34259,"deaths":22,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_5_diy1_a",0,null,1554.3,1,146,1,11413,4663,0,148,0],
|
||||
["p1",1,"op","chess_char_5_diy1_a",0,null,1554.3,1,147,1,11514,4663,0,152,0],
|
||||
["p1",2,"op","chess_char_5_diy2_a",1,null,553.3,1,138,0,7048,4110,0,119,0],
|
||||
["p1",3,"op","chess_char_5_diy1_a",2,null,1554.3,1,145,1,11471,3109,0,127,0],
|
||||
["p1",4,"op","chess_char_5_diy2_b",0,"none",339.9,1,132,2,24249,5115,0,140,0],
|
||||
["p1",5,"op","chess_char_5_diy1_b",1,"none",1818.3,1,144,1,13085,3637,0,160,0],
|
||||
["p1",6,"op","chess_char_5_diy2_b",2,"none",656.7,1,134,2,24557,4798,0,200,0],
|
||||
["p1",7,"op","chess_char_6_diy1_b",0,"uniequip_002_haak",2515.7,1,143,1,11922,6968,1937,73,2],
|
||||
["p1",8,"op","chess_char_6_diy2_b",1,"uniequip_002_haak",0,0,73,1,43072,10302,3962,102,3],
|
||||
["p1",9,"op","chess_char_6_diy1_b",2,"uniequip_002_haak",2163.5,1,6,7,109225,5761,5409,174,4],
|
||||
["p1",10,"op","chess_char_6_diy2_b",0,"uniequip_003_haak",2251.7,1,147,0,1751,9119,339,13,0],
|
||||
["p1",11,"op","chess_char_6_diy1_b",1,"uniequip_003_haak",944.43,1,78,2,17818,16503,12944,140,3],
|
||||
["p1",12,"op","chess_char_6_diy2_b",2,"uniequip_003_haak",1921.1,1,2,5,48021,10242,9919,186,4]
|
||||
["p1",7,"op","chess_char_6_diy1_b",0,"uniequip_002_haak",2515.7,1,143,1,11855,6968,1937,73,2],
|
||||
["p1",8,"op","chess_char_6_diy2_b",1,"uniequip_002_haak",0,0,73,1,42244,10302,4151,102,3],
|
||||
["p1",9,"op","chess_char_6_diy1_b",2,"uniequip_002_haak",1911.93,1,6,6,101352,5761,5157,174,4],
|
||||
["p1",10,"op","chess_char_6_diy2_b",0,"uniequip_003_haak",2251.7,1,146,0,1772,9119,150,13,0],
|
||||
["p1",11,"op","chess_char_6_diy1_b",1,"uniequip_003_haak",944.43,1,78,2,17797,16503,12944,140,3],
|
||||
["p1",12,"op","chess_char_6_diy2_b",2,"uniequip_003_haak",1921.1,1,2,5,46691,10242,9919,186,4]
|
||||
],
|
||||
"enemies": {"enemy_1381_winman":[27,9,18,172,78245],"enemy_1381_winman_2":[48,13,35,2708,180482],"enemy_1387_winshd":[39,1,34,35751,64906]},
|
||||
"hooks": [1,147,6900,1890,1890,1995,2890,237,45,132,16,28,0,15319,504,33,114,87,1,45,0,0,3],
|
||||
"events": {"atk":1890,"deploy":33,"die":45,"dmg":1981,"engage":12,"fx":306,"heal":228,"leak":87,"skill":69,"spawn":126,"status":791},
|
||||
"fx": {"aoe":6,"buff":6,"crit":264,"displace":5,"dodge":3,"heal":4,"shield":7,"volley":11},
|
||||
"snaps": "719b322f a7efd8cf a394e7bd 558cdcf6 c95c2be0 b28b95fb f0cad704 861e5833 ea7cc088 d35fe97d 550b68bd 704872fd 639817bc 4363f433 7383de6e 6e1e4a12 e12b50f7 32683584 987c1067 3f7fa5a7 fdd2d120 2ae75ae0 0e92ba6e"
|
||||
"enemies": {"enemy_1381_winman":[27,8,19,172,73409],"enemy_1381_winman_2":[48,13,35,2691,173942],"enemy_1387_winshd":[39,1,34,35751,66285]},
|
||||
"hooks": [1,147,6900,1893,1893,1998,2893,235,44,132,16,28,0,15319,507,33,114,88,1,44,0,0,3],
|
||||
"events": {"atk":1893,"deploy":33,"die":44,"dmg":1984,"engage":12,"fx":305,"heal":226,"leak":88,"skill":68,"spawn":126,"status":797},
|
||||
"fx": {"aoe":6,"buff":6,"crit":263,"displace":5,"dodge":3,"heal":4,"shield":7,"volley":11},
|
||||
"snaps": "719b322f a7efd8cf a394e7bd 558cdcf6 c95c2be0 b28b95fb f0cad704 861e5833 ea7cc088 d35fe97d e6c17fd7 36ad2f3a 6a68c4fe 7cdaed3e 461448a3 63fce677 ba7c9d0d c60d5cec a6c87a9b bc66d725 caa9896c 64603db7 05aeb303"
|
||||
},
|
||||
"diy-102": {
|
||||
"about": "5_diy1_b=phatom/S1/002_phatom 5_diy2_b=phatom/S2/002_phatom 5_diy1_b=phatom/S3/002_phatom 5_diy2_b=phatom/S1/003_phatom 5_diy1_b=phatom/S2/003_phatom 5_diy2_b=phatom/S3/003_phatom 5_diy1_b=phatom/S1/004_phatom 5_diy2_b=phatom/S2/004_phatom 5_diy1_b=phatom/S3/004_phatom 6_diy1_a=phatom/S1 6_diy2_a=phatom/S2 6_diy1_a=phatom/S3",
|
||||
@@ -4333,26 +4333,26 @@
|
||||
"round": 12,
|
||||
"seed": 2379881591,
|
||||
"waveId": "act1autochess_h05",
|
||||
"time": 230,
|
||||
"ticks": 6900,
|
||||
"reason": "timeout",
|
||||
"time": 212.27,
|
||||
"ticks": 6368,
|
||||
"reason": "cleared",
|
||||
"killed": 37,
|
||||
"total": 117,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 54,
|
||||
"rngDraws": 53,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":37,"total":117,"perfect":false,"leaks":80,"leaksUncounted":0,"coins":0,"dmg":171157,"bossDmg":0,"heal":0,"deaths":38,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":37,"total":117,"perfect":false,"leaks":80,"leaksUncounted":0,"coins":0,"dmg":170244,"bossDmg":0,"heal":0,"deaths":37,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_5_diy1_b",0,"uniequip_002_phatom",0,0,159,0,3434,11570,0,106,0],
|
||||
["p1",2,"op","chess_char_5_diy2_b",1,"uniequip_002_phatom",1928.3,1,162,7,26484,11570,0,93,0],
|
||||
["p1",3,"op","chess_char_5_diy1_b",2,"uniequip_002_phatom",1928.3,1,161,3,25342,11570,0,84,0],
|
||||
["p1",4,"op","chess_char_5_diy2_b",0,"uniequip_003_phatom",1818.3,1,158,2,8639,7273,0,64,0],
|
||||
["p1",5,"op","chess_char_5_diy1_b",1,"uniequip_003_phatom",1818.3,1,160,7,29757,7273,0,73,0],
|
||||
["p1",1,"op","chess_char_5_diy1_b",0,"uniequip_002_phatom",0,0,156,2,10225,9641,0,86,0],
|
||||
["p1",2,"op","chess_char_5_diy2_b",1,"uniequip_002_phatom",0,0,157,2,11106,11570,0,72,0],
|
||||
["p1",3,"op","chess_char_5_diy1_b",2,"uniequip_002_phatom",0,0,152,4,24967,9641,0,88,0],
|
||||
["p1",4,"op","chess_char_5_diy2_b",0,"uniequip_003_phatom",1818.3,1,158,3,12645,7273,0,76,0],
|
||||
["p1",5,"op","chess_char_5_diy1_b",1,"uniequip_003_phatom",1818.3,1,159,8,33320,7273,0,77,0],
|
||||
["p1",6,"op","chess_char_5_diy2_b",2,"uniequip_003_phatom",0,0,75,3,23723,5455,0,41,0],
|
||||
["p1",7,"op","chess_char_5_diy1_b",0,"uniequip_004_phatom",0,0,36,9,27575,3637,0,80,0],
|
||||
["p1",8,"op","chess_char_5_diy2_b",1,"uniequip_004_phatom",0,0,7,1,4150,1818,0,17,0],
|
||||
["p1",9,"op","chess_char_5_diy1_b",2,"uniequip_004_phatom",0,0,52,3,12830,3637,0,54,0],
|
||||
["p1",8,"op","chess_char_5_diy2_b",1,"uniequip_004_phatom",0,0,81,2,6329,3637,0,33,0],
|
||||
["p1",9,"op","chess_char_5_diy1_b",2,"uniequip_004_phatom",0,0,52,2,11132,3637,0,54,0],
|
||||
["p1",10,"op","chess_char_6_diy1_a",0,null,0,0,46,2,8757,3109,0,36,0],
|
||||
["p1",11,"op","chess_char_6_diy2_a",1,null,0,0,8,0,290,1554,0,7,0],
|
||||
["p1",12,"op","chess_char_6_diy1_a",2,null,0,0,9,0,176,1554,0,7,0],
|
||||
@@ -4360,11 +4360,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_1006_shield_3":[18,0,18,34524,7830],"enemy_1043_zomsbr":[72,37,35,1107,152352],"enemy_1402_tgshd_2":[27,0,26,34388,10975]},
|
||||
"hooks": [1,162,6900,910,910,943,928,7676,75,154,0,38,0,0,33,78,117,79,1,75,0,0,15],
|
||||
"events": {"atk":910,"deploy":42,"die":75,"dmg":914,"engage":12,"fx":366,"leak":79,"skill":83,"spawn":132,"status":112},
|
||||
"fx": {"aoe":13,"buff":14,"displace":15,"dodge":15,"expose":294,"shield":15},
|
||||
"snaps": "00c6e30f 761e579d 454d07f3 de10b899 5dd5b7a1 f8d5d260 d62250f5 0bf2931e 2156980e 24360833 18986583 d3792d0f 8a96ce44 6b96cc73 a439e400 f34fe882 b0f945ed ab8bdc99 ebe71816 d4b49c59 6a3e4d62 6a83f5f6 a861c568"
|
||||
"enemies": {"enemy_1006_shield_3":[18,0,18,32679,9593],"enemy_1043_zomsbr":[72,37,35,1059,151009],"enemy_1402_tgshd_2":[27,0,27,34243,9642]},
|
||||
"hooks": [1,159,6368,906,906,931,915,7675,74,154,0,37,0,0,25,76,117,80,1,74,0,0,16],
|
||||
"events": {"atk":906,"deploy":39,"die":74,"dmg":893,"engage":12,"fx":321,"leak":80,"skill":78,"spawn":132,"status":93},
|
||||
"fx": {"aoe":11,"buff":14,"displace":11,"dodge":16,"expose":255,"shield":14},
|
||||
"snaps": "00c6e30f 761e579d 454d07f3 86f394db 07c46e42 38272d8a 085da00d ed39bd95 b5bf5509 37a8cebf 77da36e6 0ebea573 44cdef8d e1b954e9 b83aaf6a 1a098392 a438685b 34b50603 f2dbcead b301f42c 1ac6bf30 c837571a"
|
||||
},
|
||||
"diy-103": {
|
||||
"about": "6_diy1_b=phatom/S1 6_diy2_b=phatom/S2 6_diy1_b=phatom/S3 6_diy2_b=phatom/S1/002_phatom 6_diy1_b=phatom/S2/002_phatom 6_diy2_b=phatom/S3/002_phatom 6_diy1_b=phatom/S1/003_phatom 6_diy2_b=phatom/S2/003_phatom 6_diy1_b=phatom/S3/003_phatom 6_diy2_b=phatom/S1/004_phatom 6_diy1_b=phatom/S2/004_phatom 6_diy2_b=phatom/S3/004_phatom",
|
||||
@@ -4375,23 +4375,23 @@
|
||||
"round": 13,
|
||||
"seed": 1753717681,
|
||||
"waveId": "act1autochess_h06",
|
||||
"time": 209.73,
|
||||
"ticks": 6292,
|
||||
"time": 227.43,
|
||||
"ticks": 6823,
|
||||
"reason": "cleared",
|
||||
"killed": 21,
|
||||
"killed": 22,
|
||||
"total": 123,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 51,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":21,"total":123,"perfect":false,"leaks":102,"leaksUncounted":0,"coins":0,"dmg":410727,"bossDmg":0,"heal":0,"deaths":38,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":22,"total":123,"perfect":false,"leaks":101,"leaksUncounted":0,"coins":0,"dmg":432707,"bossDmg":0,"heal":0,"deaths":39,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_6_diy1_b",0,"none",0,0,162,1,38018,9092,0,82,0],
|
||||
["p1",2,"op","chess_char_6_diy2_b",1,"none",0,0,164,3,60393,10910,0,71,0],
|
||||
["p1",3,"op","chess_char_6_diy1_b",2,"none",0,0,158,2,66795,9092,0,64,0],
|
||||
["p1",4,"op","chess_char_6_diy2_b",0,"uniequip_002_phatom",0,0,151,4,50527,9861,0,91,0],
|
||||
["p1",5,"op","chess_char_6_diy1_b",1,"uniequip_002_phatom",1762.3,1,165,5,62414,10071,0,58,0],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"uniequip_002_phatom",0,0,49,1,26379,3945,0,35,0],
|
||||
["p1",1,"op","chess_char_6_diy1_b",0,"none",1818.3,1,166,1,36385,9092,0,81,0],
|
||||
["p1",2,"op","chess_char_6_diy2_b",1,"none",0,0,165,5,60255,10910,0,78,0],
|
||||
["p1",3,"op","chess_char_6_diy1_b",2,"none",1818.3,1,167,2,63824,9092,0,61,0],
|
||||
["p1",4,"op","chess_char_6_diy2_b",0,"uniequip_002_phatom",0,0,158,2,63197,9862,0,101,0],
|
||||
["p1",5,"op","chess_char_6_diy1_b",1,"uniequip_002_phatom",0,0,164,5,75421,11834,0,68,0],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"uniequip_002_phatom",0,0,49,1,27425,3945,0,37,0],
|
||||
["p1",7,"op","chess_char_6_diy1_b",0,"uniequip_003_phatom",0,0,14,1,10742,1818,0,19,0],
|
||||
["p1",8,"op","chess_char_6_diy2_b",1,"uniequip_003_phatom",0,0,43,0,41672,3637,0,43,0],
|
||||
["p1",9,"op","chess_char_6_diy1_b",2,"uniequip_003_phatom",0,0,5,0,6305,1818,0,12,0],
|
||||
@@ -4402,11 +4402,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_1148_dssbr":[51,16,35,11466,179884],"enemy_1148_dssbr_2":[60,5,55,29875,178979],"enemy_1439_dslntf":[12,0,12,22972,157208]},
|
||||
"hooks": [1,165,6292,784,784,2440,3134,0,59,161,0,38,0,0,51,70,123,102,1,59,0,17,16],
|
||||
"events": {"atk":784,"deploy":39,"die":59,"dmg":3112,"engage":12,"fx":106,"leak":102,"skill":78,"spawn":138,"status":147},
|
||||
"fx": {"aoe":10,"buff":16,"burst":17,"displace":34,"dodge":16,"shield":13},
|
||||
"snaps": "d02acb9b 747b799d 3556df69 798710a6 dd7345a4 4f345676 9d56edec 13315bc3 7ee5544f 217cee69 76e2a509 5950f71f b420b4e4 58e12cc7 bb5bc2d9 bcfb1931 8204ddf6 ae18f969 ee91d051 b666f0c3 4240ed95"
|
||||
"enemies": {"enemy_1148_dssbr":[51,16,35,15053,173738],"enemy_1148_dssbr_2":[60,6,54,21142,175557],"enemy_1439_dslntf":[12,0,12,29461,189602]},
|
||||
"hooks": [1,167,6823,811,811,2487,3250,0,61,162,0,39,0,0,53,71,123,101,1,61,0,19,18],
|
||||
"events": {"atk":811,"deploy":41,"die":61,"dmg":3231,"engage":12,"fx":112,"leak":101,"skill":82,"spawn":138,"status":154},
|
||||
"fx": {"aoe":11,"buff":16,"burst":19,"displace":34,"dodge":18,"shield":14},
|
||||
"snaps": "d02acb9b 747b799d 3556df69 798710a6 dd7345a4 11e01b26 7bb0aa9b 952699f2 ac0623f1 b65781a8 117f0674 f4977794 98b3b30e c917a1f0 fd6d23db e6acfb9c f8874cc4 f48bcced 0d255544 7950dd9e b5cb1045 bf2f865f 9ab9eb1e"
|
||||
},
|
||||
"diy-104": {
|
||||
"about": "5_diy1_a=crosly/S1 5_diy2_a=crosly/S2 5_diy1_a=crosly/S3 5_diy2_b=crosly/S1 5_diy1_b=crosly/S2 5_diy2_b=crosly/S3 5_diy1_b=crosly/S1/002_crosly 5_diy2_b=crosly/S2/002_crosly 5_diy1_b=crosly/S3/002_crosly 5_diy2_b=crosly/S1/003_crosly 5_diy1_b=crosly/S2/003_crosly 5_diy2_b=crosly/S3/003_crosly",
|
||||
@@ -4584,28 +4584,28 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 0,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":3,"total":72,"perfect":false,"leaks":69,"leaksUncounted":0,"coins":0,"dmg":43521,"bossDmg":0,"heal":0,"deaths":22,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":3,"total":72,"perfect":false,"leaks":69,"leaksUncounted":0,"coins":0,"dmg":43313,"bossDmg":0,"heal":0,"deaths":22,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_5_diy1_a",0,null,1983.3,1,98,0,0,3967,0,0,0],
|
||||
["p1",2,"op","chess_char_5_diy2_a",1,null,0,0,96,0,0,5950,0,0,0],
|
||||
["p1",3,"op","chess_char_5_diy1_a",2,null,0,0,92,0,0,5950,0,0,0],
|
||||
["p1",4,"op","chess_char_5_diy2_b",0,"none",0,0,82,0,0,4653,0,0,0],
|
||||
["p1",5,"op","chess_char_5_diy1_b",1,"none",2244.51,1,97,0,0,2408,0,0,0],
|
||||
["p1",6,"op","chess_char_5_diy2_b",2,"none",0,0,8,3,23628,2327,0,0,1],
|
||||
["p1",6,"op","chess_char_5_diy2_b",2,"none",0,0,8,3,23524,2327,0,0,1],
|
||||
["p1",7,"op","chess_char_5_diy1_b",0,"uniequip_002_weedy",0,0,51,0,0,4961,0,0,0],
|
||||
["p1",8,"op","chess_char_5_diy2_b",1,"uniequip_002_weedy",0,0,9,0,0,2481,0,0,0],
|
||||
["p1",9,"op","chess_char_5_diy1_b",2,"uniequip_002_weedy",0,0,59,0,13160,4961,0,0,1],
|
||||
["p1",9,"op","chess_char_5_diy1_b",2,"uniequip_002_weedy",0,0,59,0,13120,4961,0,0,1],
|
||||
["p1",10,"op","chess_char_5_diy2_b",0,"uniequip_003_weedy",0,0,62,0,0,4653,0,0,0],
|
||||
["p1",11,"op","chess_char_5_diy1_b",1,"uniequip_003_weedy",0,0,61,0,0,4653,0,0,0],
|
||||
["p1",12,"op","chess_char_5_diy2_b",2,"uniequip_003_weedy",0,0,3,0,6733,2327,0,0,1],
|
||||
["p1",12,"op","chess_char_5_diy2_b",2,"uniequip_003_weedy",0,0,3,0,6669,2327,0,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]
|
||||
],
|
||||
"enemies": {"enemy_1005_yokai_2":[18,3,15,691,6428],"enemy_1041_lazerd_2":[24,0,24,48598,9805],"enemy_1042_frostd":[30,0,30,0,27288]},
|
||||
"hooks": [1,98,6645,170,170,884,884,0,25,94,3,3,0,10309,0,0,72,69,1,25,0,0,0],
|
||||
"events": {"atk":170,"deploy":24,"die":25,"dmg":884,"fx":3,"leak":69,"skill":6,"spawn":86,"status":46},
|
||||
"enemies": {"enemy_1005_yokai_2":[18,3,15,691,6428],"enemy_1041_lazerd_2":[24,0,24,48598,9741],"enemy_1042_frostd":[30,0,30,0,27144]},
|
||||
"hooks": [1,98,6645,170,170,880,880,0,25,94,3,3,0,10307,0,0,72,69,1,25,0,0,0],
|
||||
"events": {"atk":170,"deploy":24,"die":25,"dmg":880,"fx":3,"leak":69,"skill":6,"spawn":86,"status":46},
|
||||
"fx": {"frostNova":3},
|
||||
"snaps": "d353e907 30c5201a 8dc26be5 7d010dba 8ddbc092 d6ab1af1 6dc3eac3 8c57c482 1c70d10e 4ec38bc8 8e7698b5 6cb40765 9c9b471b 4ecbd38e 1ef345e2 93020fe0 95149e43 6063fc6f cc87c54a ffba1461 4fd5f411 74482457 dd5ac199"
|
||||
"snaps": "d353e907 30c5201a aa58420c acf88e09 4ef5837d e87fbe36 5884c834 ef25c635 1138fe69 1721bbf3 911c1876 510e404e cbb07c08 ac1ecf7d fc865079 4dfcc40b f8d65000 e0a937d4 63b88839 3461cfd2 97ab2c4e 9d98c348 343eb63a"
|
||||
},
|
||||
"diy-109": {
|
||||
"about": "6_diy1_a=weedy/S1 6_diy2_a=weedy/S2 6_diy1_a=weedy/S3 6_diy2_b=weedy/S1 6_diy1_b=weedy/S2 6_diy2_b=weedy/S3 6_diy1_b=weedy/S1/002_weedy 6_diy2_b=weedy/S2/002_weedy 6_diy1_b=weedy/S3/002_weedy 6_diy2_b=weedy/S1/003_weedy 6_diy1_b=weedy/S2/003_weedy 6_diy2_b=weedy/S3/003_weedy",
|
||||
@@ -4625,17 +4625,17 @@
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 0,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":9,"total":123,"perfect":false,"leaks":114,"leaksUncounted":0,"coins":0,"dmg":160906,"bossDmg":0,"heal":0,"deaths":21,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":9,"total":123,"perfect":false,"leaks":114,"leaksUncounted":0,"coins":0,"dmg":158826,"bossDmg":0,"heal":0,"deaths":21,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_6_diy1_a",0,null,0,0,135,0,0,3967,0,0,0],
|
||||
["p1",2,"op","chess_char_6_diy2_a",1,null,0,0,127,0,0,3967,0,0,0],
|
||||
["p1",3,"op","chess_char_6_diy1_a",2,null,1488.97,1,149,0,0,4461,0,0,0],
|
||||
["p1",4,"op","chess_char_6_diy2_b",0,"none",0,0,83,0,0,4653,0,0,0],
|
||||
["p1",5,"op","chess_char_6_diy1_b",1,"none",0,0,145,0,1783,4653,0,1,1],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"none",0,0,9,0,48038,2326,0,25,2],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"none",0,0,9,0,45958,2326,0,25,2],
|
||||
["p1",7,"op","chess_char_6_diy1_b",0,"uniequip_002_weedy",0,0,94,0,4080,5115,0,7,2],
|
||||
["p1",8,"op","chess_char_6_diy2_b",1,"uniequip_002_weedy",3.07,1,90,4,28670,5112,0,30,1],
|
||||
["p1",9,"op","chess_char_6_diy1_b",2,"uniequip_002_weedy",0,0,85,3,20161,5115,0,14,2],
|
||||
["p1",8,"op","chess_char_6_diy2_b",1,"uniequip_002_weedy",3.07,1,90,4,29317,5112,0,32,1],
|
||||
["p1",9,"op","chess_char_6_diy1_b",2,"uniequip_002_weedy",0,0,85,3,19515,5115,0,14,2],
|
||||
["p1",10,"op","chess_char_6_diy2_b",0,"uniequip_003_weedy",0,0,81,0,17175,4653,0,18,5],
|
||||
["p1",11,"op","chess_char_6_diy1_b",1,"uniequip_003_weedy",0,0,14,2,38166,2326,0,33,0],
|
||||
["p1",12,"op","chess_char_6_diy2_b",2,"uniequip_003_weedy",0,0,106,0,2833,4653,0,6,0],
|
||||
@@ -4643,11 +4643,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_1019_jshoot_2":[57,7,50,30560,60228],"enemy_1299_ymkilr_2":[27,0,27,18743,15964],"enemy_1422_lrsldr_2":[39,2,37,1699,84714]},
|
||||
"hooks": [1,149,6536,604,604,1216,1216,0,30,144,13,12,0,21292,9,31,123,114,1,30,0,0,0],
|
||||
"events": {"atk":668,"deploy":23,"die":30,"dmg":1216,"engage":8,"fx":18,"leak":114,"skill":25,"spawn":138,"status":18},
|
||||
"enemies": {"enemy_1019_jshoot_2":[57,7,50,30560,60228],"enemy_1299_ymkilr_2":[27,0,27,18743,15964],"enemy_1422_lrsldr_2":[39,2,37,1699,82634]},
|
||||
"hooks": [1,149,6536,606,606,1145,1145,0,30,144,13,12,0,21292,9,31,123,114,1,30,0,0,0],
|
||||
"events": {"atk":669,"deploy":23,"die":30,"dmg":1145,"engage":8,"fx":18,"leak":114,"skill":25,"spawn":138,"status":18},
|
||||
"fx": {"displace":15,"frostNova":3},
|
||||
"snaps": "d701056f a020fc09 ea3a32bb 706f806e 8ad8e93b 9dfd06a9 96ca5080 6c15a839 38ad5653 d6127c2b 3f95e6fb 3b9209f3 a57ca347 a7548c08 99586c88 5cd08b2e 427d08c3 150325b0 f5720f9a ac8ddd3a 90a77d5e 527340ff"
|
||||
"snaps": "d701056f a020fc09 ae93b50a 583b82dd d35b68eb 22ffe832 bf74e349 6d7e81ed c0576194 42032143 4fb715a3 f3debd8b 3af8ba5f da7c60d0 1ff44210 f4f30ff6 e9158d6b 96ae0918 b511b1c2 bfdaa542 095f2c66 263a0627"
|
||||
},
|
||||
"diy-110": {
|
||||
"about": "5_diy1_a=wang/S1 5_diy2_a=wang/S2 5_diy1_a=wang/S3 5_diy2_b=wang/S1 5_diy1_b=wang/S2 5_diy2_b=wang/S3 5_diy1_b=wang/S1/002_wang 5_diy2_b=wang/S2/002_wang 5_diy1_b=wang/S3/002_wang 6_diy1_a=wang/S1 6_diy2_a=wang/S2 6_diy1_a=wang/S3",
|
||||
@@ -4867,26 +4867,26 @@
|
||||
"time": 205.67,
|
||||
"ticks": 6170,
|
||||
"reason": "cleared",
|
||||
"killed": 119,
|
||||
"killed": 109,
|
||||
"total": 93,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 8,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":119,"total":93,"perfect":false,"leaks":67,"leaksUncounted":0,"coins":0,"dmg":577379,"bossDmg":0,"heal":0,"deaths":17,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":109,"total":93,"perfect":false,"leaks":80,"leaksUncounted":0,"coins":0,"dmg":566582,"bossDmg":0,"heal":0,"deaths":17,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_6_diy1_a",0,null,2072.4,1,178,6,72185,2072,0,62,2],
|
||||
["p1",2,"op","chess_char_6_diy2_a",1,null,0,0,200,27,26762,4145,0,50,2],
|
||||
["p1",3,"op","chess_char_6_diy1_a",2,null,0,0,193,6,43142,4145,0,48,1],
|
||||
["p1",4,"op","chess_char_6_diy2_b",0,"none",2437.6,1,190,12,81287,2438,0,75,2],
|
||||
["p1",5,"op","chess_char_6_diy1_b",1,"none",1807.6,1,213,19,109333,5505,0,44,1],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"none",0,0,176,12,81964,4875,0,51,1],
|
||||
["p1",1,"op","chess_char_6_diy1_a",0,null,2072.4,1,180,10,80842,2072,0,62,2],
|
||||
["p1",2,"op","chess_char_6_diy2_a",1,null,0,0,197,20,31258,4145,0,48,2],
|
||||
["p1",3,"op","chess_char_6_diy1_a",2,null,0,0,189,7,36703,4145,0,43,1],
|
||||
["p1",4,"op","chess_char_6_diy2_b",0,"none",2437.6,1,203,13,64589,2438,0,72,2],
|
||||
["p1",5,"op","chess_char_6_diy1_b",1,"none",1807.6,1,216,19,109333,5505,0,44,1],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"none",0,0,176,12,82664,4875,0,51,1],
|
||||
["p1",7,"op","chess_char_5_diy1_a",0,null,1494.9,1,4,0,0,0,0,0,0],
|
||||
["p1",8,"op","chess_char_5_diy2_a",1,null,1494.9,1,5,10,34587,0,0,54,0],
|
||||
["p1",9,"op","chess_char_5_diy1_a",2,null,798.45,1,15,1,80521,696,0,68,4],
|
||||
["p1",10,"op","chess_char_5_diy2_b",0,"none",0,0,172,1,9273,3454,0,29,3],
|
||||
["p1",8,"op","chess_char_5_diy2_a",1,null,1494.9,1,5,6,33444,0,0,54,0],
|
||||
["p1",9,"op","chess_char_5_diy1_a",2,null,450.23,1,15,1,79999,1045,0,68,4],
|
||||
["p1",10,"op","chess_char_5_diy2_b",0,"none",0,0,172,1,9426,3454,0,29,3],
|
||||
["p1",11,"op","chess_char_5_diy1_b",1,"none",0,0,165,2,7961,3454,0,21,4],
|
||||
["p1",12,"op","chess_char_5_diy2_b",2,"none",0,0,189,3,17175,5181,0,18,1],
|
||||
["p1",12,"op","chess_char_5_diy2_b",2,"none",0,0,193,3,17175,5181,0,18,1],
|
||||
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
|
||||
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null],
|
||||
["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null],
|
||||
@@ -4896,16 +4896,16 @@
|
||||
["p1","~4","token","token_10024_ebnhlz_rcube",null,null,1000,0,81,0,4795,0,0,0,null]
|
||||
],
|
||||
"enemies": {
|
||||
"enemy_1197_sfshu": [15,9,6,247,44989],
|
||||
"enemy_1197_sfshu_2": [39,22,17,6276,159485],
|
||||
"enemy_1198_msfshu": [27,24,3,0,128],
|
||||
"enemy_1198_msfshu_2": [66,52,14,0,395],
|
||||
"enemy_9010_acpupp": [39,12,27,23226,440905]
|
||||
"enemy_1197_sfshu": [15,10,5,157,45367],
|
||||
"enemy_1197_sfshu_2": [39,22,17,6644,158897],
|
||||
"enemy_1198_msfshu": [30,21,9,0,114],
|
||||
"enemy_1198_msfshu_2": [66,44,22,0,347],
|
||||
"enemy_9010_acpupp": [39,12,27,23296,430843]
|
||||
},
|
||||
"hooks": [1,216,6170,605,605,2686,2467,0,136,207,21,19,61,13640,22,40,186,67,1,150,0,0,0],
|
||||
"events": {"atk":979,"deploy":27,"die":140,"dmg":2467,"engage":11,"fx":149,"leak":67,"skill":40,"spawn":205,"status":419},
|
||||
"fx": {"aoe":4,"dash":3,"displace":8,"ember":14,"pull":8,"shieldBreak":37,"summon":35,"takeoff":9,"telegraph":14,"volley":17},
|
||||
"snaps": "57dcdf75 dc3dcd97 c28b4fd5 208f5a43 ad3518e1 562fdd2e e23ec836 492591ec 6b3779f8 754d841a bf331864 361dcd04 5d3d6bf6 baf46a2d 45217d5b 1bc94bcc 53fd28f7 c92dc6cb 40e68c6f 6d0c63b7 3f9190c5"
|
||||
"hooks": [1,219,6170,596,596,2638,2419,0,126,210,21,19,61,13567,20,41,189,80,1,140,0,0,0],
|
||||
"events": {"atk":959,"deploy":27,"die":130,"dmg":2419,"engage":11,"fx":149,"leak":80,"skill":40,"spawn":208,"status":414},
|
||||
"fx": {"aoe":4,"dash":3,"displace":8,"ember":14,"pull":8,"shieldBreak":36,"summon":36,"takeoff":9,"telegraph":14,"volley":17},
|
||||
"snaps": "57dcdf75 08ad1aa1 cb8cc95e a1b48820 b66776e5 5ed771e9 634da3e2 537198e8 5ee49ba1 f02297e9 b29909e3 71f38eaf 9d30fd32 52d30340 cc1ab512 778afcbf 4d58a33d 6206c95b 3bdaed6c c4067e47 23ffc7e2"
|
||||
},
|
||||
"diy-115": {
|
||||
"about": "5_diy1_b=ebnhlz/S1/002_ebnhlz 5_diy2_b=ebnhlz/S2/002_ebnhlz 5_diy1_b=ebnhlz/S3/002_ebnhlz 5_diy2_b=ebnhlz/S1/003_ebnhlz 5_diy1_b=ebnhlz/S2/003_ebnhlz 5_diy2_b=ebnhlz/S3/003_ebnhlz 5_diy1_b=ebnhlz/S1/004_ebnhlz 5_diy2_b=ebnhlz/S2/004_ebnhlz 5_diy1_b=ebnhlz/S3/004_ebnhlz 6_diy1_a=ebnhlz/S1 6_diy2_a=ebnhlz/S2 6_diy1_a=ebnhlz/S3",
|
||||
@@ -4916,63 +4916,63 @@
|
||||
"round": 12,
|
||||
"seed": 2479968306,
|
||||
"waveId": "act1autochess_h05",
|
||||
"time": 199.17,
|
||||
"ticks": 5975,
|
||||
"time": 202.23,
|
||||
"ticks": 6067,
|
||||
"reason": "cleared",
|
||||
"killed": 167,
|
||||
"killed": 177,
|
||||
"total": 96,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 0,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":167,"total":96,"perfect":false,"leaks":75,"leaksUncounted":0,"coins":0,"dmg":536162,"bossDmg":0,"heal":0,"deaths":9,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":177,"total":96,"perfect":false,"leaks":76,"leaksUncounted":0,"coins":0,"dmg":531921,"bossDmg":0,"heal":0,"deaths":9,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_5_diy1_b",0,"uniequip_002_ebnhlz",1727,1,10,3,61032,0,0,47,5],
|
||||
["p1",2,"op","chess_char_5_diy2_b",1,"uniequip_002_ebnhlz",1727,1,11,8,32403,0,0,30,0],
|
||||
["p1",3,"op","chess_char_5_diy1_b",2,"uniequip_002_ebnhlz",1727,1,1,4,14014,0,0,24,4],
|
||||
["p1",4,"op","chess_char_5_diy2_b",0,"uniequip_003_ebnhlz",1815,1,3,17,39641,0,0,83,8],
|
||||
["p1",5,"op","chess_char_5_diy1_b",1,"uniequip_003_ebnhlz",1815,1,5,10,50031,0,0,62,7],
|
||||
["p1",6,"op","chess_char_5_diy2_b",2,"uniequip_003_ebnhlz",1815,1,7,19,126974,0,0,48,4],
|
||||
["p1",7,"op","chess_char_5_diy1_b",0,"uniequip_004_ebnhlz",1727,1,9,1,6,0,0,2,3],
|
||||
["p1",8,"op","chess_char_5_diy2_b",1,"uniequip_004_ebnhlz",1727,1,12,2,69406,0,0,49,14],
|
||||
["p1",9,"op","chess_char_5_diy1_b",2,"uniequip_004_ebnhlz",0,0,209,4,9816,3454,0,10,1],
|
||||
["p1",10,"op","chess_char_6_diy1_a",0,null,1494.9,1,275,7,12352,2990,0,30,2],
|
||||
["p1",11,"op","chess_char_6_diy2_a",1,null,866.03,1,268,4,18192,3619,0,21,0],
|
||||
["p1",12,"op","chess_char_6_diy1_a",2,null,0,0,266,3,19975,4485,0,15,1],
|
||||
["p1",2,"op","chess_char_5_diy2_b",1,"uniequip_002_ebnhlz",1727,1,11,9,32402,0,0,30,0],
|
||||
["p1",3,"op","chess_char_5_diy1_b",2,"uniequip_002_ebnhlz",1727,1,1,3,12482,0,0,24,4],
|
||||
["p1",4,"op","chess_char_5_diy2_b",0,"uniequip_003_ebnhlz",1815,1,3,22,38266,0,0,77,8],
|
||||
["p1",5,"op","chess_char_5_diy1_b",1,"uniequip_003_ebnhlz",1815,1,5,9,54549,0,0,61,7],
|
||||
["p1",6,"op","chess_char_5_diy2_b",2,"uniequip_003_ebnhlz",1815,1,7,16,126038,0,0,48,4],
|
||||
["p1",7,"op","chess_char_5_diy1_b",0,"uniequip_004_ebnhlz",1727,1,9,0,4,0,0,1,3],
|
||||
["p1",8,"op","chess_char_5_diy2_b",1,"uniequip_004_ebnhlz",1727,1,12,2,67737,0,0,50,14],
|
||||
["p1",9,"op","chess_char_5_diy1_b",2,"uniequip_004_ebnhlz",0,0,226,6,9605,3454,0,14,2],
|
||||
["p1",10,"op","chess_char_6_diy1_a",0,null,1494.9,1,288,10,10269,2990,0,28,1],
|
||||
["p1",11,"op","chess_char_6_diy2_a",1,null,208.82,1,278,4,17014,4276,0,22,0],
|
||||
["p1",12,"op","chess_char_6_diy1_a",2,null,0,0,271,4,20204,4485,0,15,1],
|
||||
["p1","~1","token","token_10024_ebnhlz_rcube",null,null,1000,0,29,0,0,0,0,0,null],
|
||||
["p1","~2","token","token_10024_ebnhlz_rcube",null,null,1000,0,30,1,13973,0,0,0,null],
|
||||
["p1","~3","token","token_10024_ebnhlz_rcube",null,null,1000,0,52,1,6330,0,0,0,null],
|
||||
["p1","~4","token","token_10024_ebnhlz_rcube",null,null,1000,0,78,0,5694,0,0,0,null],
|
||||
["p1","~5","token","token_10024_ebnhlz_rcube",null,null,1000,0,80,0,0,0,0,0,null],
|
||||
["p1","~6","token","token_10024_ebnhlz_rcube",null,null,1000,0,100,0,5694,0,0,0,null],
|
||||
["p1","~7","token","token_10024_ebnhlz_rcube",null,null,1000,0,124,0,16452,0,0,0,null],
|
||||
["p1","~8","token","token_10024_ebnhlz_rcube",null,null,1000,0,129,0,0,0,0,0,null],
|
||||
["p1","~9","token","token_10024_ebnhlz_rcube",null,null,1000,0,141,0,3164,0,0,0,null],
|
||||
["p1","~10","token","token_10024_ebnhlz_rcube",null,null,1000,0,159,0,2535,0,0,0,null],
|
||||
["p1","~11","token","token_10024_ebnhlz_rcube",null,null,1000,0,171,0,0,0,0,0,null],
|
||||
["p1","~12","token","token_10024_ebnhlz_rcube",null,null,1000,0,181,0,5694,0,0,0,null],
|
||||
["p1","~13","token","token_10024_ebnhlz_rcube",null,null,1000,0,205,0,10756,0,0,0,null],
|
||||
["p1","~14","token","token_10024_ebnhlz_rcube",null,null,1000,0,212,0,0,0,0,0,null],
|
||||
["p1","~15","token","token_10024_ebnhlz_rcube",null,null,1000,0,223,0,3164,0,0,0,null],
|
||||
["p1","~16","token","token_10024_ebnhlz_rcube",null,null,1000,0,243,0,3168,0,0,0,null],
|
||||
["p1","~17","token","token_10024_ebnhlz_rcube",null,null,1000,0,252,0,0,0,0,0,null],
|
||||
["p1","~18","token","token_10024_ebnhlz_rcube",null,null,1000,0,255,0,5694,0,0,0,null],
|
||||
["p1","~19","token","token_10024_ebnhlz_rcube",null,null,1000,0,269,0,0,0,0,0,null],
|
||||
["p1","~20","token","token_10024_ebnhlz_rcube",null,null,1000,1,281,0,0,0,0,0,null],
|
||||
["p1","~21","token","token_10024_ebnhlz_rcube",null,null,1000,1,282,0,0,0,0,0,null]
|
||||
["p1","~4","token","token_10024_ebnhlz_rcube",null,null,1000,0,75,0,5694,0,0,0,null],
|
||||
["p1","~5","token","token_10024_ebnhlz_rcube",null,null,1000,0,77,0,0,0,0,0,null],
|
||||
["p1","~6","token","token_10024_ebnhlz_rcube",null,null,1000,0,98,0,5694,0,0,0,null],
|
||||
["p1","~7","token","token_10024_ebnhlz_rcube",null,null,1000,0,127,0,16452,0,0,0,null],
|
||||
["p1","~8","token","token_10024_ebnhlz_rcube",null,null,1000,0,132,0,0,0,0,0,null],
|
||||
["p1","~9","token","token_10024_ebnhlz_rcube",null,null,1000,0,146,0,3164,0,0,0,null],
|
||||
["p1","~10","token","token_10024_ebnhlz_rcube",null,null,1000,0,164,0,2535,0,0,0,null],
|
||||
["p1","~11","token","token_10024_ebnhlz_rcube",null,null,1000,0,175,0,0,0,0,0,null],
|
||||
["p1","~12","token","token_10024_ebnhlz_rcube",null,null,1000,0,188,0,5694,0,0,0,null],
|
||||
["p1","~13","token","token_10024_ebnhlz_rcube",null,null,1000,0,209,0,10756,0,0,0,null],
|
||||
["p1","~14","token","token_10024_ebnhlz_rcube",null,null,1000,0,218,0,0,0,0,0,null],
|
||||
["p1","~15","token","token_10024_ebnhlz_rcube",null,null,1000,0,227,0,3164,0,0,0,null],
|
||||
["p1","~16","token","token_10024_ebnhlz_rcube",null,null,1000,0,252,0,3168,0,0,0,null],
|
||||
["p1","~17","token","token_10024_ebnhlz_rcube",null,null,1000,0,261,0,0,0,0,0,null],
|
||||
["p1","~18","token","token_10024_ebnhlz_rcube",null,null,1000,0,264,0,5694,0,0,0,null],
|
||||
["p1","~19","token","token_10024_ebnhlz_rcube",null,null,1000,0,280,0,0,0,0,0,null],
|
||||
["p1","~20","token","token_10024_ebnhlz_rcube",null,null,1000,1,289,0,0,0,0,0,null],
|
||||
["p1","~21","token","token_10024_ebnhlz_rcube",null,null,1000,1,293,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {
|
||||
"enemy_1195_sfyin": [45,25,20,8309,171226],
|
||||
"enemy_1196_msfyin": [50,37,13,0,209],
|
||||
"enemy_1197_sfshu": [39,28,11,6238,209036],
|
||||
"enemy_1198_msfshu": [84,65,19,0,509],
|
||||
"enemy_1195_sfyin": [45,29,16,8656,175009],
|
||||
"enemy_1196_msfyin": [58,44,14,0,251],
|
||||
"enemy_1197_sfshu": [39,29,10,6549,201323],
|
||||
"enemy_1198_msfshu": [87,63,24,0,490],
|
||||
"enemy_1199_sfjin": [12,12,0,0,186325],
|
||||
"enemy_1200_msfjin": [12,0,12,0,467]
|
||||
"enemy_1200_msfjin": [12,0,12,0,468]
|
||||
},
|
||||
"hooks": [1,282,5975,470,470,2418,2550,0,176,270,49,46,0,29773,0,30,242,75,1,176,0,0,0],
|
||||
"events": {"atk":470,"deploy":40,"die":195,"dmg":2550,"engage":12,"fx":202,"leak":75,"skill":95,"spawn":275},
|
||||
"fx": {"aoe":13,"displace":19,"pull":19,"summon":86,"volley":65},
|
||||
"snaps": "c29c8ba2 1ea45a5e a76a2b96 30b47bf5 2dfff7ce b50b0a8a 7700ff6d 7610359e 85a0685d 787f426e ff7bc6a1 a987b0fc 9fb0853f 25f14138 862c88f1 40275ccc 01344e7d 6077693c 1b405d9d ce27bcd5"
|
||||
"hooks": [1,293,6067,468,468,2450,2582,0,186,281,49,47,0,30450,0,33,253,76,1,186,0,0,0],
|
||||
"events": {"atk":468,"deploy":40,"die":205,"dmg":2582,"engage":12,"fx":207,"leak":76,"skill":96,"spawn":286},
|
||||
"fx": {"aoe":13,"displace":19,"pull":19,"summon":91,"volley":65},
|
||||
"snaps": "c29c8ba2 9eff87e3 9bac5a7f f255e364 6db7b2c8 8e6cff85 5650c2b6 6440ae1c 7896b381 a29aa028 30679ff0 4733e94d 7d3d6567 87dbc490 8e3c7012 7862e9a0 1e1d912b ecb673d3 a5647edc 2df8cab3 43eb925e"
|
||||
},
|
||||
"diy-116": {
|
||||
"about": "6_diy1_b=ebnhlz/S1 6_diy2_b=ebnhlz/S2 6_diy1_b=ebnhlz/S3 6_diy2_b=ebnhlz/S1/002_ebnhlz 6_diy1_b=ebnhlz/S2/002_ebnhlz 6_diy2_b=ebnhlz/S3/002_ebnhlz 6_diy1_b=ebnhlz/S1/003_ebnhlz 6_diy2_b=ebnhlz/S2/003_ebnhlz 6_diy1_b=ebnhlz/S3/003_ebnhlz 6_diy2_b=ebnhlz/S1/004_ebnhlz 6_diy1_b=ebnhlz/S2/004_ebnhlz 6_diy2_b=ebnhlz/S3/004_ebnhlz",
|
||||
@@ -4986,39 +4986,37 @@
|
||||
"time": 217.6,
|
||||
"ticks": 6528,
|
||||
"reason": "cleared",
|
||||
"killed": 3,
|
||||
"killed": 4,
|
||||
"total": 123,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 10,
|
||||
"rngDraws": 8,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":3,"total":123,"perfect":false,"leaks":120,"leaksUncounted":0,"coins":0,"dmg":337670,"bossDmg":0,"heal":0,"deaths":21,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":4,"total":123,"perfect":false,"leaks":119,"leaksUncounted":0,"coins":0,"dmg":333584,"bossDmg":0,"heal":0,"deaths":21,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_6_diy1_b",0,"none",0,0,114,2,23946,3454,0,22,2],
|
||||
["p1",2,"op","chess_char_6_diy2_b",1,"none",0,0,91,0,33438,3454,0,21,4],
|
||||
["p1",3,"op","chess_char_6_diy1_b",2,"none",0,0,131,0,28541,3454,0,11,1],
|
||||
["p1",4,"op","chess_char_6_diy2_b",0,"uniequip_002_ebnhlz",0,0,142,0,17569,3454,0,17,1],
|
||||
["p1",5,"op","chess_char_6_diy1_b",1,"uniequip_002_ebnhlz",0,0,151,0,22856,5181,0,13,1],
|
||||
["p1",1,"op","chess_char_6_diy1_b",0,"none",0,0,113,2,23972,3454,0,21,2],
|
||||
["p1",2,"op","chess_char_6_diy2_b",1,"none",0,0,129,0,20076,3454,0,11,2],
|
||||
["p1",3,"op","chess_char_6_diy1_b",2,"none",0,0,91,0,52690,3454,0,24,2],
|
||||
["p1",4,"op","chess_char_6_diy2_b",0,"uniequip_002_ebnhlz",0,0,140,0,17953,3454,0,17,1],
|
||||
["p1",5,"op","chess_char_6_diy1_b",1,"uniequip_002_ebnhlz",0,0,149,0,22856,5181,0,13,1],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"uniequip_002_ebnhlz",0,0,78,0,14503,3454,0,8,0],
|
||||
["p1",7,"op","chess_char_6_diy1_b",0,"uniequip_003_ebnhlz",0,0,74,0,23436,3839,0,5,0],
|
||||
["p1",8,"op","chess_char_6_diy2_b",1,"uniequip_003_ebnhlz",0,0,7,1,22970,1920,0,7,0],
|
||||
["p1",9,"op","chess_char_6_diy1_b",2,"uniequip_003_ebnhlz",0,0,9,0,25517,1920,0,8,1],
|
||||
["p1",8,"op","chess_char_6_diy2_b",1,"uniequip_003_ebnhlz",0,0,7,1,23978,1920,0,7,0],
|
||||
["p1",9,"op","chess_char_6_diy1_b",2,"uniequip_003_ebnhlz",0,0,9,0,26347,1920,0,8,1],
|
||||
["p1",10,"op","chess_char_6_diy2_b",0,"uniequip_004_ebnhlz",0,0,76,0,12995,3454,0,5,0],
|
||||
["p1",11,"op","chess_char_6_diy1_b",1,"uniequip_004_ebnhlz",0,0,4,0,20759,1727,0,7,2],
|
||||
["p1",12,"op","chess_char_6_diy2_b",2,"uniequip_004_ebnhlz",0,0,6,0,44529,1727,0,8,1],
|
||||
["p1",11,"op","chess_char_6_diy1_b",1,"uniequip_004_ebnhlz",0,0,4,0,18634,1727,0,6,2],
|
||||
["p1",12,"op","chess_char_6_diy2_b",2,"uniequip_004_ebnhlz",0,0,6,0,35702,1727,0,5,1],
|
||||
["p1","~1","token","token_10024_ebnhlz_rcube",null,null,1000,0,26,0,2097,0,0,0,null],
|
||||
["p1","~2","token","token_10024_ebnhlz_rcube",null,null,1000,0,27,0,19805,0,0,0,null],
|
||||
["p1","~3","token","token_10024_ebnhlz_rcube",null,null,1000,0,28,0,5558,0,0,0,null],
|
||||
["p1","~4","token","token_10024_ebnhlz_rcube",null,null,1000,0,37,0,5094,0,0,0,null],
|
||||
["p1","~5","token","token_10024_ebnhlz_rcube",null,null,1000,0,38,0,6865,0,0,0,null],
|
||||
["p1","~6","token","token_10024_ebnhlz_rcube",null,null,1000,0,99,0,2996,0,0,0,null],
|
||||
["p1","~7","token","token_10024_ebnhlz_rcube",null,null,1000,0,122,0,4195,0,0,0,null]
|
||||
["p1","~5","token","token_10024_ebnhlz_rcube",null,null,1000,0,38,1,7890,0,0,0,null]
|
||||
],
|
||||
"enemies": {"enemy_1006_shield_3":[21,0,21,7101,141442],"enemy_1043_zomsbr":[66,2,64,18353,105429],"enemy_1402_tgshd_2":[36,1,35,11583,90799]},
|
||||
"hooks": [1,151,6528,209,209,366,392,13473,24,151,13,13,0,10026,0,26,123,120,1,24,0,1,0],
|
||||
"events": {"atk":209,"deploy":28,"die":31,"dmg":392,"engage":12,"fx":117,"leak":120,"skill":26,"spawn":142,"status":44},
|
||||
"fx": {"aoe":7,"burst":1,"displace":11,"expose":65,"pull":11,"summon":7,"volley":15},
|
||||
"snaps": "b425b7c9 ab437deb c6da43a8 a32412f3 319af123 14ecd4ec 6934c4a8 0aa5d508 42dbdad1 763f1454 9efc0929 4554bac3 e180f9f8 b4657f01 b69dfa99 91877fd4 fad8c159 a72871e0 fceb5498 c3be6c24 9f5f5879 7f19f404"
|
||||
"enemies": {"enemy_1006_shield_3":[21,0,21,9178,130338],"enemy_1043_zomsbr":[66,3,63,16276,101912],"enemy_1402_tgshd_2":[36,1,35,11583,101334]},
|
||||
"hooks": [1,149,6528,201,201,358,383,12468,25,149,12,12,0,9429,0,26,123,119,1,25,0,1,0],
|
||||
"events": {"atk":201,"deploy":26,"die":30,"dmg":383,"engage":12,"fx":110,"leak":119,"skill":24,"spawn":140,"status":42},
|
||||
"fx": {"aoe":5,"burst":1,"displace":8,"expose":68,"pull":8,"summon":5,"volley":15},
|
||||
"snaps": "b425b7c9 4fdf75c2 dbbca320 6970248e a4406e8d 9587a310 dde7e767 46d77885 373fb82b 95078880 47945ea9 5821ce95 6c6e560d 81d1df6d 7e44d54a 095619ef 39615eb5 5bf4d3c8 eb04251f 8d8de075 82962696 bbc282e1"
|
||||
},
|
||||
"diy-117": {
|
||||
"about": "5_diy1_a=mgllan/S1 5_diy2_a=mgllan/S2 5_diy1_a=mgllan/S3 5_diy2_b=mgllan/S1 5_diy1_b=mgllan/S2 5_diy2_b=mgllan/S3 5_diy1_b=mgllan/S1/002_mgllan 5_diy2_b=mgllan/S2/002_mgllan 5_diy1_b=mgllan/S3/002_mgllan 5_diy2_b=mgllan/S1/003_mgllan 5_diy1_b=mgllan/S2/003_mgllan 5_diy2_b=mgllan/S3/003_mgllan",
|
||||
@@ -5968,32 +5966,32 @@
|
||||
"time": 230,
|
||||
"ticks": 6900,
|
||||
"reason": "timeout",
|
||||
"killed": 68,
|
||||
"killed": 79,
|
||||
"total": 147,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 118,
|
||||
"rngDraws": 144,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":68,"total":147,"perfect":false,"leaks":79,"leaksUncounted":0,"coins":0,"dmg":425402,"bossDmg":0,"heal":0,"deaths":16,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":79,"total":147,"perfect":false,"leaks":68,"leaksUncounted":0,"coins":0,"dmg":499903,"bossDmg":0,"heal":0,"deaths":16,"layerGains":{}}},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_6_diy1_a",2,null,0,0,2,1,6827,2604,0,80,1],
|
||||
["p1",2,"op","chess_char_6_diy2_b",2,"uniequip_002_acfend",2085.04,1,4,2,14361,1346,0,132,2],
|
||||
["p1",3,"op","chess_char_5_diy1_a",0,null,0,0,166,4,22225,3730,0,92,2],
|
||||
["p1",4,"op","chess_char_5_diy2_b",0,"uniequip_002_sharp2",0,0,156,16,106408,4748,0,99,2],
|
||||
["p1",5,"op","chess_char_6_diy1_a",2,null,1529,1,172,14,44128,3058,0,45,4],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"uniequip_002_acpion",1904,1,171,24,182563,3808,0,54,4],
|
||||
["p1",7,"op","chess_char_5_diy1_a",2,null,1154,1,170,1,6563,8078,0,80,0],
|
||||
["p1",1,"op","chess_char_6_diy1_a",2,null,0,0,2,2,7960,2604,0,88,2],
|
||||
["p1",2,"op","chess_char_6_diy2_b",2,"uniequip_002_acfend",1915.64,1,4,2,14168,1515,0,135,2],
|
||||
["p1",3,"op","chess_char_5_diy1_a",0,null,0,0,154,3,21404,3730,0,73,1],
|
||||
["p1",4,"op","chess_char_5_diy2_b",0,"uniequip_002_sharp2",0,0,159,17,109862,4748,0,103,3],
|
||||
["p1",5,"op","chess_char_6_diy1_a",2,null,1408.2,1,170,18,82708,3179,0,51,4],
|
||||
["p1",6,"op","chess_char_6_diy2_b",2,"uniequip_002_acpion",0,0,103,27,209614,3808,0,78,5],
|
||||
["p1",7,"op","chess_char_5_diy1_a",2,null,1154,1,171,1,9896,8078,0,102,0],
|
||||
["p1",8,"op","chess_char_5_diy2_b",2,"uniequip_002_acspec",1448,1,1,0,0,0,0,0,0],
|
||||
["p1",9,"op","chess_char_6_diy1_a",2,null,2638,1,3,0,0,0,0,0,0],
|
||||
["p1",10,"op","chess_char_6_diy2_b",2,"uniequip_002_acguad",3531,1,5,0,0,0,0,0,0],
|
||||
["p1",11,"op","chess_char_5_diy1_a",2,null,1160,1,9,0,17771,0,0,110,2],
|
||||
["p1",12,"op","chess_char_5_diy2_b",2,"uniequip_002_acsupo",1430,1,10,1,24555,0,0,122,2]
|
||||
["p1",11,"op","chess_char_5_diy1_a",2,null,1160,1,9,0,17385,0,0,107,2],
|
||||
["p1",12,"op","chess_char_5_diy2_b",2,"uniequip_002_acsupo",1430,1,10,0,26906,0,0,128,3]
|
||||
],
|
||||
"enemies": {"enemy_1166_dusbr_2":[39,22,17,381,107418],"enemy_1169_duphlx_2":[57,28,29,3024,195834],"enemy_1170_dushld_2":[51,18,32,23967,242247]},
|
||||
"hooks": [1,172,6900,1024,1024,4900,5024,0,84,162,19,26,0,27771,5929,73,147,78,1,84,0,0,0],
|
||||
"events": {"atk":1087,"deploy":25,"die":84,"dmg":4988,"engage":9,"fx":207,"leak":78,"skill":56,"spawn":159,"status":804},
|
||||
"fx": {"aoe":90,"displace":10,"dodge":4,"dp":46,"slash":57},
|
||||
"snaps": "9fc009d3 b712fd02 dd9e6536 ad3afaa9 5e080f95 8c342958 c6b9d04c 6a6288c5 e4728d4d bdcd36f8 1d15491e 3af989d1 db86f390 2b31bb23 3d3a3c2a 09c7eba6 bfb4bdf6 ca3579cc 1af3c782 ec939b4e 4cc81145 6ef95d94 e8fb67c3"
|
||||
"enemies": {"enemy_1166_dusbr_2":[39,25,14,970,117453],"enemy_1169_duphlx_2":[57,30,27,4546,204769],"enemy_1170_dushld_2":[51,24,25,22147,291668]},
|
||||
"hooks": [1,171,6900,1102,1102,4984,5113,0,95,161,22,28,0,28191,6261,85,147,66,1,95,0,0,0],
|
||||
"events": {"atk":1161,"deploy":24,"die":95,"dmg":5080,"engage":9,"fx":231,"leak":66,"skill":61,"spawn":159,"status":819},
|
||||
"fx": {"aoe":93,"displace":8,"dodge":4,"dp":54,"slash":72},
|
||||
"snaps": "9fc009d3 b712fd02 f36c2e74 ec6d9389 3d2de85c 5cdae853 72895b52 24ddeed5 16beae87 0af2234c 0786e3e8 578d354d a55f8606 a476a145 a621ed1c 1bd464f3 9c885b76 d6ba58c1 7bc719b2 0cd5f504 82e69c40 1d6109b8 af74aa1e"
|
||||
},
|
||||
"diy-138": {
|
||||
"about": "6_diy1_a=sharp2 6_diy2_b=sharp2 6_diy1_a=acspec 6_diy2_b=acspec 6_diy1_a=acnipe 6_diy2_b=acnipe 6_diy1_a=accast 6_diy2_b=accast 6_diy1_a=acmedc 6_diy2_b=acmedc 6_diy1_a=acsupo 6_diy2_b=acsupo",
|
||||
|
||||
+169
-170
@@ -259,41 +259,41 @@
|
||||
"round": 14,
|
||||
"seed": 1428555614,
|
||||
"waveId": "act1autochess_h07_03",
|
||||
"time": 165.6,
|
||||
"ticks": 4968,
|
||||
"time": 165.43,
|
||||
"ticks": 4963,
|
||||
"reason": "cleared",
|
||||
"killed": 19,
|
||||
"total": 6,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": 0,
|
||||
"rngDraws": 1257,
|
||||
"rngDraws": 1261,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {"killed":19,"total":6,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1588502,"bossDmg":1476240,"heal":5655,"deaths":3,"layerGains":{}},
|
||||
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":2595912,"bossDmg":2523760,"heal":37569,"deaths":2,"layerGains":{}}
|
||||
"p1": {"killed":19,"total":6,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1556799,"bossDmg":1444530,"heal":5865,"deaths":3,"layerGains":{}},
|
||||
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":2627613,"bossDmg":2555470,"heal":37927,"deaths":2,"layerGains":{}}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_6_03_b",2,"uniequip_002_yu",4070,1,7,0,0,0,3731,0,1],
|
||||
["p1",1,"op","chess_char_6_03_b",2,"uniequip_002_yu",4070,1,7,0,0,0,3579,0,1],
|
||||
["p1",2,"op","chess_char_6_06_b",2,"uniequip_002_pepe",3232.9,1,11,0,0,0,0,0,0],
|
||||
["p1",3,"op","chess_char_6_07_b",2,"uniequip_002_siege2",3411.1,1,9,2,45,2660,200,39,1],
|
||||
["p1",4,"op","chess_char_6_01_b",2,"uniequip_002_lemuen",2344.65,1,13,3,913406,3215,249,51,7],
|
||||
["p1",5,"op","chess_char_6_02_b",2,"uniequip_002_sbell2",2126.3,1,17,1,328792,4975,259,53,3],
|
||||
["p1",6,"op","chess_char_6_04_b",2,"uniequip_002_skadi2",0,0,62,0,28104,11731,787,0,3],
|
||||
["p1",7,"op","chess_char_6_05_b",2,"uniequip_002_pasngr",0,0,21,3,181409,6265,404,47,3],
|
||||
["p1",8,"op","chess_char_6_08_b",2,"uniequip_002_reed2",1834.8,1,5,0,44,0,25,19,2],
|
||||
["p1",9,"op","chess_char_6_09_b",0,"uniequip_002_cello",1454.2,1,15,1,48,0,0,12,12],
|
||||
["p1",10,"op","chess_char_6_11_b",2,"uniequip_002_mlyss",2082.3,1,23,0,99683,0,0,167,4],
|
||||
["p1",3,"op","chess_char_6_07_b",2,"uniequip_002_siege2",3411.1,1,9,2,51,2514,388,35,1],
|
||||
["p1",4,"op","chess_char_6_01_b",2,"uniequip_002_lemuen",2344.65,1,13,4,879908,3601,490,51,7],
|
||||
["p1",5,"op","chess_char_6_02_b",2,"uniequip_002_sbell2",2126.3,1,17,1,330341,4477,350,53,3],
|
||||
["p1",6,"op","chess_char_6_04_b",2,"uniequip_002_skadi2",0,0,62,0,28103,12298,634,0,3],
|
||||
["p1",7,"op","chess_char_6_05_b",2,"uniequip_002_pasngr",0,0,21,3,182182,6215,404,47,3],
|
||||
["p1",8,"op","chess_char_6_08_b",2,"uniequip_002_reed2",1834.8,1,5,1,34,0,20,15,2],
|
||||
["p1",9,"op","chess_char_6_09_b",0,"uniequip_002_cello",1454.2,1,15,0,39,0,0,10,10],
|
||||
["p1",10,"op","chess_char_6_11_b",2,"uniequip_002_mlyss",2082.3,1,23,0,99170,0,0,166,4],
|
||||
["p1",11,"token","token_10017_skadi2_dedant",null,null,138,0,26,0,0,0,0,0,null],
|
||||
["p2",12,"op","chess_char_6_15_b",2,"uniequip_002_qiubai",4181.76,1,31,3,463104,0,0,172,3],
|
||||
["p2",13,"op","chess_char_6_19_b",2,"uniequip_002_blkkgt",3043.7,1,12,1,25,214,0,3,2],
|
||||
["p2",14,"op","chess_char_5_01_b",1,"uniequip_002_excu2",2545.4,1,58,0,17,3862,960,17,1],
|
||||
["p2",12,"op","chess_char_6_15_b",2,"uniequip_002_qiubai",4181.76,1,31,1,461138,0,0,171,3],
|
||||
["p2",13,"op","chess_char_6_19_b",2,"uniequip_002_blkkgt",3043.7,1,12,1,32,236,0,5,2],
|
||||
["p2",14,"op","chess_char_5_01_b",1,"uniequip_002_excu2",2545.4,1,58,0,16,3867,960,16,1],
|
||||
["p2",15,"op","chess_char_6_17_b",2,"uniequip_002_nearl2",6916.53,1,32,0,308580,2551,0,76,3],
|
||||
["p2",16,"op","chess_char_6_12_b",1,"uniequip_002_rosmon",3493.03,1,16,6,215743,3681,461,60,3],
|
||||
["p2",17,"op","chess_char_6_13_b",1,"uniequip_002_angel2",2680.15,1,20,0,1402566,5857,1619,304,5],
|
||||
["p2",18,"op","chess_char_6_14_b",2,"uniequip_002_lumen",2297.79,1,22,0,0,3550,4296,47,1],
|
||||
["p2",19,"op","chess_char_6_16_b",2,"uniequip_002_halo2",1741.19,1,25,0,66636,1382,0,109,3],
|
||||
["p2",20,"op","chess_char_6_18_b",2,"uniequip_002_whitw2",1695.1,1,59,0,112623,1695,0,18,2],
|
||||
["p2",21,"op","chess_char_6_20_b",2,"uniequip_002_agoat2",1828.31,1,18,0,0,2122,30233,49,2],
|
||||
["p2",16,"op","chess_char_6_12_b",1,"uniequip_002_rosmon",3493.03,1,16,6,215743,3644,303,60,3],
|
||||
["p2",17,"op","chess_char_6_13_b",1,"uniequip_002_angel2",2680.15,1,20,0,1436638,5857,1612,303,5],
|
||||
["p2",18,"op","chess_char_6_14_b",2,"uniequip_002_lumen",2297.79,1,22,0,0,3550,4628,51,1],
|
||||
["p2",19,"op","chess_char_6_16_b",2,"uniequip_002_halo2",1741.19,1,25,0,66225,1382,0,109,3],
|
||||
["p2",20,"op","chess_char_6_18_b",2,"uniequip_002_whitw2",1695.1,1,59,0,112625,1695,0,20,2],
|
||||
["p2",21,"op","chess_char_6_20_b",2,"uniequip_002_agoat2",1828.31,1,18,0,0,2296,30424,52,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],
|
||||
["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null],
|
||||
@@ -304,9 +304,9 @@
|
||||
["p1","~1","token","token_10017_skadi2_dedant",null,null,100,0,49,0,0,0,0,0,null],
|
||||
["p1","~3","token","token_10030_mlyss_wtrman",null,null,1586.2,0,50,0,2,0,0,2,null],
|
||||
["p2","~2","token","token_10019_nearl2_sword",null,null,6600,0,52,0,10647,0,0,0,null],
|
||||
["p1","~1","token","token_10040_siege2_vlion",null,null,3719.39,0,54,0,9,1801,0,9,null],
|
||||
["p1","~2","token","token_10040_siege2_vlion",null,null,5520,0,55,0,2,0,0,2,null],
|
||||
["p1","~4","token","token_10030_mlyss_wtrman",null,null,1989.96,0,56,0,0,0,0,0,null],
|
||||
["p1","~4","token","token_10030_mlyss_wtrman",null,null,1989.96,0,54,0,0,0,0,0,null],
|
||||
["p1","~1","token","token_10040_siege2_vlion",null,null,1418.77,0,55,0,10,4101,0,10,null],
|
||||
["p1","~2","token","token_10040_siege2_vlion",null,null,5520,0,56,1,1,0,0,1,null],
|
||||
["p2","~3","token","token_10019_nearl2_sword",null,null,6600,0,61,0,5323,0,0,0,null],
|
||||
["p1","~2","token","token_10017_skadi2_dedant",null,null,100,1,63,0,0,0,0,0,null],
|
||||
["p1","~5","token","token_10030_mlyss_wtrman",null,null,1586.2,1,65,0,0,0,0,0,null]
|
||||
@@ -317,41 +317,41 @@
|
||||
"enemy_1209_sfden_2": [2,2,0,0,154793],
|
||||
"enemy_1210_msfden_2": [2,2,0,0,386],
|
||||
"enemy_9021_acduml": [1,1,0,0,4000000],
|
||||
"enemy_9023_acdums": [8,7,0,44818,323]
|
||||
"enemy_9023_acdums": [8,7,0,47418,322]
|
||||
},
|
||||
"hooks": [1,63,4968,1337,1337,3611,4352,2112,25,37,62,56,322,36316,1814,3,21,0,1,24,0,8,1],
|
||||
"events": {"atk":1603,"deploy":38,"die":37,"dmg":4089,"engage":20,"fx":1135,"heal":400,"skill":118,"spawn":58,"status":773},
|
||||
"hooks": [1,63,4963,1334,1334,3670,4458,2235,25,37,60,54,321,35693,1776,3,21,0,1,24,0,9,1],
|
||||
"events": {"atk":1610,"deploy":38,"die":37,"dmg":4194,"engage":20,"fx":1153,"heal":399,"skill":114,"spawn":58,"status":763},
|
||||
"fx": {
|
||||
"airstrike": 106,
|
||||
"airstrike": 114,
|
||||
"appear": 1,
|
||||
"beam": 10,
|
||||
"blink": 2,
|
||||
"bombard": 60,
|
||||
"bombardShell": 60,
|
||||
"buff": 3,
|
||||
"burst": 8,
|
||||
"burst": 9,
|
||||
"copy": 1,
|
||||
"disappear": 1,
|
||||
"displace": 1,
|
||||
"dodge": 1,
|
||||
"dp": 4,
|
||||
"drone": 207,
|
||||
"droneLock": 18,
|
||||
"droneLock": 21,
|
||||
"drones": 2,
|
||||
"explode": 394,
|
||||
"extraAttack": 6,
|
||||
"explode": 397,
|
||||
"extraAttack": 5,
|
||||
"finale": 2,
|
||||
"firewall": 1,
|
||||
"garrisonGrant": 1,
|
||||
"lightning": 36,
|
||||
"lightning": 40,
|
||||
"link": 7,
|
||||
"lock": 60,
|
||||
"lure": 3,
|
||||
"phase": 38,
|
||||
"radiantSword": 3,
|
||||
"scorchBurst": 2,
|
||||
"slash": 19,
|
||||
"snow": 38,
|
||||
"scorchBurst": 1,
|
||||
"slash": 22,
|
||||
"snow": 36,
|
||||
"split": 4,
|
||||
"steal": 5,
|
||||
"storm": 3,
|
||||
@@ -362,7 +362,7 @@
|
||||
"tide": 3,
|
||||
"wanted": 1
|
||||
},
|
||||
"snaps": "5e9a4e05 31652517 b1e8e23b 0067593e 18e26596 dfaaefc1 21c42caf 2da0a320 5d615e1b 050cbaa6 a6bc0326 1410116e d57e5f4d cdd99ea4 50b3b4bb e095f8c9 14595c4a"
|
||||
"snaps": "5e9a4e05 31652517 b1e8e23b 0067593e 18e26596 1da06a7f 9f7f7738 33215080 ca9fdf00 fa82b342 277867da 729eb1cb f53c25eb 6d2a48a1 e0ee9d36 999e8664 369284bc"
|
||||
},
|
||||
"boss-boss_3-solo": {
|
||||
"about": "假想敌:管 solo pool 2000000: chess_char_5_08_b chess_char_5_11_b chess_char_5_05_b chess_char_5_06_b chess_char_5_13_b chess_char_5_07_b chess_char_5_02_b chess_char_5_03_b chess_char_5_10_b chess_char_5_12_b",
|
||||
@@ -430,78 +430,77 @@
|
||||
"killed": 14,
|
||||
"total": 14,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": 7055892,
|
||||
"rngDraws": 713,
|
||||
"bossHpLeft": 6982308,
|
||||
"rngDraws": 690,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {"killed":14,"total":14,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1137064,"bossDmg":455574,"heal":57959,"deaths":10,"layerGains":{}},
|
||||
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1290351,"bossDmg":888535,"heal":21191,"deaths":11,"layerGains":{}}
|
||||
"p1": {"killed":14,"total":14,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1195299,"bossDmg":466689,"heal":63575,"deaths":8,"layerGains":{}},
|
||||
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1305699,"bossDmg":951003,"heal":22341,"deaths":8,"layerGains":{}}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",1309.54,1,52,3,115544,7824,538,20,1],
|
||||
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",0,0,5,0,17672,7227,1284,16,1],
|
||||
["p1",3,"op","chess_char_5_14_b",1,"none",0,0,49,0,66734,15599,3146,17,13],
|
||||
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",2361.85,1,43,1,27369,25147,7512,18,2],
|
||||
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1028.19,1,51,1,408940,3638,805,111,15],
|
||||
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",935.81,1,55,0,94516,11424,943,39,4],
|
||||
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",1390.04,1,19,0,160448,4508,1031,209,6],
|
||||
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1337.72,1,53,5,109482,2720,513,34,12],
|
||||
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",1771,1,7,0,0,5135,41155,63,4],
|
||||
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1462.64,1,15,0,136359,4508,1031,71,3],
|
||||
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",0,0,45,0,0,7663,247,0,1],
|
||||
["p2",12,"op","chess_char_4_04_b",1,"uniequip_002_ines",2363.9,1,50,0,256724,6683,2782,222,8],
|
||||
["p2",13,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",0,0,44,2,41473,6269,1027,43,10],
|
||||
["p2",14,"op","chess_char_4_16_b",2,"uniequip_002_texas2",293.89,1,47,0,122950,6892,686,201,4],
|
||||
["p2",15,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",0,0,18,1,331190,7337,4281,66,5],
|
||||
["p2",16,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1185.19,1,56,1,202547,2829,580,160,3],
|
||||
["p2",17,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1342.52,1,14,0,0,4508,3197,0,0],
|
||||
["p2",18,"op","chess_char_4_12_b",2,"uniequip_002_glady",0,0,20,0,97777,7462,5007,102,6],
|
||||
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",485.4,1,4,0,71185,4352,2649,64,19],
|
||||
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",1386.74,1,54,0,166505,2925,735,72,13],
|
||||
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",532.65,1,50,3,131899,8601,538,25,2],
|
||||
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",0,0,5,0,20790,7382,1439,19,1],
|
||||
["p1",3,"op","chess_char_5_14_b",1,"none",2246.75,1,9,2,67608,31740,10684,25,14],
|
||||
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",3011.8,1,43,0,41045,9940,4541,28,2],
|
||||
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1028.19,1,51,3,402609,3638,805,111,16],
|
||||
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1004.14,1,54,1,109230,11424,1275,39,4],
|
||||
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",1093.41,1,19,1,159859,4508,730,209,6],
|
||||
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1337.72,1,52,3,121926,2720,513,34,14],
|
||||
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",1239.09,1,7,0,0,5135,42019,65,4],
|
||||
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1462.64,1,15,0,140335,4508,1031,71,3],
|
||||
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",0,0,45,0,0,7928,512,0,1],
|
||||
["p2",12,"op","chess_char_4_04_b",1,"uniequip_002_ines",2363.9,1,49,0,252888,6390,2490,224,8],
|
||||
["p2",13,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",636.05,1,44,1,33388,5944,1337,33,9],
|
||||
["p2",14,"op","chess_char_4_16_b",2,"uniequip_002_texas2",295.56,1,48,0,124093,6360,155,206,4],
|
||||
["p2",15,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",2403.43,1,18,0,348271,5644,4992,78,6],
|
||||
["p2",16,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1185.19,1,55,0,206030,2829,580,160,3],
|
||||
["p2",17,"op","chess_char_4_10_b",1,"uniequip_002_aroma",983.43,1,14,0,0,4508,2838,0,0],
|
||||
["p2",18,"op","chess_char_4_12_b",2,"uniequip_002_glady",2455.2,1,20,0,104423,4352,4352,110,6],
|
||||
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",2187.9,1,4,0,67408,4352,4352,59,18],
|
||||
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",1386.74,1,53,0,169200,2925,735,73,13],
|
||||
["p2",21,"token","token_10041_cathy_catsld",null,null,100,1,21,0,0,0,0,0,null],
|
||||
["p2",22,"token","token_10041_cathy_catsld",null,null,100,1,22,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {"enemy_1010_demon":[4,4,0,0,200612],"enemy_1438_dspred":[10,10,0,23003,882694],"enemy_1521_dslily":[1,0,0,113850,1344108]},
|
||||
"hooks": [1,54,6000,1407,1524,3182,3322,11648,35,37,130,127,16,41453,1553,12,15,0,1,37,0,44,4],
|
||||
"events": {"atk":1633,"deploy":39,"die":37,"dmg":3301,"engage":17,"fx":866,"heal":154,"skill":257,"spawn":37,"status":1048},
|
||||
"enemies": {"enemy_1010_demon":[4,4,0,0,200612],"enemy_1438_dspred":[10,10,0,19569,882694],"enemy_1521_dslily":[1,0,0,113459,1417692]},
|
||||
"hooks": [1,53,6000,1442,1554,3239,3391,13570,30,32,134,131,19,42184,1562,13,15,0,1,32,0,46,0],
|
||||
"events": {"atk":1663,"deploy":38,"die":32,"dmg":3367,"engage":17,"fx":892,"heal":162,"skill":265,"spawn":37,"status":1067},
|
||||
"fx": {
|
||||
"aoe": 29,
|
||||
"aoe": 35,
|
||||
"appear": 7,
|
||||
"blink": 2,
|
||||
"burst": 44,
|
||||
"charge": 10,
|
||||
"counter": 16,
|
||||
"crit": 71,
|
||||
"dilemma": 5,
|
||||
"burst": 46,
|
||||
"charge": 9,
|
||||
"counter": 19,
|
||||
"crit": 77,
|
||||
"dilemma": 6,
|
||||
"disappear": 7,
|
||||
"displace": 28,
|
||||
"dodge": 4,
|
||||
"displace": 27,
|
||||
"explosion": 13,
|
||||
"frostNova": 19,
|
||||
"frostNova": 18,
|
||||
"grow": 1,
|
||||
"iceSpike": 163,
|
||||
"overclock": 1,
|
||||
"pull": 5,
|
||||
"pull": 6,
|
||||
"quadShot": 2,
|
||||
"ripple": 23,
|
||||
"rockfall": 18,
|
||||
"sentry": 2,
|
||||
"sermon": 1,
|
||||
"shadowWeave": 3,
|
||||
"shield": 5,
|
||||
"soul": 5,
|
||||
"sp": 8,
|
||||
"shield": 7,
|
||||
"soul": 6,
|
||||
"sp": 11,
|
||||
"stealth": 8,
|
||||
"swordRain": 21,
|
||||
"swordStorm": 4,
|
||||
"tentacle": 6,
|
||||
"tide": 5,
|
||||
"tornado": 6,
|
||||
"tornadoPulse": 29,
|
||||
"tornadoPulse": 30,
|
||||
"weightless": 4,
|
||||
"zone": 291
|
||||
"zone": 298
|
||||
},
|
||||
"snaps": "cf1f2a3c 270c09dd aec95860 fa8971c7 07d2a8b1 30d3b59e 66e355a9 42be5987 ae582197 bddf66fd 40a8856c 225c0c86 3ad9d1ba 643f2e7b 882fd47d 21d421db dee84b90 a8119be6 70989185 f655bf59"
|
||||
"snaps": "5385a5ac 4877096d b3fd6a45 ae774b35 20a70123 08b02c2a 77e2101d 8677774d bc63d3a4 f2290e89 ca6798b4 316f4d11 44f33096 8327345b 2e9555df 674194fd 16ebe0a3 9b141f11 691b2eca 391693da"
|
||||
},
|
||||
"boss-boss_4-solo": {
|
||||
"about": "盐风主教昆图斯 solo pool 4200000: chess_char_4_17_b chess_char_4_18_b chess_char_4_23_b chess_char_4_19_b chess_char_4_22_b chess_char_4_20_b chess_char_4_21_b chess_char_4_24_b chess_char_4_25_b chess_char_4_26_b",
|
||||
@@ -705,86 +704,86 @@
|
||||
"time": 200,
|
||||
"ticks": 6000,
|
||||
"reason": "forced",
|
||||
"killed": 5,
|
||||
"killed": 6,
|
||||
"total": 6,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": 6678034,
|
||||
"rngDraws": 602,
|
||||
"bossHpLeft": 6712643,
|
||||
"rngDraws": 684,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {"killed":5,"total":6,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1209013,"bossDmg":671013,"heal":3087,"deaths":5,"layerGains":{}},
|
||||
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1291877,"bossDmg":610954,"heal":6678,"deaths":19,"layerGains":{}}
|
||||
"p1": {"killed":6,"total":6,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1178497,"bossDmg":620459,"heal":1887,"deaths":5,"layerGains":{}},
|
||||
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1339404,"bossDmg":626898,"heal":6786,"deaths":19,"layerGains":{}}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",4297.7,1,3,2,120910,0,0,24,2],
|
||||
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",4297.7,1,3,2,158061,0,0,31,2],
|
||||
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",3890.7,1,1,0,0,0,0,0,0],
|
||||
["p1",3,"op","chess_char_5_14_b",1,"none",2391.4,1,5,0,47630,0,0,0,18],
|
||||
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",5120.06,1,11,0,0,0,0,0,1],
|
||||
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1287,1,7,2,515123,0,0,94,19],
|
||||
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1520.2,1,13,0,230934,0,0,73,6],
|
||||
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",1791.9,1,51,0,33271,1792,0,59,2],
|
||||
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",0,0,52,0,178899,3759,215,54,17],
|
||||
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",0,0,53,0,2580,3542,2872,3,1],
|
||||
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1864.5,1,9,0,79666,0,0,52,3],
|
||||
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",2908.4,1,48,0,5508,10653,328,10,1],
|
||||
["p2",12,"op","chess_char_4_04_b",1,"uniequip_002_ines",0,0,57,0,190782,13175,292,207,5],
|
||||
["p1",3,"op","chess_char_5_14_b",1,"none",2391.4,1,5,0,46416,0,0,0,18],
|
||||
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",5120.06,1,11,1,343,0,0,1,1],
|
||||
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1287,1,7,1,491380,0,0,89,19],
|
||||
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1520.2,1,13,0,220656,0,0,74,6],
|
||||
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",1791.9,1,51,0,33099,1792,0,55,2],
|
||||
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",0,0,52,0,148866,3544,0,46,15],
|
||||
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",0,0,53,0,2580,3567,1887,2,1],
|
||||
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1864.5,1,9,1,77096,0,0,50,3],
|
||||
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",2908.4,1,49,0,5508,10668,343,10,1],
|
||||
["p2",12,"op","chess_char_4_04_b",1,"uniequip_002_ines",761.55,1,63,0,169394,12502,380,262,6],
|
||||
["p2",13,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",2621.3,1,6,0,0,0,0,0,0],
|
||||
["p2",14,"op","chess_char_4_16_b",2,"uniequip_002_texas2",0,0,61,0,98658,18938,6004,163,6],
|
||||
["p2",15,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",3055.36,1,14,0,245474,0,0,116,6],
|
||||
["p2",16,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1717.1,1,8,0,542407,0,0,138,2],
|
||||
["p2",14,"op","chess_char_4_16_b",2,"uniequip_002_texas2",0,0,62,0,93573,19764,6060,134,7],
|
||||
["p2",15,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",3055.36,1,14,0,244055,0,0,114,6],
|
||||
["p2",16,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1717.1,1,8,1,643599,0,0,167,3],
|
||||
["p2",17,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1830.4,1,12,0,0,0,0,0,0],
|
||||
["p2",18,"op","chess_char_4_12_b",2,"uniequip_002_glady",0,0,47,0,52797,4910,0,94,4],
|
||||
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",0,0,59,1,61620,6564,0,51,10],
|
||||
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",0,0,60,0,94632,5419,53,28,4],
|
||||
["p2",18,"op","chess_char_4_12_b",2,"uniequip_002_glady",0,0,47,0,44049,4910,0,85,4],
|
||||
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",0,0,59,0,52764,6564,0,41,9],
|
||||
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",0,0,60,0,86463,5369,3,23,4],
|
||||
["p2",21,"token","token_10041_cathy_catsld",null,null,100,1,21,0,0,0,0,0,null],
|
||||
["p2",22,"token","token_10041_cathy_catsld",null,null,100,1,22,0,0,0,0,0,null]
|
||||
],
|
||||
"enemies": {
|
||||
"enemy_10028_vtswd": [4,4,0,0,0],
|
||||
"enemy_10029_vtshld": [6,6,0,0,0],
|
||||
"enemy_10030_vtwand": [3,3,0,0,0],
|
||||
"enemy_10085_hllevi_2": [2,1,0,0,1018312],
|
||||
"enemy_1010_demon": [4,4,0,14660,200612],
|
||||
"enemy_9032_aclionk": [1,0,0,54093,1281966]
|
||||
"enemy_10028_vtswd": [6,6,0,0,0],
|
||||
"enemy_10029_vtshld": [4,4,0,0,0],
|
||||
"enemy_10030_vtwand": [4,4,0,0,0],
|
||||
"enemy_10085_hllevi_2": [2,2,0,0,1069932],
|
||||
"enemy_1010_demon": [4,4,0,14675,200612],
|
||||
"enemy_9032_aclionk": [1,0,0,54006,1247357]
|
||||
},
|
||||
"hooks": [1,61,6000,1147,1166,2249,2264,1042,42,44,107,104,0,33714,736,7,20,0,1,30,0,3,0],
|
||||
"events": {"atk":1232,"deploy":41,"die":44,"dmg":2223,"engage":14,"fx":789,"heal":10,"skill":211,"spawn":42,"status":1117},
|
||||
"hooks": [1,63,6000,1166,1187,2276,2290,1057,44,46,107,104,0,33314,723,8,21,0,1,31,0,2,0],
|
||||
"events": {"atk":1245,"deploy":42,"die":46,"dmg":2264,"engage":15,"fx":785,"heal":8,"skill":211,"spawn":43,"status":1100},
|
||||
"fx": {
|
||||
"aoe": 43,
|
||||
"aoe": 41,
|
||||
"appear": 6,
|
||||
"blink": 2,
|
||||
"burst": 3,
|
||||
"crit": 84,
|
||||
"burst": 2,
|
||||
"crit": 99,
|
||||
"dilemma": 6,
|
||||
"disappear": 6,
|
||||
"displace": 19,
|
||||
"equip": 16,
|
||||
"displace": 20,
|
||||
"equip": 18,
|
||||
"explosion": 4,
|
||||
"frostNova": 10,
|
||||
"frostNova": 9,
|
||||
"garrisonGrant": 1,
|
||||
"iceSpike": 51,
|
||||
"iceSpike": 48,
|
||||
"overclock": 1,
|
||||
"pull": 3,
|
||||
"quadShot": 2,
|
||||
"quadShot": 3,
|
||||
"revive": 2,
|
||||
"ripple": 26,
|
||||
"sentry": 4,
|
||||
"shadowWeave": 5,
|
||||
"ripple": 25,
|
||||
"sentry": 3,
|
||||
"shadowWeave": 4,
|
||||
"shield": 1,
|
||||
"soul": 3,
|
||||
"soul": 2,
|
||||
"sp": 19,
|
||||
"stealth": 5,
|
||||
"sword": 3,
|
||||
"swordRain": 36,
|
||||
"swordStorm": 6,
|
||||
"stealth": 6,
|
||||
"sword": 2,
|
||||
"swordRain": 32,
|
||||
"swordStorm": 7,
|
||||
"telegraph": 22,
|
||||
"tornado": 4,
|
||||
"tornadoPulse": 15,
|
||||
"vest": 6,
|
||||
"vest": 4,
|
||||
"weightless": 6,
|
||||
"zone": 369
|
||||
"zone": 362
|
||||
},
|
||||
"snaps": "10f8c228 1c1d4682 d56029e7 6b895828 7edc7b44 44c0f10f d21a7bf6 ed125fe4 28cbe5f5 b9c22800 549e40d7 e4e3e0d9 d83bf2a6 fb41f92e d0c2bead bfea02de 8c4c12f6 4214d008 75dd1d10 2b3cf9a6"
|
||||
"snaps": "10f8c228 74779700 b806eda7 d8983f93 db38128d 2a245ff0 1f77a4b7 33be001e 32ee19ea a059bc0b 92daccf9 200cff86 9102ee35 7240a429 96e39c1f 42dc1f28 a609a9e0 710498af 7b87507d 3bd06aa0"
|
||||
},
|
||||
"boss-boss_6-solo": {
|
||||
"about": "阿利斯泰尔,帝国余晖 solo pool 3980000: chess_char_4_17_b chess_char_4_18_b chess_char_4_23_b chess_char_4_19_b chess_char_4_22_b chess_char_4_20_b chess_char_4_21_b chess_char_4_24_b chess_char_4_25_b chess_char_4_26_b",
|
||||
@@ -1110,36 +1109,36 @@
|
||||
"killed": 8,
|
||||
"total": 8,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": 2759657,
|
||||
"rngDraws": 1763,
|
||||
"bossHpLeft": 2612672,
|
||||
"rngDraws": 1806,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {"killed":8,"total":8,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":2814016,"bossDmg":1144678,"heal":17046,"deaths":4,"layerGains":{}},
|
||||
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":4637433,"bossDmg":1644308,"heal":133781,"deaths":10,"layerGains":{}}
|
||||
"p1": {"killed":8,"total":8,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":2948326,"bossDmg":1190048,"heal":16840,"deaths":4,"layerGains":{}},
|
||||
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":4921756,"bossDmg":1745727,"heal":132791,"deaths":9,"layerGains":{}}
|
||||
},
|
||||
"units": [
|
||||
["p1",1,"op","chess_char_6_03_b",2,"uniequip_002_yu",7134.93,1,64,0,0,8733,8300,0,2],
|
||||
["p1",2,"op","chess_char_6_06_b",2,"uniequip_002_pepe",3232.9,1,11,0,22535,216,0,22,1],
|
||||
["p1",3,"op","chess_char_6_07_b",2,"uniequip_002_siege2",3400.3,1,17,0,43614,2149,0,30,2],
|
||||
["p1",4,"op","chess_char_6_01_b",2,"uniequip_002_lemuen",112.18,1,7,2,2330759,3557,0,58,8],
|
||||
["p1",5,"op","chess_char_6_02_b",2,"uniequip_002_sbell2",1576.18,1,9,0,37634,12337,0,46,2],
|
||||
["p1",6,"op","chess_char_6_04_b",2,"uniequip_002_skadi2",947.15,1,53,0,34934,12338,584,0,4],
|
||||
["p1",7,"op","chess_char_6_05_b",2,"uniequip_002_pasngr",2696.54,1,13,0,79339,0,0,0,11],
|
||||
["p1",8,"op","chess_char_6_08_b",2,"uniequip_002_reed2",1834.8,1,19,0,61826,0,7244,72,2],
|
||||
["p1",9,"op","chess_char_6_09_b",0,"uniequip_002_cello",0,0,21,0,170572,12794,0,28,28],
|
||||
["p1",3,"op","chess_char_6_07_b",2,"uniequip_002_siege2",3400.3,1,17,0,43614,2344,0,30,2],
|
||||
["p1",4,"op","chess_char_6_01_b",2,"uniequip_002_lemuen",112.18,1,7,2,2467345,3557,0,58,8],
|
||||
["p1",5,"op","chess_char_6_02_b",2,"uniequip_002_sbell2",1576.18,1,9,0,36603,12322,0,46,2],
|
||||
["p1",6,"op","chess_char_6_04_b",2,"uniequip_002_skadi2",947.15,1,53,0,34934,12348,584,0,4],
|
||||
["p1",7,"op","chess_char_6_05_b",2,"uniequip_002_pasngr",2696.54,1,13,0,78365,0,0,0,11],
|
||||
["p1",8,"op","chess_char_6_08_b",2,"uniequip_002_reed2",1834.8,1,19,0,61778,0,7043,72,2],
|
||||
["p1",9,"op","chess_char_6_09_b",0,"uniequip_002_cello",0,0,21,0,170349,12794,0,28,28],
|
||||
["p1",10,"op","chess_char_6_11_b",2,"uniequip_002_mlyss",2082.3,1,57,0,25516,7790,306,73,2],
|
||||
["p1",11,"token","token_10017_skadi2_dedant",null,null,138,0,28,0,0,0,0,0,null],
|
||||
["p1",12,"token","token_10030_mlyss_wtrman",null,null,0,0,24,0,0,1672,350,4,1],
|
||||
["p2",13,"op","chess_char_6_15_b",2,"uniequip_002_qiubai",0,0,63,5,909991,62061,0,253,6],
|
||||
["p2",14,"op","chess_char_6_19_b",2,"uniequip_002_blkkgt",0,0,22,0,959329,7398,0,80,6],
|
||||
["p2",15,"op","chess_char_5_01_b",1,"uniequip_002_excu2",0,0,12,0,311283,12166,9981,117,4],
|
||||
["p2",16,"op","chess_char_6_17_b",2,"uniequip_002_nearl2",0,0,52,1,485992,16595,0,55,3],
|
||||
["p2",17,"op","chess_char_6_12_b",1,"uniequip_002_rosmon",1,1,8,0,916016,6080,0,79,3],
|
||||
["p2",18,"op","chess_char_6_13_b",1,"uniequip_002_angel2",0,0,14,0,577086,9509,3590,207,4],
|
||||
["p2",19,"op","chess_char_6_14_b",2,"uniequip_002_lumen",0,0,20,0,0,5396,12980,77,1],
|
||||
["p2",20,"op","chess_char_6_16_b",2,"uniequip_002_halo2",0,0,10,0,148755,1773,190,128,4],
|
||||
["p2",21,"op","chess_char_6_18_b",2,"uniequip_002_whitw2",1849.61,1,27,0,284766,5470,0,17,3],
|
||||
["p2",22,"op","chess_char_6_20_b",2,"uniequip_002_agoat2",1758.31,1,25,0,0,14000,107039,81,2],
|
||||
["p2",13,"op","chess_char_6_15_b",2,"uniequip_002_qiubai",0,0,63,5,915266,61346,0,255,6],
|
||||
["p2",14,"op","chess_char_6_19_b",2,"uniequip_002_blkkgt",0,0,22,0,959477,7261,0,78,6],
|
||||
["p2",15,"op","chess_char_5_01_b",1,"uniequip_002_excu2",0,0,12,0,411464,15259,12983,143,4],
|
||||
["p2",16,"op","chess_char_6_17_b",2,"uniequip_002_nearl2",0,0,52,1,474928,15027,0,50,3],
|
||||
["p2",17,"op","chess_char_6_12_b",1,"uniequip_002_rosmon",1,1,8,0,970582,5582,0,79,3],
|
||||
["p2",18,"op","chess_char_6_13_b",1,"uniequip_002_angel2",0,0,14,0,682566,8809,4306,226,5],
|
||||
["p2",19,"op","chess_char_6_14_b",2,"uniequip_002_lumen",0,0,20,0,0,6658,11880,74,1],
|
||||
["p2",20,"op","chess_char_6_16_b",2,"uniequip_002_halo2",1582.9,1,10,0,163166,0,0,134,4],
|
||||
["p2",21,"op","chess_char_6_18_b",2,"uniequip_002_whitw2",1849.61,1,27,0,300092,5470,0,17,3],
|
||||
["p2",22,"op","chess_char_6_20_b",2,"uniequip_002_agoat2",1828.31,1,25,0,0,13440,103622,80,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],
|
||||
["-","~3","device","trap_1105_accrate",null,null,100,1,3,0,0,0,0,0,null],
|
||||
@@ -1153,7 +1152,7 @@
|
||||
["p1","~1","token","token_10040_siege2_vlion",null,null,3730,0,51,0,4750,270,0,10,null],
|
||||
["p1","~1","token","token_10017_skadi2_dedant",null,null,138,0,54,0,0,0,0,0,null],
|
||||
["p2","~2","token","token_10019_nearl2_sword",null,null,8175,0,55,0,36754,105,0,7,null],
|
||||
["p1","~4","token","token_10030_mlyss_wtrman",null,null,1322,1,58,0,0,295,261,0,1],
|
||||
["p1","~4","token","token_10030_mlyss_wtrman",null,null,1322,1,58,0,0,290,257,0,1],
|
||||
["p1","~2","token","token_10017_skadi2_dedant",null,null,100,0,59,0,0,0,0,0,null],
|
||||
["p1","~2","token","token_10040_siege2_vlion",null,null,3910.94,0,60,0,0,119,0,0,null],
|
||||
["p1","~3","token","token_10017_skadi2_dedant",null,null,100,1,65,0,0,0,0,0,null]
|
||||
@@ -1161,21 +1160,21 @@
|
||||
"enemies": {
|
||||
"enemy_1267_nhpbr_2": [6,6,0,1350,141894],
|
||||
"enemy_9007_acelem": [2,2,0,13443,309587],
|
||||
"enemy_9017_achunt_2": [2,0,0,58362,2840343],
|
||||
"enemy_9018_actrpa": [1,0,0,43306,1285615],
|
||||
"enemy_9019_actrpb": [1,0,0,29147,1129820],
|
||||
"enemy_9020_actrpc": [1,0,0,24541,1852186]
|
||||
"enemy_9017_achunt_2": [2,0,0,59149,2987328],
|
||||
"enemy_9018_actrpa": [1,0,0,40663,1366880],
|
||||
"enemy_9019_actrpb": [1,0,0,29607,1201922],
|
||||
"enemy_9020_actrpc": [1,0,0,24794,1970943]
|
||||
},
|
||||
"hooks": [1,63,6000,1669,1669,8172,16467,2661,26,38,101,97,291,47158,3533,28,13,0,1,37,0,16,0],
|
||||
"events": {"atk":2309,"deploy":44,"die":38,"dmg":16053,"engage":22,"fx":2255,"heal":941,"skill":198,"spawn":52,"status":870},
|
||||
"hooks": [1,63,6000,1709,1709,8462,17313,2737,25,37,102,97,322,47183,3651,28,13,0,1,34,0,17,0],
|
||||
"events": {"atk":2429,"deploy":44,"die":37,"dmg":16864,"engage":22,"fx":2293,"heal":961,"skill":199,"spawn":52,"status":866},
|
||||
"fx": {
|
||||
"airstrike": 99,
|
||||
"beam": 29,
|
||||
"airstrike": 116,
|
||||
"beam": 31,
|
||||
"blessing": 1,
|
||||
"blink": 5,
|
||||
"bombard": 72,
|
||||
"bombardShell": 72,
|
||||
"burst": 16,
|
||||
"burst": 17,
|
||||
"camouflage": 1,
|
||||
"copy": 3,
|
||||
"dash": 24,
|
||||
@@ -1184,7 +1183,7 @@
|
||||
"drone": 333,
|
||||
"droneLock": 11,
|
||||
"drones": 3,
|
||||
"extraAttack": 33,
|
||||
"extraAttack": 50,
|
||||
"finale": 6,
|
||||
"firewall": 2,
|
||||
"garrisonGrant": 1,
|
||||
@@ -1200,7 +1199,7 @@
|
||||
"slash": 66,
|
||||
"snow": 27,
|
||||
"split": 2,
|
||||
"steal": 4,
|
||||
"steal": 5,
|
||||
"storm": 11,
|
||||
"summon": 4,
|
||||
"sunBurst": 3,
|
||||
@@ -1210,7 +1209,7 @@
|
||||
"wanted": 6,
|
||||
"zone": 6
|
||||
},
|
||||
"snaps": "d4a8d95f 67303bda 241a76df 2a201ca5 25acc377 3bd8e295 f57e2a06 7047d8d4 cb58aaa4 b47aae99 3666c751 65ccd55e 35d895f8 de9884c3 ed7af147 b52e58dc 0843e294 ef7d75af 84efbc2c 36917520"
|
||||
"snaps": "d4a8d95f 67303bda 241a76df 2a201ca5 25acc377 2467e214 a4da8939 030800db df9e8e58 03162812 d9aada45 d2a25b4d 2bbd5a7e e539c98e e4f40505 91c18bc4 5e8ac0ed 52677505 697a7ea8 8a596281"
|
||||
},
|
||||
"hidden-boss_9-solo": {
|
||||
"about": "假想敌:铳 solo pool 2800000: chess_char_5_08_b chess_char_5_11_b chess_char_5_05_b chess_char_5_06_b chess_char_5_13_b chess_char_5_07_b chess_char_5_02_b chess_char_5_03_b chess_char_5_10_b chess_char_5_12_b",
|
||||
@@ -1285,8 +1284,8 @@
|
||||
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",4297.7,1,5,0,0,0,0,0,0],
|
||||
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",3890.7,1,9,0,0,0,0,0,0],
|
||||
["p1",3,"op","chess_char_5_14_b",1,"none",4184.95,1,15,0,0,0,0,0,0],
|
||||
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",3011.8,1,17,4,982,6282,6282,76,1],
|
||||
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",2187.9,1,11,6,229013,1790,1790,44,10],
|
||||
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",3011.8,1,17,4,981,6282,6282,76,1],
|
||||
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",2187.9,1,11,6,229014,1790,1790,44,10],
|
||||
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1520.2,1,19,0,54960,22801,5475,44,4],
|
||||
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",0,0,55,1,78333,11189,5813,161,4],
|
||||
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1772.1,1,3,0,0,0,0,0,0],
|
||||
@@ -1314,8 +1313,8 @@
|
||||
"enemy_9022_acdumm": [1,0,0,3181,0],
|
||||
"enemy_9023_acdums": [12,10,0,108194,695]
|
||||
},
|
||||
"hooks": [1,59,6000,1141,1241,4287,4879,11567,38,39,81,77,0,26759,1527,11,18,0,1,40,0,36,0],
|
||||
"events": {"atk":1291,"deploy":39,"die":39,"dmg":4530,"engage":15,"fx":1835,"heal":299,"skill":158,"spawn":42,"status":1043},
|
||||
"hooks": [1,59,6000,1141,1241,4282,4876,11567,38,39,81,77,0,26759,1527,11,18,0,1,40,0,36,0],
|
||||
"events": {"atk":1290,"deploy":39,"die":39,"dmg":4532,"engage":15,"fx":1835,"heal":299,"skill":158,"spawn":42,"status":1043},
|
||||
"fx": {
|
||||
"appear": 8,
|
||||
"beam": 21,
|
||||
@@ -1356,7 +1355,7 @@
|
||||
"weightless": 4,
|
||||
"zone": 191
|
||||
},
|
||||
"snaps": "320f9198 5ae60ade 887ed16f ac69a5cf fb07fc8a d0161157 dfd71757 c94dcf6d 2de86581 f981663a 8eb17a7e 7b45541e 2ffafcd2 b38a2ef9 7dd47de8 e065fac1 2d8d580b 3882caa2 dd5f56fc 1778df61"
|
||||
"snaps": "320f9198 5ae60ade 02156c52 c850e1d7 b7b8cd54 b951eebd 68270fa5 098fefa3 7e84509f f240a4ac 70c74721 ba37249d 2889197d 57eb3b46 1af1e207 ddc89caa 72a5571c d75888f9 f7a2d123 c20f2773"
|
||||
},
|
||||
"hidden-boss_10-solo": {
|
||||
"about": "假想敌:管 solo pool 7600000: chess_char_4_17_b chess_char_4_18_b chess_char_4_23_b chess_char_4_19_b chess_char_4_22_b chess_char_4_20_b chess_char_4_21_b chess_char_4_24_b chess_char_4_25_b chess_char_4_26_b",
|
||||
|
||||
+86
-79
@@ -134,7 +134,7 @@
|
||||
},
|
||||
{
|
||||
"round": 12,
|
||||
"ai_0": [1,17,12,0,0,6,8,"a01c862d",139,"arcaneShip 0/2, deputShip 0/8, emptyShip 0/4, kazimierzShip 0/8, kjeragShip 0/14, miraShip 1/8, preciShip 0/12, sargonShip 0/8, siracusaShip 2/97, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/16",17,31,14,109]
|
||||
"ai_0": [1,17,12,0,0,6,8,"a01c862d",139,"arcaneShip 0/2, deputShip 0/8, emptyShip 0/4, kazimierzShip 0/8, kjeragShip 0/14, miraShip 1/8, preciShip 0/12, sargonShip 0/8, siracusaShip 2/97, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/16",21,31,10,109]
|
||||
},
|
||||
{
|
||||
"round": 13,
|
||||
@@ -152,7 +152,7 @@
|
||||
"title": {"id":"comment_1","name":"卫戍之星","picId":"comment_icon_1","text":"对敌方领袖造成伤害最高(仅胜利时)"},
|
||||
"trophies": 0,
|
||||
"reward": 400,
|
||||
"stats": {"activatedLayers":275,"bossDamage":390000,"dmgDealt":2269367,"gold":131,"itemsEquipped":23,"kills":379,"leaks":14,"lpLost":10,"merges":5,"perfectRounds":12,"refreshes":15},
|
||||
"stats": {"activatedLayers":275,"bossDamage":390000,"dmgDealt":2267225,"gold":131,"itemsEquipped":23,"kills":383,"leaks":10,"lpLost":10,"merges":5,"perfectRounds":12,"refreshes":15},
|
||||
"lineup": ["3_20_b@12,5[3_06_e_a+4_08_e_a]","2_14_a@12,7","5_20_b@11,5[6_09_e_a+5_02_e_b]","5_10_a@11,8[4_07_e_a+3_08_e_b]","6_11_a@10,3[4_12_e_a+5_02_e_b]","3_18_a@10,8[2_04_e_b+4_05_e_b]","1_08_a@9,4[1_01_e_a+1_02_e_a]","6_19_a@9,5[4_04_e_a+4_10_e_a]"],
|
||||
"bonds": ["arcaneShip 0/2","deputShip 1/14","emptyShip 1/10","kazimierzShip 0/16","kjeragShip 1/24","maniShip 1/2","miraShip 1/14","preciShip 0/12","sargonShip 0/8","siracusaShip 1/143","soloShip 1/22","steadShip 0/6","suntShip 1/8","swiftShip 1/38"]
|
||||
}
|
||||
@@ -296,7 +296,7 @@
|
||||
"title": {"id":"comment_1","name":"卫戍之星","picId":"comment_icon_1","text":"对敌方领袖造成伤害最高(仅胜利时)"},
|
||||
"trophies": 0,
|
||||
"reward": 425,
|
||||
"stats": {"activatedLayers":282,"bossDamage":780000,"dmgDealt":2549571,"gold":140,"itemsEquipped":16,"kills":401,"leaks":19,"lpLost":15,"merges":3,"perfectRounds":10,"refreshes":15},
|
||||
"stats": {"activatedLayers":282,"bossDamage":780000,"dmgDealt":2549430,"gold":140,"itemsEquipped":16,"kills":401,"leaks":19,"lpLost":15,"merges":3,"perfectRounds":10,"refreshes":15},
|
||||
"lineup": ["6_12_a@12,5[5_01_e_a+5_02_e_a]","5_10_a@12,7[4_07_e_a+4_08_e_a]","4_14_a@11,8","3_11_a@10,3","5_14_a@9,4[3_08_e_a+3_11_e_a]","1_08_a@9,5[1_01_e_a+4_05_e_a]","6_02_a@9,6","4_10_a@9,8[5_02_e_b+4_10_e_b]"],
|
||||
"bonds": ["arcaneShip 1/30","deputShip 0/14","emptyShip 1/10","kazimierzShip 0/16","kjeragShip 1/56","preciShip 2/55","sargonShip 0/8","siracusaShip 1/83","soloShip 1/15","steadShip 0/21","swiftShip 1/33","visiShip 1/0"]
|
||||
}
|
||||
@@ -394,35 +394,35 @@
|
||||
{"round":1,"ai_0":[1,27,4,0,0,1,2,"cc1bac8f",0,"sargonShip 0/2, soloShip 1/0",5,5,0,4]},
|
||||
{"round":2,"ai_0":[1,27,5,0,0,1,4,"eee78fe4",0,"kazimierzShip 0/2, sargonShip 0/4, soloShip 1/0, swiftShip 0/2",10,10,0,9]},
|
||||
{"round":3,"ai_0":[1,27,6,0,1,1,6,"d5f9d956",1,"kazimierzShip 0/2, sargonShip 0/8, soloShip 1/1, swiftShip 0/2",11,9,0,15]},
|
||||
{"round":4,"ai_0":[1,25,8,0,1,2,8,"dd7803fd",4,"kazimierzShip 0/4, kjeragShip 0/2, sargonShip 0/8, soloShip 1/1, steadShip 1/3, swiftShip 0/4",9,9,2,23]},
|
||||
{"round":5,"ai_0":[1,25,9,0,0,3,8,"5fdaa5e6",5,"kazimierzShip 0/4, kjeragShip 0/2, sargonShip 0/8, soloShip 1/1, steadShip 1/4, swiftShip 0/4",21,21,0,31]},
|
||||
{"round":4,"ai_0":[1,23,8,0,1,2,8,"7e1baffa",4,"kazimierzShip 0/4, kjeragShip 0/2, sargonShip 0/8, soloShip 1/1, steadShip 1/3, swiftShip 0/4",7,9,4,23]},
|
||||
{"round":5,"ai_0":[1,23,9,0,0,3,8,"5fdaa5e6",5,"kazimierzShip 0/4, kjeragShip 0/2, sargonShip 0/8, soloShip 1/1, steadShip 1/4, swiftShip 0/4",21,21,0,31]},
|
||||
{
|
||||
"round": 6,
|
||||
"ai_0": [1,25,9,0,0,3,8,"3bdfd652",23,"deputShip 1/2, kazimierzShip 0/4, kjeragShip 0/2, sargonShip 0/8, siracusaShip 1/8, soloShip 1/3, steadShip 1/10, swiftShip 0/4",56,17,0,40]
|
||||
"ai_0": [1,23,9,0,0,3,8,"3bdfd652",23,"deputShip 1/2, kazimierzShip 0/4, kjeragShip 0/2, sargonShip 0/8, siracusaShip 1/8, soloShip 1/3, steadShip 1/10, swiftShip 0/4",56,17,0,40]
|
||||
},
|
||||
{
|
||||
"round": 7,
|
||||
"ai_0": [1,25,10,0,0,4,8,"1e743cfe",38,"deputShip 1/4, kazimierzShip 0/4, kjeragShip 0/2, sargonShip 0/8, siracusaShip 1/16, soloShip 1/5, steadShip 1/13, swiftShip 0/4",28,28,0,50]
|
||||
"ai_0": [1,23,10,0,0,4,8,"1e743cfe",38,"deputShip 1/4, kazimierzShip 0/4, kjeragShip 0/2, sargonShip 0/8, siracusaShip 1/16, soloShip 1/5, steadShip 1/13, swiftShip 0/4",28,28,0,50]
|
||||
},
|
||||
{
|
||||
"round": 8,
|
||||
"ai_0": [1,21,11,0,0,4,8,"0ccee9fb",70,"deputShip 1/6, emptyShip 1/2, kazimierzShip 0/8, kjeragShip 1/9, preciShip 0/5, sargonShip 0/8, siracusaShip 1/31, soloShip 1/7, steadShip 1/15, swiftShip 0/8",15,19,4,61]
|
||||
"ai_0": [1,19,11,0,0,4,8,"0ccee9fb",70,"deputShip 1/6, emptyShip 1/2, kazimierzShip 0/8, kjeragShip 1/9, preciShip 0/5, sargonShip 0/8, siracusaShip 1/31, soloShip 1/7, steadShip 1/15, swiftShip 0/8",15,19,4,61]
|
||||
},
|
||||
{
|
||||
"round": 9,
|
||||
"ai_0": [1,21,12,0,0,4,8,"8f39e18f",106,"arcaneShip 1/10, deputShip 1/8, emptyShip 1/4, kazimierzShip 0/8, kjeragShip 1/16, preciShip 1/14, sargonShip 0/8, siracusaShip 1/45, soloShip 1/9, steadShip 0/15, swiftShip 0/8",34,34,0,75]
|
||||
"ai_0": [1,19,12,0,0,4,8,"8f39e18f",106,"arcaneShip 1/10, deputShip 1/8, emptyShip 1/4, kazimierzShip 0/8, kjeragShip 1/16, preciShip 1/14, sargonShip 0/8, siracusaShip 1/45, soloShip 1/9, steadShip 0/15, swiftShip 0/8",34,34,0,75]
|
||||
},
|
||||
{
|
||||
"round": 10,
|
||||
"ai_0": [1,20,12,0,0,5,8,"c0bb71d6",122,"arcaneShip 1/12, deputShip 1/10, emptyShip 1/6, kazimierzShip 0/8, kjeragShip 1/18, preciShip 1/16, sargonShip 0/8, siracusaShip 1/49, soloShip 1/11, steadShip 0/15, swiftShip 0/8",23,24,1,86]
|
||||
"ai_0": [1,18,12,0,0,5,8,"c0bb71d6",122,"arcaneShip 1/12, deputShip 1/10, emptyShip 1/6, kazimierzShip 0/8, kjeragShip 1/18, preciShip 1/16, sargonShip 0/8, siracusaShip 1/49, soloShip 1/11, steadShip 0/15, swiftShip 0/8",23,24,1,86]
|
||||
},
|
||||
{
|
||||
"round": 11,
|
||||
"ai_0": [1,13,12,0,1,5,8,"662804e8",162,"arcaneShip 1/18, deputShip 1/12, emptyShip 1/8, kazimierzShip 0/8, kjeragShip 1/27, preciShip 1/23, sargonShip 0/8, siracusaShip 1/61, soloShip 1/13, steadShip 0/17, swiftShip 0/8",27,34,7,98]
|
||||
"ai_0": [1,11,12,0,1,5,8,"662804e8",162,"arcaneShip 1/18, deputShip 1/12, emptyShip 1/8, kazimierzShip 0/8, kjeragShip 1/27, preciShip 1/23, sargonShip 0/8, siracusaShip 1/61, soloShip 1/13, steadShip 0/17, swiftShip 0/8",27,34,7,98]
|
||||
},
|
||||
{
|
||||
"round": 12,
|
||||
"ai_0": [1,3,13,0,0,6,8,"c8d5f2da",110,"arcaneShip 0/18, deputShip 1/14, emptyShip 1/10, kazimierzShip 0/8, kjeragShip 0/32, preciShip 0/28, sargonShip 0/8, siracusaShip 2/71, soloShip 1/15, steadShip 0/17, swiftShip 0/8",8,31,23,111]
|
||||
"ai_0": [1,1,13,0,0,6,8,"c8d5f2da",110,"arcaneShip 0/18, deputShip 1/14, emptyShip 1/10, kazimierzShip 0/8, kjeragShip 0/32, preciShip 0/28, sargonShip 0/8, siracusaShip 2/71, soloShip 1/15, steadShip 0/17, swiftShip 0/8",8,31,23,111]
|
||||
},
|
||||
{
|
||||
"round": 13,
|
||||
@@ -440,7 +440,7 @@
|
||||
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
|
||||
"trophies": 0,
|
||||
"reward": 298,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2189325,"gold":122,"itemsEquipped":14,"kills":346,"leaks":50,"lpLost":34,"merges":3,"perfectRounds":7,"refreshes":7},
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2185496,"gold":122,"itemsEquipped":14,"kills":344,"leaks":52,"lpLost":36,"merges":3,"perfectRounds":7,"refreshes":7},
|
||||
"lineup": [],
|
||||
"bonds": ["arcaneShip 0/18","deputShip 0/16","emptyShip 0/12","kazimierzShip 0/8","kjeragShip 0/37","miraShip 0/5","preciShip 0/33","sargonShip 0/8","siracusaShip 0/145","soloShip 0/17","steadShip 0/17","swiftShip 0/8"]
|
||||
}
|
||||
@@ -473,27 +473,27 @@
|
||||
},
|
||||
{
|
||||
"round": 6,
|
||||
"ai_0": [1,21,9,0,2,3,8,"12a1dcbb",16,"arcaneShip 0/4, kazimierzShip 0/2, kjeragShip 0/4, lateranoShip 0/3, preciShip 1/4, sargonShip 0/2, steadShip 2/4, swiftShip 1/8",19,21,2,38]
|
||||
"ai_0": [1,22,9,0,1,3,8,"79c07df2",16,"arcaneShip 0/4, kazimierzShip 0/2, kjeragShip 0/4, lateranoShip 0/3, preciShip 1/4, sargonShip 0/2, steadShip 2/4, swiftShip 1/8",20,21,1,38]
|
||||
},
|
||||
{
|
||||
"round": 7,
|
||||
"ai_0": [1,21,12,0,2,4,8,"932a36c9",18,"arcaneShip 0/4, kazimierzShip 1/2, kjeragShip 0/4, lateranoShip 0/3, preciShip 1/4, sargonShip 0/2, soloShip 1/0, steadShip 2/4, swiftShip 1/8",28,28,0,50]
|
||||
"ai_0": [1,22,11,0,2,4,8,"932a36c9",18,"arcaneShip 0/4, kazimierzShip 1/2, kjeragShip 0/4, lateranoShip 0/3, preciShip 1/4, sargonShip 0/2, soloShip 1/0, steadShip 2/4, swiftShip 1/8",28,28,0,50]
|
||||
},
|
||||
{
|
||||
"round": 8,
|
||||
"ai_0": [1,21,13,0,1,4,8,"c470c9bb",26,"arcaneShip 1/8, kazimierzShip 1/2, kjeragShip 0/8, lateranoShip 0/3, preciShip 0/4, sargonShip 0/2, soloShip 1/0, steadShip 2/8, swiftShip 1/8",20,20,0,62]
|
||||
"ai_0": [1,22,13,0,1,4,8,"c470c9bb",26,"arcaneShip 1/8, kazimierzShip 1/2, kjeragShip 0/8, lateranoShip 0/3, preciShip 0/4, sargonShip 0/2, soloShip 1/0, steadShip 2/8, swiftShip 1/8",20,20,0,62]
|
||||
},
|
||||
{
|
||||
"round": 9,
|
||||
"ai_0": [1,14,13,0,1,4,8,"0aa5a1b4",62,"arcaneShip 1/18, kazimierzShip 1/2, kjeragShip 1/13, lateranoShip 0/3, preciShip 1/13, sargonShip 0/2, soloShip 1/0, steadShip 1/8, suntShip 1/0, swiftShip 1/8",25,32,7,75]
|
||||
"ai_0": [1,16,13,0,1,4,8,"0aa5a1b4",62,"arcaneShip 1/18, kazimierzShip 1/2, kjeragShip 1/13, lateranoShip 0/3, preciShip 1/13, sargonShip 0/2, soloShip 1/0, steadShip 1/8, suntShip 1/0, swiftShip 1/8",26,32,6,75]
|
||||
},
|
||||
{
|
||||
"round": 10,
|
||||
"ai_0": [1,12,13,0,0,5,8,"65d67e3b",72,"arcaneShip 1/24, kazimierzShip 1/4, kjeragShip 1/13, lateranoShip 0/3, preciShip 1/13, sargonShip 0/2, soloShip 1/0, steadShip 1/8, suntShip 1/0, swiftShip 1/10",28,30,2,88]
|
||||
"ai_0": [1,11,13,0,0,5,8,"65d67e3b",72,"arcaneShip 1/24, kazimierzShip 1/4, kjeragShip 1/13, lateranoShip 0/3, preciShip 1/13, sargonShip 0/2, soloShip 1/0, steadShip 1/8, suntShip 1/0, swiftShip 1/10",25,30,5,88]
|
||||
},
|
||||
{
|
||||
"round": 11,
|
||||
"ai_0": [1,2,12,0,1,5,8,"0c0f7e31",86,"arcaneShip 1/30, kazimierzShip 1/8, kjeragShip 1/18, lateranoShip 0/3, preciShip 2/22, sargonShip 0/2, soloShip 1/0, steadShip 1/8, suntShip 1/0, swiftShip 0/10",14,24,10,102]
|
||||
"ai_0": [1,1,12,0,1,5,8,"0c0f7e31",86,"arcaneShip 1/30, kazimierzShip 1/8, kjeragShip 1/18, lateranoShip 0/3, preciShip 2/22, sargonShip 0/2, soloShip 1/0, steadShip 1/8, suntShip 1/0, swiftShip 0/10",14,24,10,102]
|
||||
},
|
||||
{
|
||||
"round": 12,
|
||||
@@ -511,7 +511,7 @@
|
||||
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
|
||||
"trophies": 0,
|
||||
"reward": 255,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2240548,"gold":113,"itemsEquipped":7,"kills":207,"leaks":47,"lpLost":37,"merges":3,"perfectRounds":6,"refreshes":12},
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2195293,"gold":113,"itemsEquipped":7,"kills":206,"leaks":48,"lpLost":38,"merges":3,"perfectRounds":6,"refreshes":12},
|
||||
"lineup": [],
|
||||
"bonds": ["arcaneShip 0/30","kazimierzShip 0/16","kjeragShip 0/18","lateranoShip 0/3","preciShip 0/30","sargonShip 0/2","steadShip 0/8","swiftShip 0/10"]
|
||||
}
|
||||
@@ -527,7 +527,7 @@
|
||||
"combat": "client",
|
||||
"boost": null,
|
||||
"setup": {"stageId":"act2autochess_m04","bossId":"boss_3","hiddenBossId":"boss_8","factions":["FLY","TIMES","DOT"]},
|
||||
"end": {"victory":true,"roundsPassed":14,"hiddenReached":false,"hiddenCleared":false,"reason":"victory","teamLp":66,"bossPoolLeft":0,"virtualMs":115400},
|
||||
"end": {"victory":true,"roundsPassed":14,"hiddenReached":false,"hiddenCleared":false,"reason":"victory","teamLp":63,"bossPoolLeft":0,"virtualMs":115400},
|
||||
"rng": {"setup":25,"shop":449,"waves":0,"draft":40,"bots":21634,"meta":8},
|
||||
"errors": {"engine":0,"logged":0,"sim":0,"dispatcher":0},
|
||||
"rounds": [
|
||||
@@ -594,7 +594,7 @@
|
||||
{
|
||||
"round": 13,
|
||||
"ai_0": [1,41,12,0,2,6,8,"5deeb03a",214,"arcaneShip 2/70, miraShip 1/12, preciShip 0/10, sargonShip 0/10, siracusaShip 1/98, skillfulShip 1/28, soloShip 1/6, suntShip 1/0, swiftShip 0/32",30,34,4,125],
|
||||
"ai_1": [1,25,12,0,0,6,8,"dc3bc59a",189,"arcaneShip 2/34, kazimierzShip 1/38, kjeragShip 0/8, lateranoShip 0/8, preciShip 1/50, sargonShip 0/10, steadShip 1/0, suntShip 1/0, swiftShip 1/67",31,34,3,125]
|
||||
"ai_1": [1,22,12,0,0,6,8,"dc3bc59a",189,"arcaneShip 2/34, kazimierzShip 1/38, kjeragShip 0/8, lateranoShip 0/8, preciShip 1/50, sargonShip 0/10, steadShip 1/0, suntShip 1/0, swiftShip 1/67",28,34,6,125]
|
||||
}
|
||||
],
|
||||
"players": {
|
||||
@@ -608,7 +608,7 @@
|
||||
"title": {"id":"comment_2","name":"不朽盟约","picId":"comment_icon_2","text":"激活的盟约层数总和最高"},
|
||||
"trophies": 4,
|
||||
"reward": 400,
|
||||
"stats": {"activatedLayers":250,"bossDamage":487015,"dmgDealt":3229670,"gold":139,"itemsEquipped":12,"kills":334,"leaks":4,"lpLost":4,"merges":5,"perfectRounds":12,"refreshes":23},
|
||||
"stats": {"activatedLayers":250,"bossDamage":489346,"dmgDealt":3233236,"gold":139,"itemsEquipped":12,"kills":332,"leaks":4,"lpLost":4,"merges":5,"perfectRounds":12,"refreshes":23},
|
||||
"lineup": ["3_19_b@11,7[2_04_e_b]","5_12_a@11,8","4_10_a@10,5[1_02_e_b+2_01_e_a]","6_06_a@9,4","1_08_b@9,5","6_16_a@9,7","5_20_a@9,8[3_05_e_a+3_02_e_b]","3_13_b@9,9"],
|
||||
"bonds": ["arcaneShip 2/86","miraShip 1/12","preciShip 0/10","sargonShip 0/10","siracusaShip 1/110","skillfulShip 1/36","soloShip 1/6","suntShip 1/0","swiftShip 0/32"]
|
||||
},
|
||||
@@ -617,12 +617,12 @@
|
||||
"victory": true,
|
||||
"roundsPassed": 14,
|
||||
"eliminatedRound": null,
|
||||
"lp": 25,
|
||||
"lp": 22,
|
||||
"bandId": "band_dusk",
|
||||
"title": {"id":"comment_1","name":"卫戍之星","picId":"comment_icon_1","text":"对敌方领袖造成伤害最高(仅胜利时)"},
|
||||
"trophies": 4,
|
||||
"reward": 400,
|
||||
"stats": {"activatedLayers":199,"bossDamage":930485,"dmgDealt":3765695,"gold":137,"itemsEquipped":18,"kills":326,"leaks":3,"lpLost":3,"merges":5,"perfectRounds":12,"refreshes":13},
|
||||
"stats": {"activatedLayers":199,"bossDamage":928154,"dmgDealt":3788057,"gold":137,"itemsEquipped":18,"kills":323,"leaks":6,"lpLost":6,"merges":5,"perfectRounds":12,"refreshes":13},
|
||||
"lineup": ["4_20_a@12,8[3_06_e_a]","1_17_b@11,7[3_08_e_a]","4_02_b@11,8[3_02_e_a+4_03_e_b]","4_01_b@10,7[4_04_e_a+1_02_e_a]","6_17_a@10,8[4_06_e_a+4_08_e_a]","6_19_a@9,7[1_05_e_a+1_01_e_a]","4_14_a@9,8","5_07_a@9,9"],
|
||||
"bonds": ["arcaneShip 2/34","kazimierzShip 1/38","kjeragShip 0/8","lateranoShip 0/8","preciShip 2/55","raidShip 1/0","sargonShip 0/10","suntShip 1/0","swiftShip 1/72"]
|
||||
}
|
||||
@@ -699,12 +699,12 @@
|
||||
},
|
||||
{
|
||||
"round": 12,
|
||||
"ai_0": [1,3,13,0,0,6,8,"068fc829",125,"kazimierzShip 1/43, kjeragShip 0/2, raidShip 1/33, skillfulShip 0/9, soloShip 1/3, steadShip 2/16, suntShip 1/0, swiftShip 1/30, visiShip 1/0",38,50,12,114],
|
||||
"ai_0": [1,3,13,0,0,6,8,"51d6b043",121,"kazimierzShip 1/39, kjeragShip 0/2, raidShip 1/33, skillfulShip 0/9, soloShip 1/3, steadShip 2/20, suntShip 1/0, swiftShip 1/26, visiShip 1/0",30,50,20,114],
|
||||
"ai_1": [1,1,13,0,0,6,8,"62b855c3",67,"arcaneShip 0/2, kazimierzShip 0/2, preciShip 1/59, sargonShip 0/4, siracusaShip 2/8, skillfulShip 0/6, soloShip 1/0, suntShip 1/0, swiftShip 0/23",25,50,25,114]
|
||||
},
|
||||
{
|
||||
"round": 13,
|
||||
"ai_0": [0,0,12,0,0,6,0,"811c9dc5",0,"kazimierzShip 0/59, kjeragShip 0/10, miraShip 0/7, raidShip 0/35, skillfulShip 0/9, soloShip 0/3, steadShip 0/18, swiftShip 0/50, yanShip 0/6",29,49,20,127],
|
||||
"ai_0": [0,0,12,0,0,6,0,"811c9dc5",0,"kazimierzShip 0/55, kjeragShip 0/10, miraShip 0/7, raidShip 0/34, skillfulShip 0/9, soloShip 0/3, steadShip 0/21, swiftShip 0/46, yanShip 0/6",29,49,20,127],
|
||||
"ai_1": [0,0,12,0,0,6,0,"811c9dc5",0,"arcaneShip 0/2, kazimierzShip 0/2, preciShip 0/59, sargonShip 0/4, siracusaShip 0/28, skillfulShip 0/14, swiftShip 0/28",25,49,24,126]
|
||||
}
|
||||
],
|
||||
@@ -719,9 +719,9 @@
|
||||
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
|
||||
"trophies": 3,
|
||||
"reward": 298,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":3236369,"gold":127,"itemsEquipped":9,"kills":239,"leaks":47,"lpLost":32,"merges":4,"perfectRounds":9,"refreshes":12},
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":3167252,"gold":127,"itemsEquipped":9,"kills":231,"leaks":55,"lpLost":32,"merges":4,"perfectRounds":9,"refreshes":12},
|
||||
"lineup": [],
|
||||
"bonds": ["kazimierzShip 0/59","kjeragShip 0/10","miraShip 0/7","raidShip 0/35","skillfulShip 0/9","soloShip 0/3","steadShip 0/18","swiftShip 0/50","yanShip 0/6"]
|
||||
"bonds": ["kazimierzShip 0/55","kjeragShip 0/10","miraShip 0/7","raidShip 0/34","skillfulShip 0/9","soloShip 0/3","steadShip 0/21","swiftShip 0/46","yanShip 0/6"]
|
||||
},
|
||||
"ai_1": {
|
||||
"alive": false,
|
||||
@@ -733,7 +733,7 @@
|
||||
"title": {"id":"comment_5","name":"万事俱备","picId":"comment_icon_5","text":"装备配发数量最多"},
|
||||
"trophies": 3,
|
||||
"reward": 298,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2422388,"gold":126,"itemsEquipped":11,"kills":206,"leaks":76,"lpLost":35,"merges":3,"perfectRounds":7,"refreshes":23},
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2422387,"gold":126,"itemsEquipped":11,"kills":206,"leaks":76,"lpLost":35,"merges":3,"perfectRounds":7,"refreshes":23},
|
||||
"lineup": [],
|
||||
"bonds": ["arcaneShip 0/2","kazimierzShip 0/2","preciShip 0/59","sargonShip 0/4","siracusaShip 0/28","skillfulShip 0/14","swiftShip 0/28"]
|
||||
}
|
||||
@@ -797,13 +797,13 @@
|
||||
},
|
||||
{
|
||||
"round": 8,
|
||||
"ai_0": [1,13,11,0,1,4,8,"62465a0a",78,"deputShip 2/24, kazimierzShip 0/4, lateranoShip 1/4, skillfulShip 1/26, soloShip 1/8, swiftShip 1/16",8,20,12,60],
|
||||
"ai_0": [1,13,11,0,1,4,8,"62465a0a",78,"deputShip 2/24, kazimierzShip 0/4, lateranoShip 1/4, skillfulShip 1/26, soloShip 1/8, swiftShip 1/16",9,20,11,60],
|
||||
"ai_1": [1,35,11,0,0,4,8,"447ca610",77,"deputShip 2/16, kazimierzShip 0/7, siracusaShip 1/10, skillfulShip 1/4, soloShip 0/8, suntShip 1/12, swiftShip 1/35",6,20,14,60],
|
||||
"ai_2": [1,20,11,0,0,4,8,"1cf25110",60,"siracusaShip 1/50, soloShip 1/4, swiftShip 1/6, yanShip 0/1",13,20,7,58]
|
||||
},
|
||||
{
|
||||
"round": 9,
|
||||
"ai_0": [1,4,13,0,2,4,8,"d44f5f59",110,"deputShip 2/28, kazimierzShip 0/4, lateranoShip 1/11, miraShip 1/4, skillfulShip 1/35, soloShip 1/12, swiftShip 1/20",51,22,9,73],
|
||||
"ai_0": [1,3,13,0,2,4,8,"d44f5f59",110,"deputShip 2/28, kazimierzShip 0/4, lateranoShip 1/11, miraShip 1/4, skillfulShip 1/35, soloShip 1/12, swiftShip 1/20",48,22,10,73],
|
||||
"ai_1": [1,28,12,0,1,4,8,"4e0c1fad",82,"deputShip 1/18, kazimierzShip 0/7, raidShip 1/4, siracusaShip 1/20, skillfulShip 1/8, soloShip 1/10, steadShip 1/8, suntShip 1/14, swiftShip 0/37",47,22,7,72],
|
||||
"ai_2": [1,10,12,0,4,4,8,"46698a04",76,"siracusaShip 1/66, soloShip 1/4, suntShip 1/0, swiftShip 1/6, yanShip 0/1",26,22,18,69]
|
||||
},
|
||||
@@ -837,7 +837,7 @@
|
||||
"title": {"id":"comment_6","name":"挥金如土","picId":"comment_icon_6","text":"消耗资金最多"},
|
||||
"trophies": 2,
|
||||
"reward": 191,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":1498370,"gold":87,"itemsEquipped":4,"kills":238,"leaks":32,"lpLost":29,"merges":1,"perfectRounds":7,"refreshes":17},
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":1534114,"gold":87,"itemsEquipped":4,"kills":236,"leaks":32,"lpLost":30,"merges":1,"perfectRounds":7,"refreshes":17},
|
||||
"lineup": [],
|
||||
"bonds": ["deputShip 0/30","kazimierzShip 0/4","lateranoShip 0/16","miraShip 0/9","siracusaShip 0/16","skillfulShip 0/42","soloShip 0/12","swiftShip 0/28"]
|
||||
},
|
||||
@@ -851,7 +851,7 @@
|
||||
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
|
||||
"trophies": 2,
|
||||
"reward": 255,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2579310,"gold":107,"itemsEquipped":9,"kills":251,"leaks":99,"lpLost":47,"merges":4,"perfectRounds":4,"refreshes":18},
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2579313,"gold":107,"itemsEquipped":9,"kills":251,"leaks":99,"lpLost":47,"merges":4,"perfectRounds":4,"refreshes":18},
|
||||
"lineup": [],
|
||||
"bonds": ["deputShip 0/33","kazimierzShip 0/7","raidShip 0/11","siracusaShip 0/38","skillfulShip 0/28","soloShip 0/16","steadShip 0/27","suntShip 0/20","swiftShip 0/37"]
|
||||
},
|
||||
@@ -1046,8 +1046,8 @@
|
||||
"combat": "client",
|
||||
"boost": null,
|
||||
"setup": {"stageId":"act2autochess_m01","bossId":"boss_1","hiddenBossId":"boss_8","factions":["DOT","INVISIBLE","REFLECTION"]},
|
||||
"end": {"victory":false,"roundsPassed":11,"hiddenReached":false,"hiddenCleared":false,"reason":"eliminated","teamLp":null,"bossPoolLeft":null,"virtualMs":120550},
|
||||
"rng": {"setup":25,"shop":532,"waves":0,"draft":56,"bots":19431,"meta":56},
|
||||
"end": {"victory":false,"roundsPassed":12,"hiddenReached":false,"hiddenCleared":false,"reason":"eliminated","teamLp":null,"bossPoolLeft":null,"virtualMs":127950},
|
||||
"rng": {"setup":25,"shop":539,"waves":0,"draft":56,"bots":19977,"meta":56},
|
||||
"errors": {"engine":0,"logged":0,"sim":0,"dispatcher":0},
|
||||
"rounds": [
|
||||
{
|
||||
@@ -1059,7 +1059,7 @@
|
||||
},
|
||||
{
|
||||
"round": 2,
|
||||
"ai_0": [1,45,5,0,0,1,4,"62de86cd",4,"kazimierzShip 0/4, swiftShip 1/4",8,8,0,9],
|
||||
"ai_0": [1,45,5,0,0,1,4,"e8a46594",4,"kazimierzShip 0/4, swiftShip 1/4",8,8,0,9],
|
||||
"ai_1": [1,26,5,0,0,1,4,"a2ec5116",5,"kazimierzShip 0/5, sargonShip 0/2, soloShip 1/0, swiftShip 1/5",8,8,0,9],
|
||||
"ai_2": [1,28,5,0,0,1,3,"70d74d61",0,"deputShip 0/4, kjeragShip 0/2, soloShip 1/0, victoriaShip 0/6",7,8,1,9],
|
||||
"ai_3": [1,26,5,0,0,1,4,"9e98d014",0,"sargonShip 0/2, soloShip 1/0",8,8,0,9]
|
||||
@@ -1094,44 +1094,51 @@
|
||||
},
|
||||
{
|
||||
"round": 7,
|
||||
"ai_0": [1,28,10,0,0,4,8,"6300cd19",45,"arcaneShip 0/8, kazimierzShip 0/4, kjeragShip 0/5, preciShip 2/27, suntShip 1/0, swiftShip 1/18",9,21,12,51],
|
||||
"ai_1": [1,7,10,0,0,4,8,"017dac16",57,"arcaneShip 1/4, deputShip 1/4, kazimierzShip 1/27, kjeragShip 0/2, preciShip 0/2, sargonShip 0/4, siracusaShip 0/6, soloShip 0/2, steadShip 0/2, swiftShip 1/22",9,21,12,49],
|
||||
"ai_0": [1,28,10,0,0,4,8,"6300cd19",45,"arcaneShip 0/8, kazimierzShip 0/4, kjeragShip 0/5, preciShip 2/27, suntShip 1/0, swiftShip 1/18",10,21,11,51],
|
||||
"ai_1": [1,6,10,0,0,4,8,"017dac16",53,"arcaneShip 1/4, deputShip 1/4, kazimierzShip 1/23, kjeragShip 0/2, preciShip 0/2, sargonShip 0/4, siracusaShip 0/6, soloShip 0/2, steadShip 0/2, swiftShip 1/22",5,21,16,49],
|
||||
"ai_2": [1,21,10,0,0,4,8,"0c6b8294",81,"deputShip 1/15, egirShip 0/4, kazimierzShip 0/4, kjeragShip 0/14, raidShip 0/4, siracusaShip 0/4, skillfulShip 0/2, soloShip 1/14, steadShip 2/36, swiftShip 1/16, victoriaShip 0/12, yanShip 0/2",21,21,0,52],
|
||||
"ai_3": [1,6,10,0,0,4,8,"eec26fd6",25,"arcaneShip 0/2, deputShip 1/4, preciShip 0/2, sargonShip 0/9, siracusaShip 1/12, skillfulShip 1/2, soloShip 1/7",3,21,18,52]
|
||||
},
|
||||
{
|
||||
"round": 8,
|
||||
"ai_0": [1,24,11,0,0,4,8,"8a1b740d",78,"arcaneShip 1/10, deputShip 1/2, kazimierzShip 0/7, kjeragShip 0/5, preciShip 2/36, suntShip 1/2, swiftShip 1/28",5,9,4,61],
|
||||
"ai_1": [1,2,11,0,0,4,8,"a99751e0",56,"arcaneShip 0/4, deputShip 2/8, emptyShip 1/4, kazimierzShip 1/38, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 1/6, steadShip 0/2, swiftShip 0/22",4,9,5,60],
|
||||
"ai_1": [1,1,11,0,0,4,8,"a99751e0",52,"arcaneShip 0/4, deputShip 2/8, emptyShip 1/4, kazimierzShip 1/34, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 1/6, steadShip 0/2, swiftShip 0/22",4,9,5,60],
|
||||
"ai_2": [1,14,11,0,0,4,8,"375e3d78",89,"arcaneShip 2/6, deputShip 1/19, egirShip 0/6, kazimierzShip 0/4, kjeragShip 0/14, lateranoShip 0/2, raidShip 0/4, siracusaShip 0/4, skillfulShip 0/2, soloShip 1/18, steadShip 1/46, swiftShip 0/18, victoriaShip 0/12, yanShip 0/2",2,9,7,63],
|
||||
"ai_3": [0,0,11,0,0,4,0,"811c9dc5",0,"arcaneShip 0/2, deputShip 0/6, preciShip 0/2, sargonShip 0/9, siracusaShip 0/26, skillfulShip 0/4, soloShip 0/9, swiftShip 0/6",0,9,9,63]
|
||||
},
|
||||
{
|
||||
"round": 9,
|
||||
"ai_0": [1,23,12,0,1,4,8,"28d32ef6",119,"arcaneShip 2/12, deputShip 0/2, kazimierzShip 1/23, kjeragShip 0/5, preciShip 2/49, suntShip 1/2, swiftShip 1/33",8,19,11,73],
|
||||
"ai_1": [0,0,12,0,0,4,0,"811c9dc5",0,"arcaneShip 0/4, deputShip 0/12, emptyShip 0/8, kazimierzShip 0/53, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 0/10, steadShip 0/2, swiftShip 0/31",7,19,12,72],
|
||||
"ai_0": [1,24,12,0,1,4,8,"28d32ef6",119,"arcaneShip 2/12, deputShip 0/2, kazimierzShip 1/23, kjeragShip 0/5, preciShip 2/49, suntShip 1/2, swiftShip 1/33",8,19,11,73],
|
||||
"ai_1": [0,0,12,0,0,4,0,"811c9dc5",0,"arcaneShip 0/4, deputShip 0/12, emptyShip 0/8, kazimierzShip 0/49, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 0/10, steadShip 0/2, swiftShip 0/31",7,19,12,72],
|
||||
"ai_2": [1,14,12,0,3,4,8,"076d6398",116,"arcaneShip 2/15, deputShip 1/23, egirShip 0/8, kazimierzShip 0/4, kjeragShip 0/14, lateranoShip 0/4, raidShip 0/4, siracusaShip 0/4, skillfulShip 0/2, soloShip 1/22, steadShip 2/56, swiftShip 0/18, victoriaShip 0/14, yanShip 0/2",19,19,0,74],
|
||||
"ai_3": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/2, deputShip 0/6, preciShip 0/2, sargonShip 0/9, siracusaShip 0/26, skillfulShip 0/4, soloShip 0/9, swiftShip 0/6",null,null,null,63]
|
||||
},
|
||||
{
|
||||
"round": 10,
|
||||
"ai_0": [1,20,13,0,2,5,8,"3eaad163",143,"arcaneShip 2/14, deputShip 0/2, kazimierzShip 1/31, kjeragShip 0/5, preciShip 2/58, suntShip 1/2, swiftShip 1/38",15,25,10,86],
|
||||
"ai_1": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/4, deputShip 0/12, emptyShip 0/8, kazimierzShip 0/53, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 0/10, steadShip 0/2, swiftShip 0/31",null,null,null,72],
|
||||
"ai_0": [1,22,13,0,2,5,8,"9dcf88ce",151,"arcaneShip 2/14, deputShip 0/2, kazimierzShip 1/35, kjeragShip 0/5, preciShip 2/62, suntShip 1/2, swiftShip 1/38",14,25,11,86],
|
||||
"ai_1": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/4, deputShip 0/12, emptyShip 0/8, kazimierzShip 0/49, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 0/10, steadShip 0/2, swiftShip 0/31",null,null,null,72],
|
||||
"ai_2": [1,14,15,0,0,5,8,"8f1eb1fc",154,"arcaneShip 1/19, deputShip 1/27, egirShip 0/8, kazimierzShip 0/4, kjeragShip 0/14, lateranoShip 1/16, raidShip 0/4, siracusaShip 0/4, skillfulShip 0/4, soloShip 1/24, steadShip 2/68, swiftShip 0/18, victoriaShip 0/18, yanShip 0/2",25,25,0,89],
|
||||
"ai_3": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/2, deputShip 0/6, preciShip 0/2, sargonShip 0/9, siracusaShip 0/26, skillfulShip 0/4, soloShip 0/9, swiftShip 0/6",null,null,null,63]
|
||||
},
|
||||
{
|
||||
"round": 11,
|
||||
"ai_0": [1,10,14,0,0,5,8,"5d38c174",184,"arcaneShip 2/20, deputShip 0/2, kazimierzShip 1/35, kjeragShip 0/5, preciShip 2/75, soloShip 1/0, steadShip 1/4, suntShip 1/2, swiftShip 1/48",12,24,12,101],
|
||||
"ai_1": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/4, deputShip 0/12, emptyShip 0/8, kazimierzShip 0/53, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 0/10, steadShip 0/2, swiftShip 0/31",null,null,null,72],
|
||||
"ai_2": [1,5,12,0,0,5,8,"b221e35c",219,"arcaneShip 1/29, deputShip 2/35, egirShip 0/8, kazimierzShip 0/4, kjeragShip 0/14, lateranoShip 1/36, raidShip 0/4, siracusaShip 0/4, skillfulShip 0/6, soloShip 1/30, steadShip 1/85, suntShip 1/4, swiftShip 0/18, victoriaShip 0/20, yanShip 0/2",15,24,9,100],
|
||||
"ai_0": [1,12,14,0,0,5,8,"5d38c174",192,"arcaneShip 2/20, deputShip 0/2, kazimierzShip 1/39, kjeragShip 0/5, preciShip 2/79, soloShip 1/0, steadShip 1/4, suntShip 1/2, swiftShip 1/48",13,24,11,101],
|
||||
"ai_1": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/4, deputShip 0/12, emptyShip 0/8, kazimierzShip 0/49, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 0/10, steadShip 0/2, swiftShip 0/31",null,null,null,72],
|
||||
"ai_2": [1,4,12,0,0,5,8,"b221e35c",217,"arcaneShip 1/29, deputShip 2/35, egirShip 0/8, kazimierzShip 0/4, kjeragShip 0/14, lateranoShip 1/34, raidShip 0/4, siracusaShip 0/4, skillfulShip 0/6, soloShip 1/30, steadShip 1/85, suntShip 1/4, swiftShip 0/18, victoriaShip 0/20, yanShip 0/2",14,24,10,100],
|
||||
"ai_3": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/2, deputShip 0/6, preciShip 0/2, sargonShip 0/9, siracusaShip 0/26, skillfulShip 0/4, soloShip 0/9, swiftShip 0/6",null,null,null,63]
|
||||
},
|
||||
{
|
||||
"round": 12,
|
||||
"ai_0": [0,0,12,0,0,5,0,"811c9dc5",0,"arcaneShip 0/28, deputShip 0/2, kazimierzShip 0/46, kjeragShip 0/5, preciShip 0/95, steadShip 0/8, suntShip 0/2, swiftShip 0/62",11,47,36,114],
|
||||
"ai_1": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/4, deputShip 0/12, emptyShip 0/8, kazimierzShip 0/53, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 0/10, steadShip 0/2, swiftShip 0/31",null,null,null,72],
|
||||
"ai_2": [0,0,12,0,0,6,0,"811c9dc5",0,"arcaneShip 0/39, deputShip 0/46, egirShip 0/8, kazimierzShip 0/4, kjeragShip 0/14, lateranoShip 0/47, raidShip 0/4, siracusaShip 0/4, skillfulShip 0/8, soloShip 0/36, steadShip 0/99, suntShip 0/8, swiftShip 0/18, victoriaShip 0/24, yanShip 0/2",10,47,37,111],
|
||||
"ai_0": [1,2,12,0,0,5,8,"8929c3e7",249,"arcaneShip 2/28, deputShip 0/2, kazimierzShip 1/50, kjeragShip 0/5, preciShip 2/99, soloShip 1/0, steadShip 1/8, suntShip 1/2, swiftShip 1/62",10,47,37,114],
|
||||
"ai_1": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/4, deputShip 0/12, emptyShip 0/8, kazimierzShip 0/49, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 0/10, steadShip 0/2, swiftShip 0/31",null,null,null,72],
|
||||
"ai_2": [0,0,12,0,0,6,0,"811c9dc5",0,"arcaneShip 0/39, deputShip 0/46, egirShip 0/8, kazimierzShip 0/4, kjeragShip 0/14, lateranoShip 0/45, raidShip 0/4, siracusaShip 0/4, skillfulShip 0/8, soloShip 0/36, steadShip 0/99, suntShip 0/8, swiftShip 0/18, victoriaShip 0/24, yanShip 0/2",15,47,32,111],
|
||||
"ai_3": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/2, deputShip 0/6, preciShip 0/2, sargonShip 0/9, siracusaShip 0/26, skillfulShip 0/4, soloShip 0/9, swiftShip 0/6",null,null,null,63]
|
||||
},
|
||||
{
|
||||
"round": 13,
|
||||
"ai_0": [0,0,12,0,0,6,0,"811c9dc5",0,"arcaneShip 0/34, deputShip 0/2, kazimierzShip 0/54, kjeragShip 0/5, preciShip 0/113, steadShip 0/12, suntShip 0/2, swiftShip 0/72",15,39,24,125],
|
||||
"ai_1": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/4, deputShip 0/12, emptyShip 0/8, kazimierzShip 0/49, kjeragShip 0/2, preciShip 0/2, sargonShip 0/8, siracusaShip 0/6, soloShip 0/10, steadShip 0/2, swiftShip 0/31",null,null,null,72],
|
||||
"ai_2": [0,0,0,0,0,6,0,"811c9dc5",0,"arcaneShip 0/39, deputShip 0/46, egirShip 0/8, kazimierzShip 0/4, kjeragShip 0/14, lateranoShip 0/45, raidShip 0/4, siracusaShip 0/4, skillfulShip 0/8, soloShip 0/36, steadShip 0/99, suntShip 0/8, swiftShip 0/18, victoriaShip 0/24, yanShip 0/2",null,null,null,111],
|
||||
"ai_3": [0,0,0,0,0,4,0,"811c9dc5",0,"arcaneShip 0/2, deputShip 0/6, preciShip 0/2, sargonShip 0/9, siracusaShip 0/26, skillfulShip 0/4, soloShip 0/9, swiftShip 0/6",null,null,null,63]
|
||||
}
|
||||
],
|
||||
@@ -1139,16 +1146,16 @@
|
||||
"ai_0": {
|
||||
"alive": false,
|
||||
"victory": false,
|
||||
"roundsPassed": 11,
|
||||
"eliminatedRound": 12,
|
||||
"roundsPassed": 12,
|
||||
"eliminatedRound": 13,
|
||||
"lp": 0,
|
||||
"bandId": "band_sarkazb",
|
||||
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
|
||||
"trophies": 2,
|
||||
"reward": 255,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2906409,"gold":114,"itemsEquipped":14,"kills":111,"leaks":97,"lpLost":45,"merges":4,"perfectRounds":5,"refreshes":14},
|
||||
"trophies": 3,
|
||||
"reward": 298,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":3888627,"gold":125,"itemsEquipped":15,"kills":126,"leaks":121,"lpLost":53,"merges":4,"perfectRounds":5,"refreshes":14},
|
||||
"lineup": [],
|
||||
"bonds": ["arcaneShip 0/28","deputShip 0/2","kazimierzShip 0/46","kjeragShip 0/5","preciShip 0/95","steadShip 0/8","suntShip 0/2","swiftShip 0/62"]
|
||||
"bonds": ["arcaneShip 0/34","deputShip 0/2","kazimierzShip 0/54","kjeragShip 0/5","preciShip 0/113","steadShip 0/12","suntShip 0/2","swiftShip 0/72"]
|
||||
},
|
||||
"ai_1": {
|
||||
"alive": false,
|
||||
@@ -1160,9 +1167,9 @@
|
||||
"title": null,
|
||||
"trophies": 1,
|
||||
"reward": 170,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":1127523,"gold":72,"itemsEquipped":4,"kills":77,"leaks":40,"lpLost":26,"merges":1,"perfectRounds":4,"refreshes":8},
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":1096051,"gold":72,"itemsEquipped":4,"kills":73,"leaks":44,"lpLost":26,"merges":1,"perfectRounds":4,"refreshes":8},
|
||||
"lineup": [],
|
||||
"bonds": ["arcaneShip 0/4","deputShip 0/12","emptyShip 0/8","kazimierzShip 0/53","kjeragShip 0/2","preciShip 0/2","sargonShip 0/8","siracusaShip 0/6","soloShip 0/10","steadShip 0/2","swiftShip 0/31"]
|
||||
"bonds": ["arcaneShip 0/4","deputShip 0/12","emptyShip 0/8","kazimierzShip 0/49","kjeragShip 0/2","preciShip 0/2","sargonShip 0/8","siracusaShip 0/6","soloShip 0/10","steadShip 0/2","swiftShip 0/31"]
|
||||
},
|
||||
"ai_2": {
|
||||
"alive": false,
|
||||
@@ -1174,9 +1181,9 @@
|
||||
"title": {"id":"comment_6","name":"挥金如土","picId":"comment_icon_6","text":"消耗资金最多"},
|
||||
"trophies": 2,
|
||||
"reward": 255,
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":4871568,"gold":111,"itemsEquipped":11,"kills":189,"leaks":64,"lpLost":33,"merges":2,"perfectRounds":6,"refreshes":11},
|
||||
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":4994604,"gold":111,"itemsEquipped":11,"kills":198,"leaks":60,"lpLost":34,"merges":2,"perfectRounds":6,"refreshes":11},
|
||||
"lineup": [],
|
||||
"bonds": ["arcaneShip 0/39","deputShip 0/46","egirShip 0/8","kazimierzShip 0/4","kjeragShip 0/14","lateranoShip 0/47","raidShip 0/4","siracusaShip 0/4","skillfulShip 0/8","soloShip 0/36","steadShip 0/99","suntShip 0/8","swiftShip 0/18","victoriaShip 0/24","yanShip 0/2"]
|
||||
"bonds": ["arcaneShip 0/39","deputShip 0/46","egirShip 0/8","kazimierzShip 0/4","kjeragShip 0/14","lateranoShip 0/45","raidShip 0/4","siracusaShip 0/4","skillfulShip 0/8","soloShip 0/36","steadShip 0/99","suntShip 0/8","swiftShip 0/18","victoriaShip 0/24","yanShip 0/2"]
|
||||
},
|
||||
"ai_3": {
|
||||
"alive": false,
|
||||
@@ -1383,7 +1390,7 @@
|
||||
"title": {"id":"comment_1","name":"卫戍之星","picId":"comment_icon_1","text":"对敌方领袖造成伤害最高(仅胜利时)"},
|
||||
"trophies": 0,
|
||||
"reward": 425,
|
||||
"stats": {"activatedLayers":2279,"bossDamage":4580000,"dmgDealt":6596544,"gold":175,"itemsEquipped":25,"kills":375,"leaks":1,"lpLost":1,"merges":5,"perfectRounds":12,"refreshes":34},
|
||||
"stats": {"activatedLayers":2279,"bossDamage":4580000,"dmgDealt":6599644,"gold":175,"itemsEquipped":25,"kills":375,"leaks":1,"lpLost":1,"merges":5,"perfectRounds":12,"refreshes":34},
|
||||
"lineup": ["4_02_b@12,7[3_08_e_a+1_02_e_b]","6_01_a@12,8[3_03_e_a+3_02_e_a]","6_16_a@11,5","3_18_a@11,8[4_11_e_a+4_05_e_b]","4_10_a@10,4[1_05_e_b]","6_05_a@10,5","4_01_b@10,6[4_06_e_a+4_05_e_a]","1_08_b@9,9[4_10_e_a]"],
|
||||
"bonds": ["arcaneShip 2/389","deputShip 0/300","egirShip 0/300","emptyShip 0/300","indomShip 0/308","investShip 0/300","kazimierzShip 0/308","kjeragShip 0/300","lateranoShip 1/320","maniShip 0/300","miraShip 0/300","preciShip 1/302","raidShip 0/300","sargonShip 0/300","siracusaShip 1/345","skillfulShip 0/335","soloShip 1/307","steadShip 0/300","suntShip 1/300","swiftShip 1/316","victoriaShip 0/300","visiShip 0/300","yanShip 0/300"]
|
||||
}
|
||||
@@ -1399,7 +1406,7 @@
|
||||
"combat": "client",
|
||||
"boost": {"lp":400,"layers":300},
|
||||
"setup": {"stageId":"act2autochess_m04","bossId":"boss_5","hiddenBossId":"boss_9","factions":["FLY","ELEMENT","INVISIBLE"]},
|
||||
"end": {"victory":true,"roundsPassed":15,"hiddenReached":true,"hiddenCleared":true,"reason":"victory","teamLp":582,"bossPoolLeft":0,"virtualMs":123150},
|
||||
"end": {"victory":true,"roundsPassed":15,"hiddenReached":true,"hiddenCleared":true,"reason":"victory","teamLp":583,"bossPoolLeft":0,"virtualMs":123150},
|
||||
"rng": {"setup":25,"shop":591,"waves":0,"draft":61,"bots":22093,"meta":138},
|
||||
"errors": {"engine":0,"logged":0,"sim":0,"dispatcher":0},
|
||||
"rounds": [
|
||||
@@ -1475,12 +1482,12 @@
|
||||
"victory": true,
|
||||
"roundsPassed": 15,
|
||||
"eliminatedRound": null,
|
||||
"lp": 291,
|
||||
"lp": 292,
|
||||
"bandId": "band_sarkazb",
|
||||
"title": {"id":"comment_1","name":"卫戍之星","picId":"comment_icon_1","text":"对敌方领袖造成伤害最高(仅胜利时)"},
|
||||
"trophies": 8,
|
||||
"reward": 425,
|
||||
"stats": {"activatedLayers":2792,"bossDamage":7446114,"dmgDealt":20613426,"gold":156,"itemsEquipped":19,"kills":322,"leaks":8,"lpLost":0,"merges":8,"perfectRounds":12,"refreshes":31},
|
||||
"stats": {"activatedLayers":2792,"bossDamage":7450442,"dmgDealt":20617753,"gold":156,"itemsEquipped":19,"kills":322,"leaks":8,"lpLost":0,"merges":8,"perfectRounds":12,"refreshes":31},
|
||||
"lineup": ["2_18_b@11,5[1_05_e_b+1_01_e_a]","4_14_a@11,8[4_03_e_a]","4_09_a@10,3","1_19_b@10,4","6_17_b@10,8[2_01_e_a+1_02_e_a]","3_09_a@9,7","4_20_b@9,8[1_01_e_b+3_11_e_a]","3_05_b@9,9"],
|
||||
"bonds": ["arcaneShip 0/321","deputShip 0/304","egirShip 1/359","emptyShip 0/300","indomShip 0/300","investShip 0/300","kazimierzShip 1/357","kjeragShip 0/302","lateranoShip 0/300","maniShip 0/300","miraShip 0/300","preciShip 1/379","raidShip 1/425","sargonShip 0/300","siracusaShip 0/300","skillfulShip 0/300","soloShip 1/304","steadShip 1/333","suntShip 2/300","swiftShip 1/335","victoriaShip 0/300","visiShip 0/300","yanShip 0/300"]
|
||||
},
|
||||
@@ -1494,7 +1501,7 @@
|
||||
"title": {"id":"comment_3","name":"坚若磐石","picId":"comment_icon_3","text":"目标生命值损失最少"},
|
||||
"trophies": 8,
|
||||
"reward": 425,
|
||||
"stats": {"activatedLayers":2377,"bossDamage":6428499,"dmgDealt":25435615,"gold":159,"itemsEquipped":34,"kills":281,"leaks":0,"lpLost":0,"merges":3,"perfectRounds":13,"refreshes":23},
|
||||
"stats": {"activatedLayers":2377,"bossDamage":6424171,"dmgDealt":25431287,"gold":159,"itemsEquipped":34,"kills":281,"leaks":0,"lpLost":0,"merges":3,"perfectRounds":13,"refreshes":23},
|
||||
"lineup": ["2_17_a@12,8[4_02_e_a+3_03_e_a]","1_13_b@11,5[4_07_e_a+3_11_e_a]","5_03_a@11,8[3_02_e_a+2_03_e_b]","3_16_a@10,4[1_05_e_b+2_01_e_b]","4_11_a@10,8[4_11_e_a+4_09_e_a]","6_16_a@9,7[2_03_e_b+4_09_e_b]","1_06_b@9,8[3_06_e_a+3_08_e_b]","5_12_a@9,9[5_03_e_a+1_01_e_b]"],
|
||||
"bonds": ["arcaneShip 1/332","deputShip 1/329","egirShip 0/300","emptyShip 0/300","indomShip 0/306","investShip 0/300","kazimierzShip 0/300","kjeragShip 0/300","lateranoShip 0/300","maniShip 0/300","miraShip 0/300","preciShip 0/309","raidShip 0/300","sargonShip 0/300","siracusaShip 0/300","skillfulShip 1/370","soloShip 1/324","steadShip 1/377","suntShip 1/312","swiftShip 0/300","victoriaShip 1/333","visiShip 0/300","yanShip 0/305"]
|
||||
}
|
||||
@@ -1510,7 +1517,7 @@
|
||||
"combat": "client",
|
||||
"boost": null,
|
||||
"setup": {"stageId":"act1autochess_m01","bossId":"boss_5","hiddenBossId":"boss_10","factions":["DOT","INVISIBLE","REFLECTION"]},
|
||||
"end": {"victory":true,"roundsPassed":14,"hiddenReached":false,"hiddenCleared":false,"reason":"victory","teamLp":41,"bossPoolLeft":0,"virtualMs":119900},
|
||||
"end": {"victory":true,"roundsPassed":14,"hiddenReached":false,"hiddenCleared":false,"reason":"victory","teamLp":41,"bossPoolLeft":0,"virtualMs":118400},
|
||||
"rng": {"setup":25,"shop":489,"waves":0,"draft":34,"bots":18039,"meta":11},
|
||||
"errors": {"engine":0,"logged":0,"sim":0,"dispatcher":0},
|
||||
"rounds": [
|
||||
@@ -1552,32 +1559,32 @@
|
||||
{
|
||||
"round": 8,
|
||||
"h_0": [1,28,13,0,2,4,8,"2bca9c35",63,"arcaneShip 1/7, kazimierzShip 0/8, preciShip 0/4, raidShip 1/48, skillfulShip 1/0, swiftShip 1/8, yanShip 0/1",15,15,0,62],
|
||||
"ai_0": [1,23,12,0,0,4,8,"5f7c1078",95,"arcaneShip 0/2, deputShip 1/14, kazimierzShip 0/8, lateranoShip 1/30, preciShip 0/10, sargonShip 0/2, skillfulShip 1/2, soloShip 1/2, suntShip 1/12, swiftShip 1/35",15,15,0,61]
|
||||
"ai_0": [1,23,12,0,0,4,8,"17716ab9",95,"arcaneShip 0/2, deputShip 1/14, kazimierzShip 0/8, lateranoShip 1/30, preciShip 0/10, sargonShip 0/2, skillfulShip 1/2, soloShip 1/2, suntShip 1/12, swiftShip 1/35",15,15,0,61]
|
||||
},
|
||||
{
|
||||
"round": 9,
|
||||
"h_0": [1,28,14,0,0,4,8,"6e857f7b",102,"arcaneShip 1/11, kazimierzShip 1/20, preciShip 0/8, raidShip 1/60, skillfulShip 0/3, soloShip 1/0, suntShip 1/0, swiftShip 1/11, yanShip 0/1",23,23,0,78],
|
||||
"ai_0": [1,23,12,0,2,4,8,"4e17a01f",141,"arcaneShip 0/2, deputShip 1/16, kazimierzShip 0/8, lateranoShip 1/38, preciShip 1/17, sargonShip 0/2, skillfulShip 1/9, soloShip 0/2, suntShip 1/14, swiftShip 1/47",23,23,0,73]
|
||||
"ai_0": [1,23,12,0,2,4,8,"8aab1ba8",138,"arcaneShip 0/2, deputShip 1/16, kazimierzShip 0/8, lateranoShip 1/35, preciShip 1/17, sargonShip 0/2, skillfulShip 1/9, soloShip 0/5, suntShip 1/14, swiftShip 1/47",23,23,0,73]
|
||||
},
|
||||
{
|
||||
"round": 10,
|
||||
"h_0": [1,28,12,0,0,5,8,"00fe855c",129,"arcaneShip 1/14, kazimierzShip 1/32, preciShip 0/8, raidShip 1/72, skillfulShip 0/3, soloShip 1/0, suntShip 1/0, swiftShip 1/11, yanShip 0/1",31,31,0,88],
|
||||
"ai_0": [1,23,14,0,0,5,8,"b70033a0",160,"arcaneShip 0/2, deputShip 0/16, kazimierzShip 0/8, lateranoShip 1/41, preciShip 2/27, sargonShip 0/2, skillfulShip 1/14, soloShip 1/2, suntShip 1/14, swiftShip 1/62",31,31,0,88]
|
||||
"ai_0": [1,23,14,0,0,5,8,"b70033a0",160,"arcaneShip 0/2, deputShip 0/16, kazimierzShip 0/8, lateranoShip 1/38, preciShip 2/27, sargonShip 0/2, skillfulShip 1/14, soloShip 1/5, suntShip 1/14, swiftShip 1/62",31,31,0,88]
|
||||
},
|
||||
{
|
||||
"round": 11,
|
||||
"h_0": [1,28,12,0,0,5,8,"b2b9f9bd",161,"arcaneShip 1/14, kazimierzShip 1/44, miraShip 1/4, preciShip 0/8, raidShip 1/84, skillfulShip 0/3, soloShip 1/0, suntShip 1/0, swiftShip 1/15, yanShip 0/1",23,25,2,100],
|
||||
"ai_0": [1,23,12,0,0,5,8,"6ec28fe0",193,"arcaneShip 0/2, deputShip 0/16, kazimierzShip 0/8, lateranoShip 1/44, preciShip 2/40, sargonShip 0/2, skillfulShip 1/19, soloShip 1/2, suntShip 1/14, swiftShip 1/74",25,25,0,101]
|
||||
"ai_0": [1,23,12,0,0,5,8,"6ec28fe0",193,"arcaneShip 0/2, deputShip 0/16, kazimierzShip 0/8, lateranoShip 1/41, preciShip 2/40, sargonShip 0/2, skillfulShip 1/19, soloShip 1/5, suntShip 1/14, swiftShip 1/74",25,25,0,101]
|
||||
},
|
||||
{
|
||||
"round": 12,
|
||||
"h_0": [1,28,12,0,0,6,8,"c8e0476d",196,"arcaneShip 1/17, kazimierzShip 1/56, miraShip 1/8, preciShip 0/8, raidShip 1/96, skillfulShip 0/3, soloShip 1/0, suntShip 1/0, swiftShip 1/19, yanShip 0/1",25,31,6,112],
|
||||
"ai_0": [1,23,12,0,0,6,8,"55f8656e",229,"arcaneShip 0/2, deputShip 0/16, kazimierzShip 0/8, lateranoShip 1/50, preciShip 2/50, sargonShip 0/2, skillfulShip 1/24, soloShip 1/2, suntShip 1/14, swiftShip 1/89",31,31,0,112]
|
||||
"h_0": [1,28,12,0,0,6,8,"d754536a",188,"arcaneShip 1/17, kazimierzShip 1/52, miraShip 1/8, preciShip 0/8, raidShip 1/92, skillfulShip 0/3, soloShip 1/0, suntShip 1/0, swiftShip 1/19, yanShip 0/1",31,31,0,112],
|
||||
"ai_0": [1,23,12,0,0,6,8,"54a25cd7",229,"arcaneShip 0/2, deputShip 0/16, kazimierzShip 0/8, lateranoShip 1/47, preciShip 2/50, sargonShip 0/2, skillfulShip 1/24, soloShip 1/5, suntShip 1/14, swiftShip 1/89",31,31,0,112]
|
||||
},
|
||||
{
|
||||
"round": 13,
|
||||
"h_0": [1,18,12,0,0,6,8,"005da75b",228,"arcaneShip 1/17, kazimierzShip 1/68, miraShip 1/12, preciShip 0/8, raidShip 1/108, skillfulShip 0/3, soloShip 1/0, suntShip 1/0, swiftShip 1/23, yanShip 0/1",23,57,34,124],
|
||||
"ai_0": [1,23,12,0,0,6,8,"dc15adde",265,"arcaneShip 0/2, deputShip 0/16, kazimierzShip 0/8, lateranoShip 1/56, preciShip 2/60, sargonShip 0/2, skillfulShip 1/29, soloShip 1/2, suntShip 1/14, swiftShip 1/104, visiShip 1/0",57,57,0,126]
|
||||
"h_0": [1,18,12,0,0,6,8,"205ea1e7",227,"arcaneShip 1/20, kazimierzShip 1/64, miraShip 1/12, preciShip 0/8, raidShip 1/108, skillfulShip 0/3, soloShip 1/0, suntShip 1/0, swiftShip 1/23, yanShip 0/1",22,57,35,124],
|
||||
"ai_0": [1,23,12,0,0,6,8,"dc15adde",271,"arcaneShip 0/2, deputShip 0/16, kazimierzShip 0/8, lateranoShip 1/53, preciShip 2/63, sargonShip 0/2, skillfulShip 1/29, soloShip 1/5, suntShip 1/14, swiftShip 1/107, visiShip 1/0",57,57,0,126]
|
||||
}
|
||||
],
|
||||
"players": {
|
||||
@@ -1591,9 +1598,9 @@
|
||||
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
|
||||
"trophies": 4,
|
||||
"reward": 400,
|
||||
"stats": {"activatedLayers":221,"bossDamage":270220,"dmgDealt":2824469,"gold":134,"itemsEquipped":22,"kills":267,"leaks":42,"lpLost":10,"merges":3,"perfectRounds":10,"refreshes":21},
|
||||
"lineup": ["6_18_a@12,3[2_01_e_b]","4_10_a@12,4","1_17_b@11,3[4_03_e_a+1_01_e_a]","5_20_a@11,8[6_05_e_a+3_06_e_a]","3_17_b@10,3","3_12_a@10,4[1_02_e_a+3_11_e_a]","5_07_a@10,7[4_02_e_b+4_11_e_a]","1_19_b@10,8[2_01_e_b+4_04_e_b]"],
|
||||
"bonds": ["arcaneShip 2/21","kazimierzShip 1/68","miraShip 1/12","preciShip 0/8","raidShip 1/108","siracusaShip 1/12","skillfulShip 0/3","soloShip 1/0","suntShip 1/0","swiftShip 0/23","yanShip 0/1"]
|
||||
"stats": {"activatedLayers":220,"bossDamage":298349,"dmgDealt":2949234,"gold":134,"itemsEquipped":22,"kills":273,"leaks":37,"lpLost":10,"merges":3,"perfectRounds":11,"refreshes":21},
|
||||
"lineup": ["6_18_a@12,3[4_11_e_a]","4_10_a@12,4","1_17_b@11,3[4_03_e_a+1_01_e_a]","5_20_a@11,8[6_05_e_a+3_06_e_a]","3_17_b@10,3","3_12_a@10,4[1_02_e_a+3_11_e_a]","5_07_a@10,7[4_02_e_b+2_01_e_b]","1_19_b@10,8[2_01_e_b+4_04_e_b]"],
|
||||
"bonds": ["arcaneShip 2/24","kazimierzShip 1/64","miraShip 1/12","preciShip 0/8","raidShip 1/108","siracusaShip 1/12","skillfulShip 0/3","soloShip 1/0","suntShip 1/0","swiftShip 0/23","yanShip 0/1"]
|
||||
},
|
||||
"ai_0": {
|
||||
"alive": true,
|
||||
@@ -1605,9 +1612,9 @@
|
||||
"title": {"id":"comment_1","name":"卫戍之星","picId":"comment_icon_1","text":"对敌方领袖造成伤害最高(仅胜利时)"},
|
||||
"trophies": 4,
|
||||
"reward": 400,
|
||||
"stats": {"activatedLayers":299,"bossDamage":509780,"dmgDealt":3852629,"gold":140,"itemsEquipped":17,"kills":318,"leaks":0,"lpLost":0,"merges":3,"perfectRounds":13,"refreshes":22},
|
||||
"stats": {"activatedLayers":302,"bossDamage":481651,"dmgDealt":3586705,"gold":140,"itemsEquipped":17,"kills":311,"leaks":0,"lpLost":0,"merges":3,"perfectRounds":13,"refreshes":22},
|
||||
"lineup": ["3_21_a@12,3[4_08_e_a+6_02_e_a]","4_25_a@12,4","2_01_a@12,5[3_01_e_a]","6_12_a@11,3[1_05_e_a+3_11_e_a]","4_14_b@11,4[1_05_e_b+4_07_e_a]","1_01_b@10,3[3_08_e_a]","5_01_a@10,4[4_05_e_a]","2_13_a@9,4[4_02_e_b]"],
|
||||
"bonds": ["arcaneShip 0/2","deputShip 0/16","emptyShip 1/0","kazimierzShip 0/8","lateranoShip 1/59","preciShip 2/73","sargonShip 0/2","skillfulShip 1/34","soloShip 0/2","suntShip 1/14","swiftShip 1/116","visiShip 1/3"]
|
||||
"bonds": ["arcaneShip 0/2","deputShip 0/16","emptyShip 1/0","kazimierzShip 0/8","lateranoShip 1/56","preciShip 2/76","sargonShip 0/2","skillfulShip 1/34","soloShip 0/5","suntShip 1/14","swiftShip 1/119","visiShip 1/3"]
|
||||
}
|
||||
},
|
||||
"standIns": {
|
||||
|
||||
+304
-306
File diff suppressed because it is too large.
Load diff
+70
-70
@@ -142,20 +142,20 @@
|
||||
"total": 74,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 278,
|
||||
"rngDraws": 270,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":41,"total":74,"perfect":false,"leaks":33,"leaksUncounted":0,"coins":8,"dmg":322054,"bossDmg":0,"heal":40884,"deaths":10,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":41,"total":74,"perfect":false,"leaks":33,"leaksUncounted":0,"coins":8,"dmg":320925,"bossDmg":0,"heal":42417,"deaths":10,"layerGains":{}}},
|
||||
"units": [
|
||||
["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",2,"op","chess_char_5_14_a",2,null,353,1,90,24,145090,7662,0,66,6],
|
||||
["p1",3,"op","chess_char_5_19_a",0,null,784.8,1,89,6,42209,15296,0,99,3],
|
||||
["p1",4,"op","chess_char_5_07_a",2,null,2564,1,92,0,12112,3824,0,24,1],
|
||||
["p1",5,"op","chess_char_5_13_a",2,null,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",5,"op","chess_char_5_13_a",2,null,1520,1,11,6,55817,10325,0,121,4],
|
||||
["p1",6,"op","chess_char_5_17_a",2,null,0,0,81,1,5190,6413,0,69,0],
|
||||
["p1",7,"op","chess_char_5_10_a",2,null,932,1,2,1,9099,0,0,69,2],
|
||||
["p1",8,"op","chess_char_5_11_a",2,null,1224,1,3,0,0,0,42417,68,2],
|
||||
["p1",9,"op","chess_char_5_12_a",2,null,1160,1,4,0,19147,0,0,75,2],
|
||||
["p1",10,"op","chess_char_5_15_a",2,null,0,0,84,2,8346,13732,0,96,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]
|
||||
],
|
||||
@@ -168,14 +168,14 @@
|
||||
"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,28,14,2956,110452],
|
||||
"enemy_1170_dushld_2": [12,5,6,26204,45033],
|
||||
"enemy_9011_acrefr": [12,1,7,22144,124041]
|
||||
"enemy_1166_dusbr_2": [42,27,15,2888,108284],
|
||||
"enemy_1170_dushld_2": [12,6,5,31043,51138],
|
||||
"enemy_9011_acrefr": [12,1,8,18420,118976]
|
||||
},
|
||||
"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"
|
||||
"hooks": [1,92,5700,1024,1024,1534,1535,115,51,80,26,27,0,27292,3473,49,74,29,1,52,0,0,10],
|
||||
"events": {"atk":1125,"bounty":4,"deploy":18,"die":51,"dmg":1534,"engage":11,"fx":132,"heal":109,"leak":29,"skill":55,"spawn":86,"status":626},
|
||||
"fx": {"aoe":30,"displace":1,"dodge":13,"dp":30,"phase":1,"slash":48,"sp":1,"spGain":8},
|
||||
"snaps": "530ce9ab 3259d8c0 918a3cff a85e2d90 3b23751a 8f259c98 9faf0458 b98e7e80 e64fb37d 38b17953 2458f514 b2894d2f 6c036845 395d7cfe a9ead632 07893f6c 64586b5e 9402040c 55700def"
|
||||
},
|
||||
"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",
|
||||
@@ -240,24 +240,24 @@
|
||||
"round": 12,
|
||||
"seed": 4096833445,
|
||||
"waveId": "act1autochess_h05",
|
||||
"time": 220.27,
|
||||
"ticks": 6608,
|
||||
"time": 216.03,
|
||||
"ticks": 6481,
|
||||
"reason": "cleared",
|
||||
"killed": 5,
|
||||
"killed": 8,
|
||||
"total": 104,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 225,
|
||||
"rngDraws": 234,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {"killed":5,"total":104,"perfect":false,"leaks":99,"leaksUncounted":0,"coins":0,"dmg":418583,"bossDmg":0,"heal":451,"deaths":23,"layerGains":{"raidShip":3}}
|
||||
"p1": {"killed":8,"total":104,"perfect":false,"leaks":96,"leaksUncounted":0,"coins":0,"dmg":433423,"bossDmg":0,"heal":451,"deaths":22,"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,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",2,"op","chess_char_6_13_a",2,null,0,0,133,1,28392,9232,0,79,0],
|
||||
["p1",3,"op","chess_char_6_19_a",2,null,514.2,1,135,4,32421,9872,0,139,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,53745,4965,0,110,2],
|
||||
["p1",5,"op","chess_char_6_15_a",2,null,0,0,134,2,58508,4965,0,113,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],
|
||||
@@ -273,14 +273,14 @@
|
||||
"enemy_10144_xdelk_2": [1,0,1,0,0],
|
||||
"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,8923,168815],
|
||||
"enemy_1387_winshd": [30,1,29,16725,136197]
|
||||
"enemy_1381_winman": [27,6,21,3255,100648],
|
||||
"enemy_1381_winman_2": [39,1,38,9029,175774],
|
||||
"enemy_1387_winshd": [30,1,29,14859,135775]
|
||||
},
|
||||
"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 a2545bc6 e235d106 8dfcbe4d 7418beb3 b07a14d3 d8595728 777b37c0 fcf9e593 4701b892 b3bb788e 48db2071 75eccfeb 54b87291 0c274801 025d0454 6e6490df e548bc32 a587ffae 097958c2 b5acd030 f192d5d8"
|
||||
"hooks": [1,135,6481,604,604,990,990,2,30,128,8,24,0,14943,2502,30,104,96,1,30,1,0,0],
|
||||
"events": {"atk":635,"deploy":28,"die":32,"dmg":897,"engage":6,"fx":55,"heal":1,"layer":1,"leak":96,"skill":50,"spawn":114,"status":500},
|
||||
"fx": {"aoe":5,"blink":2,"camouflage":1,"displace":18,"dodge":2,"dp":2,"explode":7,"garrison":1,"garrisonGrant":2,"slash":8,"zone":7},
|
||||
"snaps": "7d1098cf a2545bc6 e235d106 8dfcbe4d cbd66f3e d02eb500 28229c34 df0ed6a9 90a49dcf b9747bc6 d343d0fd 88a84b18 fa841456 6ea8596f afa61e73 45aa5112 7782a063 f7161b9b d3da53b7 1175003f aae5f017 59ce2b8b"
|
||||
},
|
||||
"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",
|
||||
@@ -411,28 +411,28 @@
|
||||
"round": 12,
|
||||
"seed": 2456427706,
|
||||
"waveId": "act1autochess_h05",
|
||||
"time": 226.63,
|
||||
"ticks": 6799,
|
||||
"time": 216.37,
|
||||
"ticks": 6491,
|
||||
"reason": "cleared",
|
||||
"killed": 42,
|
||||
"killed": 44,
|
||||
"total": 179,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 981,
|
||||
"rngDraws": 964,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {"p1":{"killed":42,"total":179,"perfect":false,"leaks":137,"leaksUncounted":0,"coins":2,"dmg":1733157,"bossDmg":0,"heal":77968,"deaths":13,"layerGains":{}}},
|
||||
"players": {"p1":{"killed":44,"total":179,"perfect":false,"leaks":135,"leaksUncounted":0,"coins":2,"dmg":1792553,"bossDmg":0,"heal":75042,"deaths":12,"layerGains":{}}},
|
||||
"units": [
|
||||
["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",1,"op","chess_char_5_08_b",2,"uniequip_002_acfend",3328.04,1,7,6,120405,8494,0,163,4],
|
||||
["p1",2,"op","chess_char_5_14_b",2,"uniequip_002_acpion",1904,1,200,13,582727,10397,0,50,7],
|
||||
["p1",3,"op","chess_char_5_19_b",0,"uniequip_002_sharp2",0,0,164,5,264095,31935,0,79,3],
|
||||
["p1",4,"op","chess_char_5_07_b",2,"none",3334,1,204,2,41162,20656,0,35,3],
|
||||
["p1",5,"op","chess_char_5_13_b",2,"uniequip_002_acguad",0,0,130,4,91514,12473,0,48,2],
|
||||
["p1",6,"op","chess_char_5_17_b",2,"uniequip_002_acspec",1448,1,155,3,70659,22528,0,98,0],
|
||||
["p1",7,"op","chess_char_5_10_b",2,"none",1131,1,4,2,71806,0,0,146,4],
|
||||
["p1",8,"op","chess_char_5_11_b",2,"uniequip_002_acmedc",2262.4,1,5,0,0,0,75042,73,3],
|
||||
["p1",9,"op","chess_char_5_12_b",2,"uniequip_002_acsupo",1430,1,11,2,108370,0,0,138,3],
|
||||
["p1",10,"op","chess_char_5_15_b",2,"none",1510,1,13,0,84172,0,0,215,4],
|
||||
["p1",11,"op","chess_char_5_18_b",2,"uniequip_002_acnipe",2380.5,1,6,7,265158,0,0,156,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],
|
||||
@@ -447,14 +447,14 @@
|
||||
"enemy_1118_lidbox_2": [1,0,1,0,809],
|
||||
"enemy_1119_vofsd": [1,0,1,0,889],
|
||||
"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]
|
||||
"enemy_1249_lysdb_2": [60,20,40,34591,927986],
|
||||
"enemy_1251_lysyta": [63,22,41,7408,522114],
|
||||
"enemy_1254_lypa_2": [48,1,47,57320,258113]
|
||||
},
|
||||
"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"
|
||||
"hooks": [1,204,6491,1773,1773,3184,3244,143,56,191,39,41,0,24792,17208,64,179,135,1,56,0,0,10],
|
||||
"events": {"atk":2011,"bounty":1,"deploy":22,"die":56,"dmg":3226,"engage":11,"fx":311,"heal":124,"leak":135,"skill":86,"spawn":194,"status":1260},
|
||||
"fx": {"aoe":120,"displace":6,"dodge":33,"dp":20,"liberate":1,"phase":1,"shieldBreak":60,"slash":56,"sp":3,"spGain":11},
|
||||
"snaps": "c4ba1bfb fae78ec3 4853328f 674d8548 bcbe6142 1a53e0eb e36dd50a c1fffc0d 6b8ca6c2 ea59d397 fcda4d5a 0b327687 9c504162 f940765a ed653c1f 40083fa0 8b28d76e faf8fc30 827f9624 f00940c5 a4839ca3 7cbbb8ee"
|
||||
},
|
||||
"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",
|
||||
@@ -524,43 +524,43 @@
|
||||
"time": 230,
|
||||
"ticks": 6900,
|
||||
"reason": "timeout",
|
||||
"killed": 28,
|
||||
"killed": 29,
|
||||
"total": 131,
|
||||
"unspawned": 0,
|
||||
"bossHpLeft": null,
|
||||
"rngDraws": 263,
|
||||
"rngDraws": 293,
|
||||
"errors": {"count":0,"kinds":[]},
|
||||
"players": {
|
||||
"p1": {"killed":28,"total":131,"perfect":false,"leaks":103,"leaksUncounted":0,"coins":2,"dmg":538265,"bossDmg":0,"heal":10974,"deaths":25,"layerGains":{"raidShip":6}}
|
||||
"p1": {"killed":29,"total":131,"perfect":false,"leaks":102,"leaksUncounted":0,"coins":2,"dmg":542398,"bossDmg":0,"heal":10974,"deaths":25,"layerGains":{"raidShip":6}}
|
||||
},
|
||||
"units": [
|
||||
["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",1,"op","chess_char_6_17_b",2,"uniequip_002_acpion",1904,1,164,10,209944,12495,0,67,10],
|
||||
["p1",2,"op","chess_char_6_13_b",2,"uniequip_002_acspec",0,0,162,6,51334,11872,0,120,0],
|
||||
["p1",3,"op","chess_char_6_19_b",2,"uniequip_002_acspec",0,0,165,4,76465,17808,0,154,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",5,"op","chess_char_6_15_b",2,"uniequip_002_acsupo",0,0,148,2,54506,6494,0,39,3],
|
||||
["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,164634],
|
||||
"enemy_1043_zomsbr": [66,22,44,908,136175],
|
||||
"enemy_1006_shield_3": [21,1,20,13939,164939],
|
||||
"enemy_1043_zomsbr": [66,23,43,617,138600],
|
||||
"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],
|
||||
"enemy_1166_dusbr": [1,0,1,0,0],
|
||||
"enemy_1166_dusbr_2": [1,0,1,0,0],
|
||||
"enemy_1168_dumage": [1,1,0,1897,7465],
|
||||
"enemy_1168_dumage_2": [1,1,0,4932,10783],
|
||||
"enemy_1168_dumage_2": [1,1,0,4286,10783],
|
||||
"enemy_1169_duphlx": [1,0,1,0,1489],
|
||||
"enemy_1402_tgshd_2": [36,2,33,25620,201592]
|
||||
"enemy_1402_tgshd_2": [36,2,33,28576,202995]
|
||||
},
|
||||
"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"
|
||||
"hooks": [1,165,6900,595,595,924,938,6943,54,158,18,38,0,8737,1171,47,131,101,1,54,1,1,0],
|
||||
"events": {"atk":602,"bounty":1,"deploy":32,"die":57,"dmg":868,"engage":6,"fx":580,"heal":25,"layer":1,"leak":101,"skill":76,"spawn":140,"status":383},
|
||||
"fx": {"aoe":4,"blink":3,"burst":1,"displace":21,"dodge":3,"dp":20,"expose":450,"garrison":1,"garrisonGrant":3,"slash":74},
|
||||
"snaps": "fba27448 40f8ddeb 904aa1c4 7f5fd3e3 9795959e 7e944cb9 a1f602a2 23ce8d11 bc4a8a16 bf530478 d8ce6699 3c7531f2 1723301e 3a33e4a9 1776e2c7 9f4e39b8 4a745c4f 04ba5967 cbaf6007 94a5d280 8d5c37cb 5d25eb40 2be9ff1d"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -611,6 +611,24 @@ describe('a push / pull slide (推拉: the official impulse under friction)', ()
|
||||
assert.equal(ice.x, 7.7, 'the destination is authoritative whatever the floor');
|
||||
});
|
||||
|
||||
test('the slide takes the sim\'s 失衡 time: the fx `dur` (game s) at the playback rate — 0.8 s at 2× is 0.4 real s', async () => {
|
||||
const at2 = async (id) => {
|
||||
const ctx = fakeViewCtx(fake.P, { assets: store({ spine: true }), cam, animRate: () => 2 });
|
||||
const v = new UnitView(ctx, { id, side: 'enemy', kind: 'enemy', defId: 'enemy_1007_slime', x: 5, y: 12, maxHp: 100 }, {});
|
||||
await tick(); await tick();
|
||||
return v;
|
||||
};
|
||||
const push = await at2(11), pull = await at2(12), old = await at2(13);
|
||||
push.slideTo(6.7, 12, { dur: 0.8 }); // a 受力等级 0 push (1.7 tiles, PRTS 位移时间 0.8 s)
|
||||
assert.ok(Math.abs(push.slide.dur - 0.4) < 1e-9, `${push.slide.dur}`);
|
||||
pull.slideTo(3, 12, { dur: 1 }); // a pull's force window
|
||||
assert.ok(Math.abs(pull.slide.dur - 0.5) < 1e-9, `${pull.slide.dur}`);
|
||||
old.slideTo(6.7, 12); // an fx without `dur` (an older recording): the fallback
|
||||
assert.ok(Math.abs(old.slide.dur - Math.min(0.45, Math.max(0.12, 0.14 * Math.sqrt(1.7)))) < 1e-9, `${old.slide.dur}`);
|
||||
step(push, push.slide.dur);
|
||||
assert.equal(push.x, 6.7, 'lands on the destination');
|
||||
});
|
||||
|
||||
test('the duration follows √distance, not distance', async () => {
|
||||
const near = await view(4), far = await view(5);
|
||||
near.slideTo(6.2, 12); far.slideTo(10.5, 12); // 1.2 vs 5.5 tiles
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
// - 守墓石像 turns into a flyer at run time (data WALK, no 静态刚体): its statue ("无法被阻挡,自缚,失衡免疫,免疫浮空") and its
|
||||
// flight ("变为飞行单位,失衡免疫") are 失衡免疫 (PRTS 守墓石像 / 愤怒的守墓石像 天赋).
|
||||
// Unchanged: ground enemies keep the 力度 − 重量 tables (DESIGN §20.3); the hovering 吉兆飞鳞 / 掠海漂移体 are 失衡免疫 while they
|
||||
// hover and displaceable once grounded (no 静态刚体 on their pages). [ASSUMED] the 0.1 s 失衡硬直 of a 静态刚体 is not modelled.
|
||||
// hover and displaceable once grounded (no 静态刚体 on their pages). Since 0.2.2 a force > 0 on a 静态刚体 gives its 0.1 s 失衡
|
||||
// floor (特殊机制 静态刚体 「失衡状态拥有 0.1 秒保底持续时间」; battle/displacement.js _staticForce): it pauses, never moves.
|
||||
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
@@ -105,7 +106,7 @@ test('B5 (the player\'s scenario): 薄绿 S2 hits the drones but never drags the
|
||||
}
|
||||
});
|
||||
|
||||
test('B5 (the player\'s scenario): on act2 m01 a round-7 drone flies past 薄绿 on its route, hit after hit', REAL, () => {
|
||||
test('B5 (the player\'s scenario): on act2 m01 a round-7 drone flies past 薄绿 on its route, hit after hit — never moved, only held 0.1 s per force', REAL, () => {
|
||||
// round 7's FLY route 10 (… (11,8) → (11,6) → (10,6) → (10,5) …) passes her x-1 range on the melee tile (10,7)
|
||||
const { routes } = spawnsFromTemplate(getDefaultSource().getWave('act1autochess_07'));
|
||||
assert.equal(routes[10].motion, 'FLY');
|
||||
@@ -123,10 +124,12 @@ test('B5 (the player\'s scenario): on act2 m01 a round-7 drone flies past 薄绿
|
||||
};
|
||||
const ref = fly(false), got = fly(true);
|
||||
assert.ok(got.hits >= 5, `S2 hits the drone (${got.hits} hits)`);
|
||||
assert.equal(got.path.length, ref.path.length, 'it reaches the goal on the same tick');
|
||||
let dev = 0;
|
||||
for (let i = 0; i < ref.path.length; i++) dev = Math.max(dev, Math.hypot(got.path[i][0] - ref.path[i][0], got.path[i][1] - ref.path[i][1]));
|
||||
approx(dev, 0, 1e-9, 'its flight is the undisturbed one');
|
||||
// every place it passes is a place of the undisturbed flight: the pulls never move it, they only hold it a moment
|
||||
const key = (p) => `${p[0].toFixed(6)},${p[1].toFixed(6)}`;
|
||||
const route = new Set(ref.path.map(key));
|
||||
assert.ok(got.path.every((p) => route.has(key(p))), 'its flight is the undisturbed one, with pauses');
|
||||
const late = got.path.length - ref.path.length; // ticks; the 0.1 s floor is 3 ticks, overlapping holds merge
|
||||
assert.ok(late > 0 && late <= got.hits * 4, `held for ${late} ticks over ${got.hits} hits`);
|
||||
checkInvariants(got.h.b);
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,258 @@
|
||||
// 失衡 (UNBALANCE) after a push / pull — PR #392 by @xcdoge brought the state; its timing re-done from the sources
|
||||
// (docs/research/13-knockback-official.md): a state machine, not a status (PRTS 失衡位移机制; 异常效果: 「不属于异常效果」), during
|
||||
// which the enemy neither walks nor starts a normal attack (异常效果图鉴/失衡免疫 「失衡期间无法自主移动、发动攻击、使用技能」).
|
||||
// - a push: the 位移时间 of its 受力等级 (PRTS 游戏数据基础 推力-位移近似对应表: 0.2 / 0.4 / 0.8 / 0.9 / 32⁄30 / 35⁄30 s);
|
||||
// - a pull: its force window (推与拉 §拉力: 1 s, 0.5 s below 受力等级 −1), to its end after the 急停 too;
|
||||
// - a 静态刚体 hit by a force > 0: the 0.1 s 失衡硬直 floor, no movement (特殊机制 静态刚体); 失衡免疫: never;
|
||||
// - 浮空 ends it (术语释义 浮空); the move itself stays instant (the unbalanced() talents keyed off the jump).
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { makeBattle, enemyRec, chessRec, checkInvariants } from '../helpers/battleHarness.js';
|
||||
import { PUSH_UNBALANCE, PULL_UNBALANCE, PULL_UNBALANCE_WEAK, UNBALANCE_MIN, PUSH_TILES, TICK } from '../../server/sim/constants.js';
|
||||
import { hasGeneratedData } from '../../server/sim/simdata.js';
|
||||
import * as enemiesMod from '../../server/sim/content/enemies.js';
|
||||
import { canCast } from '../../server/sim/content/enemies/helpers.js';
|
||||
import { blinkForward } from '../../server/sim/content/enemies/archetypes.js';
|
||||
|
||||
const near = (a, b, eps = 1e-9) => Math.abs(a - b) <= eps;
|
||||
const WALL = chessRec({ id: 't_wall', profession: 'TANK', stats: { atk: 0, maxHp: 1e7, blockCnt: 0 }, rangeGrid: [[0, 0]], skill: null });
|
||||
|
||||
/** One walker (weight `mass`) on an open stage; `units` / `o` extra makeBattle options. */
|
||||
function field({ mass = 1, enemy = {}, units = [], ...o } = {}) {
|
||||
const h = makeBattle({
|
||||
content: 'none', autoFinish: false, timeLimit: 120, captureNoisy: true, hooks: ['attack'],
|
||||
defs: { enemies: { enemy_w: enemyRec({ key: 'enemy_w', hp: 1e7, speed: 1, mass, ...enemy }) }, chess: { t_wall: WALL } },
|
||||
enemies: [{ key: 'enemy_w', pos: [10, 7] }], units, ...o,
|
||||
});
|
||||
h.step();
|
||||
return { h, e: h.enemy('enemy_w') };
|
||||
}
|
||||
/** Seconds until `e` moves again (its position changes), up to `max`. */
|
||||
function stillFor(h, e, max = 3) {
|
||||
const x = e.x, y = e.y, t0 = h.b.time;
|
||||
while (h.b.time - t0 < max) {
|
||||
h.step();
|
||||
if (!near(e.x, x) || !near(e.y, y)) return h.b.time - t0;
|
||||
}
|
||||
return Infinity;
|
||||
}
|
||||
|
||||
test('a push holds the enemy for the 位移时间 of its 受力等级 (PRTS 游戏数据基础), then it walks on', () => {
|
||||
for (const [force, level] of [[-1, -2], [0, -1], [1, 0], [2, 1], [3, 2], [4, 3], [6, 3]]) {
|
||||
const { h, e } = field();
|
||||
const t0 = h.b.time;
|
||||
const moved = h.b.push(e, force, { from: { x: e.x + 1, y: e.y } }); // to the left: room for 3.53 tiles
|
||||
assert.ok(near(moved, PUSH_TILES[level], 1e-6), `力度 ${force}: moved ${moved}`);
|
||||
const want = PUSH_UNBALANCE[level];
|
||||
assert.ok(near(e.unbalanceUntil - t0, want), `受力等级 ${level}: ${e.unbalanceUntil - t0} s, want ${want}`);
|
||||
const t = stillFor(h, e);
|
||||
assert.ok(t >= want - 1e-9 && t <= want + 2 * TICK + 1e-9, `受力等级 ${level}: walks again after ${t.toFixed(3)} s`);
|
||||
assert.ok(!e.s.flags.stun, 'no stun status');
|
||||
checkInvariants(h.b);
|
||||
}
|
||||
assert.deepEqual([PUSH_UNBALANCE[0], PUSH_UNBALANCE[3]], [0.8, 35 / 30], 'the table: 24 and 35 frames');
|
||||
});
|
||||
|
||||
test('no normal attack while it lasts — a 恐惧 does not walk out of it either (no exemption)', () => {
|
||||
// a ranged enemy shooting the wall operator: pushed, it holds its fire for 0.8 s, then shoots again
|
||||
const { h, e } = field({ mass: 0, enemy: { atk: 100, range: 6, bat: 0.5, speed: 0 }, units: [{ chessId: 't_wall', row: 10, col: 3 }] });
|
||||
assert.ok(h.runUntil(() => h.hooksOf('attack').some((c) => c.attacker === e), 5), 'it shoots the wall');
|
||||
const shots = () => h.hooksOf('attack').filter((c) => c.attacker === e).length;
|
||||
const n0 = shots(), t0 = h.b.time;
|
||||
h.b.push(e, 0, { from: { x: e.x - 1, y: e.y } }); // 受力等级 0: 0.8 s
|
||||
h.run(0.8 - TICK);
|
||||
assert.equal(shots(), n0, 'no attack in the 0.8 s');
|
||||
assert.ok(h.runUntil(() => shots() > n0, 3), 'then it attacks again');
|
||||
assert.ok(h.b.time - t0 >= 0.8 - 1e-9);
|
||||
// 恐惧: still held
|
||||
const f = field({ mass: 0 });
|
||||
f.h.b.applyStatus(f.e, 'fear', { duration: 5, force: true });
|
||||
f.h.b.push(f.e, 0, { from: { x: f.e.x - 1, y: f.e.y } });
|
||||
assert.ok(stillFor(f.h, f.e) >= 0.8 - 1e-9, 'a feared enemy stays put through the hold');
|
||||
});
|
||||
|
||||
test('the −2 angle correction picks the row: a directional push off by more than 45° holds 0.2 s', () => {
|
||||
const { h, e } = field(); // weight 1: 中力 (1) → 受力等级 0, corrected −2
|
||||
const t0 = h.b.time;
|
||||
const moved = h.b.push(e, 1, { from: { x: e.x, y: e.y - 1 }, dir: { x: 1, y: 0 } });
|
||||
assert.ok(near(moved, PUSH_TILES[-2], 1e-6), `the radial −2 push: ${moved}`);
|
||||
assert.ok(near(e.unbalanceUntil - t0, PUSH_UNBALANCE[-2]));
|
||||
});
|
||||
|
||||
test('the row time stays when the 特效 column or a wall shortens the slide; a wall at the first step gives the 0.1 s floor', () => {
|
||||
const eff = field({ mass: 0 });
|
||||
const t0 = eff.h.b.time;
|
||||
const m = eff.h.b.push(eff.e, 0, { from: { x: eff.e.x - 1, y: eff.e.y }, effect: true });
|
||||
assert.ok(m < PUSH_TILES[0] && near(eff.e.unbalanceUntil - t0, PUSH_UNBALANCE[0]), '特效 push: shorter, same 0.8 s');
|
||||
// against the field's edge: 1.7 tiles asked, a little moved, then none
|
||||
const wall = field({ mass: 0 });
|
||||
wall.e.x = 9.6;
|
||||
const t1 = wall.h.b.time;
|
||||
const m1 = wall.h.b.push(wall.e, 0, { from: { x: wall.e.x - 1, y: wall.e.y } });
|
||||
assert.ok(m1 > 0 && m1 < PUSH_TILES[0], `stopped by the edge after ${m1}`);
|
||||
assert.ok(near(wall.e.unbalanceUntil - t1, PUSH_UNBALANCE[0]), 'still the row time [ASSUMED]');
|
||||
const m2 = wall.h.b.push(wall.e, 0, { from: { x: wall.e.x - 1, y: wall.e.y } });
|
||||
assert.equal(m2, 0, 'no room left');
|
||||
assert.ok(near(wall.e.unbalanceUntil - t1, PUSH_UNBALANCE[0]), 'a running longer state is kept');
|
||||
const w2 = field({ mass: 0 });
|
||||
w2.e.x = 9.6;
|
||||
w2.h.b.push(w2.e, 0, { from: { x: w2.e.x - 1, y: w2.e.y } });
|
||||
w2.h.run(1);
|
||||
const t2 = w2.h.b.time;
|
||||
assert.equal(w2.h.b.push(w2.e, 0, { from: { x: w2.e.x - 1, y: w2.e.y } }), 0);
|
||||
assert.ok(near(w2.e.unbalanceUntil - t2, UNBALANCE_MIN), 'stopped at once: the 0.1 s floor [ASSUMED]');
|
||||
});
|
||||
|
||||
test('a pull holds for its force window (推与拉): 1 s, 0.5 s below 受力等级 −1, to the end after the 急停; ≤ −3 nothing', () => {
|
||||
for (const [force, mass, want] of [[1, 1, PULL_UNBALANCE], [0, 1, PULL_UNBALANCE], [-1, 1, PULL_UNBALANCE_WEAK], [-2, 1, 0]]) {
|
||||
const { h, e } = field({ mass });
|
||||
const t0 = h.b.time;
|
||||
h.b.pull(e, force, { to: { x: 3, y: 10 } });
|
||||
const got = Number.isFinite(e.unbalanceUntil) ? e.unbalanceUntil - t0 : 0;
|
||||
assert.ok(near(got, want), `力度 ${force} − 重量 ${mass}: ${got} s, want ${want}`);
|
||||
}
|
||||
// already inside the 急停 circle: no movement, the state for the whole window
|
||||
const { h, e } = field();
|
||||
const t0 = h.b.time;
|
||||
assert.equal(h.b.pull(e, 1, { to: { x: e.x - 0.3, y: e.y }, center: { x: e.x - 0.3, y: e.y } }), 0);
|
||||
assert.ok(near(e.unbalanceUntil - t0, PULL_UNBALANCE), '急停 at once: still 1 s');
|
||||
assert.ok(stillFor(h, e) >= PULL_UNBALANCE - 1e-9);
|
||||
});
|
||||
|
||||
test('a 静态刚体 hit by a force > 0 gets the 0.1 s floor and never moves; 失衡免疫 never enters it', () => {
|
||||
const s = field({ enemy: { motion: 'FLY' } });
|
||||
s.e.def = { ...s.e.def, staticBody: true };
|
||||
const x0 = s.e.x, t0 = s.h.b.time;
|
||||
assert.equal(s.h.b.push(s.e, 3, { from: { x: s.e.x - 1, y: s.e.y } }), 0);
|
||||
assert.equal(s.e.x, x0, 'not moved');
|
||||
assert.ok(near(s.e.unbalanceUntil - t0, UNBALANCE_MIN), '0.1 s');
|
||||
const s2 = field({ enemy: { motion: 'FLY' } });
|
||||
s2.e.def = { ...s2.e.def, staticBody: true };
|
||||
s2.h.b.pull(s2.e, -3, { to: { x: 3, y: 10 } }); // 受力等级 −4: force 0
|
||||
assert.ok(!Number.isFinite(s2.e.unbalanceUntil), 'no force, no state');
|
||||
const im = field();
|
||||
im.h.b.addBuff(im.e, { key: 'test:immune', flags: { noDisplace: true } });
|
||||
im.h.b.push(im.e, 3, { from: { x: im.e.x - 1, y: im.e.y } });
|
||||
im.h.b.pull(im.e, 3, { to: { x: 3, y: 10 } });
|
||||
assert.ok(!Number.isFinite(im.e.unbalanceUntil), '失衡免疫: never');
|
||||
});
|
||||
|
||||
test('浮空 ends the state at once (术语释义 浮空)', () => {
|
||||
const { h, e } = field({ mass: 0 });
|
||||
h.b.push(e, 3, { from: { x: e.x - 1, y: e.y } });
|
||||
assert.ok(e.unbalanceUntil > h.b.time);
|
||||
h.b.applyStatus(e, 'levitate', { duration: 0.5, force: true });
|
||||
h.step();
|
||||
assert.ok(!(e.unbalanceUntil > h.b.time), 'cleared');
|
||||
});
|
||||
|
||||
test('the displace fx carries the state\'s game seconds for the client\'s slide', () => {
|
||||
const { h, e } = field({ mass: 0 });
|
||||
h.b.drainEvents();
|
||||
h.b.push(e, 1, { from: { x: e.x - 1, y: e.y } });
|
||||
const fx = (h.b.drainEvents() || []).find((t) => t[0] === 'fx' && t[1] === 'displace');
|
||||
assert.ok(fx && near(fx[4].dur, PUSH_UNBALANCE[1]), JSON.stringify(fx));
|
||||
});
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------------
|
||||
// the branch review (fb7-unbalance): exact frames, a 静态刚体 pulled, 弧光锋卫's bleed, skills and scripted moves, the
|
||||
// forced state switches
|
||||
|
||||
test('every push row holds its exact frames at 30 fps (6, 12, 24, 27, 32, 35) — the enemy walks on the next frame', () => {
|
||||
for (const [force, frames] of [[-1, 6], [0, 12], [1, 24], [2, 27], [3, 32], [4, 35]]) {
|
||||
const { h, e } = field();
|
||||
h.b.push(e, force, { from: { x: e.x + 1, y: e.y } });
|
||||
const x = e.x, y = e.y;
|
||||
let k = 0;
|
||||
while (k < 60) { h.step(); k++; if (!near(e.x, x) || !near(e.y, y)) break; }
|
||||
assert.equal(k, frames + 1, `力度 ${force} (受力等级 ${force - 1}): held ${k - 1} frames, want ${frames}`);
|
||||
}
|
||||
});
|
||||
|
||||
test('a 静态刚体 pulled is held for the pull\'s force window (1 s; 0.5 s below 受力等级 −1), a pushed one 0.1 s — never moved', () => {
|
||||
for (const [kind, force, want] of [['pull', 1, PULL_UNBALANCE], ['pull', -1, PULL_UNBALANCE_WEAK], ['push', 3, UNBALANCE_MIN]]) {
|
||||
const s = field({ enemy: { motion: 'FLY' } });
|
||||
s.e.def = { ...s.e.def, staticBody: true };
|
||||
const x0 = s.e.x, t0 = s.h.b.time;
|
||||
if (kind === 'pull') s.h.b.pull(s.e, force, { to: { x: 3, y: 10 } });
|
||||
else s.h.b.push(s.e, force, { from: { x: s.e.x - 1, y: s.e.y } });
|
||||
assert.equal(s.e.x, x0, `${kind}: not moved`);
|
||||
assert.ok(near(s.e.unbalanceUntil - t0, want), `${kind} 力度 ${force}: ${s.e.unbalanceUntil - t0} s, want ${want}`);
|
||||
}
|
||||
});
|
||||
|
||||
const REAL = { skip: !hasGeneratedData() };
|
||||
/** A pinned real enemy (data/enemies.json) on the open stage, with its content kit. */
|
||||
function real(key, o = {}) {
|
||||
const h = makeBattle({ content: 'generic', extraContent: [enemiesMod], seed: 7, autoFinish: false, timeLimit: 60, captureNoisy: true,
|
||||
hooks: ['damaged'], defs: { chess: { t_wall: { ...WALL, stats: { ...WALL.stats, blockCnt: 3 } } } }, ...o });
|
||||
h.step();
|
||||
const e = h.spawn(key, { pos: o.pos ?? [10, 7], routeIndex: 0, mods: { speedMul: o.move ? 1 : 0 } });
|
||||
h.step();
|
||||
return { h, e };
|
||||
}
|
||||
|
||||
test('弧光锋卫 bleeds 400 true damage every 0.066 s for as long as the state lasts (PRTS 天赋) — a push, a 急停 pull, a wall-shortened slide', REAL, () => {
|
||||
const bleed = (act) => {
|
||||
const { h, e } = real('enemy_1328_cbjedi');
|
||||
const hp0 = e.hp;
|
||||
act(h, e);
|
||||
h.run(2);
|
||||
const hits = h.hooksOf('damaged').filter((c) => c.target === e && c.dmg.tags?.includes('unbalanced'));
|
||||
return { lost: hp0 - e.hp, hits: hits.length };
|
||||
};
|
||||
// weight 1: 力度 1 → 受力等级 0, 0.8 s → 12 × 400; a 急停 pull (no movement) 1 s → 15 × 400; the wall keeps the 0.8 s row
|
||||
assert.deepEqual(bleed((h, e) => h.b.push(e, 1, { from: { x: e.x + 1, y: e.y } })), { lost: 4800, hits: 12 });
|
||||
assert.deepEqual(bleed((h, e) => h.b.pull(e, 2, { to: { x: e.x - 0.3, y: e.y }, center: { x: e.x - 0.3, y: e.y } })), { lost: 6000, hits: 15 });
|
||||
assert.deepEqual(bleed((h, e) => { e.x = 9.6; h.b.push(e, 1, { from: { x: e.x - 1, y: e.y } }); }), { lost: 4800, hits: 12 });
|
||||
});
|
||||
|
||||
test('no skill, blink or scripted move while it lasts (失衡免疫 「失衡期间无法自主移动、发动攻击、使用技能」)', REAL, () => {
|
||||
// the skill gate and the blink
|
||||
const { h, e } = field();
|
||||
h.b.pull(e, 1, { to: { x: e.x - 0.3, y: e.y }, center: { x: e.x - 0.3, y: e.y } }); // 1 s, no movement
|
||||
assert.equal(canCast(e, false, h.b), false, 'canCast');
|
||||
const x0 = e.x;
|
||||
assert.equal(blinkForward(h.b, e, 1.5), null, 'blinkForward');
|
||||
assert.equal(e.x, x0);
|
||||
h.run(1.05);
|
||||
assert.equal(canCast(e, false, h.b), true, 'after the state');
|
||||
// 枯朽之种 (a 静态刚体 flyer: a pull's window, no movement): no dive, no blast meanwhile
|
||||
const s = real('enemy_1269_nhfly', { units: [{ chessId: 't_wall', row: 10, col: 6 }], pos: [10, 7] });
|
||||
const t0 = s.h.b.time;
|
||||
s.h.b.pull(s.e, 3, { to: { x: 3, y: 10 } });
|
||||
assert.ok(near(s.e.unbalanceUntil - t0, PULL_UNBALANCE));
|
||||
const sx = s.e.x, sy = s.e.y;
|
||||
s.h.run(0.9);
|
||||
assert.ok(s.e.alive && near(s.e.x, sx) && near(s.e.y, sy), 'still where it was, not exploded');
|
||||
assert.ok(s.h.runUntil(() => !s.e.alive, 5), 'then it dives and blows up');
|
||||
});
|
||||
|
||||
test('乌顶巨角卢鲁: a 失衡 that does not move it holds its clash until the state ends', REAL, () => {
|
||||
const { h, e } = real('enemy_10144_xdelk_2', { units: [{ chessId: 't_wall', row: 10, col: 6 }], move: true });
|
||||
assert.ok(h.runUntil(() => h.eventsOf('fx').some((x) => x[1] === 'telegraph' && x[4]?.kind === 'elkCharge'), 10), 'the charge starts');
|
||||
const start = h.b.time, dur = 8;
|
||||
h.run(dur - 0.5);
|
||||
h.b.pull(e, 5, { to: { x: e.x + 0.2, y: e.y }, center: { x: e.x + 0.2, y: e.y } }); // 急停 at once: 1 s, no movement
|
||||
const until = e.unbalanceUntil;
|
||||
assert.ok(until > start + dur, 'the state outlasts the charge timer');
|
||||
const clash = () => h.eventsOf('fx').some((x) => x[1] === 'explode' && x[4]?.kind === 'elkClash');
|
||||
assert.ok(h.runUntil(clash, 3), 'it clashes');
|
||||
assert.ok(h.b.time >= until - 1e-9, `not before the state ends (${h.b.time.toFixed(3)} vs ${until.toFixed(3)})`);
|
||||
});
|
||||
|
||||
test('a route APPEAR (a forced relocation) and a 逐火 重生 end the state', REAL, () => {
|
||||
const { h, e } = field({ mass: 0 });
|
||||
h.b.push(e, 3, { from: { x: e.x - 1, y: e.y } });
|
||||
assert.ok(e.unbalanceUntil > h.b.time);
|
||||
e.route.legs.splice(e.route.legIdx, 0, { t: 'appear', r: 10, c: 3 });
|
||||
h.step();
|
||||
assert.equal(e.x, 3, 'relocated');
|
||||
assert.ok(!(e.unbalanceUntil > h.b.time), 'APPEAR ended it');
|
||||
const w = real('enemy_1288_duskls');
|
||||
w.h.b.push(w.e, 4, { from: { x: w.e.x + 1, y: w.e.y } });
|
||||
assert.ok(w.e.unbalanceUntil > w.h.b.time);
|
||||
w.h.b.dealDamage(null, w.e, { amount: 1e9, type: 'true' });
|
||||
assert.ok(w.e.alive, 'it fell into its 余烬 (重生)');
|
||||
assert.ok(!(w.e.unbalanceUntil > w.h.b.time), 'the 重生 ended it');
|
||||
});
|
||||
Reference in new issue
Block a user