优化许多技能图标
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 194 KiB |
|
@ -85,7 +85,7 @@ const _localTranslating = {
|
|||
auto_heal: tp`${'icon'}消除宝珠的回合,回复${'belong_to'}${'value'}的${'stats'}`,
|
||||
ctw: tp`${'icon'}${'time'}内时间停止,可以任意移动宝珠${'addition'}`,
|
||||
ctw_addition: tp`,达成${'cond'}时,${'skill'}`,
|
||||
gravity: tp`${'icon'}造成${'target'}${'value'}的伤害`,
|
||||
gravity: tp`造成${'target'}${'icon'}${'value'}的伤害`,
|
||||
resolve: tp`${'icon'}如${'stats'}≧${'min'},受到单一次致命攻击时,将会以1点 HP 生还`,
|
||||
board_change: tp`全画面的宝珠变为${'orbs'}`,
|
||||
skill_boost: tp`自身以外成员的技能冷却储备${'icon'}${'turns_min'}${'turns_max'}`,
|
||||
|
@ -129,7 +129,8 @@ const _localTranslating = {
|
|||
obstruct_opponent_after_me: tp`排名比自身低的对手`,
|
||||
obstruct_opponent_before_me: tp`排名比自身高的对手`,
|
||||
obstruct_opponent_designated_position: tp`第${'positions'}排位的对手`,
|
||||
increase_damage_cap: tp`${'targets'}的${'icon'}伤害上限提升到${'cap'}`,
|
||||
slot_power_up: tp`${'targets'}的${'icon'}${'value'}`,
|
||||
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'}移除自身的辅助宠物(直到地下城结束)`,
|
||||
|
|
|
@ -85,7 +85,7 @@ const _localTranslating = {
|
|||
auto_heal: tp`${'icon'}消除寶珠的回合,回復${'belong_to'}${'value'}的${'stats'}`,
|
||||
ctw: tp`${'icon'}${'time'}內時間停止,可以任意移動寶珠${'addition'}`,
|
||||
ctw_addition: tp`,達成${'cond'}時,${'skill'}`,
|
||||
gravity: tp`${'icon'}造成${'target'}${'value'}的傷害`,
|
||||
gravity: tp`造成${'target'}${'icon'}${'value'}的傷害`,
|
||||
resolve: tp`${'icon'}如${'stats'}≧${'min'},受到單一次致命攻擊時,將會以1點 HP 生還`,
|
||||
board_change: tp`全畫面的寶珠變為${'orbs'}`,
|
||||
skill_boost: tp`自身以外成員的技能冷卻儲備${'icon'}${'turns_min'}${'turns_max'}`,
|
||||
|
@ -129,7 +129,8 @@ const _localTranslating = {
|
|||
obstruct_opponent_after_me: tp`排名比自身低的對手`,
|
||||
obstruct_opponent_before_me: tp`排名比自身高的對手`,
|
||||
obstruct_opponent_designated_position: tp`第${'positions'}排位的對手`,
|
||||
increase_damage_cap: tp`${'targets'}的${'icon'}傷害上限提升到${'cap'}`,
|
||||
slot_power_up: tp`${'targets'}的${'icon'}${'value'}`,
|
||||
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'}移除自身的輔助寵物(直到地下城結束)`,
|
||||
|
|
|
@ -99,7 +99,7 @@ let localTranslating = {
|
|||
auto_heal: tp`${'icon'}Heal ${'stats'} by ${'belong_to'} ${'value'} after matching orbs`,
|
||||
ctw: tp`${'icon'}Move orbs freely for ${'time'}${'addition'}`,
|
||||
ctw_addition: tp`, ${'cond'} is achieved, ${'skill'}`,
|
||||
gravity: tp`${'icon'}Reduce ${'target'} ${'value'}`,
|
||||
gravity: tp`Reduce ${'target'} ${'icon'}${'value'}`,
|
||||
resolve: tp`${'icon'}Survive a single hit when ${'stats'}≧${'min'}`,
|
||||
board_change: tp`Change all orbs to ${'orbs'}`,
|
||||
skill_boost: tp`Team's skills charge ${'icon'}${'turns_min'}${'turns_max'}`,
|
||||
|
@ -143,7 +143,8 @@ 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`,
|
||||
increase_damage_cap: tp`The ${'icon'}damage cap of ${'targets'} is increased to ${'cap'}`,
|
||||
slot_power_up: tp`The slot of ${'targets'} ${'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'}`,
|
||||
remove_assist: tp`${'icon'}Remove this assist card (until end of dungeon)`,
|
||||
|
@ -1962,10 +1963,13 @@ const specialSearchFunctions = (function() {
|
|||
},
|
||||
addition:card=>{
|
||||
let rate = damageSelf_Rate(card);
|
||||
const fragment = document.createDocumentFragment();
|
||||
fragment.append(createSkillIcon('heal', 'hp-decr'));
|
||||
if (rate < 100)
|
||||
return `减少${rate}%`;
|
||||
fragment.append(`减少${rate}%`);
|
||||
else
|
||||
return `减少到1`;
|
||||
fragment.append(`减少到1`);
|
||||
return fragment;
|
||||
}
|
||||
},
|
||||
]},
|
||||
|
|
|
@ -437,6 +437,7 @@ const SkillKinds = {
|
|||
GenerateOrbs: "generate-orbs",
|
||||
FixedOrbs: "fixed-orbs",
|
||||
PowerUp: "power-up",
|
||||
SlotPowerUp: "slot-power-up",
|
||||
CounterAttack: "counter-attack",
|
||||
SetOrbState: "set-orb-state",
|
||||
RateMultiply: "rate-mul",
|
||||
|
@ -983,6 +984,9 @@ function powerUp(attrs, types, value, condition = null, reduceDamage = null, add
|
|||
if (targets) {attrs = null; types = null;}
|
||||
return { kind: SkillKinds.PowerUp, targets, attrs, types, condition, value, reduceDamage, additional, eachTime};
|
||||
}
|
||||
function slotPowerUp(value, targets) {
|
||||
return { kind: SkillKinds.SlotPowerUp, value, targets};
|
||||
}
|
||||
function counterAttack(attr, prob, value) {
|
||||
return { kind: SkillKinds.CounterAttack, attr: attr, prob: prob, value: value };
|
||||
}
|
||||
|
@ -1579,7 +1583,9 @@ const skillObjectParsers = {
|
|||
[230](turns, target, mul) {
|
||||
const targetTypes = ["self","leader-self","leader-helper","sub-members"];
|
||||
const typeArr = Bin.unflags(target).map(n => targetTypes[n]);
|
||||
return activeTurns(turns, powerUp({targets: typeArr}, null, p.mul({ atk: mul })));
|
||||
return activeTurns(turns,
|
||||
slotPowerUp(p.mul({ atk: mul }), typeArr)
|
||||
);
|
||||
},
|
||||
[231](turns, awoken1, awoken2, awoken3, awoken4, awoken5, atk, rcv) {
|
||||
return activeTurns(turns, powerUp(null, null, p.scaleStateKind([awoken1, awoken2, awoken3, awoken4, awoken5].filter(Boolean), null, null, p.mul({atk: atk, hp:0, rcv: rcv ?? 0}))));
|
||||
|
@ -2570,6 +2576,23 @@ function renderSkill(skill, option = {})
|
|||
frg.ap(tsp.skill.power_up(dict));
|
||||
break;
|
||||
}
|
||||
case SkillKinds.SlotPowerUp: { //增加伤害上限
|
||||
const {value, targets} = skill;
|
||||
|
||||
let dict = {
|
||||
icon: createIcon(skill.kind, value.atk > 1 ? "atk-incr" : "atk-decr"),
|
||||
targets: document.createDocumentFragment(),
|
||||
value: renderPowerUp(value),
|
||||
};
|
||||
|
||||
dict.targets.append(createTeamFlags(targets));
|
||||
dict.targets.append(targets.map(target=>
|
||||
tsp?.target[target.replaceAll("-","_")]?.())
|
||||
.nodeJoin(tsp.word.slight_pause()));
|
||||
|
||||
frg.ap(tsp.skill.slot_power_up(dict));
|
||||
break;
|
||||
}
|
||||
case SkillKinds.Henshin: { //变身
|
||||
let ids = skill.ids, random = skill.random;
|
||||
let doms = ids.map(id=>{
|
||||
|
@ -2830,29 +2853,27 @@ function renderAttrs(attrs, option = {}) {
|
|||
function renderOrbs(attrs, option = {}) {
|
||||
if (!Array.isArray(attrs))
|
||||
attrs = [attrs ?? 0];
|
||||
|
||||
const frg = document.createDocumentFragment();
|
||||
if (typeof localTranslating == "undefined") return frg;
|
||||
|
||||
const tsp = localTranslating.skill_parse;
|
||||
let contentFrg;
|
||||
|
||||
if (isEqual(attrs, Attributes.orbs()))
|
||||
{
|
||||
contentFrg = tsp.orbs.all();
|
||||
if (attrs.every(a=>Number.isInteger(a))) {
|
||||
let attrBin = new Bin(attrs);
|
||||
if ((attrBin.int & 0b1111111111) == 0b1111111111) { //十种珠子
|
||||
frg.ap(tsp.orbs.all());
|
||||
attrs.length = 0;
|
||||
} else if ((attrBin.int & 0b11111) == 0b11111) { //基础5色
|
||||
frg.ap(renderOrbs('_5color'));
|
||||
attrBin = new Bin(attrBin.int & 0b1111100000);
|
||||
attrs = [...attrBin];
|
||||
if (attrs.length > 0) { //如果5色以上还有剩的,就增加一个加号
|
||||
frg.ap(' + ');
|
||||
}
|
||||
else if (isEqual(attrs, Attributes.all()))
|
||||
{
|
||||
contentFrg = renderOrbs('_5color');
|
||||
}
|
||||
else if (isEqual(attrs, Attributes._6color()))
|
||||
{
|
||||
contentFrg = tsp.orbs._6color({
|
||||
_5color: renderOrbs('_5color'),
|
||||
orb_rcv: renderOrbs(5),
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
contentFrg = attrs.map(attr => {
|
||||
const icon = document.createElement("icon");
|
||||
icon.className = "orb";
|
||||
|
@ -2864,7 +2885,8 @@ function renderOrbs(attrs, option = {}) {
|
|||
return tsp.orbs?.[attr](dict);
|
||||
})
|
||||
.nodeJoin(tsp.word.slight_pause());
|
||||
}
|
||||
frg.ap(contentFrg);
|
||||
|
||||
if (option.affix)
|
||||
contentFrg = tsp.word.affix_orb({cotent: contentFrg});
|
||||
if (option.any && attrs.length >= 2)
|
||||
|
|
|
@ -962,7 +962,6 @@ function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rare
|
|||
const anyAttrsFlag = 0b1011111; //所有颜色的查找,注意右边才是最低位
|
||||
sAttrs = sAttrs.map(attr=>attr || anyAttrsFlag); //如果传入搜索为0,提高到任意色
|
||||
|
||||
console.log(sAttrs);
|
||||
if (sAttrs.some(attr=>(attr & anyAttrsFlag) !== anyAttrsFlag)) { //当任一属性不为任意颜色时才需要筛选属性,否则跳过属性筛选
|
||||
//如果固定顺序就直接使用当前颜色顺序;否则不考虑顺序时,去除任意色
|
||||
const attrNums = sAttrs.filter(attr=>fixMainColor || attr > 0 && (attr & anyAttrsFlag) !== anyAttrsFlag)
|
||||
|
|
|
@ -6067,7 +6067,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"sound/voice/ja/padv2191.wav",
|
||||
"d07c2fc9a621d4345c053f3d2187a937"
|
||||
"143e052f3c15efaadaf7eaae277c68e7"
|
||||
],
|
||||
[
|
||||
"sound/voice/ja/padv2192.wav",
|
||||
|
@ -29499,15 +29499,15 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"script-json_data.js",
|
||||
"aff28db2d3f7a46bddba6b4d559c9c79"
|
||||
"e3cb9b6edd812eb327b009bdb3a29de3"
|
||||
],
|
||||
[
|
||||
"script-skill-parser.js",
|
||||
"5d5e6d38d82035de49807f72b2d8b0c3"
|
||||
"5b5ccf1faedeca0c508b72af22bbf2f4"
|
||||
],
|
||||
[
|
||||
"script-universal_function.js",
|
||||
"fa1c29c20ebadf94a9405b9f73e4f85b"
|
||||
"97285b342df0095b45fd8c1bfe6040f8"
|
||||
],
|
||||
[
|
||||
"script.js",
|
||||
|
@ -29523,7 +29523,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"style.css",
|
||||
"34ab62d874338ceb3ca3d4f6b38b4b26"
|
||||
"54495620612baaeaeb84b12faef72840"
|
||||
],
|
||||
[
|
||||
"temp.js",
|
||||
|
@ -29567,7 +29567,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"languages/zh-hans.js",
|
||||
"e8f4e76f67a4cbb4a72517e6f17434ee"
|
||||
"75671019575fb6b73345a20f55d06fe2"
|
||||
],
|
||||
[
|
||||
"languages/zh-hant.css",
|
||||
|
@ -29575,7 +29575,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"languages/zh-hant.js",
|
||||
"bede32cfeaa26e46a4cd26d57c319378"
|
||||
"9dae8558cafe9243b3a794acd3487963"
|
||||
],
|
||||
[
|
||||
"images/attrs.png",
|
||||
|
@ -29627,7 +29627,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"images/icon-add-combo.png",
|
||||
"c662326964c237ddfefedd6e166fff35"
|
||||
"905398205a46fcbbf94c91126b748b4f"
|
||||
],
|
||||
[
|
||||
"images/icon-assist-bind.png",
|
||||
|
@ -29711,7 +29711,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"images/icon-skills.png",
|
||||
"924dcf954c1f7def6addc3f62e17e028"
|
||||
"d9244ad4fa64ac7ad55481b278e0ef9a"
|
||||
],
|
||||
[
|
||||
"images/icon-switch-leader.png",
|
||||
|
@ -29867,7 +29867,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"doc/images/bluestacks-vhd-mount-vhd-failed.webp",
|
||||
"7941862be127cb177b86ea4cc2877134"
|
||||
"e41f2de6990b34ae7995a5acb0e3ea0c"
|
||||
],
|
||||
[
|
||||
"doc/images/bluestacks-vhd-open-disk-management.webp",
|
||||
|
|
46
style.css
|
@ -34,14 +34,6 @@
|
|||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
@keyframes gravity-animate{
|
||||
from {
|
||||
transform: scaley(1);
|
||||
}
|
||||
to {
|
||||
transform: scaley(0.5);
|
||||
}
|
||||
}
|
||||
body{
|
||||
--head-block-width: 108px;
|
||||
--head-block-height: 108px;
|
||||
|
@ -4282,12 +4274,15 @@ body.external-link-support #external-support{
|
|||
.icon-skill.status-bind::after,
|
||||
.icon-skill.hp-incr::after,
|
||||
.icon-skill.hp-decr::after,
|
||||
.icon-skill.atk-incr::after,
|
||||
.icon-skill.atk-decr::after,
|
||||
.icon-skill.boost-incr::after,
|
||||
.icon-skill.boost-decr::after,
|
||||
.icon-skill[data-icon-type="ctw"]::before,
|
||||
.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="fixed-time"]::after,
|
||||
.icon-skill[data-icon-type="increase-damage-cap"]::after
|
||||
{
|
||||
content: "";
|
||||
position: absolute;
|
||||
|
@ -4330,6 +4325,7 @@ body.external-link-support #external-support{
|
|||
.icon-skill.hp-incr::after,
|
||||
.icon-skill.hp-decr::after
|
||||
{
|
||||
left: 36px;
|
||||
background-position-x:calc(-36px * 1);
|
||||
}
|
||||
.icon-skill.hp-incr::after
|
||||
|
@ -4358,6 +4354,7 @@ body.external-link-support #external-support{
|
|||
}
|
||||
.icon-skill[data-icon-type="heal"]
|
||||
{
|
||||
width: 72px;
|
||||
background-position-y:calc(-36px * 8);
|
||||
}
|
||||
.icon-skill[data-icon-type="def-break"]
|
||||
|
@ -4398,8 +4395,7 @@ body.external-link-support #external-support{
|
|||
}
|
||||
.icon-skill[data-icon-type="gravity"]
|
||||
{
|
||||
animation: gravity-animate 1s infinite;
|
||||
transform-origin: bottom center;
|
||||
width: 72px;
|
||||
background-position-y:calc(-36px * 14);
|
||||
}
|
||||
.icon-skill[data-icon-type="resolve"]
|
||||
|
@ -4542,9 +4538,31 @@ body.external-link-support #external-support{
|
|||
background-image: url(images/icon-evolved-skill-loop.png);
|
||||
background-size: contain;
|
||||
}
|
||||
.icon-skill[data-icon-type="slot-power-up"]
|
||||
{
|
||||
background-position-y: calc(-36px * 39);
|
||||
}
|
||||
.icon-skill.atk-incr::after,
|
||||
.icon-skill.atk-decr::after
|
||||
{
|
||||
transform: scale(0.75);
|
||||
}
|
||||
.icon-skill.atk-incr::after
|
||||
{
|
||||
background-position-y:calc(-36px * 1);
|
||||
}
|
||||
.icon-skill.atk-decr::after
|
||||
{
|
||||
background-position-y:calc(-36px * 2);
|
||||
}
|
||||
.icon-skill[data-icon-type="increase-damage-cap"]
|
||||
{
|
||||
background-position-y:calc(-36px * 36);
|
||||
background-position-y: calc(-36px * 39);
|
||||
}
|
||||
.icon-skill[data-icon-type="increase-damage-cap"]::after
|
||||
{
|
||||
transform: scale(0.75);
|
||||
background-position-y: calc(-36px * 36);
|
||||
}
|
||||
.icon-skill[data-icon-type="orb-thorn"]
|
||||
{
|
||||
|
@ -4559,7 +4577,8 @@ body.external-link-support #external-support{
|
|||
}
|
||||
.icon-skill[data-icon-type="remove-assist"]
|
||||
{
|
||||
background-position-y:calc(-36px * 39);
|
||||
background-image: url(images/icon-skills.png), url(images/icon-skills.png);
|
||||
background-position-y: calc(-36px * 3), calc(-36px * 39);
|
||||
}
|
||||
.icon-skill[data-icon-type="board-deep-dark"]
|
||||
{
|
||||
|
@ -4584,6 +4603,7 @@ body.external-link-support #external-support{
|
|||
}
|
||||
.icon-skill[data-icon-type="breaking-shield"]
|
||||
{
|
||||
width: 72px;
|
||||
background-position-y:calc(-36px * 43);
|
||||
}
|
||||
|
||||
|
|