feedback3 WB: 圣聆初雪 S2 freezes the protection point (the blue gate) once it holds 5 snow layers, deploy attributes ignored, and no other tile; the frozen gate shows as an ice diamond instead of her own face (PRTS 备注, community report #32)
This commit is contained in:
1 parent
e53a181ae9
commit
3e9f81fcbf
6 files changed
+83
-17
No files matched your search
@@ -73,8 +73,9 @@
|
||||
// 6_01 S2 the aim (disarmed meanwhile) spends its bullet when it begins; target = a wanted enemy (lowest DEF first).
|
||||
// 6_02 S1 casts with an enemy in her range (data SEARCH read as "search in range" [ASSUMED]; the engine SEARCH =
|
||||
// any enemy on the field wasted both charges); the snow spreads along her facing line (≤ trig_cnt tiles);
|
||||
// S2 "目标点变为冻结状态" = the frozen 保护目标 token (icetgt, one at a time) on the tile reaching max snow, whose
|
||||
// snow is used up; spreads go to the thinnest 4-neighbour; the 20 % DoT ticks once per second.
|
||||
// S2 "目标点变为冻结状态" = the frozen 保护目标 token (icetgt, one at a time) on a protection point (goal tile) reaching
|
||||
// max snow, deploy attributes ignored, whose snow is used up (PRTS 备注; until 0.1.3 any standable tile froze, never the
|
||||
// gate); spreads go to the thinnest 4-neighbour; the 20 % DoT ticks once per second.
|
||||
// 6_03 S2 teleport = the ground-reachable (grid path) enemies of the skill grid moved onto his tile, in the cast's
|
||||
// tick (PRTS: 0.13 s after the damage), leaders included unless 自缚.
|
||||
// 6_04 S1 transfer: the ally takes ×(1 − share), she takes the rest as true damage from the attacker; module 新生代
|
||||
@@ -612,16 +613,20 @@ function sbell2(bb, chess, def) {
|
||||
/**
|
||||
* S2 霜涛覆岭 while it runs (`unit.mem.sbellS2`): a layer landing on a tile already at max snow spreads one layer to
|
||||
* a neighbouring ground tile (at most max_cast_tile_count spreads per activation); ground enemies on snow take
|
||||
* s2_magic_scale × ATK arts per second; an enemy leaving snow gets `cold` s of 寒冷; a tile reaching max snow turns
|
||||
* into the frozen 保护目标 (token icetgt: blocks 3, one at a time) and its snow is used up.
|
||||
* s2_magic_scale × ATK arts per second; an enemy leaving snow gets `cold` s of 寒冷; "积雪在目标点积累至5层时,使目标点变为
|
||||
* 冻结状态": a protection point (the blue gate) reaching max snow turns into the frozen 保护目标 (freezeTile).
|
||||
*/
|
||||
const addSnow = (battle, unit, k) => {
|
||||
const snow = unit.mem.snow;
|
||||
if (!snow) return false;
|
||||
const r = (k / COLS) | 0, c = k % COLS;
|
||||
if (!battle.grid.inRect(r, c) || !battle.grid.groundPassable(r, c, true)) return false;
|
||||
// PRTS 备注 "存在自身的该召唤物的地块不会积雪"
|
||||
if (battle.allyUnits.some((t) => isTok(t, iceId, unit) && t.alive && t.tileR === r && t.tileC === c)) return false;
|
||||
const S2 = unit.mem.sbellS2;
|
||||
const cur = snow.get(k) ?? 0;
|
||||
// a protection point already at max snow (its freeze waited for her other token to go) freezes on its next layer
|
||||
if (S2 && cur >= maxL && freezeTile(battle, unit, k)) return true;
|
||||
if (cur >= maxL) {
|
||||
if (!S2 || S2.spreadLeft <= 0) return false;
|
||||
// "积雪超过5层时会向周围扩散一层": the thinnest neighbouring ground tile gets the layer
|
||||
@@ -640,14 +645,24 @@ function sbell2(bb, chess, def) {
|
||||
if (S2 && cur + 1 >= maxL) freezeTile(battle, unit, k);
|
||||
return true;
|
||||
};
|
||||
/**
|
||||
* "使目标点变为冻结状态" — PRTS 圣聆初雪 S2 备注: "目标点冻结的实际效果为令圣聆初雪在该地块上召唤一个保护目标(冻结状态)(无视部署
|
||||
* 属性),并去除相应地块上的积雪", "可以被'变为冻结状态'的目标点包括常规的保护目标点与促融共竞的保护目标点"; the token's page:
|
||||
* "技能发动后于保护目标叠加5层积雪". So only a protection point (a goal tile, glyph E) freezes, whatever its deploy attributes
|
||||
* (nobody may stand on a gate): her token icetgt (blocks 3; one at a time, maxDeployCount 1) appears on it and blocks the
|
||||
* enemies walking in, and that tile's snow is used up. Until 0.1.3 (community report #32): any free tile a melee
|
||||
* operator could stand on froze at max snow, and the gate never did. Returns true when the token appeared.
|
||||
*/
|
||||
const freezeTile = (battle, unit, k) => {
|
||||
const r = (k / COLS) | 0, c = k % COLS;
|
||||
if (battle.allyUnits.some((t) => isTok(t, iceId, unit) && t.alive)) return;
|
||||
if (battle.isReservedTile(r, c) || !battle.grid.canStand(r, c, { ranged: false })) return;
|
||||
if (battle.grid.tile(r, c).special !== 'end') return false;
|
||||
if (battle.allyUnits.some((t) => isTok(t, iceId, unit) && t.alive)) return false;
|
||||
if (battle.isReservedTile(r, c)) return false;
|
||||
const ice = battle.spawnToken(unit, iceId, r, c);
|
||||
if (!ice) return;
|
||||
if (!ice) return false;
|
||||
unit.mem.snow.delete(k);
|
||||
battle.fx('summon', { x: c, y: r, id: ice.id, src: unit.id });
|
||||
return true;
|
||||
};
|
||||
const talents = [
|
||||
{ install(battle, unit) { // 无垠的雪景 (+ S2 snow rules)
|
||||
|
||||
Reference in new issue
Block a user