加几个新技能

This commit is contained in:
枫谷剑仙 2024-11-04 20:08:19 +08:00
parent 9fb94b2784
commit beefcfe1f7
9 changed files with 112 additions and 25 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 202 KiB

View File

@ -115,6 +115,8 @@ const _localTranslating = {
set_orb_state_locked: tp`${'orbs'}${'icon'}锁定${'value'}`, set_orb_state_locked: tp`${'orbs'}${'icon'}锁定${'value'}`,
set_orb_state_unlocked: tp`${'icon'}解除${'orbs'}的锁定状态`, set_orb_state_unlocked: tp`${'icon'}解除${'orbs'}的锁定状态`,
set_orb_state_bound: tp`无法消除${'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: tp`作为队长进入地下城时,${'rate'}变为${'value'}`,
rate_multiply_drop: tp`${'icon'}怪物蛋掉落率`, rate_multiply_drop: tp`${'icon'}怪物蛋掉落率`,
rate_multiply_coin: tp`${'icon'}金币掉落率`, rate_multiply_coin: tp`${'icon'}金币掉落率`,

View File

@ -115,6 +115,8 @@ const _localTranslating = {
set_orb_state_locked: tp`${'orbs'}${'icon'}鎖定${'value'}`, set_orb_state_locked: tp`${'orbs'}${'icon'}鎖定${'value'}`,
set_orb_state_unlocked: tp`${'icon'}解除${'orbs'}的鎖定狀態`, set_orb_state_unlocked: tp`${'icon'}解除${'orbs'}的鎖定狀態`,
set_orb_state_bound: tp`無法消除${'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: tp`作為隊長進入地下城時,${'rate'}變為${'value'}`,
rate_multiply_drop: tp`${'icon'}怪物蛋掉落率`, rate_multiply_drop: tp`${'icon'}怪物蛋掉落率`,
rate_multiply_coin: tp`${'icon'}金幣掉落率`, rate_multiply_coin: tp`${'icon'}金幣掉落率`,

View File

@ -130,6 +130,8 @@ let localTranslating = {
set_orb_state_locked: tp`${'icon'}Locks ${'value'}${'orbs'}`, set_orb_state_locked: tp`${'icon'}Locks ${'value'}${'orbs'}`,
set_orb_state_unlocked: tp`${'icon'}Unlocks ${'orbs'}`, set_orb_state_unlocked: tp`${'icon'}Unlocks ${'orbs'}`,
set_orb_state_bound: tp`${'orbs'} are unmatchable`, 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: tp`${'rate'} ${'value'} when entering as leader`,
rate_multiply_drop: tp`${'icon'}Drop rate`, rate_multiply_drop: tp`${'icon'}Drop rate`,
rate_multiply_coin: tp`${'icon'}Coins`, rate_multiply_coin: tp`${'icon'}Coins`,
@ -1071,14 +1073,46 @@ const specialSearchFunctions = (function() {
} }
function lock_Addition(card) function lock_Addition(card)
{ {
const searchTypeArray = [152]; const searchTypeArray = [152, 190, 262];
const skill = getCardActiveSkill(card, searchTypeArray); const skills = getCardActiveSkills(card, searchTypeArray, true);
if (!skill) return; if (!skills.length) return;
const sk = skill.params; return skills.map(skill=>{
const fragment = document.createDocumentFragment(); const sk = skill.params;
fragment.appendChild(createSkillIcon('orb-locked')); const fragment = document.createDocumentFragment();
fragment.appendChild(createOrbsList(Bin.unflags(sk[0] || 1))); switch (skill.type) {
return fragment; 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) function dropLock_Addition(card)
{ {
@ -2454,11 +2488,27 @@ const specialSearchFunctions = (function() {
} }
} }
const fragment = document.createDocumentFragment(); const fragment = document.createDocumentFragment();
fragment.appendChild(document.createTextNode(`强化`)); fragment.appendChild(createSkillIcon('orb-enhanced'));
fragment.appendChild(createOrbsList(attrs)); fragment.appendChild(createOrbsList(attrs));
return fragment; 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"}, {name:"Bind self matchable",otLangName:{chs:"自封消珠 debuff",cht:"自封消珠 debuff"},
function:cards=>cards.filter(card=>{ function:cards=>cards.filter(card=>{
const searchTypeArray = [215]; const searchTypeArray = [215];

View File

@ -992,7 +992,7 @@ function counterAttack(attr, prob, value) {
return { kind: SkillKinds.CounterAttack, attr: attr, prob: prob, value: value }; return { kind: SkillKinds.CounterAttack, attr: attr, prob: prob, value: value };
} }
function setOrbState(orbs, state, arg) { 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) { function rateMultiply(value, rate) {
return { kind: SkillKinds.RateMultiply, value: value, rate: rate }; return { kind: SkillKinds.RateMultiply, value: value, rate: rate };
@ -1464,6 +1464,7 @@ const skillObjectParsers = {
autoPath(3), autoPath(3),
]; ];
}, },
[190](attrs, count) { return setOrbState(Bin.unflags(attrs), 'combo-drop', {count: v.constant(count)}); },
[191](turns) { [191](turns) {
return activeTurns(turns, voidEnemyBuff(['damage-void'])); return activeTurns(turns, voidEnemyBuff(['damage-void']));
@ -1729,6 +1730,7 @@ const skillObjectParsers = {
[259](percent) { return breakingShield(v.xShield(percent)); }, [259](percent) { return breakingShield(v.xShield(percent)); },
[260](skillStage, voiceId) { return skillPlayVoice(skillStage, voiceId); }, [260](skillStage, voiceId) { return skillPlayVoice(skillStage, voiceId); },
[261](percent) { return gravity(v.xCHP(percent), 'single'); }, [261](percent) { return gravity(v.xCHP(percent), 'single'); },
[262](count) { return setOrbState(Attributes.orbs(), 'nail', {count: v.constant(count)}); },
[263](turns, cap, attr, type) { //按属性改变伤害上限主动技 [263](turns, cap, attr, type) { //按属性改变伤害上限主动技
return activeTurns(turns, return activeTurns(turns,
increaseDamageCapacity(cap * 1e8, void 0, Bin.unflags(attr), Bin.unflags(type)) increaseDamageCapacity(cap * 1e8, void 0, Bin.unflags(attr), Bin.unflags(type))
@ -1801,7 +1803,7 @@ function renderSkillEntry(skills)
break; break;
} }
case SkillKinds.GenerateOrbs: { //产生珠子 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)); boardsBar.boards.forEach(board=>board.generateOrbs(orbs, count, exclude));
break; break;
} }
@ -2462,9 +2464,13 @@ function renderSkill(skill, option = {})
break; break;
} }
case SkillKinds.SetOrbState: { case SkillKinds.SetOrbState: {
let orbs = skill.orbs, state = skill.state, arg = skill.arg; const {orbs, state, arg} = skill;
let dict = { let dict = {
orbs: renderOrbs(orbs, {className: state, affix: true}), orbs: renderOrbs(orbs, {
//有的时候附加效果限制个数,这个附加图标加到文字里面的图标上面的去不好看也不准确,应该只加到面板里。
//className: state,
affix: true
}),
icon: createIcon('orb-' + state), icon: createIcon('orb-' + state),
}; };
switch (state) switch (state)
@ -2488,6 +2494,18 @@ function renderSkill(skill, option = {})
frg.ap(tsp.skill.set_orb_state_bound(dict)); frg.ap(tsp.skill.set_orb_state_bound(dict));
break; 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; break;
} }
@ -2911,6 +2929,8 @@ function renderAttrs(attrs, option = {}) {
function renderOrbs(attrs, option = {}) { function renderOrbs(attrs, option = {}) {
if (!Array.isArray(attrs)) if (!Array.isArray(attrs))
attrs = [attrs ?? 0]; attrs = [attrs ?? 0];
else
attrs = [...attrs];
const frg = document.createDocumentFragment(); const frg = document.createDocumentFragment();
if (typeof localTranslating == "undefined") return frg; if (typeof localTranslating == "undefined") return frg;
@ -2922,7 +2942,7 @@ function renderOrbs(attrs, option = {}) {
let attrBin = new Bin(attrs); let attrBin = new Bin(attrs);
if ((attrBin.int & 0b1111111111) == 0b1111111111) { //十种珠子 if ((attrBin.int & 0b1111111111) == 0b1111111111) { //十种珠子
frg.ap(tsp.orbs.all()); frg.ap(tsp.orbs.all());
attrs.length = 0; attrs.length = 0; //之前是引用,这里会导致数组被清空的错误
} else if ((attrBin.int & 0b11111) == 0b11111) { //基础5色 } else if ((attrBin.int & 0b11111) == 0b11111) { //基础5色
frg.ap(renderOrbs('_5color')); frg.ap(renderOrbs('_5color'));
attrBin = new Bin(attrBin.int & 0b1111100000); attrBin = new Bin(attrBin.int & 0b1111100000);

View File

@ -37339,11 +37339,11 @@ const cachesMap = new Map([
], ],
[ [
"script-json_data.js", "script-json_data.js",
"542e14ea40fb4e78f90b9042c9cab73e" "dfaedd802c88abd2dc04807133cd292c"
], ],
[ [
"script-skill-parser.js", "script-skill-parser.js",
"611d6dbe1cb34e394b466d5548413bb5" "1747fe828fc25e0394f82245eccca5c7"
], ],
[ [
"script-universal_function.js", "script-universal_function.js",
@ -37363,11 +37363,11 @@ const cachesMap = new Map([
], ],
[ [
"style-monsterimages.css", "style-monsterimages.css",
"27fbe6036d87bcbcba695b3855d6d175" "825aea31ea61e82142a634ccc7230d9f"
], ],
[ [
"style.css", "style.css",
"bf69ae63b86117783d918534b14b3a54" "0548eea7ac972f4bac0ffebf384a51e5"
], ],
[ [
"temp.js", "temp.js",
@ -37411,7 +37411,7 @@ const cachesMap = new Map([
], ],
[ [
"languages/zh-hans.js", "languages/zh-hans.js",
"71138b459d0d9851f2554e6336f32a98" "8552840a3934a8eee0d0e001419036d9"
], ],
[ [
"languages/zh-hant.css", "languages/zh-hant.css",
@ -37419,7 +37419,7 @@ const cachesMap = new Map([
], ],
[ [
"languages/zh-hant.js", "languages/zh-hant.js",
"677bd55683bbe9f7055523ed462db5b9" "3f4938a03f1d14544bd9da895126ed6c"
], ],
[ [
"images/attrs.png", "images/attrs.png",
@ -37571,7 +37571,7 @@ const cachesMap = new Map([
], ],
[ [
"images/icon-skills.png", "images/icon-skills.png",
"fae3e58d36a30373bf184d1c4b9e78d5" "9b5c57a64636cbfddffbb4549f5e6035"
], ],
[ [
"images/icon-switch-leader.png", "images/icon-switch-leader.png",

View File

@ -2075,7 +2075,7 @@
--icon-y-index: 1; --icon-y-index: 1;
} }
.orb.drop::before .orb.drop::before
{ { /* 珠子加掉率 */
content: ""; content: "";
--icon-y-index: 2; --icon-y-index: 2;
} }
@ -2083,11 +2083,20 @@
{ {
filter:brightness(0.8); filter:brightness(0.8);
} }
.orb.bound::before .orb.enhanced::after
{ {
content: ""; content: "";
--icon-y-index: 3; --icon-y-index: 0;
animation: hidden-visible-animate 0.8s infinite ease-out alternate; }
.orb.combo-drop::before
{ /* 有豆荚的珠子 */
content: "";
--icon-y-index: 5;
}
.orb.nail::before
{ /* 有豆荚的珠子 */
content: "";
--icon-y-index: 6;
} }
.orb[data-orb-icon='_5color'] .orb[data-orb-icon='_5color']

View File

@ -5037,6 +5037,10 @@ body.external-link-support #external-support{
width: 72px; width: 72px;
background-position-y:calc(-36px * 43); 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"] { .card-skill-list .play-voice [data-awoken-icon="63"] {
cursor: pointer; cursor: pointer;