@sjtdev/koishi-plugin-dota2tracker 1.0.3
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/images/flag_dire.png +0 -0
- package/images/flag_radiant.png +0 -0
- package/images/hero_badge_1.png +0 -0
- package/images/hero_badge_2.png +0 -0
- package/images/hero_badge_3.png +0 -0
- package/images/hero_badge_4.png +0 -0
- package/images/hero_badge_5.png +0 -0
- package/images/hero_badge_6.png +0 -0
- package/images/medal_0.png +0 -0
- package/images/medal_1.png +0 -0
- package/images/medal_2.png +0 -0
- package/images/medal_3.png +0 -0
- package/images/medal_4.png +0 -0
- package/images/medal_5.png +0 -0
- package/images/medal_6.png +0 -0
- package/images/medal_7.png +0 -0
- package/images/medal_8.png +0 -0
- package/images/medal_8b.png +0 -0
- package/images/medal_8c.png +0 -0
- package/images/star_0.png +0 -0
- package/images/star_1.png +0 -0
- package/images/star_2.png +0 -0
- package/images/star_3.png +0 -0
- package/images/star_4.png +0 -0
- package/images/star_5.png +0 -0
- package/lib/index.js +1972 -0
- package/package.json +51 -0
- package/readme.md +47 -0
- package/template/hero.html +516 -0
- package/template/match.html +1027 -0
- package/template/player.html +414 -0
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sjtdev/koishi-plugin-dota2tracker",
|
|
3
|
+
"description": "",
|
|
4
|
+
"version": "1.0.3",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"typings": "lib/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"lib",
|
|
9
|
+
"dist",
|
|
10
|
+
"images",
|
|
11
|
+
"template"
|
|
12
|
+
],
|
|
13
|
+
"contributors": [
|
|
14
|
+
"sjtdev <sh1j1n9ta0@foxmail.com>"
|
|
15
|
+
],
|
|
16
|
+
"homepage": "https://github.com/sjtdev/koishi-plugin-dota2tracker",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/sjtdev/koishi-plugin-dota2tracker.git"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"keywords": [
|
|
23
|
+
"chatbot",
|
|
24
|
+
"koishi",
|
|
25
|
+
"plugin",
|
|
26
|
+
"dota"
|
|
27
|
+
],
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"axios": "^1.6.8",
|
|
30
|
+
"cheerio": "^1.0.0-rc.12",
|
|
31
|
+
"dotaconstants": "^8.5.0",
|
|
32
|
+
"moment": "^2.30.1"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"koishi": "^4.17.3"
|
|
36
|
+
},
|
|
37
|
+
"koishi": {
|
|
38
|
+
"preview": "true",
|
|
39
|
+
"description": {
|
|
40
|
+
"zh": "追踪群友的DOTA2对局"
|
|
41
|
+
},
|
|
42
|
+
"required": [
|
|
43
|
+
"database",
|
|
44
|
+
"puppeteer",
|
|
45
|
+
"cron"
|
|
46
|
+
],
|
|
47
|
+
"locales": [
|
|
48
|
+
"zh"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# @sjtdev/koishi-plugin-dota2tracker
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@sjtdev/koishi-plugin-dota2tracker)
|
|
4
|
+
|
|
5
|
+
DOTA2Bot插件-提供自动追踪群友的最新对局的功能(需群友绑定),以及一系列查询功能。
|
|
6
|
+
### 安装
|
|
7
|
+
在koishi插件市场搜索安装
|
|
8
|
+
|
|
9
|
+
### 使用
|
|
10
|
+
需在插件配置页填入STRATZ API TOKEN,否则无法使用。
|
|
11
|
+
在希望推送战报信息的群组使用指令【-订阅本群】,玩家可使用指令【-绑定】来将自身账号与Steam账号绑定,bot会尝试追踪已订阅群组中的绑定玩家的最新对局信息。
|
|
12
|
+
其他查询功能见下方指令说明。
|
|
13
|
+
**直接调用help指令可获取更详细的说明,调用【指令 -h】还会有用法示例。(例如:订阅本群 -h)**
|
|
14
|
+
|
|
15
|
+
### 指令
|
|
16
|
+
指令 <必填参数> [可选参数]
|
|
17
|
+
##### 订阅
|
|
18
|
+
(bot仅向已订阅群组推送信息)
|
|
19
|
+
* <input type="checkbox" checked>`订阅本群`
|
|
20
|
+
* <input type="checkbox" checked>`取消订阅`
|
|
21
|
+
##### 绑定
|
|
22
|
+
(bot会追踪每位绑定玩家的最新对局)
|
|
23
|
+
* <input type="checkbox" checked>`绑定 <玩家SteamID> [玩家别名]`
|
|
24
|
+
* <input type="checkbox" checked>`取消绑定`
|
|
25
|
+
* <input type="checkbox" checked>`改名 <新玩家别名>`
|
|
26
|
+
##### 查询
|
|
27
|
+
* <input type="checkbox" checked>`查询玩家 [SteamID|别名]`
|
|
28
|
+
返回一张图片,包含玩家各类信息。(缺省参数时并且调用者已绑定将自查)
|
|
29
|
+
* <input type="checkbox" checked>`查询比赛 <比赛ID>`
|
|
30
|
+
返回一张图片,包含比赛对战信息。
|
|
31
|
+
* <input type="checkbox" checked>`查询最近比赛 [SteamID|别名]`
|
|
32
|
+
查询指定玩家的最近一场比赛,效果同上。(缺省参数时并且调用者已绑定将自查)
|
|
33
|
+
* <input type="checkbox" checked>`查询英雄 <英雄ID|英雄名|英雄常用别名>`
|
|
34
|
+
返回一张图片,包含英雄属性与技能详情。(此处英雄名为中文名)
|
|
35
|
+
* <input type="checkbox" checked><del>`查询英雄对战 <英雄ID|英雄名|英雄常用别名>`</del>
|
|
36
|
+
好像不是很实用
|
|
37
|
+
|
|
38
|
+
### Q&A
|
|
39
|
+
Q: 为什么图片都这么难看!
|
|
40
|
+
A: 作者实在是没有一丝的设计天分,欢迎有想法的设计大佬前来交流。
|
|
41
|
+
|
|
42
|
+
Q: 发现bug/使用问题
|
|
43
|
+
A: 本插件还在开发中,虽然基础功能都已实现,也难免会因业余作者低下的技术力堆出的shi山造成一些问题,欢迎指出。
|
|
44
|
+
|
|
45
|
+
## 灵感来源&鸣谢
|
|
46
|
+
* 感谢[SonodaHanami](https://github.com/SonodaHanami)大佬的[Steam_watcher](https://github.com/SonodaHanami/Steam_watcher)项目,是本插件最重要的灵感来源,并授权提供了战报称号系统、英雄代称与播报信息的代码数据。
|
|
47
|
+
* 也受到了[koishi-plugin-dota2track(npm)](https://www.npmjs.com/package/koishi-plugin-dota2track)的启发,为我的代码提供了一些思路。
|
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Document</title>
|
|
7
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" />
|
|
8
|
+
<style>
|
|
9
|
+
html,
|
|
10
|
+
body {
|
|
11
|
+
background-color: black;
|
|
12
|
+
color: white;
|
|
13
|
+
width: 800px;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.wrapper > *:not(.skills) {
|
|
17
|
+
margin: 5px;
|
|
18
|
+
box-shadow: 0 0 5px #fff;
|
|
19
|
+
display: flex;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
img {
|
|
23
|
+
width: 100%;
|
|
24
|
+
vertical-align: middle;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
p {
|
|
28
|
+
margin: 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.hero {
|
|
32
|
+
position: relative;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.hero img {
|
|
36
|
+
/* flex-grow: 1; */
|
|
37
|
+
width: 25%;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.hero .pri_attr {
|
|
41
|
+
position: absolute;
|
|
42
|
+
width: 48px;
|
|
43
|
+
left: 25%;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.hero .info {
|
|
47
|
+
display: flex;
|
|
48
|
+
width: 75%;
|
|
49
|
+
/* height: 100%; */
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
justify-content: space-around;
|
|
52
|
+
align-items: center;
|
|
53
|
+
padding: 4px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.hero .info .name {
|
|
57
|
+
font-size: 24px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.hero .info .roles .role {
|
|
61
|
+
font-size: 14px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.hero .info .roles .role:not(:last-child) {
|
|
65
|
+
margin-right: 12px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.hero .info .roles .role::after {
|
|
69
|
+
margin-left: 3px;
|
|
70
|
+
font-size: 22px;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.hero .info .roles .role.level1::after {
|
|
74
|
+
content: "■□□";
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.hero .info .roles .role.level2::after {
|
|
78
|
+
content: "■■□";
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.hero .info .roles .role.level3::after {
|
|
82
|
+
content: "■■■";
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.hero .info .attrs {
|
|
86
|
+
height: 16px;
|
|
87
|
+
font-size: 16px;
|
|
88
|
+
line-height: 1;
|
|
89
|
+
}
|
|
90
|
+
.hero .info .attrs > span {
|
|
91
|
+
margin: 0 8px;
|
|
92
|
+
vertical-align: middle;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.hero .info .attrs > span::before {
|
|
96
|
+
display: inline-block;
|
|
97
|
+
content: "";
|
|
98
|
+
background-size: 100%;
|
|
99
|
+
width: 16px;
|
|
100
|
+
height: 16px;
|
|
101
|
+
vertical-align: top;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.hero .info .attrs > span.str::before {
|
|
105
|
+
background-image: url("https://cdn.cloudflare.steamstatic.com/apps/dota2/images/dota_react/icons/hero_strength.png");
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.hero .info .attrs > span.agi::before {
|
|
109
|
+
background-image: url("https://cdn.cloudflare.steamstatic.com/apps/dota2/images/dota_react/icons/hero_agility.png");
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.hero .info .attrs > span.int::before {
|
|
113
|
+
background-image: url("https://cdn.cloudflare.steamstatic.com/apps/dota2/images/dota_react/icons/hero_intelligence.png");
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.details {
|
|
117
|
+
flex-direction: row;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.details > * {
|
|
121
|
+
width: 50%;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.details .hype_talents {
|
|
125
|
+
display: flex;
|
|
126
|
+
flex-direction: column;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.details .hype {
|
|
130
|
+
padding: 8px;
|
|
131
|
+
line-height: 1.25;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.talents {
|
|
135
|
+
display: flex; /* 启用Flex布局 */
|
|
136
|
+
flex-wrap: wrap; /* 允许元素换行 */
|
|
137
|
+
justify-content: center; /* 水平居中整体内容 */
|
|
138
|
+
border: #444 10px solid;
|
|
139
|
+
/* background-color: ; */
|
|
140
|
+
/* padding: 10px; */
|
|
141
|
+
box-sizing: border-box;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.talents .talent {
|
|
145
|
+
width: 375px;
|
|
146
|
+
line-height: 35px;
|
|
147
|
+
text-align: center;
|
|
148
|
+
display: flex;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.talents .talent .left,
|
|
152
|
+
.talents .talent .right {
|
|
153
|
+
width: 170px;
|
|
154
|
+
font-size: 12px;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.talents .talent:not(:last-child) {
|
|
158
|
+
border-bottom: 10px solid #444;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.talents .talent .level {
|
|
162
|
+
flex: 0 0 auto; /* 第二个元素不伸缩,保持自身宽度 */
|
|
163
|
+
width: 35px; /* 给中间元素一个固定宽度 */
|
|
164
|
+
height: 35px;
|
|
165
|
+
font-size: 18px;
|
|
166
|
+
line-height: 35px;
|
|
167
|
+
text-align: center;
|
|
168
|
+
box-sizing: border-box;
|
|
169
|
+
border-radius: 100%;
|
|
170
|
+
color: #e7d292;
|
|
171
|
+
text-shadow: 0px 0px 8px #ff531c;
|
|
172
|
+
background-color: #444;
|
|
173
|
+
/* font-family: Reaver, serif;
|
|
174
|
+
font-weight: bold; */
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.details .list {
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.details .list td {
|
|
181
|
+
width: 50%;
|
|
182
|
+
text-align: center;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.details .list tr:nth-child(even) {
|
|
186
|
+
background-color: #333;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.skills {
|
|
190
|
+
width: 800px;
|
|
191
|
+
display: flex;
|
|
192
|
+
flex-wrap: wrap;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.skill {
|
|
196
|
+
position: relative;
|
|
197
|
+
background-color: #141b1f;
|
|
198
|
+
margin: 5px;
|
|
199
|
+
box-shadow: 0 0 5px #fff;
|
|
200
|
+
width: 390px;
|
|
201
|
+
/* flex-direction: column; */
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.skill > *:not(:nth-child(2)) {
|
|
205
|
+
padding-left: 8px;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.skill > .title {
|
|
209
|
+
background-color: #1f272b;
|
|
210
|
+
padding: 8px;
|
|
211
|
+
font-weight: 100;
|
|
212
|
+
font-family: "KaiTi", "楷体", "楷体_GB2312", "STKaiti", serif;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.skill svg.scepter {
|
|
216
|
+
position: absolute;
|
|
217
|
+
right: 8px;
|
|
218
|
+
top: 4.57px;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.skill svg.shard {
|
|
222
|
+
position: absolute;
|
|
223
|
+
right: 8px;
|
|
224
|
+
top: 13.88px;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.skill .img_stats {
|
|
228
|
+
display: flex;
|
|
229
|
+
color: #546780;
|
|
230
|
+
margin-bottom: 16px;
|
|
231
|
+
border-top: #2a363c 1px solid;
|
|
232
|
+
border-bottom: #2a363c 1px solid;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.skill .img_stats img {
|
|
236
|
+
width: 128px;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.skill .img_stats .stats {
|
|
240
|
+
padding: 8px;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.skill .stats .dmg_type.Physical::after {
|
|
244
|
+
content: "物理";
|
|
245
|
+
color: #ae2f28;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.skill .stats .dmg_type.Magical::after {
|
|
249
|
+
content: "魔法";
|
|
250
|
+
color: #5b93d1;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.skill .stats .dmg_type.Pure::after {
|
|
254
|
+
content: "纯粹";
|
|
255
|
+
color: #c29c4a;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.skill .stats .dispellable.Yes::after {
|
|
259
|
+
content: "是";
|
|
260
|
+
/* color: #c29c4a; */
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.skill .stats .dispellable.No::after {
|
|
264
|
+
content: "无法驱散";
|
|
265
|
+
color: #f00;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.skill .stats .dispellable.Strong::after {
|
|
269
|
+
content: "仅强驱散";
|
|
270
|
+
color: #9828ae;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.skill .description {
|
|
274
|
+
color: #9bb1ce;
|
|
275
|
+
margin-bottom: 32px;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.skill .aghanim_description {
|
|
279
|
+
padding-left: 0;
|
|
280
|
+
color: #9bb1ce;
|
|
281
|
+
margin-bottom: 16px;
|
|
282
|
+
border: #263945 solid 3px;
|
|
283
|
+
box-sizing: border-box;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.skill .aghanim_description .title {
|
|
287
|
+
/* content: "阿哈利姆魔晶"; */
|
|
288
|
+
display: block;
|
|
289
|
+
font-size: 20px;
|
|
290
|
+
background-color: #263945;
|
|
291
|
+
padding: 12px;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.skill .aghanim_description .desc {
|
|
295
|
+
margin: 12px;
|
|
296
|
+
display: block;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.skill .notes {
|
|
300
|
+
padding: 12px;
|
|
301
|
+
margin-bottom: 12px;
|
|
302
|
+
color: #9fb7c6;
|
|
303
|
+
background-color: #263945;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.skill .attributes .item {
|
|
307
|
+
color: #546780;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.skill .attributes .item::after {
|
|
311
|
+
content: ":";
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.skill .attributes .values {
|
|
315
|
+
color: #4b525d;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.skill .attributes {
|
|
319
|
+
margin-bottom: 12px;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.skill .mana_cost {
|
|
323
|
+
padding-left: 12px;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.skill .cooldown::before,
|
|
327
|
+
.skill .mana_cost::before {
|
|
328
|
+
content: "";
|
|
329
|
+
background-size: 100%;
|
|
330
|
+
width: 21px;
|
|
331
|
+
height: 21px;
|
|
332
|
+
display: inline-block;
|
|
333
|
+
vertical-align: middle;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.skill .cooldown::before {
|
|
337
|
+
background-image: url("data:image/webp;base64,UklGRnABAABXRUJQVlA4TGMBAAAvE8AEEE2QTdqmkI5pRP/DS2wBEIT/bw8R/U8Ddq1NipSvGnd3eXJ3d3kmEM+GTDwBciCBTQCd7qpCeokBQdu2cc6f8tcQEBT5P9oEIGiwYuMBECqAbCUVIIAa19Py1I/AQMrJVGEABACe+DRqcl2GUxeOwIAzQkAAMCBxyi3BRcbSkzAKyIDTciQOAAgwyx43JA4CWRkeQXAAQKkGEs5+/siARwFHAHCUiAGwPwAEAGQSDgCAoCQUQc7OkwMbhgAAJBIKEAtkE9enBgcABEUxAIwyZ6cOx/lTkPiHsX+mqCQTMQRwcmAszPLUoTiCkVAAbDKEAWWUjWlGMYyEAR4n4wMeiBk8W9M1lphIQmAsmWxBJ1vfAJZIBMAoJwNQ0JTN04/yRaCCftofwWBkAMAjQ6BILaWMsEkFFVTTk/qEETyQlYFXnh9jmABKbkgzNQgemYwnTOKFEgAAOGJAeUbyhQIAAA==");
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.skill .mana_cost::before {
|
|
341
|
+
background-image: url("data:image/webp;base64,UklGRsYAAABXRUJQVlA4TLkAAAAvE8AEEIfBOIDbtEmdpEDhS8G2kSTF0eteuLOebJz/0KDREgwBAGEu/89yqe5LCyEaDT03NBcLpEXnJgkZKS2dmlqAlNSCgJXURBoNCHAY2bbSvEP0fxzi7sGh//rslRDR/xQxS0bXRkRMmr5Ho8iISY5523Ztr2vabBuaZZLVE99wRqWAUgGFAv4K+Cngo4CXAp4KeCjgroCbAi4KVv7pOnFwF8aP9+fRXeAaMZ63GbXWiIhxGJ0bEQA=");
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
.skill .lore {
|
|
345
|
+
font-size: 13px;
|
|
346
|
+
color: #3e4f5b;
|
|
347
|
+
padding: 8px;
|
|
348
|
+
line-height: 1.25;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
body .wrapper > .lore {
|
|
352
|
+
/* flex-direction: column; */
|
|
353
|
+
display: block;
|
|
354
|
+
line-height: 1.25;
|
|
355
|
+
padding: 8px;
|
|
356
|
+
font-family: "KaiTi", "楷体", "楷体_GB2312", "STKaiti", serif;
|
|
357
|
+
color: #aaa;
|
|
358
|
+
}
|
|
359
|
+
</style>
|
|
360
|
+
</head>
|
|
361
|
+
<body>
|
|
362
|
+
<div class="wrapper">
|
|
363
|
+
<div class="hero">
|
|
364
|
+
<img src="https://cdn.cloudflare.steamstatic.com/apps/dota2/images/dota_react/heroes/hoodwink.png" alt="" />
|
|
365
|
+
<img class="pri_attr" src="https://cdn.cloudflare.steamstatic.com/apps/dota2/images/dota_react/icons/hero_universal.png" alt="" />
|
|
366
|
+
<div class="info">
|
|
367
|
+
<p class="name">森海飞霞</p>
|
|
368
|
+
<p class="roles">
|
|
369
|
+
<span class="role level2">ESCAPE</span>
|
|
370
|
+
<span class="role level2">NUKER</span>
|
|
371
|
+
<span class="role level1">DISABLER</span>
|
|
372
|
+
<span class="role level2">SUPPORT</span>
|
|
373
|
+
</p>
|
|
374
|
+
<p class="attrs">
|
|
375
|
+
<span class="str">17 <span class="gain">+2.0</span></span> <span class="agi">17 <span class="gain">+2.0</span></span>
|
|
376
|
+
<span class="int">17 <span class="gain">+2.0</span></span>
|
|
377
|
+
</p>
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
<div class="details">
|
|
381
|
+
<div class="hype_talents">
|
|
382
|
+
<div class="hype">
|
|
383
|
+
麻烦来临时森海飞霞总是身在左近,她的生活就是与自己视为家乡的诡异林渊中充斥的威胁纠缠不清。
|
|
384
|
+
携带着<b>巨大的弩机</b>,同时仍能<b>在密林中轻松奔走</b>,森海飞霞在战斗中来去自如。只要有一瞬间没见到她,她就会从你背后现身——而你目瞪口呆的尸体已经挂在她的<b>一张网</b>里。
|
|
385
|
+
</div>
|
|
386
|
+
<div class="talents">
|
|
387
|
+
<div class="talent">
|
|
388
|
+
<div class="left">+10 zuobiantianfu</div>
|
|
389
|
+
<div class="level">25</div>
|
|
390
|
+
<div class="right">+20 youbiantianfu</div>
|
|
391
|
+
</div>
|
|
392
|
+
<div class="talent">
|
|
393
|
+
<div class="left">+10 zuobiantianfu</div>
|
|
394
|
+
<div class="level">20</div>
|
|
395
|
+
<div class="right">+20 youbiantianfu</div>
|
|
396
|
+
</div>
|
|
397
|
+
<div class="talent">
|
|
398
|
+
<div class="left">+10 zuobiantianfu</div>
|
|
399
|
+
<div class="level">15</div>
|
|
400
|
+
<div class="right">+20 youbiantianfu</div>
|
|
401
|
+
</div>
|
|
402
|
+
<div class="talent">
|
|
403
|
+
<div class="left">+10 zzz</div>
|
|
404
|
+
<div class="level">10</div>
|
|
405
|
+
<div class="right">+40% 密林奔走开启时闪避</div>
|
|
406
|
+
</div>
|
|
407
|
+
</div>
|
|
408
|
+
</div>
|
|
409
|
+
<table class="list">
|
|
410
|
+
<tbody>
|
|
411
|
+
<tr>
|
|
412
|
+
<td>初始生命值</td>
|
|
413
|
+
<td>123</td>
|
|
414
|
+
</tr>
|
|
415
|
+
<tr>
|
|
416
|
+
<td>初始生命回复</td>
|
|
417
|
+
<td>1.23</td>
|
|
418
|
+
</tr>
|
|
419
|
+
<tr>
|
|
420
|
+
<td>初始魔法值</td>
|
|
421
|
+
<td>123</td>
|
|
422
|
+
</tr>
|
|
423
|
+
<tr>
|
|
424
|
+
<td>初始魔法回复</td>
|
|
425
|
+
<td>1.23</td>
|
|
426
|
+
</tr>
|
|
427
|
+
<tr>
|
|
428
|
+
<td>初始攻击力</td>
|
|
429
|
+
<td>55(11~22)</td>
|
|
430
|
+
</tr>
|
|
431
|
+
<tr>
|
|
432
|
+
<td>基础攻击间隔</td>
|
|
433
|
+
<td>2.0</td>
|
|
434
|
+
</tr>
|
|
435
|
+
<tr>
|
|
436
|
+
<td>基础攻击前摇</td>
|
|
437
|
+
<td>0.4</td>
|
|
438
|
+
</tr>
|
|
439
|
+
<tr>
|
|
440
|
+
<td>攻击范围</td>
|
|
441
|
+
<td>575</td>
|
|
442
|
+
</tr>
|
|
443
|
+
<tr>
|
|
444
|
+
<td>护甲</td>
|
|
445
|
+
<td>2(11%)</td>
|
|
446
|
+
</tr>
|
|
447
|
+
<tr>
|
|
448
|
+
<td>移动速度</td>
|
|
449
|
+
<td>333</td>
|
|
450
|
+
</tr>
|
|
451
|
+
<tr>
|
|
452
|
+
<td>视野范围</td>
|
|
453
|
+
<td>1800(800)</td>
|
|
454
|
+
</tr>
|
|
455
|
+
</tbody>
|
|
456
|
+
</table>
|
|
457
|
+
</div>
|
|
458
|
+
<div class="skills">
|
|
459
|
+
<div class="skill">
|
|
460
|
+
<p class="title">爆栗出击</p>
|
|
461
|
+
<svg class="shard" viewBox="0 0 19 10" fill="hsla(0,0%,100%,0.16)" width="24">
|
|
462
|
+
<path
|
|
463
|
+
d="M0.259504 4.54746C0.272981 4.60325 0.326002 4.64198 0.386194 4.64198C0.831857 4.62418 2.60461 4.45628 3.91732 2.90727C4.49956 2.22054 4.37916 1.21884 3.64777 0.671532C2.91819 0.125197 1.85256 0.238284 1.27032 0.924899C-0.0423919 2.47305 0.17864 4.13525 0.259504 4.54746Z"
|
|
464
|
+
fill="url(#activeAghanimLeftShardGradient)"
|
|
465
|
+
></path>
|
|
466
|
+
<path
|
|
467
|
+
d="M9.46713 9.98081C9.42698 10.0064 9.37572 10.0064 9.33559 9.98081C8.88968 9.67166 6.33212 7.75166 6.33212 4.38581C6.33212 2.96661 7.70742 1.81406 9.40136 1.81406C11.0953 1.81406 12.4706 2.96661 12.4706 4.38581C12.4706 7.75166 9.91303 9.67166 9.46713 9.98081Z"
|
|
468
|
+
fill="url(#activeAghanimMidShardGradient)"
|
|
469
|
+
></path>
|
|
470
|
+
<path
|
|
471
|
+
d="M18.6888 4.54746C18.6753 4.60325 18.6232 4.64198 18.5631 4.64198C18.1173 4.62418 16.3445 4.45628 15.0317 2.90727C14.4494 2.22054 14.5697 1.21884 15.3003 0.671532C16.0308 0.125197 17.0966 0.238284 17.6788 0.924899C18.9917 2.47305 18.7707 4.13525 18.6888 4.54746Z"
|
|
472
|
+
fill="url(#activeAghanimRightShardGradient)"
|
|
473
|
+
></path>
|
|
474
|
+
<defs>
|
|
475
|
+
<radialGradient id="activeAghanimMidShardGradient" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(9.01787 2.49983) rotate(90) scale(7.50029 5.21143)">
|
|
476
|
+
<stop stop-color="#00CEFF"></stop>
|
|
477
|
+
<stop offset="1" stop-color="#3443C4"></stop>
|
|
478
|
+
</radialGradient>
|
|
479
|
+
<radialGradient id="activeAghanimLeftShardGradient" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(3.98746 0.625367) rotate(128.66) scale(6.00315 4.79432)">
|
|
480
|
+
<stop stop-color="#00CEFF"></stop>
|
|
481
|
+
<stop offset="1" stop-color="#3443C4"></stop>
|
|
482
|
+
</radialGradient>
|
|
483
|
+
<radialGradient id="activeAghanimRightShardGradient" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(14.2996 0.625367) rotate(51.3402) scale(6.00316 4.7942)">
|
|
484
|
+
<stop stop-color="#00CEFF"></stop>
|
|
485
|
+
<stop offset="1" stop-color="#3443C4"></stop>
|
|
486
|
+
</radialGradient>
|
|
487
|
+
</defs>
|
|
488
|
+
</svg>
|
|
489
|
+
<div class="img_stats">
|
|
490
|
+
<img src="https://cdn.cloudflare.steamstatic.com/apps/dota2/images/dota_react/abilities/hoodwink_acorn_shot.png" alt="" />
|
|
491
|
+
<div class="stats">
|
|
492
|
+
<p class="stat">技能:点目标</p>
|
|
493
|
+
<p class="dmg_type Magical">伤害类型:</p>
|
|
494
|
+
</div>
|
|
495
|
+
</div>
|
|
496
|
+
<p class="description">森海飞霞向目标单位发射一颗橡栗,可以弹射至附近敌人,减缓他们的移动速度,并造成攻击伤害的一定百分比和额外伤害。</p>
|
|
497
|
+
<p class="description">可以对地面施放,在目标地点种出一棵树,而橡栗会弹射至附近目标。设为多样施法后会强制沿用该行为。</p>
|
|
498
|
+
<p class="shard aghanim_description"><span class="title"> 阿哈利姆魔晶</span><span class="desc">可以对地面施放,在目标地点种出一棵树,而橡栗会弹射至附近目标。设为多样施法后会强制沿用该行为。</span></p>
|
|
499
|
+
<div class="notes">
|
|
500
|
+
<p>同一个目标可以被击中超过一次。</p>
|
|
501
|
+
<p>弹射会搜寻525范围内战争迷雾中的单位,但无视隐身单位。</p>
|
|
502
|
+
<p>种下的树持续20秒。</p>
|
|
503
|
+
<p>爆栗出击可以享受攻击距离加成效果。</p>
|
|
504
|
+
</div>
|
|
505
|
+
<div class="attributes"><span class="item">额外攻击距离</span><span class="values"> 125 / 200 / 275 / 350</span></div>
|
|
506
|
+
<p><span class="cooldown"> 16 / 14 / 12 / 10 </span><span class="mana_cost" style="padding-left: 12px"> 70 / 75 / 80 / 85 </span></p>
|
|
507
|
+
<p class="lore">虽然她几乎什么都能凑合着用,不过橡树和铁树之木的栗子是最有效的炮弹——也是森海飞霞大部分的存货来源。</p>
|
|
508
|
+
</div>
|
|
509
|
+
</div>
|
|
510
|
+
<div class="lore">
|
|
511
|
+
在云硝国的边界,绿色的森林绵延不绝,生活悠然自得,森海飞霞的早年时光就是在这里度过的。但是随着王国的发展,居民和军队的需求急剧增加,互相竞争的矿石和木材大亨拼命地你追我赶,疯狂地进行扩张来满足日新月异的需求,而边界森林的自然美景不断遭到蚕食。
|
|
512
|
+
<br /><br />生活在古老林地中的人们别无选择,摆在面前的选择有跟随一众难民进入和平地带,或者在保卫自己的房屋时倒在云硝国的火药和铁器之下,又或者继续北上,逃往云雾缭绕的托莫干森林,在幽谷和密林中碰碰运气。<br /><br />而正是在这片危险的北方林渊中,森海飞霞时刻都在躲避托莫干中可怕的捕食者,拉拢当地一些匪徒时也对其他帮派施以颜色,还会想尽一切办法来引发有意思的恶作剧——<i>听说</i>她常常就是罪魁祸首。就这样,她一路长大成年。<br /><br />但云硝国的大火终于有一丝气味飘到了她第二个故乡,森海飞霞的思绪落在侵略下存活的亲友身上——如今他们在被夷平的土地上苟延残喘,这让她心如刀割——她禁不住想前往文明的边际,看一眼摧毁她过去生活的恶魔。<br /><br />到了目的地之后,她亲眼见到了。她看到她童年里的怪物根本就不是怪物。他们只是……普通人。士兵,工人,商贩……还有难民。而士兵,就算配备了火药和铁器,也根本比不上托莫干的危险——那是真正的危险,有着触角和利齿——她像不停转动的枫子围绕着这些危险翩翩起舞。<br /><br />永远笼罩着浓雾的森林让多数热血的人们不敢涉足,而森海飞霞对其中盘根错节的小路了如指掌,现在她会对胆敢威胁林野的人出手——开心地从他们手里拿走自己喜爱的东西,摧毁她不感兴趣的,还有帮助幸存的同胞重拾森林中的生活。
|
|
513
|
+
</div>
|
|
514
|
+
</div>
|
|
515
|
+
</body>
|
|
516
|
+
</html>
|