From b3fb59db247bd1ca45a0b1c667d3e1f56eca9e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=AB=E8=B0=B7=E5=89=91=E4=BB=99?= Date: Sun, 11 May 2025 05:23:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=89=A9=E7=A7=B0=E7=AB=96?= =?UTF-8?q?=E6=8E=92=E6=9C=89=E5=8F=8C=E8=89=B2=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=E5=8F=82=E6=95=B0=E7=9A=84=E7=BB=93?= =?UTF-8?q?=E6=9E=84=EF=BC=8C=E4=BB=8E=E6=95=B0=E5=AD=97=E5=8F=98=E6=88=90?= =?UTF-8?q?=E6=95=B0=E5=AD=97=E6=95=B0=E7=BB=84=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script-json_data.js | 4 +- script-skill-parser.js | 73 +++++++++++++++++++++--------------- script-universal_function.js | 16 +++++++- service-worker.js | 6 +-- 4 files changed, 62 insertions(+), 37 deletions(-) diff --git a/script-json_data.js b/script-json_data.js index 121c91c6..e9ab5b88 100644 --- a/script-json_data.js +++ b/script-json_data.js @@ -2685,13 +2685,13 @@ const specialSearchFunctions = (function() { const skill = getCardActiveSkill(card, searchTypeArray); if (!skill) return; const sk = skill.params; - const colums = Bin.unflags(sk[1]), rows = Bin.unflags(sk[2]); + const colums = Bin.unflags(sk[0]), rows = Bin.unflags(sk[2]); const fragment = document.createDocumentFragment(); if (colums.length) fragment.append(`${colums.length}竖`); if (rows.length) fragment.append(`${rows.length}横`); - fragment.append(`×${sk[0]}T`); + fragment.append(`×${sk[1]}T`); return fragment; } }, diff --git a/script-skill-parser.js b/script-skill-parser.js index cf378377..b818e094 100644 --- a/script-skill-parser.js +++ b/script-skill-parser.js @@ -231,21 +231,23 @@ class Board block.states.add(blockState); } //设定横行 - setRows(rows, attr, state, blockState) + setRows(rows, attrs, state, blockState) { + if (!Array.isArray(attrs)) attrs = [attrs]; for (let ri of rows) { ri = this.getTargetRowIndex(ri); const orbsRow = this.orbsData[ri], blocksRow = this.blocksData[ri]; for (let ci=0; ci= 7 && ci == 4) { - this.setOrbAndBlock(orbsRow[ci - 1], blocksRow[ci - 1], attr, state, blockState); + this.setOrbAndBlock(orbsRow[ci - 1], blocksRow[ci - 1], attrs.randomItem(), state, blockState); } - this.setOrbAndBlock(orbsRow[ci], blocksRow[ci], attr, state, blockState); + this.setOrbAndBlock(orbsRow[ci], blocksRow[ci], attrs.randomItem(), state, blockState); } } for (let i=0; iBin.unflags(row)) } + { orbs: [attrs ?? 0], type: 'shape', positions: [row1, row2, row3, row4, row5].map(Bin.unflags) } ); }, [177](attrs, types, hp, atk, rcv, remains, baseAtk, bonusAtk) { @@ -1876,14 +1889,14 @@ function renderSkillEntry(skills) case SkillKinds.FixedOrbs: { //固定位置产生珠子 for (const generate of skill.generates) { - let orb = generate.orbs?.[0]; + const orbs = generate.orbs; if (generate.type == 'shape') { - boardsBar.boards.forEach(board=>board.setShape(generate.positions, orb)); + boardsBar.boards.forEach(board=>board.setShape(generate.positions, orbs)); } else { if (generate.type == 'row') - boardsBar.boards.forEach(board=>board.setRows(generate.positions, orb)); + boardsBar.boards.forEach(board=>board.setRows(generate.positions, orbs)); else - boardsBar.boards.forEach(board=>board.setColumns(generate.positions, orb)); + boardsBar.boards.forEach(board=>board.setColumns(generate.positions, orbs)); } } break; @@ -2460,14 +2473,14 @@ function renderSkill(skill, option = {}) for (const generate of generates) { - let orb = generate.orbs?.[0]; - let dict = { - orbs: renderOrbs(orb), + const orbs = generate.orbs; + const dict = { + orbs: renderOrbs(orbs), }; if (generate.type == 'shape') { dict.position = tsp.position.shape(); - boardsBar?.boards?.forEach(board=>board.setShape(generate.positions, orb)); + boardsBar?.boards?.forEach(board=>board.setShape(generate.positions, orbs)); }else { let posFrgs = []; @@ -2477,13 +2490,13 @@ function renderSkill(skill, option = {}) const [sequence, reverse] = posSplit(generate.positions, 'row'); if (sequence.length) posFrgs.push(tsp.position.top({pos: sequence.join(slight_pause)})); if (reverse.length) posFrgs.push(tsp.position.bottom({pos: reverse.join(slight_pause)})); - boardsBar?.boards?.forEach(board=>board.setRows(generate.positions, orb)); + boardsBar?.boards?.forEach(board=>board.setRows(generate.positions, orbs)); }else { const [sequence, reverse] = posSplit(generate.positions, 'colum'); if (sequence.length) posFrgs.push(tsp.position.left({pos: sequence.join(slight_pause)})); if (reverse.length) posFrgs.push(tsp.position.right({pos: reverse.join(slight_pause)})); - boardsBar?.boards?.forEach(board=>board.setColumns(generate.positions, orb)); + boardsBar?.boards?.forEach(board=>board.setColumns(generate.positions, orbs)); } dict.position = posFrgs.nodeJoin(tsp.word.slight_pause()); } diff --git a/script-universal_function.js b/script-universal_function.js index f4b6182c..b15a7030 100644 --- a/script-universal_function.js +++ b/script-universal_function.js @@ -335,7 +335,13 @@ Array.prototype.shuffle = function() { } //数组随机移除元素 Array.prototype.randomShift = function() { - return this.splice(Math.random() * this.length, 1)?.[0]; + if (this.length === 0) { + return null; + } else if (this.length === 1) { + return this.shift(); + } else { + return this.splice(Math.random() * this.length, 1)?.[0]; + } } //数组分组函数,用法:array.groupBy((a,b)=>a.type === b.type) Array.prototype.groupBy = function(func) { @@ -375,7 +381,13 @@ Array.prototype.nodeJoin = function(separator) } //数组随机选择一个元素 Array.prototype.randomItem = function(){ - return this[Math.randomInteger(this.length-1)]; + if (this.length === 0) { + return null; + } else if (this.length === 1) { + return this[0]; + } else { + return this[Math.randomInteger(this.length-1)]; + } }; Math.randomInteger = function(max, min = 0) { diff --git a/service-worker.js b/service-worker.js index 3e22c9ba..6c14c3b7 100644 --- a/service-worker.js +++ b/service-worker.js @@ -48275,15 +48275,15 @@ const cachesMap = new Map([ ], [ "script-json_data.js", - "01b72db639555d40de9f57b80e10d580" + "d1b966c0449f40c97a14cd9c0495e8b9" ], [ "script-skill-parser.js", - "6028d746baee2c5266706c9cc405f984" + "bd6a5a83d0deed2d45322fa4b09babe0" ], [ "script-universal_function.js", - "ecd23293d69eb2add579594e88c92208" + "3ce2b3d06e12181f692fa5dd50fe9502" ], [ "script.js",