解决剩称竖排有双色问题,调整了参数的结构,从数字变成数字数组。
This commit is contained in:
parent
5ad9460c24
commit
b3fb59db24
|
@ -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;
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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<this.columnCount; ci++)
|
||||
{
|
||||
this.setOrbAndBlock(orbsRow[ci], blocksRow[ci], attr, state, blockState);
|
||||
this.setOrbAndBlock(orbsRow[ci], blocksRow[ci], attrs.randomItem(), state, blockState);
|
||||
}
|
||||
}
|
||||
}
|
||||
//设定竖列
|
||||
setColumns(cols, attr, state, blockState)
|
||||
setColumns(cols, attrs, state, blockState)
|
||||
{
|
||||
if (!Array.isArray(attrs)) attrs = [attrs];
|
||||
for (let ci of cols)
|
||||
{
|
||||
ci = this.getTargetColumnIndex(ci);
|
||||
|
@ -253,16 +255,17 @@ class Board
|
|||
{
|
||||
const orbsRow = this.orbsData[ri], blocksRow = this.blocksData[ri];
|
||||
|
||||
this.setOrbAndBlock(orbsRow[ci], blocksRow[ci], attr, state, blockState);
|
||||
this.setOrbAndBlock(orbsRow[ci], blocksRow[ci], attrs.randomItem(), state, blockState);
|
||||
if (blockState == 'immobility') { //如果是封条,额外添加需要旋转的信息
|
||||
this.setOrbAndBlock(orbsRow[ci], blocksRow[ci], attr, state, 'rotate');
|
||||
this.setOrbAndBlock(orbsRow[ci], blocksRow[ci], attrs.randomItem(), state, 'rotate');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//设定形状
|
||||
setShape(matrix, attr, state, blockState)
|
||||
setShape(matrix, attrs, state, blockState)
|
||||
{
|
||||
if (!Array.isArray(attrs)) attrs = [attrs];
|
||||
//const setOrb = typeof(state) == 'number';
|
||||
function fillRow(ri, inputRow)
|
||||
{
|
||||
|
@ -272,9 +275,9 @@ class Board
|
|||
ci = this.getTargetColumnIndex(ci);
|
||||
if (this.columnCount >= 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; i<matrix.length; i++)
|
||||
|
@ -1267,17 +1270,27 @@ const skillObjectParsers = {
|
|||
},
|
||||
[125](mon1, mon2, mon3, mon4, mon5, hp, atk, rcv) { return powerUp(null, null, p.mul({ hp: hp || 100, atk: atk || 100, rcv: rcv || 100 }), c.compo('card', [mon1, mon2, mon3, mon4, mon5].filter(Boolean))); },
|
||||
[126](attrs, turns, turns2, percent) { return activeTurns(turns === turns2 ? turns : [turns, turns2], orbDropIncrease(v.percent(percent), Bin.unflags(attrs))); },
|
||||
[127](cols1, attrs1, cols2, attrs2) {
|
||||
return fixedOrbs(
|
||||
{ orbs: Bin.unflags(attrs1), type: 'col', positions: Bin.unflags(cols1) },
|
||||
{ orbs: Bin.unflags(attrs2), type: 'col', positions: Bin.unflags(cols2) }
|
||||
);
|
||||
[127](...params) { //cols1, attrs1, cols2, attrs2 ...
|
||||
const generates = [];
|
||||
for (let i = 0; i < params.length; i+=2) {
|
||||
generates.push({
|
||||
orbs: Bin.unflags(params[i+1]),
|
||||
type: 'col',
|
||||
positions: Bin.unflags(params[i])
|
||||
});
|
||||
}
|
||||
return fixedOrbs.apply(null, generates);
|
||||
},
|
||||
[128](rows1, attrs1, rows2, attrs2) {
|
||||
return fixedOrbs(
|
||||
{ orbs: Bin.unflags(attrs1), type: 'row', positions: Bin.unflags(rows1) },
|
||||
{ orbs: Bin.unflags(attrs2), type: 'row', positions: Bin.unflags(rows2) }
|
||||
);
|
||||
[128](...params) { //rows1, attrs1, rows2, attrs2 ...
|
||||
const generates = [];
|
||||
for (let i = 0; i < params.length; i+=2) {
|
||||
generates.push({
|
||||
orbs: Bin.unflags(params[i+1]),
|
||||
type: 'row',
|
||||
positions: Bin.unflags(params[i])
|
||||
});
|
||||
}
|
||||
return fixedOrbs.apply(null, generates);
|
||||
},
|
||||
[129](attrs, types, hp, atk, rcv, rAttrs, rPercent) {
|
||||
return [
|
||||
|
@ -1417,7 +1430,7 @@ const skillObjectParsers = {
|
|||
[175](series1, series2, series3, hp, atk, rcv) { return powerUp(null, null, p.mul({ hp: hp || 100, atk: atk || 100, rcv: rcv || 100 }), c.compo('series', [series1, series2, series3].filter(Boolean))); },
|
||||
[176](row1, row2, row3, row4, row5, attrs) {
|
||||
return fixedOrbs(
|
||||
{ orbs: [attrs ?? 0], type: 'shape', positions: [row1, row2, row3, row4, row5].map(row=>Bin.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());
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue