| @@ -115,6 +115,8 @@ const _localTranslating = { | |||
| set_orb_state_locked: tp`将${'orbs'}${'icon'}锁定${'value'}`, | |||
| set_orb_state_unlocked: tp`${'icon'}解除${'orbs'}的锁定状态`, | |||
| set_orb_state_bound: tp`无法消除${'orbs'}`, | |||
| set_orb_state_combo_drop: tp`${'orbs'}增加${'value'}${'icon'}豆荚状态`, | |||
| set_orb_state_nail: tp`${'orbs'}增加${'value'}${'icon'}钉子状态`, | |||
| rate_multiply: tp`作为队长进入地下城时,${'rate'}变为${'value'}`, | |||
| rate_multiply_drop: tp`${'icon'}怪物蛋掉落率`, | |||
| rate_multiply_coin: tp`${'icon'}金币掉落率`, | |||
| @@ -115,6 +115,8 @@ const _localTranslating = { | |||
| set_orb_state_locked: tp`將${'orbs'}${'icon'}鎖定${'value'}`, | |||
| set_orb_state_unlocked: tp`${'icon'}解除${'orbs'}的鎖定狀態`, | |||
| set_orb_state_bound: tp`無法消除${'orbs'}`, | |||
| set_orb_state_combo_drop: tp`${'orbs'}增加${'value'}${'icon'}豆莢狀態`, | |||
| set_orb_state_nail: tp`${'orbs'}增加${'value'}${'icon'}釘子狀態`, | |||
| rate_multiply: tp`作為隊長進入地下城時,${'rate'}變為${'value'}`, | |||
| rate_multiply_drop: tp`${'icon'}怪物蛋掉落率`, | |||
| rate_multiply_coin: tp`${'icon'}金幣掉落率`, | |||
| @@ -130,6 +130,8 @@ let localTranslating = { | |||
| set_orb_state_locked: tp`${'icon'}Locks ${'value'}${'orbs'}`, | |||
| set_orb_state_unlocked: tp`${'icon'}Unlocks ${'orbs'}`, | |||
| set_orb_state_bound: tp`${'orbs'} are unmatchable`, | |||
| set_orb_state_combo_drop: tp`Add ${'value'} ${'icon'}combo drop on ${'orbs'}`, | |||
| set_orb_state_nail: tp`Add ${'value'} ${'icon'}nail on ${'orbs'}`, | |||
| rate_multiply: tp`${'rate'} ${'value'} when entering as leader`, | |||
| rate_multiply_drop: tp`${'icon'}Drop rate`, | |||
| rate_multiply_coin: tp`${'icon'}Coins`, | |||
| @@ -1071,14 +1073,46 @@ const specialSearchFunctions = (function() { | |||
| } | |||
| function lock_Addition(card) | |||
| { | |||
| const searchTypeArray = [152]; | |||
| const skill = getCardActiveSkill(card, searchTypeArray); | |||
| if (!skill) return; | |||
| const sk = skill.params; | |||
| const fragment = document.createDocumentFragment(); | |||
| fragment.appendChild(createSkillIcon('orb-locked')); | |||
| fragment.appendChild(createOrbsList(Bin.unflags(sk[0] || 1))); | |||
| return fragment; | |||
| const searchTypeArray = [152, 190, 262]; | |||
| const skills = getCardActiveSkills(card, searchTypeArray, true); | |||
| if (!skills.length) return; | |||
| return skills.map(skill=>{ | |||
| const sk = skill.params; | |||
| const fragment = document.createDocumentFragment(); | |||
| switch (skill.type) { | |||
| case 152:{ | |||
| fragment.append( | |||
| createSkillIcon('orb-locked') | |||
| ); | |||
| if (sk[1] < 42) fragment.append(`×${sk[1]}`); | |||
| fragment.append( | |||
| createOrbsList(Bin.unflags(sk[0] || 1)) | |||
| ); | |||
| break; | |||
| } | |||
| case 190:{ | |||
| fragment.append( | |||
| createSkillIcon('orb-combo-drop') | |||
| ); | |||
| if (sk[1] < 42) fragment.append(`×${sk[1]}`); | |||
| fragment.append( | |||
| createOrbsList(Bin.unflags(sk[0] || 1)) | |||
| ); | |||
| break; | |||
| } | |||
| case 262:{ | |||
| fragment.append( | |||
| createSkillIcon('orb-nail') | |||
| ); | |||
| if (sk[0] < 42) fragment.append(`×${sk[0]}`); | |||
| fragment.append( | |||
| createOrbsList(Attributes.orbs()) | |||
| ); | |||
| break; | |||
| } | |||
| } | |||
| return fragment; | |||
| }).nodeJoin(''); | |||
| } | |||
| function dropLock_Addition(card) | |||
| { | |||
| @@ -2454,11 +2488,27 @@ const specialSearchFunctions = (function() { | |||
| } | |||
| } | |||
| const fragment = document.createDocumentFragment(); | |||
| fragment.appendChild(document.createTextNode(`强化`)); | |||
| fragment.appendChild(createSkillIcon('orb-enhanced')); | |||
| fragment.appendChild(createOrbsList(attrs)); | |||
| return fragment; | |||
| } | |||
| }, | |||
| {name:"Add Combo Drop",otLangName:{chs:"加豆荚",cht:"加豆莢"}, | |||
| function:cards=>cards.filter(card=>{ | |||
| const searchTypeArray = [190]; | |||
| const skill = getCardActiveSkill(card, searchTypeArray); | |||
| return skill; | |||
| }), | |||
| addition:lock_Addition | |||
| }, | |||
| {name:"Add Nail",otLangName:{chs:"加钉子",cht:"加釘子"}, | |||
| function:cards=>cards.filter(card=>{ | |||
| const searchTypeArray = [262]; | |||
| const skill = getCardActiveSkill(card, searchTypeArray); | |||
| return skill; | |||
| }), | |||
| addition:lock_Addition | |||
| }, | |||
| {name:"Bind self matchable",otLangName:{chs:"自封消珠 debuff",cht:"自封消珠 debuff"}, | |||
| function:cards=>cards.filter(card=>{ | |||
| const searchTypeArray = [215]; | |||
| @@ -992,7 +992,7 @@ function counterAttack(attr, prob, value) { | |||
| return { kind: SkillKinds.CounterAttack, attr: attr, prob: prob, value: value }; | |||
| } | |||
| function setOrbState(orbs, state, arg) { | |||
| return { kind: SkillKinds.SetOrbState, orbs: orbs, state: state, arg: arg}; | |||
| return { kind: SkillKinds.SetOrbState, orbs, state, arg}; | |||
| } | |||
| function rateMultiply(value, rate) { | |||
| return { kind: SkillKinds.RateMultiply, value: value, rate: rate }; | |||
| @@ -1464,6 +1464,7 @@ const skillObjectParsers = { | |||
| autoPath(3), | |||
| ]; | |||
| }, | |||
| [190](attrs, count) { return setOrbState(Bin.unflags(attrs), 'combo-drop', {count: v.constant(count)}); }, | |||
| [191](turns) { | |||
| return activeTurns(turns, voidEnemyBuff(['damage-void'])); | |||
| @@ -1729,6 +1730,7 @@ const skillObjectParsers = { | |||
| [259](percent) { return breakingShield(v.xShield(percent)); }, | |||
| [260](skillStage, voiceId) { return skillPlayVoice(skillStage, voiceId); }, | |||
| [261](percent) { return gravity(v.xCHP(percent), 'single'); }, | |||
| [262](count) { return setOrbState(Attributes.orbs(), 'nail', {count: v.constant(count)}); }, | |||
| [263](turns, cap, attr, type) { //按属性改变伤害上限主动技 | |||
| return activeTurns(turns, | |||
| increaseDamageCapacity(cap * 1e8, void 0, Bin.unflags(attr), Bin.unflags(type)) | |||
| @@ -1801,7 +1803,7 @@ function renderSkillEntry(skills) | |||
| break; | |||
| } | |||
| case SkillKinds.GenerateOrbs: { //产生珠子 | |||
| let orbs = skill.orbs, exclude = skill.exclude, count = skill.count; | |||
| const { orbs, exclude, count } = skill; | |||
| boardsBar.boards.forEach(board=>board.generateOrbs(orbs, count, exclude)); | |||
| break; | |||
| } | |||
| @@ -2462,9 +2464,13 @@ function renderSkill(skill, option = {}) | |||
| break; | |||
| } | |||
| case SkillKinds.SetOrbState: { | |||
| let orbs = skill.orbs, state = skill.state, arg = skill.arg; | |||
| const {orbs, state, arg} = skill; | |||
| let dict = { | |||
| orbs: renderOrbs(orbs, {className: state, affix: true}), | |||
| orbs: renderOrbs(orbs, { | |||
| //有的时候附加效果限制个数,这个附加图标加到文字里面的图标上面的去不好看也不准确,应该只加到面板里。 | |||
| //className: state, | |||
| affix: true | |||
| }), | |||
| icon: createIcon('orb-' + state), | |||
| }; | |||
| switch (state) | |||
| @@ -2488,6 +2494,18 @@ function renderSkill(skill, option = {}) | |||
| frg.ap(tsp.skill.set_orb_state_bound(dict)); | |||
| break; | |||
| } | |||
| case "combo-drop":{ | |||
| if (arg.count.value < 42) | |||
| dict.value = renderValue(arg.count, {unit: tsp.unit.orbs}); | |||
| frg.ap(tsp.skill.set_orb_state_combo_drop(dict)); | |||
| break; | |||
| } | |||
| case "nail":{ | |||
| if (arg.count.value < 42) | |||
| dict.value = renderValue(arg.count, {unit: tsp.unit.orbs}); | |||
| frg.ap(tsp.skill.set_orb_state_nail(dict)); | |||
| break; | |||
| } | |||
| } | |||
| break; | |||
| } | |||
| @@ -2911,6 +2929,8 @@ function renderAttrs(attrs, option = {}) { | |||
| function renderOrbs(attrs, option = {}) { | |||
| if (!Array.isArray(attrs)) | |||
| attrs = [attrs ?? 0]; | |||
| else | |||
| attrs = [...attrs]; | |||
| const frg = document.createDocumentFragment(); | |||
| if (typeof localTranslating == "undefined") return frg; | |||
| @@ -2922,7 +2942,7 @@ function renderOrbs(attrs, option = {}) { | |||
| let attrBin = new Bin(attrs); | |||
| if ((attrBin.int & 0b1111111111) == 0b1111111111) { //十种珠子 | |||
| frg.ap(tsp.orbs.all()); | |||
| attrs.length = 0; | |||
| attrs.length = 0; //之前是引用,这里会导致数组被清空的错误 | |||
| } else if ((attrBin.int & 0b11111) == 0b11111) { //基础5色 | |||
| frg.ap(renderOrbs('_5color')); | |||
| attrBin = new Bin(attrBin.int & 0b1111100000); | |||
| @@ -37339,11 +37339,11 @@ const cachesMap = new Map([ | |||
| ], | |||
| [ | |||
| "script-json_data.js", | |||
| "542e14ea40fb4e78f90b9042c9cab73e" | |||
| "dfaedd802c88abd2dc04807133cd292c" | |||
| ], | |||
| [ | |||
| "script-skill-parser.js", | |||
| "611d6dbe1cb34e394b466d5548413bb5" | |||
| "1747fe828fc25e0394f82245eccca5c7" | |||
| ], | |||
| [ | |||
| "script-universal_function.js", | |||
| @@ -37363,11 +37363,11 @@ const cachesMap = new Map([ | |||
| ], | |||
| [ | |||
| "style-monsterimages.css", | |||
| "27fbe6036d87bcbcba695b3855d6d175" | |||
| "825aea31ea61e82142a634ccc7230d9f" | |||
| ], | |||
| [ | |||
| "style.css", | |||
| "bf69ae63b86117783d918534b14b3a54" | |||
| "0548eea7ac972f4bac0ffebf384a51e5" | |||
| ], | |||
| [ | |||
| "temp.js", | |||
| @@ -37411,7 +37411,7 @@ const cachesMap = new Map([ | |||
| ], | |||
| [ | |||
| "languages/zh-hans.js", | |||
| "71138b459d0d9851f2554e6336f32a98" | |||
| "8552840a3934a8eee0d0e001419036d9" | |||
| ], | |||
| [ | |||
| "languages/zh-hant.css", | |||
| @@ -37419,7 +37419,7 @@ const cachesMap = new Map([ | |||
| ], | |||
| [ | |||
| "languages/zh-hant.js", | |||
| "677bd55683bbe9f7055523ed462db5b9" | |||
| "3f4938a03f1d14544bd9da895126ed6c" | |||
| ], | |||
| [ | |||
| "images/attrs.png", | |||
| @@ -37571,7 +37571,7 @@ const cachesMap = new Map([ | |||
| ], | |||
| [ | |||
| "images/icon-skills.png", | |||
| "fae3e58d36a30373bf184d1c4b9e78d5" | |||
| "9b5c57a64636cbfddffbb4549f5e6035" | |||
| ], | |||
| [ | |||
| "images/icon-switch-leader.png", | |||
| @@ -2075,7 +2075,7 @@ | |||
| --icon-y-index: 1; | |||
| } | |||
| .orb.drop::before | |||
| { | |||
| { /* 珠子加掉率 */ | |||
| content: ""; | |||
| --icon-y-index: 2; | |||
| } | |||
| @@ -2083,11 +2083,20 @@ | |||
| { | |||
| filter:brightness(0.8); | |||
| } | |||
| .orb.bound::before | |||
| .orb.enhanced::after | |||
| { | |||
| content: ""; | |||
| --icon-y-index: 3; | |||
| animation: hidden-visible-animate 0.8s infinite ease-out alternate; | |||
| --icon-y-index: 0; | |||
| } | |||
| .orb.combo-drop::before | |||
| { /* 有豆荚的珠子 */ | |||
| content: ""; | |||
| --icon-y-index: 5; | |||
| } | |||
| .orb.nail::before | |||
| { /* 有豆荚的珠子 */ | |||
| content: ""; | |||
| --icon-y-index: 6; | |||
| } | |||
| .orb[data-orb-icon='_5color'] | |||
| @@ -5037,6 +5037,10 @@ body.external-link-support #external-support{ | |||
| width: 72px; | |||
| background-position-y:calc(-36px * 43); | |||
| } | |||
| .icon-skill[data-icon-type="orb-combo-drop"] | |||
| { | |||
| background-position-y:calc(-36px * 44); | |||
| } | |||
| .card-skill-list .play-voice [data-awoken-icon="63"] { | |||
| cursor: pointer; | |||