@sjtdev/koishi-plugin-dota2tracker 2.5.8 → 2.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +14 -0
- package/lib/index.js +41 -52
- package/lib/templates/hero/hero_1/base.css +1 -1
- package/lib/templates/hero/hero_1.ejs +1 -1
- package/package.json +1 -1
package/changelog.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# 更新日志
|
|
2
2
|
|
|
3
|
+
### [2.5.9](https://github.com/sjtdev/koishi-plugin-dota2tracker/compare/v2.5.8...v2.5.9) (2026-04-06)
|
|
4
|
+
|
|
5
|
+
### 🚀 功能优化
|
|
6
|
+
|
|
7
|
+
* **hero:** 重构精简数据处理逻辑,并进一步解决部分情况下的异常显示问题 ([a2dd5d4](https://github.com/sjtdev/koishi-plugin-dota2tracker/commit/a2dd5d4143b49ace1254031b43bd5c2f6b9a5a7c))
|
|
8
|
+
|
|
9
|
+
### 🎨 样式
|
|
10
|
+
|
|
11
|
+
* **templates/hero:** 微调样式 ([89523c2](https://github.com/sjtdev/koishi-plugin-dota2tracker/commit/89523c2353f7f4166674dd21d322cda82cad9584))
|
|
12
|
+
|
|
13
|
+
### 🐛 Bug 修复
|
|
14
|
+
|
|
15
|
+
* **weekly-report:** 修复文件名不匹配导致的周报发送失败的问题 ([1ed3270](https://github.com/sjtdev/koishi-plugin-dota2tracker/commit/1ed3270122987e0924176b04fb8d5f537f9a5048)), closes [#19](https://github.com/sjtdev/koishi-plugin-dota2tracker/issues/19)
|
|
16
|
+
|
|
3
17
|
### [2.5.8](https://github.com/sjtdev/koishi-plugin-dota2tracker/compare/v2.5.7...v2.5.8) (2026-03-31)
|
|
4
18
|
|
|
5
19
|
### 🚀 功能优化
|
package/lib/index.js
CHANGED
|
@@ -1143,7 +1143,7 @@ var HeroService = class _HeroService extends import_koishi2.Service {
|
|
|
1143
1143
|
return _HeroService.formatHeroDetails(await this.ctx.dota2tracker.valveAPI.queryHeroDetailsFromValve(heroId, languageTag));
|
|
1144
1144
|
}
|
|
1145
1145
|
static formatHeroDetails(rawHero) {
|
|
1146
|
-
|
|
1146
|
+
const hero = Object.assign({}, rawHero);
|
|
1147
1147
|
hero.abilities.forEach((ab) => {
|
|
1148
1148
|
ab.desc_loc = this.formatHeroDesc(ab.desc_loc, ab.special_values);
|
|
1149
1149
|
ab.notes_loc = ab.notes_loc.map((note) => this.formatHeroDesc(note, ab.special_values));
|
|
@@ -1151,68 +1151,53 @@ var HeroService = class _HeroService extends import_koishi2.Service {
|
|
|
1151
1151
|
if (ab.ability_has_shard) ab.shard_loc = this.formatHeroDesc(ab.shard_loc, ab.special_values, "shard" /* Shard */);
|
|
1152
1152
|
});
|
|
1153
1153
|
hero.talents.forEach((talent) => {
|
|
1154
|
-
|
|
1155
|
-
let match;
|
|
1156
|
-
while ((match = regex.exec(talent.name_loc)) !== null) {
|
|
1157
|
-
const specialValueName = match[1];
|
|
1154
|
+
talent.name_loc = talent.name_loc.replace(/\{s:(.*?)\}/g, (match, specialValueName) => {
|
|
1158
1155
|
const target = talent.special_values?.find((sv) => sv.name === specialValueName);
|
|
1159
|
-
if (target)
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
const
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
const specialValue = specialValues.find((sv) => sv.name === String(match2[1]));
|
|
1170
|
-
const replacement = specialValue?.bonuses.find((bonus) => bonus.name === talent.name)?.value;
|
|
1171
|
-
if (replacement !== void 0) {
|
|
1172
|
-
replacements.push({
|
|
1173
|
-
original: match2[0],
|
|
1174
|
-
replacement
|
|
1175
|
-
});
|
|
1176
|
-
}
|
|
1156
|
+
if (target) return target.values_float.join("/");
|
|
1157
|
+
const cleanVarName = specialValueName.replace(/^bonus_/, "");
|
|
1158
|
+
for (const ability of hero.abilities) {
|
|
1159
|
+
const svWithBonus = ability.special_values.find(
|
|
1160
|
+
(sv) => (sv.name === cleanVarName || sv.name === specialValueName) && sv.bonuses.some((bonus) => bonus.name === talent.name)
|
|
1161
|
+
);
|
|
1162
|
+
if (svWithBonus) {
|
|
1163
|
+
const bonusObj = svWithBonus.bonuses.find((bonus) => bonus.name === talent.name);
|
|
1164
|
+
if (bonusObj && bonusObj.value !== void 0) {
|
|
1165
|
+
return bonusObj.value;
|
|
1177
1166
|
}
|
|
1178
|
-
replacements.forEach(({ original, replacement }) => {
|
|
1179
|
-
talent.name_loc = talent.name_loc.replace(original, replacement);
|
|
1180
|
-
});
|
|
1181
1167
|
}
|
|
1182
1168
|
}
|
|
1183
|
-
|
|
1184
|
-
|
|
1169
|
+
return "?";
|
|
1170
|
+
});
|
|
1185
1171
|
});
|
|
1186
1172
|
return hero;
|
|
1187
1173
|
}
|
|
1188
1174
|
static formatHeroDesc(template, special_values, type = "normal" /* Normal */) {
|
|
1175
|
+
if (!template) return template;
|
|
1189
1176
|
return template.replace(/%%|%([^%]+)%|\{([^}]+)\}/g, (match, p1, p2) => {
|
|
1177
|
+
if (match === "%%") return "%";
|
|
1190
1178
|
const field = p1 || p2;
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
const
|
|
1195
|
-
const
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
valuesToUse = specialValue.values_float.join(" / ");
|
|
1210
|
-
}
|
|
1211
|
-
return `<span class="value">${valuesToUse}</span>`;
|
|
1212
|
-
} else {
|
|
1213
|
-
return match;
|
|
1179
|
+
const fieldName = field.replace(/^s:/, "").replace(/^shard_/, "").toLowerCase();
|
|
1180
|
+
const strippedFieldName = fieldName.replace(/_tooltip$/, "");
|
|
1181
|
+
const specialValue = special_values.find((sv) => {
|
|
1182
|
+
const nameLower = sv.name.toLowerCase();
|
|
1183
|
+
const strippedNameLower = nameLower.replace(/_tooltip$/, "");
|
|
1184
|
+
return nameLower === fieldName || nameLower === `bonus_${fieldName}` || nameLower === `shard_${fieldName}` || `bonus_${nameLower}` === fieldName || `shard_${nameLower}` === fieldName || strippedNameLower === strippedFieldName || nameLower === `ability${strippedFieldName}`;
|
|
1185
|
+
});
|
|
1186
|
+
if (specialValue) {
|
|
1187
|
+
let valuesToUse = "";
|
|
1188
|
+
switch (type) {
|
|
1189
|
+
case "scepter" /* Scepter */:
|
|
1190
|
+
valuesToUse = specialValue.values_scepter.length ? specialValue.values_scepter.join(" / ") : specialValue.values_float.join(" / ");
|
|
1191
|
+
break;
|
|
1192
|
+
case "shard" /* Shard */:
|
|
1193
|
+
valuesToUse = specialValue.values_shard.length ? specialValue.values_shard.join(" / ") : specialValue.values_float.join(" / ");
|
|
1194
|
+
break;
|
|
1195
|
+
default:
|
|
1196
|
+
valuesToUse = specialValue.values_float.join(" / ");
|
|
1214
1197
|
}
|
|
1198
|
+
return `<span class="value">${valuesToUse}</span>`;
|
|
1215
1199
|
}
|
|
1200
|
+
return match;
|
|
1216
1201
|
});
|
|
1217
1202
|
}
|
|
1218
1203
|
};
|
|
@@ -1474,6 +1459,7 @@ var MatchService = class _MatchService extends import_koishi4.Service {
|
|
|
1474
1459
|
super(ctx, "dota2tracker.match", true);
|
|
1475
1460
|
this.pluginVersion = pluginVersion;
|
|
1476
1461
|
}
|
|
1462
|
+
pluginVersion;
|
|
1477
1463
|
static {
|
|
1478
1464
|
__name(this, "MatchService");
|
|
1479
1465
|
}
|
|
@@ -2420,7 +2406,7 @@ var StratzAPI = class extends import_koishi8.Service {
|
|
|
2420
2406
|
}
|
|
2421
2407
|
async queryPlayersMatchesForDaily_legacy(steamAccountIds, seconds) {
|
|
2422
2408
|
return this.query(
|
|
2423
|
-
"
|
|
2409
|
+
"PlayersMatchesForDaily_legacy",
|
|
2424
2410
|
{
|
|
2425
2411
|
steamAccountIds,
|
|
2426
2412
|
seconds
|
|
@@ -2540,6 +2526,7 @@ var MiniQueue = class {
|
|
|
2540
2526
|
this.ctx = ctx;
|
|
2541
2527
|
this.interval = options.interval;
|
|
2542
2528
|
}
|
|
2529
|
+
ctx;
|
|
2543
2530
|
static {
|
|
2544
2531
|
__name(this, "MiniQueue");
|
|
2545
2532
|
}
|
|
@@ -3695,6 +3682,8 @@ var TaskMessenger = class {
|
|
|
3695
3682
|
this.session = session;
|
|
3696
3683
|
this.options = options;
|
|
3697
3684
|
}
|
|
3685
|
+
session;
|
|
3686
|
+
options;
|
|
3698
3687
|
static {
|
|
3699
3688
|
__name(this, "TaskMessenger");
|
|
3700
3689
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
html,body{background-color:#000;color:#fff;width:800px}.wrapper>*:not(.skills){margin:5px;box-shadow:0 0 5px #fff;display:flex}img{width:100%;vertical-align:middle}p{margin:0}.hero{position:relative}.hero img{width:25%}.hero .pri_attr{position:absolute;width:48px;left:25%}.hero .info{display:flex;width:75%;flex-direction:column;justify-content:space-around;align-items:center;padding:4px}.hero .info .name{font-size:24px}.hero .info .roles .role{font-size:14px}.hero .info .roles .role:not(:last-child){margin-right:12px}.hero .info .roles .role:after{margin-left:3px;font-size:22px}.hero .info .roles .role.level1:after{content:"\25a0\25a1\25a1"}.hero .info .roles .role.level2:after{content:"\25a0\25a0\25a1"}.hero .info .roles .role.level3:after{content:"\25a0\25a0\25a0"}.hero .info .attrs{height:16px;font-size:16px;line-height:1}.hero .info .attrs>span{margin:0 8px;vertical-align:middle}.hero .info .attrs>span:before{display:inline-block;content:"";background-size:100%;width:16px;height:16px;vertical-align:top}.hero .info .attrs>span.str:before{background-image:url("<%= getImageUrl('hero_strength', ImageType.Icons) %>")}.hero .info .attrs>span.agi:before{background-image:url("<%= getImageUrl('hero_agility', ImageType.Icons) %>")}.hero .info .attrs>span.int:before{background-image:url("<%= getImageUrl('hero_intelligence', ImageType.Icons) %>")}.details{flex-direction:row}.details>*{width:50%}.wrapper .hype{display:block;padding:8px;line-height:1.25}.wrapper .hype .npe{color:#a5e0f3;font-weight:700;line-height:1.25;margin-bottom:8px}.talents{display:grid;grid-template-rows:repeat(4,35px);gap:10px;border:#444 10px solid;box-sizing:border-box;position:relative}.talents:before{content:"";position:absolute;inset:0;background:#444;pointer-events:none;box-sizing:border-box;width:395px;transform:translate(-10px,-10px)}.talents .talent{width:375px;text-align:center;display:flex;align-items:center;background:#000;position:relative}.talents .talent .left,.talents .talent .right{width:170px;font-size:12px}.talents .talent .level{flex:0 0 auto;width:35px;height:35px;font-size:18px;line-height:35px;text-align:center;box-sizing:border-box;border-radius:100%;color:#e7d292;text-shadow:0px 0px 8px #ff531c;background-color:#444}.details .list table td{width:50%;text-align:center}.details .list table tr:nth-child(2n){background-color:#333}.details .list{display:flex;flex-direction:column;padding:6px}.details .list>*{flex-grow:1}.details .bars{height:64px;flex-grow:0}.details .bars>div{height:28px;margin-bottom:4px;border-radius:5px;box-shadow:inset 0 0 2px #00000080,0 0 2px #0000004d;position:relative;display:flex;align-items:center}.details .bars .health{background:linear-gradient(to top,#279027,#27a329 56%,#96e891 83%,#366a35)}.details .bars .mana{background:linear-gradient(to top,#4676c4,#2b76d5 56%,#95cdff)}.details .bars .mana.zero{background:none}.details .bars span{text-shadow:#000 1px 1px 4px}.details .bars .number{font-size:18px;position:absolute;left:50%;transform:translate(-50%)}.details .bars .suffix{margin-left:auto;font-size:14px;padding-right:10px}.details .stats{display:flex;justify-content:space-around;line-height:1.3}.details .stats>.column>p{padding:4px;color:#b2b2b2}.details .stats .stat img{width:20px}.facets{display:flex;flex-wrap:wrap;gap:10px}.facets>.facet,.skill>.facet{flex:1 1 calc(50% - 10px);box-sizing:border-box;background-color:#181f24;position:relative;border:1px solid #2b2f33}.facets>.facet:nth-child(odd):last-child{flex-basis:100%}.facets>.facet>.name_back,.skill>.facet>.name_back{position:absolute;height:50px;width:100%}.facet>.name_back.type_0{background:linear-gradient(to right,#9f3c3c,#4a2026)}.facet>.name_line.type_0{filter:invert(22%) sepia(100%) saturate(100%) hue-rotate(316deg) brightness(98%) contrast(100%)}.facet>.name_back.type_1{background:linear-gradient(to right,#c8a45c,#6f3d21)}.facet>.name_line.type_1{filter:invert(54%) sepia(99%) saturate(100%) hue-rotate(0deg) brightness(97%) contrast(100%)}.facet>.name_back.type_2{background:linear-gradient(to right,#a2b23e,#2d5a18)}.facet>.name_line.type_2{filter:invert(57%) sepia(100%) saturate(100%) hue-rotate(32deg) brightness(93%) contrast(100%)}.facet>.name_back.type_3{background:linear-gradient(to right,#547ea6,#2a385e)}.facet>.name_line.type_3{filter:invert(39%) sepia(100%) saturate(99%) hue-rotate(167deg) brightness(99%) contrast(100%)}.facet>.name_back.type_4{background:linear-gradient(to right,#675cae,#261c44)}.facet>.name_line.type_4{filter:invert(33%) sepia(100%) saturate(100%) hue-rotate(207deg) brightness(99%) contrast(100%)}.facet>.name_back.type_5{background:linear-gradient(to right,#adb6be,#4e5557)}.facet>.name_line.type_5{filter:invert(73%) sepia(23%) saturate(99%) hue-rotate(166deg) brightness(93%) contrast(94%)}.facet>.name_line{position:absolute;background-size:cover;height:50px;width:100%;background-image:url(https://cdn.akamai.steamstatic.com/apps/dota2/images/dota_react/icons/facets/ripple_texture.png)}.facet>.name{height:50px;line-height:50px;z-index:1;position:relative;display:flex}.facet>.name>img{width:24px;padding:13px;background-color:#0003}.facet>.name>span{margin-left:16px;letter-spacing:2px;text-shadow:2px 2px 3px rgba(0,0,0,.3),4px 4px 6px rgba(0,0,0,.2),6px 6px 9px rgba(0,0,0,.1)}.facet>.content{padding:12px;display:flex;flex-direction:column;gap:12px}.facet>.content>.ability{display:flex;flex-direction:column;gap:12px}.facet>.content>.ability>.name{background:linear-gradient(to right,#9bcdff17,#9bcdff09 30%,#d0e8ff00);line-height:1}.facet>.content>.ability>.name>img{width:30px}.facet>.content>.ability>.name>span{margin-left:10px;font-size:14px}.facet>.content .description{color:#9ab0cd}.facet>.content>.ability>.attributes{font-size:12px;display:flex;flex-direction:column;gap:5px}.facet>.content>.ability>.attributes .item{color:#737373}.facet>.content .value{color:#fff}.skills{width:800px;display:flex;flex-wrap:wrap}.skill{background-color:#141b1f;margin:5px;box-shadow:0 0 5px #fff;width:390px}.skill>*:not(:nth-child(2)){padding
|
|
1
|
+
html,body{background-color:#000;color:#fff;width:800px}.wrapper>*:not(.skills){margin:5px;box-shadow:0 0 5px #fff;display:flex}img{width:100%;vertical-align:middle}p{margin:0}.hero{position:relative}.hero img{width:25%}.hero .pri_attr{position:absolute;width:48px;left:25%}.hero .info{display:flex;width:75%;flex-direction:column;justify-content:space-around;align-items:center;padding:4px}.hero .info .name{font-size:24px}.hero .info .roles .role{font-size:14px}.hero .info .roles .role:not(:last-child){margin-right:12px}.hero .info .roles .role:after{margin-left:3px;font-size:22px}.hero .info .roles .role.level1:after{content:"\25a0\25a1\25a1"}.hero .info .roles .role.level2:after{content:"\25a0\25a0\25a1"}.hero .info .roles .role.level3:after{content:"\25a0\25a0\25a0"}.hero .info .attrs{height:16px;font-size:16px;line-height:1}.hero .info .attrs>span{margin:0 8px;vertical-align:middle}.hero .info .attrs>span:before{display:inline-block;content:"";background-size:100%;width:16px;height:16px;vertical-align:top}.hero .info .attrs>span.str:before{background-image:url("<%= getImageUrl('hero_strength', ImageType.Icons) %>")}.hero .info .attrs>span.agi:before{background-image:url("<%= getImageUrl('hero_agility', ImageType.Icons) %>")}.hero .info .attrs>span.int:before{background-image:url("<%= getImageUrl('hero_intelligence', ImageType.Icons) %>")}.details{flex-direction:row}.details>*{width:50%}.wrapper .hype{display:block;padding:8px;line-height:1.25}.wrapper .hype .npe{color:#a5e0f3;font-weight:700;line-height:1.25;margin-bottom:8px}.talents{display:grid;grid-template-rows:repeat(4,35px);gap:10px;border:#444 10px solid;box-sizing:border-box;position:relative}.talents:before{content:"";position:absolute;inset:0;background:#444;pointer-events:none;box-sizing:border-box;width:395px;transform:translate(-10px,-10px)}.talents .talent{width:375px;text-align:center;display:flex;align-items:center;background:#000;position:relative}.talents .talent .left,.talents .talent .right{width:170px;font-size:12px}.talents .talent .level{flex:0 0 auto;width:35px;height:35px;font-size:18px;line-height:35px;text-align:center;box-sizing:border-box;border-radius:100%;color:#e7d292;text-shadow:0px 0px 8px #ff531c;background-color:#444}.details .list table td{width:50%;text-align:center}.details .list table tr:nth-child(2n){background-color:#333}.details .list{display:flex;flex-direction:column;padding:6px}.details .list>*{flex-grow:1}.details .bars{height:64px;flex-grow:0}.details .bars>div{height:28px;margin-bottom:4px;border-radius:5px;box-shadow:inset 0 0 2px #00000080,0 0 2px #0000004d;position:relative;display:flex;align-items:center}.details .bars .health{background:linear-gradient(to top,#279027,#27a329 56%,#96e891 83%,#366a35)}.details .bars .mana{background:linear-gradient(to top,#4676c4,#2b76d5 56%,#95cdff)}.details .bars .mana.zero{background:none}.details .bars span{text-shadow:#000 1px 1px 4px}.details .bars .number{font-size:18px;position:absolute;left:50%;transform:translate(-50%)}.details .bars .suffix{margin-left:auto;font-size:14px;padding-right:10px}.details .stats{display:flex;justify-content:space-around;line-height:1.3}.details .stats>.column>p{padding:4px;color:#b2b2b2}.details .stats .stat img{width:20px}.facets{display:flex;flex-wrap:wrap;gap:10px}.facets>.facet,.skill>.facet{flex:1 1 calc(50% - 10px);box-sizing:border-box;background-color:#181f24;position:relative;border:1px solid #2b2f33}.facets>.facet:nth-child(odd):last-child{flex-basis:100%}.facets>.facet>.name_back,.skill>.facet>.name_back{position:absolute;height:50px;width:100%}.facet>.name_back.type_0{background:linear-gradient(to right,#9f3c3c,#4a2026)}.facet>.name_line.type_0{filter:invert(22%) sepia(100%) saturate(100%) hue-rotate(316deg) brightness(98%) contrast(100%)}.facet>.name_back.type_1{background:linear-gradient(to right,#c8a45c,#6f3d21)}.facet>.name_line.type_1{filter:invert(54%) sepia(99%) saturate(100%) hue-rotate(0deg) brightness(97%) contrast(100%)}.facet>.name_back.type_2{background:linear-gradient(to right,#a2b23e,#2d5a18)}.facet>.name_line.type_2{filter:invert(57%) sepia(100%) saturate(100%) hue-rotate(32deg) brightness(93%) contrast(100%)}.facet>.name_back.type_3{background:linear-gradient(to right,#547ea6,#2a385e)}.facet>.name_line.type_3{filter:invert(39%) sepia(100%) saturate(99%) hue-rotate(167deg) brightness(99%) contrast(100%)}.facet>.name_back.type_4{background:linear-gradient(to right,#675cae,#261c44)}.facet>.name_line.type_4{filter:invert(33%) sepia(100%) saturate(100%) hue-rotate(207deg) brightness(99%) contrast(100%)}.facet>.name_back.type_5{background:linear-gradient(to right,#adb6be,#4e5557)}.facet>.name_line.type_5{filter:invert(73%) sepia(23%) saturate(99%) hue-rotate(166deg) brightness(93%) contrast(94%)}.facet>.name_line{position:absolute;background-size:cover;height:50px;width:100%;background-image:url(https://cdn.akamai.steamstatic.com/apps/dota2/images/dota_react/icons/facets/ripple_texture.png)}.facet>.name{height:50px;line-height:50px;z-index:1;position:relative;display:flex}.facet>.name>img{width:24px;padding:13px;background-color:#0003}.facet>.name>span{margin-left:16px;letter-spacing:2px;text-shadow:2px 2px 3px rgba(0,0,0,.3),4px 4px 6px rgba(0,0,0,.2),6px 6px 9px rgba(0,0,0,.1)}.facet>.content{padding:12px;display:flex;flex-direction:column;gap:12px}.facet>.content>.ability{display:flex;flex-direction:column;gap:12px}.facet>.content>.ability>.name{background:linear-gradient(to right,#9bcdff17,#9bcdff09 30%,#d0e8ff00);line-height:1}.facet>.content>.ability>.name>img{width:30px}.facet>.content>.ability>.name>span{margin-left:10px;font-size:14px}.facet>.content .description{color:#9ab0cd}.facet>.content>.ability>.attributes{font-size:12px;display:flex;flex-direction:column;gap:5px}.facet>.content>.ability>.attributes .item{color:#737373}.facet>.content .value{color:#fff}.skills{width:800px;display:flex;flex-wrap:wrap}.skill{background-color:#141b1f;margin:5px;box-shadow:0 0 5px #fff;width:390px}.skill>*:not(:nth-child(2)){padding:0 8px}.skill>.title{position:relative;background-color:#1f272b;padding:8px;font-weight:100;height:auto;width:auto}.skill>.title>.name{font-family:KaiTi,\6977\4f53,\6977\4f53_GB2312,STKaiti,serif}.skill>.title>.is_innate{font-size:14px;line-height:18px;width:auto;display:inline;padding:2px 8px;box-sizing:content-box;background-color:#5b93d1}.skill>.title.name_back>img{width:16px}.skill img.scepter,.skill img.shard{position:absolute;width:24px;right:8px;top:50%;transform:translateY(-50%)}.skill .img_stats{display:flex;color:#546780;margin-bottom:16px;border-top:#2a363c 1px solid;border-bottom:#2a363c 1px solid}.skill .img_stats img{width:128px}.skill .img_stats .stats{padding:8px}.skill .stats .dmg_type.Physical span{color:#ae2f28}.skill .stats .dmg_type.Magical span{color:#5b93d1}.skill .stats .dmg_type.Pure span{color:#c29c4a}.skill .stats .dispellable.No span{color:red}.skill .stats .dispellable.Strong span{color:#9828ae}.skill .stats .bkbpierce.Yes span{color:#6add71}.skill>.description{color:#9bb1ce;margin-bottom:32px}.skill>.facet{padding-left:0;margin-bottom:16px}.skill .value{color:#fff}.skill .aghanim_description{padding:0;color:#9bb1ce;margin-bottom:16px;border:#263945 solid 3px;box-sizing:border-box}.skill .aghanim_description .title{display:block;font-size:20px;background-color:#263945;padding:12px}.skill .aghanim_description .desc{margin:12px;display:block}.skill .aghanim_description img{position:unset;transform:none;margin-right:8px}.skill .notes{padding:12px;margin-bottom:12px;color:#9fb7c6;background-color:#263945}.skill .attributes{line-height:1.2em;margin-bottom:12px}.skill .attributes .heading{color:#546780}.skill .attributes .values{color:#4b525d}.skill .attributes .values img{width:16px}.skill .attributes .facet{display:inline-flex;font-size:1em;align-items:center;line-height:1.2em;position:unset;color:#fff}.skill .attributes .facet span{height:auto;width:auto;position:unset;padding:0 2px}.skill .attributes .facet img{width:auto;height:1em;padding-right:.2em}.skill .attributes .alternative .plus{display:none}.skill .attributes .primary~.alternative .plus{display:inline}.skill .attributes .primary~.alternative:before{content:"("}.skill .attributes .primary~.alternative:after{content:")"}.skill .cooldown{padding-right:12px}.skill .cooldown:before,.skill .mana_cost:before{content:"";background-size:100%;width:21px;height:21px;display:inline-block;vertical-align:middle}.skill .cooldown:before{background-image:url(data:image/webp;base64,UklGRnABAABXRUJQVlA4TGMBAAAvE8AEEE2QTdqmkI5pRP/DS2wBEIT/bw8R/U8Ddq1NipSvGnd3eXJ3d3kmEM+GTDwBciCBTQCd7qpCeokBQdu2cc6f8tcQEBT5P9oEIGiwYuMBECqAbCUVIIAa19Py1I/AQMrJVGEABACe+DRqcl2GUxeOwIAzQkAAMCBxyi3BRcbSkzAKyIDTciQOAAgwyx43JA4CWRkeQXAAQKkGEs5+/siARwFHAHCUiAGwPwAEAGQSDgCAoCQUQc7OkwMbhgAAJBIKEAtkE9enBgcABEUxAIwyZ6cOx/lTkPiHsX+mqCQTMQRwcmAszPLUoTiCkVAAbDKEAWWUjWlGMYyEAR4n4wMeiBk8W9M1lphIQmAsmWxBJ1vfAJZIBMAoJwNQ0JTN04/yRaCCftofwWBkAMAjQ6BILaWMsEkFFVTTk/qEETyQlYFXnh9jmABKbkgzNQgemYwnTOKFEgAAOGJAeUbyhQIAAA==)}.skill .mana_cost:before{background-image:url(data:image/webp;base64,UklGRsYAAABXRUJQVlA4TLkAAAAvE8AEEIfBOIDbtEmdpEDhS8G2kSTF0eteuLOebJz/0KDREgwBAGEu/89yqe5LCyEaDT03NBcLpEXnJgkZKS2dmlqAlNSCgJXURBoNCHAY2bbSvEP0fxzi7sGh//rslRDR/xQxS0bXRkRMmr5Ho8iISY5523Ztr2vabBuaZZLVE99wRqWAUgGFAv4K+Cngo4CXAp4KeCjgroCbAi4KVv7pOnFwF8aP9+fRXeAaMZ63GbXWiIhxGJ0bEQA=)}.skill .lore{font-size:13px;color:#3e4f5b;padding:8px;line-height:1.25}body .wrapper>.lore{display:block;line-height:1.25;padding:8px;font-family:KaiTi,\6977\4f53,\6977\4f53_GB2312,STKaiti,serif;color:#aaa}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
const hasScepterVal = sv.values_scepter && sv.values_scepter.length;
|
|
22
22
|
const hasShardVal = sv.values_shard && sv.values_shard.length;
|
|
23
23
|
const hasTalentVal = sv.bonuses.length > 0;
|
|
24
|
-
%> <% if (!isAllZero || hasScepterVal || hasShardVal || hasTalentVal) { %> <p><span class="heading"
|
|
24
|
+
%> <% if (!isAllZero || hasScepterVal || hasShardVal || hasTalentVal) { %> <p><span class="heading"><%- sv.heading_loc %></span><span class="values"> <% if (!isAllZero || (isAllZero && (hasScepterVal || hasShardVal))) { %> <span class="primary<%= isAllZero ? ' empty' : '' %>"> <% if (!isAllZero) { %> <%= sv.values_float.map(value => value + (sv.is_percentage ? "%" : "")).join(" / ") %> <% } %> </span> <% } %> <% if (hasScepterVal) { %> <span class="alternative scepter"><img src="<%= getImageUrl("scepter") %>"/> <%- sv.values_scepter.map(value => (value > 0 ? '<span class="plus">+</span>' : "") + value + (sv.is_percentage ? "%" : "")).join(" / ") %> </span> <% } %> <% if (hasShardVal) { %> <span class="alternative shard"><img src="<%= getImageUrl("shard") %>"/> <%- sv.values_shard.map(value => (value > 0 ? '<span class="plus">+</span>' : "") + value + (sv.is_percentage ? "%" : "")).join(" / ") %> </span> <% } %> <% if (hasTalentVal) { %> <span class="alternative talent"> <% sv.bonuses.forEach(bonus => { %> <img src="<%= getImageUrl("talents", "icons", "svg") %>"/> <%- (bonus.value > 0 ? '<span class="plus">+</span>' : "") + bonus.value + (sv.is_percentage ? "%" : "") %> <% }); %> </span> <% } %> </span></p> <% } %> <% }); %> </div><p> <% if (hasCd) { %> <span class="cooldown"> <%= cdStats.values_float.join(" / ") %> </span> <% } %> <% if (hasMana) { %> <span class="mana_cost"> <%= manaStats.values_float.join(" / ") %> </span> <% } %> </p> <% if (item.lore_loc) { %> <p class="lore"><%= item.lore_loc %></p> <% } %> </div> <% }); %> </div><div class="lore"> <%- hero.bio_loc %> </div></div></body><script>document.addEventListener('DOMContentLoaded', function() {
|
|
25
25
|
const items = document.querySelectorAll('.skills > .skill');
|
|
26
26
|
items.forEach(item => {
|
|
27
27
|
// const name = item.getAttribute('data-name');
|
package/package.json
CHANGED