| @@ -1050,16 +1050,16 @@ const parsers = { | |||||
| ].filter(Boolean); | ].filter(Boolean); | ||||
| }, | }, | ||||
| [118](...ids) { return randomSkills(ids.map(id => this.parser(id))); }, | [118](...ids) { return randomSkills(ids.map(id => this.parser(id))); }, | ||||
| [119](attrs, min, base, bonus, max) { return powerUp(null, null, p.scaleMatchLength(flags(attrs), min, max, [base, 100], [bonus, 0])); }, | |||||
| [119](attrs, min, base, bonus, max) { return powerUp(null, null, p.scaleMatchLength(flags(attrs), min, max, [base || 100, 100], [bonus, 0])); }, | |||||
| [121](attrs, types, hp, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ hp, atk, rcv })); }, | |||||
| [122](percent, attrs, types, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ atk, rcv }), c.hp(0, percent)); }, | |||||
| [123](percent, attrs, types, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ atk, rcv }), c.hp(percent, 100)); }, | |||||
| [121](attrs, types, hp, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ hp: hp || 100, atk: atk || 100, rcv: rcv || 100 })); }, | |||||
| [122](percent, attrs, types, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ atk: atk || 100, rcv: rcv || 100 }), c.hp(0, percent)); }, | |||||
| [123](percent, attrs, types, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ atk: atk || 100, rcv: rcv || 100 }), c.hp(percent, 100)); }, | |||||
| [124](attrs1, attrs2, attrs3, attrs4, attrs5, min, mul, bonus) { | [124](attrs1, attrs2, attrs3, attrs4, attrs5, min, mul, bonus) { | ||||
| const attrs = [attrs1, attrs2, attrs3, attrs4, attrs5].filter(Boolean); | const attrs = [attrs1, attrs2, attrs3, attrs4, attrs5].filter(Boolean); | ||||
| return powerUp(null, null, p.scaleMatchAttrs(attrs.map(flags), min, bonus ? attrs.length : min, [mul, 100], [bonus, 0])); | return powerUp(null, null, p.scaleMatchAttrs(attrs.map(flags), min, bonus ? attrs.length : min, [mul, 100], [bonus, 0])); | ||||
| }, | }, | ||||
| [125](mon1, mon2, mon3, mon4, mon5, hp, atk, rcv) { return powerUp(null, null, p.mul({ hp, atk, rcv }), c.compo('card', [mon1, mon2, mon3, mon4, mon5].filter(Boolean))); }, | |||||
| [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), flags(attrs))); }, | [126](attrs, turns, turns2, percent) { return activeTurns(turns === turns2 ? turns : [turns, turns2], orbDropIncrease(v.percent(percent), flags(attrs))); }, | ||||
| [127](cols1, attrs1, cols2, attrs2) { | [127](cols1, attrs1, cols2, attrs2) { | ||||
| return fixedOrbs( | return fixedOrbs( | ||||
| @@ -1081,35 +1081,35 @@ const parsers = { | |||||
| }, | }, | ||||
| [130](percent, attrs, types, atk, rcv, rAttrs, rPercent) { | [130](percent, attrs, types, atk, rcv, rAttrs, rPercent) { | ||||
| return [ | return [ | ||||
| (atk || rcv) && powerUp(flags(attrs), flags(types), p.mul({ atk, rcv }), c.hp(0, percent)) || null, | |||||
| (atk || rcv) && powerUp(flags(attrs), flags(types), p.mul({ atk: atk || 100, rcv: rcv || 100 }), c.hp(0, percent)) || null, | |||||
| rPercent && reduceDamage(flags(rAttrs), v.percent(rPercent), c.hp(0, percent)) || null | rPercent && reduceDamage(flags(rAttrs), v.percent(rPercent), c.hp(0, percent)) || null | ||||
| ]; | ]; | ||||
| }, | }, | ||||
| [131](percent, attrs, types, atk, rcv, rAttrs, rPercent) { | [131](percent, attrs, types, atk, rcv, rAttrs, rPercent) { | ||||
| return [ | return [ | ||||
| powerUp(flags(attrs), flags(types), p.mul({ atk, rcv }), c.hp(percent, 100)), | |||||
| powerUp(flags(attrs), flags(types), p.mul({ atk: atk || 100, rcv: rcv || 100 }), c.hp(percent, 100)), | |||||
| rPercent && reduceDamage(flags(rAttrs), v.percent(rPercent), c.hp(percent, 100)) || null | rPercent && reduceDamage(flags(rAttrs), v.percent(rPercent), c.hp(percent, 100)) || null | ||||
| ]; | ]; | ||||
| }, | }, | ||||
| [132](turns, time, percent) { return activeTurns(turns, timeExtend(time ? v.constant(time / 10) : v.percent(percent))); }, | [132](turns, time, percent) { return activeTurns(turns, timeExtend(time ? v.constant(time / 10) : v.percent(percent))); }, | ||||
| [133](attrs, types, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ atk, rcv }), c.useSkill()); }, | |||||
| [133](attrs, types, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ atk: atk || 100, rcv: rcv || 100 }), c.useSkill()); }, | |||||
| [136](attrs1, hp1, atk1, rcv1, attrs2, hp2, atk2, rcv2) { | [136](attrs1, hp1, atk1, rcv1, attrs2, hp2, atk2, rcv2) { | ||||
| return [ | return [ | ||||
| powerUp(flags(attrs1), null, p.mul({ hp: hp1, atk: atk1, rcv: rcv1 })), | |||||
| powerUp(flags(attrs2), null, p.mul({ hp: hp2, atk: atk2, rcv: rcv2 })), | |||||
| powerUp(flags(attrs1), null, p.mul({ hp: hp1 || 100, atk: atk1 || 100, rcv: rcv1 || 100 })), | |||||
| powerUp(flags(attrs2), null, p.mul({ hp: hp2 || 100, atk: atk2 || 100, rcv: rcv2 || 100 })), | |||||
| ]; | ]; | ||||
| }, | }, | ||||
| [137](types1, hp1, atk1, rcv1, types2, hp2, atk2, rcv2) { | [137](types1, hp1, atk1, rcv1, types2, hp2, atk2, rcv2) { | ||||
| return [ | return [ | ||||
| powerUp(null, flags(types1), p.mul({ hp: hp1, atk: atk1, rcv: rcv1 })), | |||||
| powerUp(null, flags(types2), p.mul({ hp: hp2, atk: atk2, rcv: rcv2 })), | |||||
| powerUp(null, flags(types1), p.mul({ hp: hp1 || 100, atk: atk1 || 100, rcv: rcv1 || 100 })), | |||||
| powerUp(null, flags(types2), p.mul({ hp: hp2 || 100, atk: atk2 || 100, rcv: rcv2 || 100 })), | |||||
| ]; | ]; | ||||
| }, | }, | ||||
| [138](...ids) { return ids.flatMap(id => this.parser(id)); }, | [138](...ids) { return ids.flatMap(id => this.parser(id)); }, | ||||
| [139](attrs, types, percent1, less1, mul1, percent2, less2, mul2) { | [139](attrs, types, percent1, less1, mul1, percent2, less2, mul2) { | ||||
| return [ | return [ | ||||
| powerUp(flags(attrs), flags(types), p.mul({ atk: mul1 }), less1 ? c.hp(0, percent1) : c.hp(percent1, 100)), | |||||
| powerUp(flags(attrs), flags(types), p.mul({ atk: mul2 }), less1 ? | |||||
| powerUp(flags(attrs), flags(types), p.mul({ atk: mul1 || 100 }), less1 ? c.hp(0, percent1) : c.hp(percent1, 100)), | |||||
| powerUp(flags(attrs), flags(types), p.mul({ atk: mul2 || 100 }), less1 ? | |||||
| (less2 ? c.hp(percent1, percent2) : c.hp(percent2, 100)) : | (less2 ? c.hp(percent1, percent2) : c.hp(percent2, 100)) : | ||||
| (less2 ? c.hp(0, percent2) : c.hp(percent2, percent1)) | (less2 ? c.hp(0, percent2) : c.hp(percent2, percent1)) | ||||
| ), | ), | ||||
| @@ -1136,7 +1136,7 @@ const parsers = { | |||||
| [152](attrs, count) { return setOrbState(flags(attrs), 'locked', {count: v.constant(count)}); }, | [152](attrs, count) { return setOrbState(flags(attrs), 'locked', {count: v.constant(count)}); }, | ||||
| [153](attr, _) { return changeAttr('opponent', attr); }, | [153](attr, _) { return changeAttr('opponent', attr); }, | ||||
| [154](from, to) { return changeOrbs(fromTo(flags(from), flags(to))); }, | [154](from, to) { return changeOrbs(fromTo(flags(from), flags(to))); }, | ||||
| [155](attrs, types, hp, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ hp, atk, rcv }), c.multiplayer()); }, | |||||
| [155](attrs, types, hp, atk, rcv) { return powerUp(flags(attrs), flags(types), p.mul({ hp: hp || 100, atk: atk || 100, rcv: rcv || 100 }), c.multiplayer()); }, | |||||
| [156](turns, awoken1, awoken2, awoken3, type, mul) { | [156](turns, awoken1, awoken2, awoken3, type, mul) { | ||||
| if (type == 1) | if (type == 1) | ||||
| { | { | ||||
| @@ -1230,7 +1230,7 @@ const parsers = { | |||||
| }, | }, | ||||
| [180](turns, percent) { return activeTurns(turns, orbDropIncrease(v.percent(percent), [], 'enhanced')); }, | [180](turns, percent) { return activeTurns(turns, orbDropIncrease(v.percent(percent), [], 'enhanced')); }, | ||||
| [182](attrs, len, mul, percent) { return powerUp(null, null, p.scaleMatchLength(flags(attrs), len, len, [mul, 100], [0, 0]), null, v.percent(percent)); }, | |||||
| [182](attrs, len, mul, percent) { return powerUp(null, null, p.scaleMatchLength(flags(attrs), len, len, [mul || 100, 100], [0, 0]), null, v.percent(percent)); }, | |||||
| [183](attrs, types, percent1, atk1, reduce, percent2, atk2, rcv2) { | [183](attrs, types, percent1, atk1, reduce, percent2, atk2, rcv2) { | ||||
| return [ | return [ | ||||
| (percent1 > 0) && powerUp(flags(attrs), flags(types), p.mul({ atk: atk1 || 100 }), c.hp(percent1, 100), v.percent(reduce)) || null, | (percent1 > 0) && powerUp(flags(attrs), flags(types), p.mul({ atk: atk1 || 100 }), c.hp(percent1, 100), v.percent(reduce)) || null, | ||||
| @@ -1241,13 +1241,13 @@ const parsers = { | |||||
| [185](time, attrs, types, hp, atk, rcv) { | [185](time, attrs, types, hp, atk, rcv) { | ||||
| return [ | return [ | ||||
| timeExtend(v.constant(time / 100)), | timeExtend(v.constant(time / 100)), | ||||
| powerUp(flags(attrs), flags(types), p.mul({ hp, atk, rcv })), | |||||
| powerUp(flags(attrs), flags(types), p.mul({ hp: hp || 100, atk: atk || 100, rcv: rcv || 100 })), | |||||
| ]; | ]; | ||||
| }, | }, | ||||
| [186](attrs, types, hp, atk, rcv) { | [186](attrs, types, hp, atk, rcv) { | ||||
| return [ | return [ | ||||
| board7x6(), | board7x6(), | ||||
| (hp || atk ||rcv) && powerUp(flags(attrs), flags(types), p.mul({ hp, atk, rcv })) || null, | |||||
| (hp || atk ||rcv) && powerUp(flags(attrs), flags(types), p.mul({ hp: hp || 100, atk: atk || 100, rcv: rcv || 100 })) || null, | |||||
| ].filter(Boolean); | ].filter(Boolean); | ||||
| }, | }, | ||||
| @@ -1272,7 +1272,7 @@ const parsers = { | |||||
| return powerUp(null, null, p.mul([atk || 100, rcv || 100]), c.LShape(flags(attrs)), v.percent(percent)); | return powerUp(null, null, p.mul([atk || 100, rcv || 100]), c.LShape(flags(attrs)), v.percent(percent)); | ||||
| }, | }, | ||||
| [194](attrs, min, mul, combo) { | [194](attrs, min, mul, combo) { | ||||
| return powerUp(null, null, p.scaleAttrs(flags(attrs), min, min, [mul, 100], [0, 0]), null, null, [addCombo(combo)]); | |||||
| return powerUp(null, null, p.scaleAttrs(flags(attrs), min, min, [mul || 100, 100], [0, 0]), null, null, [addCombo(combo)]); | |||||
| }, | }, | ||||
| [195](percent) { | [195](percent) { | ||||
| return selfHarm(percent ? v.xCHP(percent) : v.constantTo(1)); | return selfHarm(percent ? v.xCHP(percent) : v.constantTo(1)); | ||||
| @@ -1299,7 +1299,7 @@ const parsers = { | |||||
| [202](id) { | [202](id) { | ||||
| return henshin(id); | return henshin(id); | ||||
| }, | }, | ||||
| [203](evotype, hp, atk, rcv) { return powerUp(null, null, p.mul({ hp, atk, rcv }), c.compo('evolution', [evotype])); }, | |||||
| [203](evotype, hp, atk, rcv) { return powerUp(null, null, p.mul({ hp: hp || 100, atk: atk || 100, rcv: rcv || 100 }), c.compo('evolution', [evotype])); }, | |||||
| [205](attrs, turns) { return activeTurns(turns, orbDropIncrease(null, flags(attrs == -1 ? 1023: attrs), 'locked')); }, | [205](attrs, turns) { return activeTurns(turns, orbDropIncrease(null, flags(attrs == -1 ? 1023: attrs), 'locked')); }, | ||||
| [206](attrs1, attrs2, attrs3, attrs4, attrs5, min, combo) { | [206](attrs1, attrs2, attrs3, attrs4, attrs5, min, combo) { | ||||