添加新技能解析
This commit is contained in:
parent
29a745e4bb
commit
dc01d105cb
Binary file not shown.
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 74 KiB |
Binary file not shown.
Before Width: | Height: | Size: 210 KiB After Width: | Height: | Size: 211 KiB |
|
@ -78,6 +78,7 @@ const _localTranslating = {
|
|||
unbind_awakenings: tp`${'icon'}觉醒无效`,
|
||||
unbind_matches: tp`${'icon'}无法消除宝珠`,
|
||||
bind_skill: tp`${'icon'}自身无法使用技能`,
|
||||
bind_card: tp`卡片自身${'icon'}变为封锁状态`,
|
||||
defense_break: tp`${'icon'}敌方的防御力减少${'value'}`,
|
||||
poison: tp`${'icon'}使${'target'}中毒,每回合损失${'belong_to'} ${'value'} 的 ${'stats'}`,
|
||||
time_extend: tp`${'icon'}宝珠移动时间 ${'value'}`,
|
||||
|
@ -136,7 +137,7 @@ const _localTranslating = {
|
|||
obstruct_opponent_before_me: tp`排名比自身高的对手`,
|
||||
obstruct_opponent_designated_position: tp`第${'positions'}排位的对手`,
|
||||
slot_power_up: tp`${'targets'}的${'icon'}${'value'}`,
|
||||
increase_damage_cap: tp`${'targets'}的${'icon'}伤害上限变为${'cap'}`,
|
||||
increase_damage_cap: tp`${'targets'}${'icon'}伤害上限变为${'cap'}`,
|
||||
board_jamming_state: tp`在${'position'}生成${'icon'}${'state'}${'size'}${'count'}${'comment'}`,
|
||||
board_size_change: tp`板面大小改变为${'icon'}${'size'}`,
|
||||
remove_assist: tp`${'icon'}移除自身的辅助宠物(直到地下城结束)`,
|
||||
|
@ -221,6 +222,8 @@ const _localTranslating = {
|
|||
sub_members: tp`队员`,
|
||||
leader_self: tp`左边队长`,
|
||||
leader_helper: tp`右边队长`,
|
||||
left_neighbor: tp`左邻角色`,
|
||||
right_neighbor: tp`右邻角色`,
|
||||
collab_id: tp`合作ID为${'id'}的角色`,
|
||||
gacha_id: tp`抽蛋ID为${'id'}的角色`,
|
||||
enemy: tp`敌人`,
|
||||
|
|
|
@ -77,7 +77,7 @@ const _localTranslating = {
|
|||
unbind_normal: tp`${'icon'}封鎖`,
|
||||
unbind_awakenings: tp`${'icon'}覺醒無效`,
|
||||
unbind_matches: tp`${'icon'}無法消除寶珠`,
|
||||
bind_skill: tp`${'icon'}自身無法使用技能`,
|
||||
bind_skill: tp`卡片自身${'icon'}變為封鎖狀態`,
|
||||
defense_break: tp`${'icon'}敵方的防禦力減少${'value'}`,
|
||||
poison: tp`${'icon'}使${'target'}中毒,每回合損失${'belong_to'} ${'value'} 的 ${'stats'}`,
|
||||
time_extend: tp`${'icon'}寶珠移動時間 ${'value'}`,
|
||||
|
@ -136,7 +136,7 @@ const _localTranslating = {
|
|||
obstruct_opponent_before_me: tp`排名比自身高的對手`,
|
||||
obstruct_opponent_designated_position: tp`第${'positions'}排位的對手`,
|
||||
slot_power_up: tp`${'targets'}的${'icon'}${'value'}`,
|
||||
increase_damage_cap: tp`${'targets'}的${'icon'}傷害上限變為${'cap'}`,
|
||||
increase_damage_cap: tp`${'targets'}${'icon'}傷害上限變為${'cap'}`,
|
||||
board_jamming_state: tp`在${'position'}生成${'icon'}${'state'}${'size'}${'count'}${'comment'}`,
|
||||
board_size_change: tp`板面大小改變為${'icon'}${'size'}`,
|
||||
remove_assist: tp`${'icon'}移除自身的輔助寵物(直到地下城結束)`,
|
||||
|
@ -221,6 +221,8 @@ const _localTranslating = {
|
|||
sub_members: tp`隊員`,
|
||||
leader_self: tp`左邊隊長`,
|
||||
leader_helper: tp`右邊隊長`,
|
||||
left_neighbor: tp`左鄰角色`,
|
||||
right_neighbor: tp`右鄰角色`,
|
||||
collab_id: tp`合作ID為${'id'}的角色`,
|
||||
gacha_id: tp`抽蛋ID為${'id'}的角色`,
|
||||
enemy: tp`敵人`,
|
||||
|
|
|
@ -93,6 +93,7 @@ let localTranslating = {
|
|||
unbind_awakenings: tp`${'icon'}Awoken bind`,
|
||||
unbind_matches: tp`${'icon'}Unmatchable orb`,
|
||||
bind_skill: tp`${'icon'}Unable to use skills`,
|
||||
bind_card: tp`${'icon'}Bind the card itself`,
|
||||
defense_break: tp`${'icon'}Reduce enemy defense by ${'value'}`,
|
||||
poison: tp`${'icon'}Poisons ${'target'}, reduce ${'stats'} with ${'belong_to'} ${'value'} per turns`,
|
||||
time_extend: tp`${'icon'}Orb move time ${'value'}`,
|
||||
|
@ -150,7 +151,7 @@ let localTranslating = {
|
|||
obstruct_opponent_after_me: tp`The opponent ranked lower than me`,
|
||||
obstruct_opponent_before_me: tp`The opponent ranked higher than me`,
|
||||
obstruct_opponent_designated_position: tp`No.${'positions'} ranked opponents`,
|
||||
slot_power_up: tp`The slot of ${'targets'} ${'icon'}${'value'}`,
|
||||
slot_power_up: tp`The slot of [${'targets'}]'s ${'icon'}${'value'}`,
|
||||
increase_damage_cap: tp`The ${'icon'}damage cap of ${'targets'} is change to ${'cap'}`,
|
||||
board_jamming_state: tp`Creates ${'count'} ${'icon'}${'state'} ${'size'} at ${'position'}${'comment'}`,
|
||||
board_size_change: tp`Board size changed to ${'icon'}${'size'}`,
|
||||
|
@ -236,6 +237,8 @@ let localTranslating = {
|
|||
sub_members: tp`sub-members`,
|
||||
leader_self: tp`left leader`,
|
||||
leader_helper: tp`right leader`,
|
||||
left_neighbor: tp`left neighbor`,
|
||||
right_neighbor: tp`left neighbor`,
|
||||
collab_id: tp`Cards with Collaboration ID of ${'id'} `,
|
||||
gacha_id: tp`Cards with Egg Machine ID of ${'id'} `,
|
||||
enemy: tp`Enemy`,
|
||||
|
@ -1222,22 +1225,21 @@ const specialSearchFunctions = (function() {
|
|||
}
|
||||
function memberATK_Addition(card)
|
||||
{
|
||||
const searchTypeArray = [230];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
if (!skill) return;
|
||||
const sk = skill.params;
|
||||
const fragment = document.createDocumentFragment();
|
||||
fragment.appendChild(createTeamFlags(sk[1]));
|
||||
let str = '';
|
||||
str +=`${sk[2] / 100}倍×${sk[0]}T`;
|
||||
fragment.appendChild(document.createTextNode(str));
|
||||
return fragment;
|
||||
const searchTypeArray = [230, 269];
|
||||
const skills = getCardActiveSkills(card, searchTypeArray);
|
||||
return skills.map(skill=>{
|
||||
const sk = skill.params;
|
||||
const fragment = document.createDocumentFragment();
|
||||
fragment.appendChild(createTeamFlags(sk[1], skill.type == 269 ? 2 : 1));
|
||||
fragment.append(`${sk[2] / 100}倍×${sk[0]}T`);
|
||||
return fragment;
|
||||
}).nodeJoin(document.createElement("br"));
|
||||
}
|
||||
function getIncreaseDamageCap(skill)
|
||||
{
|
||||
let cap = 0;
|
||||
switch (skill.type) {
|
||||
case 241:case 258:case 263:
|
||||
case 241:case 258:case 263:case 266:
|
||||
cap = skill.params[1];
|
||||
break;
|
||||
case 246:
|
||||
|
@ -1251,56 +1253,58 @@ const specialSearchFunctions = (function() {
|
|||
}
|
||||
function memberCap_Addition(card)
|
||||
{
|
||||
const searchTypeArray = [241, 246, 247, 258, 263];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
if (!skill) return;
|
||||
const sk = skill.params;
|
||||
let cap = getIncreaseDamageCap(skill);
|
||||
|
||||
const fragment = document.createDocumentFragment();
|
||||
switch (skill.type) {
|
||||
case 258: {
|
||||
fragment.appendChild(createTeamFlags(sk[2]));
|
||||
break;
|
||||
}
|
||||
case 241:
|
||||
case 246:
|
||||
case 247: {
|
||||
fragment.appendChild(createTeamFlags(1));
|
||||
break;
|
||||
}
|
||||
case 263: {
|
||||
const attrs = Bin.unflags(sk[2]);
|
||||
if (attrs?.length)
|
||||
{
|
||||
fragment.appendChild(createOrbsList(attrs));
|
||||
const searchTypeArray = [241, 246, 247, 258, 263, 266];
|
||||
const skills = getCardActiveSkills(card, searchTypeArray);
|
||||
return skills.map(skill=>{
|
||||
const sk = skill.params;
|
||||
let cap = getIncreaseDamageCap(skill);
|
||||
const fragment = document.createDocumentFragment();
|
||||
switch (skill.type) {
|
||||
case 258:
|
||||
case 266: {
|
||||
fragment.appendChild(createTeamFlags(sk[2], skill.type == 266 ? 2 : 1));
|
||||
break;
|
||||
}
|
||||
const types = Bin.unflags(sk[3]);
|
||||
if (types?.length)
|
||||
{
|
||||
fragment.appendChild(createTypesList(types));
|
||||
case 241:
|
||||
case 246:
|
||||
case 247: {
|
||||
fragment.appendChild(createTeamFlags(1));
|
||||
break;
|
||||
}
|
||||
case 263: {
|
||||
const attrs = Bin.unflags(sk[2]);
|
||||
if (attrs?.length)
|
||||
{
|
||||
fragment.appendChild(createOrbsList(attrs));
|
||||
}
|
||||
const types = Bin.unflags(sk[3]);
|
||||
if (types?.length)
|
||||
{
|
||||
fragment.appendChild(createTypesList(types));
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
//fragment.append(createSkillIcon(SkillKinds.IncreaseDamageCapacity, cap > 21 ? "cap-incr" : "cap-decr"));
|
||||
switch (skill.type) {
|
||||
case 258:
|
||||
case 241:
|
||||
case 263: {
|
||||
fragment.append(`${(cap*1e8).bigNumberToString()}×${sk[0]}T`);
|
||||
break;
|
||||
//fragment.append(createSkillIcon(SkillKinds.IncreaseDamageCapacity, cap > 21 ? "cap-incr" : "cap-decr"));
|
||||
switch (skill.type) {
|
||||
case 258:
|
||||
case 241:
|
||||
case 263:
|
||||
case 266: {
|
||||
fragment.append(`${(cap*1e8).bigNumberToString()}×${sk[0]}T`);
|
||||
break;
|
||||
}
|
||||
case 246: {
|
||||
fragment.append(`${(cap*1e8).bigNumberToString()}←${sk[1]}C in ${sk[0]}S`);
|
||||
break;
|
||||
}
|
||||
case 247: {
|
||||
fragment.append(`${(cap*1e8).bigNumberToString()}←${sk[2]} of `, createOrbsList(Bin.unflags(sk[1])), ` in ${sk[0]}S`);
|
||||
break;
|
||||
}
|
||||
}
|
||||
case 246: {
|
||||
fragment.append(`${(cap*1e8).bigNumberToString()}←${sk[1]}C in ${sk[0]}S`);
|
||||
break;
|
||||
}
|
||||
case 247: {
|
||||
fragment.append(`${(cap*1e8).bigNumberToString()}←${sk[2]} of `, createOrbsList(Bin.unflags(sk[1])), ` in ${sk[0]}S`);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return fragment;
|
||||
return fragment;
|
||||
}).nodeJoin(document.createElement("br"));
|
||||
}
|
||||
function dixedDamage_Addition(card)
|
||||
{
|
||||
|
@ -1848,7 +1852,7 @@ const specialSearchFunctions = (function() {
|
|||
{group:true,name:"Increase Damage Cap",otLangName:{chs:"增加伤害上限",cht:"增加傷害上限"}, functions: [
|
||||
{name:"Increase Damage Cap - Any",otLangName:{chs:"增加伤害上限 - 任意",cht:"增加傷害上限 - 任意"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [241, 246, 247, 258, 263];
|
||||
const searchTypeArray = [241, 246, 247, 258, 263, 266];
|
||||
return cards.filter(card=>{
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill;
|
||||
|
@ -1862,11 +1866,20 @@ const specialSearchFunctions = (function() {
|
|||
},
|
||||
{name:"Increase Damage Cap - Self",otLangName:{chs:"增加伤害上限 - 自身",cht:"增加傷害上限 - 自身"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [241, 246, 247, 258];
|
||||
const searchTypeArray = [241, 246, 247, 258, 266];
|
||||
return cards.filter(card=>{
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
if (skill?.type === 258) return Boolean(skill.params[2] & 0b1);
|
||||
else return skill;
|
||||
switch (skill?.type) {
|
||||
case 258: {
|
||||
return Boolean(skill.params[2] & 0b1);
|
||||
}
|
||||
case 266: {
|
||||
return Boolean(skill.params[2] & 0b100);
|
||||
}
|
||||
default: {
|
||||
return skill;
|
||||
}
|
||||
}
|
||||
}).sort((a,b)=>{
|
||||
const a_ss = getCardActiveSkill(a, searchTypeArray), b_ss = getCardActiveSkill(b, searchTypeArray);
|
||||
let a_pC = getIncreaseDamageCap(a_ss), b_pC = getIncreaseDamageCap(b_ss);
|
||||
|
@ -1880,7 +1893,7 @@ const specialSearchFunctions = (function() {
|
|||
const searchTypeArray = [258];
|
||||
return cards.filter(card=>{
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill && Boolean(skill.params[2] & (0b10 | 0b100));
|
||||
return skill && Boolean(skill.params[2] & 0b110);
|
||||
}).sort((a,b)=>{
|
||||
const a_ss = getCardActiveSkill(a, searchTypeArray), b_ss = getCardActiveSkill(b, searchTypeArray);
|
||||
let a_pC = getIncreaseDamageCap(a_ss), b_pC = getIncreaseDamageCap(b_ss);
|
||||
|
@ -1903,6 +1916,20 @@ const specialSearchFunctions = (function() {
|
|||
},
|
||||
addition:memberCap_Addition
|
||||
},
|
||||
{name:"Increase Damage Cap - Neighbor",otLangName:{chs:"增加伤害上限 - 相邻",cht:"增加傷害上限 - 相鄰"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [266];
|
||||
return cards.filter(card=>{
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill && Boolean(skill.params[2] & 0b11);
|
||||
}).sort((a,b)=>{
|
||||
const a_ss = getCardActiveSkill(a, searchTypeArray), b_ss = getCardActiveSkill(b, searchTypeArray);
|
||||
let a_pC = getIncreaseDamageCap(a_ss), b_pC = getIncreaseDamageCap(b_ss);
|
||||
return a_pC - b_pC;
|
||||
});
|
||||
},
|
||||
addition:memberCap_Addition
|
||||
},
|
||||
{name:"Increase Damage Cap - Attr./Types",otLangName:{chs:"增加伤害上限 - 属性/类型",cht:"增加傷害上限 - 屬性/類型"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [263];
|
||||
|
@ -1918,10 +1945,10 @@ const specialSearchFunctions = (function() {
|
|||
addition:memberCap_Addition
|
||||
},
|
||||
]},
|
||||
{group:true,name:"Member ATK rate change",otLangName:{chs:"队员攻击力",cht:"隊員攻擊力"}, functions: [
|
||||
{name:"Member ATK rate change - Any",otLangName:{chs:"队员攻击力 - 任意",cht:"隊員攻擊力 - 任意"},
|
||||
{group:true,name:"Card slot ATK rate change",otLangName:{chs:"卡片位置攻击力",cht:"卡片位置攻擊力"}, functions: [
|
||||
{name:"Card slot ATK rate change - Any",otLangName:{chs:"卡片位置攻击力 - 任意",cht:"卡片位置攻擊力 - 任意"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [230];
|
||||
const searchTypeArray = [230, 269];
|
||||
return cards.filter(card=>{
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill;
|
||||
|
@ -1929,27 +1956,37 @@ const specialSearchFunctions = (function() {
|
|||
},
|
||||
addition:memberATK_Addition
|
||||
},
|
||||
{name:"Member ATK rate change - Self",otLangName:{chs:"队员攻击力 - 自身",cht:"隊員攻擊力 - 自身"},
|
||||
{name:"Card slot ATK rate change - Self",otLangName:{chs:"卡片位置攻击力 - 自身",cht:"卡片位置攻擊力 - 自身"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [230];
|
||||
const searchTypeArray = [230, 269];
|
||||
return cards.filter(card=>{
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill && Boolean(skill.params[1] & 0b1);
|
||||
switch (skill?.type) {
|
||||
case 230: {
|
||||
return Boolean(skill.params[1] & 0b1);
|
||||
}
|
||||
case 269: {
|
||||
return Boolean(skill.params[1] & 0b100);
|
||||
}
|
||||
default: {
|
||||
return skill;
|
||||
}
|
||||
}
|
||||
}).sort((a,b)=>sortByParams(a, b, searchTypeArray, 2));
|
||||
},
|
||||
addition:memberATK_Addition
|
||||
},
|
||||
{name:"Member ATK rate change - Leader",otLangName:{chs:"队员攻击力 - 队长",cht:"隊員攻擊力 - 隊長"},
|
||||
{name:"Card slot ATK rate change - Leader",otLangName:{chs:"卡片位置攻击力 - 队长",cht:"卡片位置攻擊力 - 隊長"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [230];
|
||||
return cards.filter(card=>{
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill && Boolean(skill.params[1] & (0b10 | 0b100));
|
||||
return skill && Boolean(skill.params[1] & 0b110);
|
||||
}).sort((a,b)=>sortByParams(a, b, searchTypeArray, 2));
|
||||
},
|
||||
addition:memberATK_Addition
|
||||
},
|
||||
{name:"Member ATK rate change - Sub",otLangName:{chs:"队员攻击力 - 队员",cht:"隊員攻擊力 - 隊員"},
|
||||
{name:"Card slot ATK rate change - Sub",otLangName:{chs:"卡片位置攻击力 - 队员",cht:"卡片位置攻擊力 - 隊員"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [230];
|
||||
return cards.filter(card=>{
|
||||
|
@ -1959,8 +1996,18 @@ const specialSearchFunctions = (function() {
|
|||
},
|
||||
addition:memberATK_Addition
|
||||
},
|
||||
{name:"Card slot ATK rate change - Neighbor",otLangName:{chs:"卡片位置攻击力 - 相邻",cht:"卡片位置攻擊力 - 相鄰"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [269];
|
||||
return cards.filter(card=>{
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill && Boolean(skill.params[1] & 0b11);
|
||||
}).sort((a,b)=>sortByParams(a, b, searchTypeArray, 2));
|
||||
},
|
||||
addition:memberATK_Addition
|
||||
},
|
||||
]},
|
||||
{name:"Change self's Attr",otLangName:{chs:"转换自身属性",cht:"轉換自身屬性"},
|
||||
{name:"Change card self's Attr",otLangName:{chs:"转换自身属性",cht:"轉換自身屬性"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [142];
|
||||
return cards.filter(card=>{
|
||||
|
@ -1982,27 +2029,6 @@ const specialSearchFunctions = (function() {
|
|||
return fragment;
|
||||
}
|
||||
},
|
||||
{name:"Bind self active skill",otLangName:{chs:"自封技能 debuff",cht:"自封技能 debuff"},
|
||||
function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [214];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill;
|
||||
}),
|
||||
addition:card=>{
|
||||
const searchTypeArray = [214];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
if (!skill) return;
|
||||
const sk = skill.params;
|
||||
return document.createTextNode(`自封技${sk[0]}T`);
|
||||
}
|
||||
},
|
||||
{name:"Remove assist",otLangName:{chs:"移除武器",cht:"移除武器"},
|
||||
function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [250];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill;
|
||||
})
|
||||
},
|
||||
{name:"↓Reduce skills charge",otLangName:{chs:"【坐】增加CD",cht:"【坐】增加CD"},
|
||||
function:cards=>{
|
||||
const searchTypeArray = [218];
|
||||
|
@ -2022,6 +2048,41 @@ const specialSearchFunctions = (function() {
|
|||
return fragment;
|
||||
}
|
||||
},
|
||||
{name:"Bind team active skill",otLangName:{chs:"自封队伍技能 debuff",cht:"自封队伍技能 debuff"},
|
||||
function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [214];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill;
|
||||
}),
|
||||
addition:card=>{
|
||||
const searchTypeArray = [214];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
if (!skill) return;
|
||||
const sk = skill.params;
|
||||
return document.createTextNode(`自封技${sk[0]}T`);
|
||||
}
|
||||
},
|
||||
{name:"Bind card self",otLangName:{chs:"角色自身被绑定",cht:"角色自身被綁定"},
|
||||
function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [267];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill;
|
||||
}),
|
||||
addition:card=>{
|
||||
const searchTypeArray = [267];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
if (!skill) return;
|
||||
const sk = skill.params;
|
||||
return document.createTextNode(`自绑定${sk[0]}T`);
|
||||
}
|
||||
},
|
||||
{name:"Remove card self's assist",otLangName:{chs:"移除卡片武器",cht:"移除卡片武器"},
|
||||
function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [250];
|
||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||
return skill;
|
||||
})
|
||||
},
|
||||
]},
|
||||
{group:true,name:"Player's HP change",otLangName:{chs:"玩家HP操纵类",cht:"玩家HP操縱類"}, functions: [
|
||||
{name:"Heal after turn",otLangName:{chs:"回合结束回血 buff",cht:"回合結束回血 buff"},
|
||||
|
|
|
@ -386,6 +386,11 @@ class Board
|
|||
}
|
||||
}
|
||||
|
||||
const SkillTarget = {
|
||||
type1: ["self","leader-self","leader-helper","sub-members"],
|
||||
type2: ["right-neighbor","left-neighbor","self"],
|
||||
};
|
||||
|
||||
const SkillValue = {
|
||||
isLess: function (value) {
|
||||
if (value.kind === SkillValueKind.Percent) return value.value < 1;
|
||||
|
@ -449,6 +454,7 @@ const SkillKinds = {
|
|||
BoardChange: "board-change",
|
||||
Unbind: "unbind",
|
||||
BindSkill: "bind-skill",
|
||||
BindCard: "bind-card",
|
||||
RandomSkills: "random-skills",
|
||||
EvolvedSkills: "evolved-skills",
|
||||
SkillProviso: "skill-proviso",
|
||||
|
@ -1008,6 +1014,7 @@ function unbind(normal, awakenings, matches) {
|
|||
return { kind: SkillKinds.Unbind, normal: normal, awakenings: awakenings , matches: matches};
|
||||
}
|
||||
function bindSkill() { return { kind: SkillKinds.BindSkill}; }
|
||||
function bindCard() { return { kind: SkillKinds.BindCard}; }
|
||||
function boardChange(attrs) {
|
||||
return { kind: SkillKinds.BoardChange, attrs: attrs };
|
||||
}
|
||||
|
@ -1592,8 +1599,9 @@ const skillObjectParsers = {
|
|||
[229](attrs, types, hp, atk, rcv) {
|
||||
return powerUp(null, null, p.scaleStateKind(null, Bin.unflags(attrs), Bin.unflags(types), p.mul({hp: hp || 0, atk: atk || 0, rcv: rcv || 0})));
|
||||
},
|
||||
//按位置增伤主动技1
|
||||
[230](turns, target, mul) {
|
||||
const targetTypes = ["self","leader-self","leader-helper","sub-members"];
|
||||
const targetTypes = SkillTarget.type1;
|
||||
const typeArr = Bin.unflags(target).map(n => targetTypes[n]);
|
||||
return activeTurns(turns,
|
||||
slotPowerUp(p.mul({ atk: mul }), typeArr)
|
||||
|
@ -1641,7 +1649,7 @@ const skillObjectParsers = {
|
|||
);
|
||||
},
|
||||
[241](turns, cap) { //改变伤害上限主动技
|
||||
// const targetTypes = ["self","leader-self","leader-helper","sub-members"];
|
||||
// const targetTypes = SkillTarget.type1;
|
||||
// const typeArr = Bin.unflags(target).map(n => targetTypes[n]);
|
||||
return activeTurns(turns,
|
||||
increaseDamageCapacity(cap * 1e8, ["self"])
|
||||
|
@ -1726,9 +1734,9 @@ const skillObjectParsers = {
|
|||
autoPath(5),
|
||||
];
|
||||
},
|
||||
|
||||
//按位置改变伤害上限主动技1
|
||||
[258](turns, cap, target) { //改变伤害上限主动技
|
||||
const targetTypes = ["self","leader-self","leader-helper","sub-members"];
|
||||
const targetTypes = SkillTarget.type1;
|
||||
const typeArr = Bin.unflags(target).map(n => targetTypes[n]);
|
||||
return activeTurns(turns,
|
||||
increaseDamageCapacity(cap * 1e8, typeArr)
|
||||
|
@ -1745,9 +1753,26 @@ const skillObjectParsers = {
|
|||
},
|
||||
[264](mul) { return rateMultiply(v.percent(mul), 'plus_point'); },
|
||||
[265](mul) { return rateMultiply(v.percent(mul), 'part_break'); },
|
||||
|
||||
//按位置改变伤害上限主动技2
|
||||
[266](turns, cap, target) {
|
||||
const targetTypes = SkillTarget.type2;
|
||||
const typeArr = Bin.unflags(target).map(n => targetTypes[n]);
|
||||
return activeTurns(turns,
|
||||
increaseDamageCapacity(cap * 1e8, typeArr)
|
||||
);
|
||||
},
|
||||
//卡片自绑定
|
||||
[267](turns) {return activeTurns(turns, bindCard()); },
|
||||
//限制技能使用次数
|
||||
[268](turns) { return timesLimit(turns); },
|
||||
//按位置增伤主动技2
|
||||
[269](turns, target, mul) {
|
||||
const targetTypes = SkillTarget.type2;
|
||||
const typeArr = Bin.unflags(target).map(n => targetTypes[n]);
|
||||
return activeTurns(turns,
|
||||
slotPowerUp(p.mul({ atk: mul }), typeArr)
|
||||
);
|
||||
},
|
||||
//一回合内使用几次技能才有倍率的队长技。
|
||||
[270](times, atk, rcv) { { return powerUp(Bin.unflags(31), null, p.mul({ atk: atk || 100, rcv: rcv || 100 }), c.useSkill(times)); } },
|
||||
|
||||
|
@ -2255,6 +2280,13 @@ function renderSkill(skill, option = {})
|
|||
frg.ap(tsp.skill.bind_skill(dict));
|
||||
break;
|
||||
}
|
||||
case SkillKinds.BindCard: {
|
||||
let dict = {
|
||||
icon: createIcon(skill.kind)
|
||||
};
|
||||
frg.ap(tsp.skill.bind_card(dict));
|
||||
break;
|
||||
}
|
||||
case SkillKinds.BoardChange: { //洗版
|
||||
const attrs = skill.attrs;
|
||||
let dict = {
|
||||
|
@ -2569,7 +2601,7 @@ function renderSkill(skill, option = {})
|
|||
targetDict.target = document.createDocumentFragment();
|
||||
|
||||
//增加队员伤害的技能的目标,删选出来,其他的目标则不显示
|
||||
const targetTypes = ["self","leader-self","leader-helper","sub-members"];
|
||||
const targetTypes = SkillTarget.type1.concat(SkillTarget.type2);
|
||||
let atkUpTarget = targets.filter(n=>targetTypes.includes(n));
|
||||
if (atkUpTarget.length) {
|
||||
targetDict.target.appendChild(createTeamFlags(atkUpTarget));
|
||||
|
@ -2745,11 +2777,11 @@ function renderSkill(skill, option = {})
|
|||
targetDict.target = document.createDocumentFragment();
|
||||
|
||||
//增加队员伤害的技能的目标,删选出来,其他的目标则不显示
|
||||
const targetTypes = ["self","leader-self","leader-helper","sub-members"];
|
||||
let atkUpTarget = targets.filter(n=>targetTypes.includes(n));
|
||||
if (atkUpTarget.length) {
|
||||
targetDict.target.appendChild(createTeamFlags(atkUpTarget));
|
||||
}
|
||||
// const targetTypes = SkillTarget.type1;
|
||||
// let atkUpTarget = targets.filter(n=>targetTypes.includes(n));
|
||||
// if (atkUpTarget.length) {
|
||||
targetDict.target.appendChild(createTeamFlags(targets));
|
||||
// }
|
||||
|
||||
targetDict.target.appendChild(targets.map(target=>
|
||||
tsp?.target[target.replaceAll("-","_")]?.())
|
||||
|
|
|
@ -1189,7 +1189,7 @@ function cardN(id) {
|
|||
}
|
||||
|
||||
//产生队伍目标类型
|
||||
function createTeamFlags(target)
|
||||
function createTeamFlags(target, type)
|
||||
{
|
||||
const ul = document.createElement("ul");
|
||||
ul.className = "team-flags";
|
||||
|
@ -1197,7 +1197,7 @@ function createTeamFlags(target)
|
|||
const li = ul.appendChild(document.createElement("li"));
|
||||
li.className = "team-member-icon";
|
||||
}
|
||||
const targetTypes = ["self","leader-self","leader-helper","sub-members"];
|
||||
const targetTypes = type == 2 ? SkillTarget.type2 : SkillTarget.type1;
|
||||
|
||||
let _target = [];
|
||||
if (Number.isInteger(target)) {
|
||||
|
|
68
script.js
68
script.js
|
@ -565,15 +565,15 @@ class LeaderSkillType_MatchingStyle {
|
|||
this.#flags = arg;
|
||||
}
|
||||
}
|
||||
get multipleAttr(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 0)}
|
||||
get rowMatch(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 1)}
|
||||
get combo(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 2)}
|
||||
get sameColor(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 3)}
|
||||
get LShape(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 4)}
|
||||
get crossMatch(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 5)}
|
||||
get heartCrossMatch(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 6)}
|
||||
get remainOrbs(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 7)}
|
||||
get enhanced5Orbs(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 8)}
|
||||
get multipleAttr(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 0)}
|
||||
get rowMatch(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 1)}
|
||||
get combo(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 2)}
|
||||
get sameColor(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 3)}
|
||||
get LShape(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 4)}
|
||||
get crossMatch(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 5)}
|
||||
get heartCrossMatch(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 6)}
|
||||
get remainOrbs(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 7)}
|
||||
get enhanced5Orbs(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 8)}
|
||||
}
|
||||
class LeaderSkillType_Restriction_Bind {
|
||||
#card = null;
|
||||
|
@ -585,16 +585,16 @@ class LeaderSkillType_Restriction_Bind {
|
|||
this.#flags = arg;
|
||||
}
|
||||
}
|
||||
get attrEnhance(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 9)}
|
||||
get typeEnhance(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 10)}
|
||||
get board7x6(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 11)}
|
||||
get noSkyfall(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 12)}
|
||||
get HpRange(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 13)}
|
||||
get useSkill(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 14)}
|
||||
get moveTimeDecrease_Fixed(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 15)}
|
||||
get minMatchLen(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 16)}
|
||||
get specialTeam(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 17)}
|
||||
get effectWhenRecover(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 18)}
|
||||
get attrEnhance(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 9)}
|
||||
get typeEnhance(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 10)}
|
||||
get board7x6(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 11)}
|
||||
get noSkyfall(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 12)}
|
||||
get HpRange(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 13)}
|
||||
get useSkill(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 14)}
|
||||
get moveTimeDecrease_Fixed(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 15)}
|
||||
get minMatchLen(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 16)}
|
||||
get specialTeam(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 17)}
|
||||
get effectWhenRecover(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 18)}
|
||||
}
|
||||
class LeaderSkillType_ExtraEffects {
|
||||
#card = null;
|
||||
|
@ -606,21 +606,21 @@ class LeaderSkillType_ExtraEffects {
|
|||
this.#flags = arg;
|
||||
}
|
||||
}
|
||||
get addCombo(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 21)}
|
||||
get fixedFollowAttack(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 22)}
|
||||
get scaleFollowAttack(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 23)}
|
||||
get reduce49down(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 24)}
|
||||
get reduce50(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 25)}
|
||||
get reduce51up(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 26)}
|
||||
get moveTimeIncrease(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 20)}
|
||||
get rateMultiplyExp_Coin(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 27)}
|
||||
get rateMultiplyDrop(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 28)}
|
||||
get voidPoison(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 29)}
|
||||
get counterAttack(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 30)}
|
||||
get autoHeal(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 31)}
|
||||
get unbindAwokenBind(){return Boolean(this.#card?.searchFlags?.[0] ?? this.#flags[0] & 1 << 19)}
|
||||
get resolve(){return Boolean(this.#card?.searchFlags?.[1] ?? this.#flags[1] & 1 << 0)}
|
||||
get predictionFalling(){return Boolean(this.#card?.searchFlags?.[1] ?? this.#flags[1] & 1 << 1)}
|
||||
get addCombo(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 21)}
|
||||
get fixedFollowAttack(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 22)}
|
||||
get scaleFollowAttack(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 23)}
|
||||
get reduce49down(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 24)}
|
||||
get reduce50(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 25)}
|
||||
get reduce51up(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 26)}
|
||||
get moveTimeIncrease(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 20)}
|
||||
get rateMultiplyExp_Coin(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 27)}
|
||||
get rateMultiplyDrop(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 28)}
|
||||
get voidPoison(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 29)}
|
||||
get counterAttack(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 30)}
|
||||
get autoHeal(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 31)}
|
||||
get unbindAwokenBind(){return Boolean((this.#card?.searchFlags?.[0] ?? this.#flags[0]) & 1 << 19)}
|
||||
get resolve(){return Boolean((this.#card?.searchFlags?.[1] ?? this.#flags[1]) & 1 << 0)}
|
||||
get predictionFalling(){return Boolean((this.#card?.searchFlags?.[1] ?? this.#flags[1]) & 1 << 1)}
|
||||
}
|
||||
class Team extends Array {
|
||||
badge = 0;
|
||||
|
|
|
@ -44207,19 +44207,19 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"script-json_data.js",
|
||||
"8538e25e7f6f4e8e08b14282db6ea654"
|
||||
"37e68450ecb7140ba93515f30fca6dc1"
|
||||
],
|
||||
[
|
||||
"script-skill-parser.js",
|
||||
"78597abdac6c0bfccc19919c5312ece1"
|
||||
"228086552199fc6bb7eea0fe64f5feea"
|
||||
],
|
||||
[
|
||||
"script-universal_function.js",
|
||||
"b86853117fb96211b6b1da2996cdb81e"
|
||||
"0bdc4d583774cd51cf302f7709cc3fb7"
|
||||
],
|
||||
[
|
||||
"script.js",
|
||||
"2e05c86aea3bb9b54e22dd07b9723c4b"
|
||||
"270447ead17c33194fb0525cab9744f7"
|
||||
],
|
||||
[
|
||||
"solo.html",
|
||||
|
@ -44235,7 +44235,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"style.css",
|
||||
"1b21675a9c3b07e2913c03d42b7fa65e"
|
||||
"f634fa900250a1e745b551a9302e8856"
|
||||
],
|
||||
[
|
||||
"temp.js",
|
||||
|
@ -44279,7 +44279,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"languages/zh-hans.js",
|
||||
"7b62458760e344526b07c586302333aa"
|
||||
"92cc36747ac4440bdc45a1eba6ab4be7"
|
||||
],
|
||||
[
|
||||
"languages/zh-hant.css",
|
||||
|
@ -44287,7 +44287,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"languages/zh-hant.js",
|
||||
"846cbeec8fc7202ae889f93cdcb089cf"
|
||||
"04f96537a27ece89005f42da68735431"
|
||||
],
|
||||
[
|
||||
"images/attrs.png",
|
||||
|
@ -44439,7 +44439,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"images/icon-skills.png",
|
||||
"f3fa5e8803e7b9f0adbb9b89e45a5b17"
|
||||
"df43e89a902a603d16cc6cc4f77d25d2"
|
||||
],
|
||||
[
|
||||
"images/icon-switch-leader.png",
|
||||
|
|
20
style.css
20
style.css
|
@ -3837,9 +3837,13 @@ table .orb-icon
|
|||
.team-flags.sub-members .team-member-icon:not(:first-of-type):not(:last-of-type) {
|
||||
background-color: lightgreen;
|
||||
}
|
||||
.team-flags.self .team-member-icon:nth-of-type(4) {
|
||||
.team-flags.self .team-member-icon:nth-of-type(4) {
|
||||
background-color: lightblue !important;
|
||||
}
|
||||
.team-flags.right-neighbor .team-member-icon:nth-of-type(5),
|
||||
.team-flags.left-neighbor .team-member-icon:nth-of-type(3) {
|
||||
background-color: violet !important;
|
||||
}
|
||||
|
||||
/*.open-evolutionary-tree::before
|
||||
{
|
||||
|
@ -4725,7 +4729,8 @@ body.external-link-support #external-support{
|
|||
.icon-skill[data-icon-type="ctw"]::after,
|
||||
.icon-skill[data-icon-type="add-combo"]::after,
|
||||
.icon-skill[data-icon-type="fixed-time"]::after,
|
||||
.icon-skill[data-icon-type="increase-damage-cap"]::after
|
||||
.icon-skill[data-icon-type="increase-damage-cap"]::after,
|
||||
.icon-skill[data-icon-type="bind-card"]::after
|
||||
{
|
||||
content: "";
|
||||
position: absolute;
|
||||
|
@ -5011,6 +5016,17 @@ body.external-link-support #external-support{
|
|||
{
|
||||
background-position-x: -36px;
|
||||
}
|
||||
|
||||
.icon-skill[data-icon-type="bind-card"]
|
||||
{
|
||||
background-position-y: calc(-36px * 39);
|
||||
}
|
||||
.icon-skill[data-icon-type="bind-card"]::after
|
||||
{
|
||||
transform: scale(0.75);
|
||||
background-position-y: calc(-36px * 47);
|
||||
}
|
||||
|
||||
.icon-skill[data-icon-type="orb-thorn"]
|
||||
{
|
||||
background-position-y:calc(-36px * 37);
|
||||
|
|
Loading…
Reference in New Issue