├── .browserslistrc
├── .eslintrc.js
├── .github
└── workflows
│ └── main.yml
├── .gitignore
├── README.md
├── babel.config.js
├── package-lock.json
├── package.json
├── public
├── bootstrap.bundle.min.js
├── bootstrap.bundle.min.js.map
├── favicon.ico
└── index.html
├── src
├── App.vue
├── assets
│ └── logo.png
├── components
│ └── PacketStructure.vue
├── data
│ ├── 1.13c
│ │ ├── client2sid.json
│ │ └── gs2client.json
│ ├── 1.14d
│ │ ├── client2gs.json
│ │ ├── client2mcps.json
│ │ ├── client2sid.json
│ │ ├── gs2client.json
│ │ ├── mcps2client.json
│ │ └── sid2client.json
│ └── 1.15
│ │ ├── client2gs.json
│ │ └── gs2client.json
├── main.js
└── styles
│ ├── accessible-colors.scss
│ ├── base.scss
│ ├── mixins.scss
│ ├── normalize.scss
│ ├── page.scss
│ ├── utilities.scss
│ └── variables.scss
└── vue.config.js
/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not dead
4 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | 'extends': [
7 | 'plugin:vue/essential',
8 | 'eslint:recommended'
9 | ],
10 | parserOptions: {
11 | parser: 'babel-eslint'
12 | },
13 | rules: {
14 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
15 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: CI
4 |
5 | # Controls when the action will run.
6 | on:
7 | # Triggers the workflow on push or pull request events but only for the main branch
8 | push:
9 | branches: [ main ]
10 | pull_request:
11 | branches: [ main ]
12 |
13 | # Allows you to run this workflow manually from the Actions tab
14 | workflow_dispatch:
15 |
16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
17 | jobs:
18 | # This workflow contains a single job called "build"
19 | build:
20 | # The type of runner that the job will run on
21 | runs-on: ubuntu-latest
22 |
23 | # Steps represent a sequence of tasks that will be executed as part of the job
24 | steps:
25 | - uses: actions/setup-node@v3
26 | with:
27 | node-version: 12
28 |
29 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
30 | - uses: actions/checkout@v2
31 |
32 | # Set up a cache for the node modules to speed up builds
33 | - name: Cache node modules
34 | uses: actions/cache@v2
35 | env:
36 | cache-name: cache-node-modules
37 | with:
38 | # npm cache files are stored in `~/.npm` on Linux/macOS
39 | path: ~/.npm
40 | key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
41 | restore-keys: |
42 | ${{ runner.os }}-build-${{ env.cache-name }}-
43 | ${{ runner.os }}-build-
44 | ${{ runner.os }}-
45 |
46 | # Runs a single command using the runners shell
47 | - name: Install Build Tools
48 | run: npm install
49 |
50 | # Runs a set of commands using the runners shell
51 | - name: Build App
52 | run: npm run build
53 |
54 | # Deploy the new built app but only for push. PR should not be able to deploy ...
55 | - name: Deploy 🚀
56 | if: ${{ github.event_name == 'push' }}
57 | uses: JamesIves/github-pages-deploy-action@3.7.1
58 | with:
59 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
60 | BRANCH: docs # The branch the action should deploy to.
61 | FOLDER: docs # The folder the action should deploy.
62 | CLEAN: true # Automatically remove deleted files from the deploy branch
63 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /docs
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | pnpm-debug.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Diablo 2 Packets Data
2 |
3 | The main data for this repo lives in `src/data/`, so any updates to the packet data should be done there.
4 |
5 | To set up the app for local testing run `npm install` in the repo root folder (requires node.js).
6 |
7 | To locally test the app run `npm start`.
8 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hello-world",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "start": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "core-js": "^3.6.5",
12 | "vue": "^2.6.11"
13 | },
14 | "devDependencies": {
15 | "@vue/cli-plugin-babel": "~4.5.0",
16 | "@vue/cli-plugin-eslint": "~4.5.0",
17 | "@vue/cli-service": "~4.5.0",
18 | "babel-eslint": "^10.1.0",
19 | "eslint": "^6.7.2",
20 | "eslint-plugin-vue": "^6.2.2",
21 | "node-sass": "^4.12.0",
22 | "sass-loader": "^8.0.2",
23 | "vue-template-compiler": "^2.6.11",
24 | "elliptic": "^6.5.4",
25 | "ssri": ">=8.0.1",
26 | "is-svg": ">=4.2.2"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blizzhackers/Diablo2PacketsData/3663daf9375ca9ebaa69e9ec41e92aa9e1923915/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | D2 Packet Browser
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ dark ? 'Use Light Mode' : 'Use Dark Mode' }}
4 |
5 |
6 |
D2 Packet Browser
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
22 |
23 |
24 |
25 | {{ column }} {{ packet[column] }}
26 |
27 |
28 |
29 | Description
30 | {{ packet.Description }}
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
248 |
249 |
254 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blizzhackers/Diablo2PacketsData/3663daf9375ca9ebaa69e9ec41e92aa9e1923915/src/assets/logo.png
--------------------------------------------------------------------------------
/src/components/PacketStructure.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ title }}
5 |
6 |
7 |
8 |
{{ fieldType }} {{ field }}
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
30 |
31 |
32 |
34 |
--------------------------------------------------------------------------------
/src/data/1.13c/client2sid.json:
--------------------------------------------------------------------------------
1 | {
2 | "SID_NULL" : {
3 | "PacketId" : "0x00",
4 | "Description" : "",
5 | "Structure" : [
6 | { "SidHeader" : [
7 | { "BYTE" : "AlwaysFF" },
8 | { "BYTE" : "PacketId" },
9 | { "short" : "nSize" }
10 | ]
11 | }
12 | ]
13 | },
14 | "SID_STOPADV" : {
15 | "PacketId" : "0x02",
16 | "Description" : "",
17 | "Structure" : [
18 | { "SidHeader" : [
19 | { "BYTE" : "AlwaysFF" },
20 | { "BYTE" : "PacketId" },
21 | { "short" : "nSize" }
22 | ]
23 | }
24 | ]
25 | },
26 | "SID_GETADVLISTEX" : {
27 | "PacketId" : "0x09",
28 | "Description" : "",
29 | "Structure" : [
30 | { "SidHeader" : [
31 | { "BYTE" : "AlwaysFF" },
32 | { "BYTE" : "PacketId" },
33 | { "short" : "nSize" }
34 | ]
35 | },
36 | { "short" : "GameType" },
37 | { "short" : "GameSubType" },
38 | { "int" : "ViewingFilter" },
39 | { "int" : "Zero" },
40 | { "int" : "NumberOfGames" },
41 | { "std::string" : "GameName" },
42 | { "std::string" : "GamePass" },
43 | { "std::string" : "GameDesc" }
44 | ]
45 | },
46 | "SID_ENTERCHAT" : {
47 | "PacketId" : "0x0A",
48 | "Description" : "",
49 | "Structure" : [
50 | { "SidHeader" : [
51 | { "BYTE" : "AlwaysFF" },
52 | { "BYTE" : "PacketId" },
53 | { "short" : "nSize" }
54 | ]
55 | },
56 | { "std::string" : "Username" },
57 | { "std::string" : "Statstring" }
58 | ]
59 | },
60 | "SID_GETCHANNELLIST" : {
61 | "PacketId" : "0x0B",
62 | "Description" : "",
63 | "Structure" : [
64 | { "SidHeader" : [
65 | { "BYTE" : "AlwaysFF" },
66 | { "BYTE" : "PacketId" },
67 | { "short" : "nSize" }
68 | ]
69 | },
70 | { "int" : "ProductCode" }
71 | ]
72 | },
73 | "SID_JOINCHANNEL" : {
74 | "PacketId" : "0x0C",
75 | "Description" : "",
76 | "Structure" : [
77 | { "SidHeader" : [
78 | { "BYTE" : "AlwaysFF" },
79 | { "BYTE" : "PacketId" },
80 | { "short" : "nSize" }
81 | ]
82 | },
83 | { "int" : "Flags" },
84 | { "std::string" : "Channel" }
85 | ]
86 | },
87 | "SID_CHATCOMMAND" : {
88 | "PacketId" : "0x0E",
89 | "Description" : "",
90 | "Structure" : [
91 | { "SidHeader" : [
92 | { "BYTE" : "AlwaysFF" },
93 | { "BYTE" : "PacketId" },
94 | { "short" : "nSize" }
95 | ]
96 | },
97 | { "std::string" : "Text" }
98 | ]
99 | },
100 | "SID_LEAVECHAT" : {
101 | "PacketId" : "0x10",
102 | "Description" : "",
103 | "Structure" : [
104 | { "SidHeader" : [
105 | { "BYTE" : "AlwaysFF" },
106 | { "BYTE" : "PacketId" },
107 | { "short" : "nSize" }
108 | ]
109 | }
110 | ]
111 | },
112 | "SID_CHECKAD" : {
113 | "PacketId" : "0x15",
114 | "Description" : "",
115 | "Structure" : [
116 | { "SidHeader" : [
117 | { "BYTE" : "AlwaysFF" },
118 | { "BYTE" : "PacketId" },
119 | { "short" : "nSize" }
120 | ]
121 | },
122 | { "int" : "PlatformCode" },
123 | { "int" : "ProductCode" },
124 | { "int" : "BannerID" },
125 | { "int" : "CurrentTime" }
126 | ]
127 | },
128 | "SID_CLICKAD" : {
129 | "PacketId" : "0x16",
130 | "Description" : "",
131 | "Structure" : [
132 | { "SidHeader" : [
133 | { "BYTE" : "AlwaysFF" },
134 | { "BYTE" : "PacketId" },
135 | { "short" : "nSize" }
136 | ]
137 | },
138 | { "int" : "AdID" },
139 | { "int" : "RequestType" }
140 | ]
141 | },
142 | "SID_REGISTRY" : {
143 | "PacketId" : "0x18",
144 | "Description" : "",
145 | "Structure" : [
146 | { "SidHeader" : [
147 | { "BYTE" : "AlwaysFF" },
148 | { "BYTE" : "PacketId" },
149 | { "short" : "nSize" }
150 | ]
151 | },
152 | { "int" : "Cookie" },
153 | { "std::string" : "KeyValue" }
154 | ]
155 | },
156 | "SID_STARTADVEX3" : {
157 | "PacketId" : "0x1C",
158 | "Description" : "",
159 | "Structure" : [
160 | { "SidHeader" : [
161 | { "BYTE" : "AlwaysFF" },
162 | { "BYTE" : "PacketId" },
163 | { "short" : "nSize" }
164 | ]
165 | },
166 | { "int" : "IsPrivateGame" },
167 | { "int" : "Uptime" },
168 | { "short" : "GameType" },
169 | { "short" : "GameSubtype" },
170 | { "int" : "ProviderVersion" },
171 | { "int" : "LadderType" },
172 | { "std::string" : "GameName" },
173 | { "std::string" : "GamePass" },
174 | { "std::string" : "GameStatString" }
175 | ]
176 | },
177 | "SID_LEAVEGAME" : {
178 | "PacketId" : "0x1F",
179 | "Description" : "",
180 | "Structure" : [
181 | { "SidHeader" : [
182 | { "BYTE" : "AlwaysFF" },
183 | { "BYTE" : "PacketId" },
184 | { "short" : "nSize" }
185 | ]
186 | }
187 | ]
188 | },
189 | "SID_DISPLAYAD" : {
190 | "PacketId" : "0x21",
191 | "Description" : "",
192 | "Structure" : [
193 | { "SidHeader" : [
194 | { "BYTE" : "AlwaysFF" },
195 | { "BYTE" : "PacketId" },
196 | { "short" : "nSize" }
197 | ]
198 | },
199 | { "int" : "PlatformCode" },
200 | { "int" : "ProductCode" },
201 | { "int" : "AdID" },
202 | { "std::string" : "Filename" },
203 | { "std::string" : "URL" }
204 | ]
205 | },
206 | "SID_NOTIFYJOIN" : {
207 | "PacketId" : "0x22",
208 | "Description" : "",
209 | "Structure" : [
210 | { "SidHeader" : [
211 | { "BYTE" : "AlwaysFF" },
212 | { "BYTE" : "PacketId" },
213 | { "short" : "nSize" }
214 | ]
215 | },
216 | { "int" : "ProductCode" },
217 | { "int" : "ProductVersion" },
218 | { "std::string" : "GameName" },
219 | { "std::string" : "GamePass" }
220 | ]
221 | },
222 | "SID_PING" : {
223 | "PacketId" : "0x25",
224 | "Description" : "",
225 | "Structure" : [
226 | { "SidHeader" : [
227 | { "BYTE" : "AlwaysFF" },
228 | { "BYTE" : "PacketId" },
229 | { "short" : "nSize" }
230 | ]
231 | },
232 | { "int" : "Value" }
233 | ]
234 | },
235 | "SID_READUSERDATA" : {
236 | "PacketId" : "0x26",
237 | "Description" : "",
238 | "Structure" : [
239 | { "SidHeader" : [
240 | { "BYTE" : "AlwaysFF" },
241 | { "BYTE" : "PacketId" },
242 | { "short" : "nSize" }
243 | ]
244 | },
245 | { "int" : "AccountsCount" },
246 | { "int" : "KeysCount" },
247 | { "int" : "RequestId" },
248 | { "std::string" : "Accounts[AccountsCount]" },
249 | { "std::string" : "Keys[KeysCount]" }
250 | ]
251 | },
252 | "SID_WRITEUSERDATA" : {
253 | "PacketId" : "0x27",
254 | "Description" : "",
255 | "Structure" : [
256 | { "SidHeader" : [
257 | { "BYTE" : "AlwaysFF" },
258 | { "BYTE" : "PacketId" },
259 | { "short" : "nSize" }
260 | ]
261 | },
262 | { "int" : "AccountsCount" },
263 | { "int" : "KeysCount" },
264 | { "std::string" : "Accounts[AccountsCount]" },
265 | { "std::string" : "Keys[KeysCount]" },
266 | { "std::string" : "Values[KeysCount]" }
267 | ]
268 | },
269 | "SID_CHANGEPASSWORD" : {
270 | "PacketId" : "0x31",
271 | "Description" : "",
272 | "Structure" : [
273 | { "SidHeader" : [
274 | { "BYTE" : "AlwaysFF" },
275 | { "BYTE" : "PacketId" },
276 | { "short" : "nSize" }
277 | ]
278 | },
279 | { "int" : "ClientToken" },
280 | { "int" : "ServerToken" },
281 | { "BYTE" : "OldDoubleHashPassword[20]" },
282 | { "BYTE" : "NewPasswordHash[20]" },
283 | { "std::string" : "Account" }
284 | ]
285 | },
286 | "SID_GETFILETIME" : {
287 | "PacketId" : "0x33",
288 | "Description" : "",
289 | "Structure" : [
290 | { "SidHeader" : [
291 | { "BYTE" : "AlwaysFF" },
292 | { "BYTE" : "PacketId" },
293 | { "short" : "nSize" }
294 | ]
295 | },
296 | { "int" : "RequestId" },
297 | { "int" : "Unknown" },
298 | { "std::string" : "Filename" }
299 | ]
300 | },
301 | "SID_LOGONRESPONSE2" : {
302 | "PacketId" : "0x3A",
303 | "Description" : "",
304 | "Structure" : [
305 | { "SidHeader" : [
306 | { "BYTE" : "AlwaysFF" },
307 | { "BYTE" : "PacketId" },
308 | { "short" : "nSize" }
309 | ]
310 | },
311 | { "int" : "ClientToken" },
312 | { "int" : "ServerToken" },
313 | { "BYTE" : "PWHash[20]" },
314 | { "std::string" : "Username" }
315 | ]
316 | },
317 | "SID_CREATEACCOUNT2" : {
318 | "PacketId" : "0x3D",
319 | "Description" : "",
320 | "Structure" : [
321 | { "SidHeader" : [
322 | { "BYTE" : "AlwaysFF" },
323 | { "BYTE" : "PacketId" },
324 | { "short" : "nSize" }
325 | ]
326 | },
327 | { "BYTE" : "PasswordHash[20]" },
328 | { "std::string" : "AccountName" }
329 | ]
330 | },
331 | "SID_LOGONREALMEX" : {
332 | "PacketId" : "0x3E",
333 | "Description" : "",
334 | "Structure" : [
335 | { "SidHeader" : [
336 | { "BYTE" : "AlwaysFF" },
337 | { "BYTE" : "PacketId" },
338 | { "short" : "nSize" }
339 | ]
340 | },
341 | { "int" : "ClientToken" },
342 | { "BYTE" : "HashedRealmPassword[20]" },
343 | { "std::string" : "RealmTitle" }
344 | ]
345 | },
346 | "SID_QUERYREALMS2" : {
347 | "PacketId" : "0x40",
348 | "Description" : "",
349 | "Structure" : [
350 | { "SidHeader" : [
351 | { "BYTE" : "AlwaysFF" },
352 | { "BYTE" : "PacketId" },
353 | { "short" : "nSize" }
354 | ]
355 | }
356 | ]
357 | },
358 | "SID_NEWS_INFO" : {
359 | "PacketId" : "0x46",
360 | "Description" : "",
361 | "Structure" : [
362 | { "SidHeader" : [
363 | { "BYTE" : "AlwaysFF" },
364 | { "BYTE" : "PacketId" },
365 | { "short" : "nSize" }
366 | ]
367 | },
368 | { "int" : "Timestamp" }
369 | ]
370 | },
371 | "SID_EXTRAWORK" : {
372 | "PacketId" : "0x4B",
373 | "Description" : "",
374 | "Structure" : [
375 | { "SidHeader" : [
376 | { "BYTE" : "AlwaysFF" },
377 | { "BYTE" : "PacketId" },
378 | { "short" : "nSize" }
379 | ]
380 | },
381 | { "short" : "GameType" },
382 | { "short" : "Length" },
383 | { "BYTE" : "Stream[Length]" }
384 | ]
385 | },
386 | "SID_AUTH_INFO" : {
387 | "PacketId" : "0x50",
388 | "Description" : "",
389 | "Structure" : [
390 | { "SidHeader" : [
391 | { "BYTE" : "AlwaysFF" },
392 | { "BYTE" : "PacketId" },
393 | { "short" : "nSize" }
394 | ]
395 | },
396 | { "int" : "ProtocolID" },
397 | { "int" : "PlatformCode" },
398 | { "int" : "ProductCode" },
399 | { "int" : "ProductVersion" },
400 | { "int" : "ProductLanguage" },
401 | { "int" : "LocalIP" },
402 | { "int" : "TimeZoneBias" },
403 | { "int" : "LocaleID" },
404 | { "int" : "LanguageID" },
405 | { "std::string" : "CountryAbreviation" },
406 | { "std::string" : "Coutry" }
407 | ]
408 | },
409 | "SID_AUTH_CHECK" : {
410 | "PacketId" : "0x51",
411 | "Description" : "",
412 | "Structure" : [
413 | { "SidHeader" : [
414 | { "BYTE" : "AlwaysFF" },
415 | { "BYTE" : "PacketId" },
416 | { "short" : "nSize" }
417 | ]
418 | },
419 | { "int" : "ClientToken" },
420 | { "int" : "ExeVersion" },
421 | { "int" : "ExeHash" },
422 | { "int" : "CDKeyCount" },
423 | { "int" : "Spawn" },
424 | { "CDKeys[CDKeyCount]" : [
425 | { "int" : "Length" },
426 | { "int" : "Product" },
427 | { "int" : "Public" },
428 | { "int" : "Unknown" },
429 | { "BYTE" : "Private[20]" }
430 | ]
431 | },
432 | { "std::string" : "ExeInfo" },
433 | { "std::string" : "Owner" }
434 | ]
435 | },
436 | "SID_RESETPASSWORD" : {
437 | "PacketId" : "0x5A",
438 | "Description" : "",
439 | "Structure" : [
440 | { "SidHeader" : [
441 | { "BYTE" : "AlwaysFF" },
442 | { "BYTE" : "PacketId" },
443 | { "short" : "nSize" }
444 | ]
445 | },
446 | { "std::string" : "Account" },
447 | { "std::string" : "eMail" }
448 | ]
449 | },
450 | "SID_CHANGEEMAIL" : {
451 | "PacketId" : "0x5B",
452 | "Description" : "",
453 | "Structure" : [
454 | { "SidHeader" : [
455 | { "BYTE" : "AlwaysFF" },
456 | { "BYTE" : "PacketId" },
457 | { "short" : "nSize" }
458 | ]
459 | },
460 | { "std::string" : "Account" },
461 | { "std::string" : "eMailOld" },
462 | { "std::string" : "eMailNew" }
463 | ]
464 | },
465 | "SID_SETEMAIL" : {
466 | "PacketId" : "0x59",
467 | "Description" : "",
468 | "Structure" : [
469 | { "SidHeader" : [
470 | { "BYTE" : "AlwaysFF" },
471 | { "BYTE" : "PacketId" },
472 | { "short" : "nSize" }
473 | ]
474 | },
475 | { "std::string" : "eMail" }
476 | ]
477 | }
478 | }
--------------------------------------------------------------------------------
/src/data/1.14d/client2gs.json:
--------------------------------------------------------------------------------
1 | {
2 | "D2GS_WALKTOLOCATION" : {
3 | "PacketId" : "0x01",
4 | "Description" : "",
5 | "Size" : 5,
6 | "Structure" : [
7 | { "BYTE" : "PacketId" },
8 | { "short" : "nTargetX" },
9 | { "short" : "nTargetY" }
10 | ]
11 | },
12 | "D2GS_WALKTOENTITY" : {
13 | "PacketId" : "0x02",
14 | "Description" : "",
15 | "Size" : 9,
16 | "Structure" : [
17 | { "BYTE" : "PacketId" },
18 | { "int" : "nUnitType" },
19 | { "int" : "nUnitGUID" }
20 | ]
21 | },
22 | "D2GS_RUNTOLOCATION" : {
23 | "PacketId" : "0x03",
24 | "Description" : "",
25 | "Size" : 5,
26 | "Structure" : [
27 | { "BYTE" : "PacketId" },
28 | { "short" : "nTargetX" },
29 | { "short" : "nTargetY" }
30 | ]
31 | },
32 | "D2GS_RUNTOENTITY" : {
33 | "PacketId" : "0x04",
34 | "Description" : "",
35 | "Size" : 9,
36 | "Structure" : [
37 | { "BYTE" : "PacketId" },
38 | { "int" : "nUnitType" },
39 | { "int" : "nUnitGUID" }
40 | ]
41 | },
42 | "D2GS_LEFTSKILLONLOCATION" : {
43 | "PacketId" : "0x05",
44 | "Description" : "",
45 | "Size" : 5,
46 | "Structure" : [
47 | { "BYTE" : "PacketId" },
48 | { "short" : "nTargetX" },
49 | { "short" : "nTargetY" }
50 | ]
51 | },
52 | "D2GS_LEFTSKILLONENTITY" : {
53 | "PacketId" : "0x06",
54 | "Description" : "",
55 | "Size" : 9,
56 | "Structure" : [
57 | { "BYTE" : "PacketId" },
58 | { "int" : "nUnitType" },
59 | { "int" : "nUnitGUID" }
60 | ]
61 | },
62 | "D2GS_LEFTSKILLONENTITYEX" : {
63 | "PacketId" : "0x07",
64 | "Description" : "",
65 | "Size" : 9,
66 | "Structure" : [
67 | { "BYTE" : "PacketId" },
68 | { "int" : "nUnitType" },
69 | { "int" : "nUnitGUID" }
70 | ]
71 | },
72 | "D2GS_LEFTSKILLONLOCATIONEX" : {
73 | "PacketId" : "0x08",
74 | "Description" : "",
75 | "Size" : 5,
76 | "Structure" : [
77 | { "BYTE" : "PacketId" },
78 | { "short" : "nTargetX" },
79 | { "short" : "nTargetY" }
80 | ]
81 | },
82 | "D2GS_LEFTSKILLONENTITYEX2" : {
83 | "PacketId" : "0x09",
84 | "Description" : "",
85 | "Size" : 9,
86 | "Structure" : [
87 | { "BYTE" : "PacketId" },
88 | { "int" : "nUnitType" },
89 | { "int" : "nUnitGUID" }
90 | ]
91 | },
92 | "D2GS_LEFTSKILLONENTITYEX3" : {
93 | "PacketId" : "0x0A",
94 | "Description" : "",
95 | "Size" : 9,
96 | "Structure" : [
97 | { "BYTE" : "PacketId" },
98 | { "int" : "nUnitType" },
99 | { "int" : "nUnitGUID" }
100 | ]
101 | },
102 | "D2GS_RIGHTSKILLONLOCATION" : {
103 | "PacketId" : "0x0C",
104 | "Description" : "",
105 | "Size" : 5,
106 | "Structure" : [
107 | { "BYTE" : "PacketId" },
108 | { "short" : "nTargetX" },
109 | { "short" : "nTargetY" }
110 | ]
111 | },
112 | "D2GS_RIGHTSKILLONENTITY" : {
113 | "PacketId" : "0x0D",
114 | "Description" : "",
115 | "Size" : 9,
116 | "Structure" : [
117 | { "BYTE" : "PacketId" },
118 | { "int" : "nUnitType" },
119 | { "int" : "nUnitGUID" }
120 | ]
121 | },
122 | "D2GS_RIGHTSKILLONENTITYEX" : {
123 | "PacketId" : "0x0E",
124 | "Description" : "",
125 | "Size" : 9,
126 | "Structure" : [
127 | { "BYTE" : "PacketId" },
128 | { "int" : "nUnitType" },
129 | { "int" : "nUnitGUID" }
130 | ]
131 | },
132 | "D2GS_RIGHTSKILLONLOCATIONEX" : {
133 | "PacketId" : "0x0F",
134 | "Description" : "",
135 | "Size" : 5,
136 | "Structure" : [
137 | { "BYTE" : "PacketId" },
138 | { "short" : "nTargetX" },
139 | { "short" : "nTargetY" }
140 | ]
141 | },
142 | "D2GS_RIGHTSKILLONENTITYEX2" : {
143 | "PacketId" : "0x10",
144 | "Description" : "",
145 | "Size" : 9,
146 | "Structure" : [
147 | { "BYTE" : "PacketId" },
148 | { "int" : "nUnitType" },
149 | { "int" : "nUnitGUID" }
150 | ]
151 | },
152 | "D2GS_RIGHTSKILLONENTITYEX3" : {
153 | "PacketId" : "0x11",
154 | "Description" : "",
155 | "Size" : 9,
156 | "Structure" : [
157 | { "BYTE" : "PacketId" },
158 | { "int" : "nUnitType" },
159 | { "int" : "nUnitGUID" }
160 | ]
161 | },
162 | "D2GS_SET_INFERNO_STATE" : {
163 | "PacketId" : "0x12",
164 | "Description" : "",
165 | "Size" : 1,
166 | "Structure" : [
167 | { "BYTE" : "PacketId" }
168 | ]
169 | },
170 | "D2GS_INTERACTWITHENTITY" : {
171 | "PacketId" : "0x13",
172 | "Description" : "",
173 | "Size" : 9,
174 | "Structure" : [
175 | { "BYTE" : "PacketId" },
176 | { "int" : "nUnitType" },
177 | { "int" : "nUnitGUID" }
178 | ]
179 | },
180 | "D2GS_OVERHEADMESSAGE" : {
181 | "PacketId" : "0x14",
182 | "Description" : "nType is ignored by server",
183 | "Size" : -1,
184 | "Structure" : [
185 | { "BYTE" : "PacketId" },
186 | { "BYTE" : "nType" },
187 | { "BYTE" : "nLanguageCode" },
188 | { "std::string" : "szMessage" },
189 | { "std::string" : "szTarget" },
190 | { "std::string" : "szUnknown" }
191 | ]
192 | },
193 | "D2GS_CHAT" : {
194 | "PacketId" : "0x15",
195 | "Description" : "",
196 | "Size" : -1,
197 | "Structure" : [
198 | { "BYTE" : "PacketId" },
199 | { "BYTE" : "nType" },
200 | { "BYTE" : "nLanguageCode" },
201 | { "std::string" : "szMessage" },
202 | { "std::string" : "szTarget" },
203 | { "std::string" : "szUnknown" }
204 | ]
205 | },
206 | "D2GS_PICKUPITEM" : {
207 | "PacketId" : "0x16",
208 | "Description" : "",
209 | "Size" : 13,
210 | "Structure" : [
211 | { "BYTE" : "PacketId" },
212 | { "int" : "nItemType" },
213 | { "int" : "nItemGUID" },
214 | { "int" : "bCursor" }
215 | ]
216 | },
217 | "D2GS_DROPITEM" : {
218 | "PacketId" : "0x17",
219 | "Description" : "",
220 | "Size" : 5,
221 | "Structure" : [
222 | { "BYTE" : "PacketId" },
223 | { "int" : "nItemGUID" }
224 | ]
225 | },
226 | "D2GS_ITEMTOBUFFER" : {
227 | "PacketId" : "0x18",
228 | "Description" : "",
229 | "Size" : 17,
230 | "Structure" : [
231 | { "BYTE" : "PacketId" },
232 | { "int" : "nItemGUID" },
233 | { "int" : "nTargetX" },
234 | { "int" : "nTargetY" },
235 | { "int" : "nBuffer" }
236 | ]
237 | },
238 | "D2GS_PICKUPBUFFERITEM" : {
239 | "PacketId" : "0x19",
240 | "Description" : "",
241 | "Size" : 5,
242 | "Structure" : [
243 | { "BYTE" : "PacketId" },
244 | { "int" : "nItemGUID" }
245 | ]
246 | },
247 | "D2GS_ITEMTOBODY" : {
248 | "PacketId" : "0x1A",
249 | "Description" : "",
250 | "Size" : 9,
251 | "Structure" : [
252 | { "BYTE" : "PacketId" },
253 | { "int" : "nItemGUID" },
254 | { "int" : "nBodyLocation" }
255 | ]
256 | },
257 | "D2GS_SWAP2HANDEDITEM" : {
258 | "PacketId" : "0x1B",
259 | "Description" : "",
260 | "Size" : 9,
261 | "Structure" : [
262 | { "BYTE" : "PacketId" },
263 | { "int" : "nItemGUID" },
264 | { "int" : "nBodyLocation" }
265 | ]
266 | },
267 | "D2GS_PICKUPBODYITEM" : {
268 | "PacketId" : "0x1C",
269 | "Description" : "",
270 | "Size" : 3,
271 | "Structure" : [
272 | { "BYTE" : "PacketId" },
273 | { "short" : "nBodyLocation" }
274 | ]
275 | },
276 | "D2GS_SWITCHBODYITEM" : {
277 | "PacketId" : "0x1D",
278 | "Description" : "",
279 | "Size" : 9,
280 | "Structure" : [
281 | { "BYTE" : "PacketId" },
282 | { "int" : "nItemGUID" },
283 | { "int" : "nBodyLocation" }
284 | ]
285 | },
286 | "D2GS_SWITCH1H_2H" : {
287 | "PacketId" : "0x1E",
288 | "Description" : "",
289 | "Size" : 9,
290 | "Structure" : [
291 | { "BYTE" : "PacketId" },
292 | { "int" : "nItemGUID" },
293 | { "int" : "nBodyLocation" }
294 | ]
295 | },
296 | "D2GS_SWITCHINVENTORYITEM" : {
297 | "PacketId" : "0x1F",
298 | "Description" : "",
299 | "Size" : 17,
300 | "Structure" : [
301 | { "BYTE" : "PacketId" },
302 | { "int" : "nItemCursorGUID" },
303 | { "int" : "nItemTargetGUID" },
304 | { "int" : "nTargetX" },
305 | { "int" : "nTargetY" }
306 | ]
307 | },
308 | "D2GS_USEITEM" : {
309 | "PacketId" : "0x20",
310 | "Description" : "",
311 | "Size" : 13,
312 | "Structure" : [
313 | { "BYTE" : "PacketId" },
314 | { "int" : "nItemGUID" },
315 | { "int" : "nItemX" },
316 | { "int" : "nItemY" }
317 | ]
318 | },
319 | "D2GS_STACKITEM" : {
320 | "PacketId" : "0x21",
321 | "Description" : "",
322 | "Size" : 9,
323 | "Structure" : [
324 | { "BYTE" : "PacketId" },
325 | { "int" : "nItemCursorGUID" },
326 | { "int" : "nItemTargetGUID" }
327 | ]
328 | },
329 | "D2GS_REMOVESTACKITEM" : {
330 | "PacketId" : "0x22",
331 | "Description" : "",
332 | "Size" : 5,
333 | "Structure" : [
334 | { "BYTE" : "PacketId" },
335 | { "int" : "nItemGUID" }
336 | ]
337 | },
338 | "D2GS_ITEMTOBELT" : {
339 | "PacketId" : "0x23",
340 | "Description" : "",
341 | "Size" : 9,
342 | "Structure" : [
343 | { "BYTE" : "PacketId" },
344 | { "int" : "nItemGUID" },
345 | { "int" : "nLocation" }
346 | ]
347 | },
348 | "D2GS_REMOVEBELTITEM" : {
349 | "PacketId" : "0x24",
350 | "Description" : "",
351 | "Size" : 5,
352 | "Structure" : [
353 | { "BYTE" : "PacketId" },
354 | { "int" : "nItemGUID" }
355 | ]
356 | },
357 | "D2GS_SWITCHBELTITEM" : {
358 | "PacketId" : "0x25",
359 | "Description" : "",
360 | "Size" : 9,
361 | "Structure" : [
362 | { "BYTE" : "PacketId" },
363 | { "int" : "nItemCursorGUID" },
364 | { "int" : "nItemTargetGUID" }
365 | ]
366 | },
367 | "D2GS_USEBELTITEM" : {
368 | "PacketId" : "0x26",
369 | "Description" : "",
370 | "Size" : 13,
371 | "Structure" : [
372 | { "BYTE" : "PacketId" },
373 | { "int" : "nItemGUID" },
374 | { "int" : "bOnMerc" },
375 | { "int" : "Unused" }
376 | ]
377 | },
378 | "D2GS_IDENTIFYITEM" : {
379 | "PacketId" : "0x27",
380 | "Description" : "",
381 | "Size" : 9,
382 | "Structure" : [
383 | { "BYTE" : "PacketId" },
384 | { "int" : "nItemGUID" },
385 | { "int" : "nScroolGUID" }
386 | ]
387 | },
388 | "D2GS_INSERTSOCKETITEM" : {
389 | "PacketId" : "0x28",
390 | "Description" : "",
391 | "Size" : 9,
392 | "Structure" : [
393 | { "BYTE" : "PacketId" },
394 | { "int" : "nItemCursorGUID" },
395 | { "int" : "nItemTargetGUID" }
396 | ]
397 | },
398 | "D2GS_SCROLLTOTOME" : {
399 | "PacketId" : "0x29",
400 | "Description" : "",
401 | "Size" : 9,
402 | "Structure" : [
403 | { "BYTE" : "PacketId" },
404 | { "int" : "nItemCursorGUID" },
405 | { "int" : "nItemTargetGUID" }
406 | ]
407 | },
408 | "D2GS_ITEMTOCUBE" : {
409 | "PacketId" : "0x2A",
410 | "Description" : "",
411 | "Size" : 9,
412 | "Structure" : [
413 | { "BYTE" : "PacketId" },
414 | { "int" : "nItemCursorGUID" },
415 | { "int" : "nCubeGUID" }
416 | ]
417 | },
418 | "D2GS_NPC_INIT" : {
419 | "PacketId" : "0x2F",
420 | "Description" : "",
421 | "Size" : 9,
422 | "Structure" : [
423 | { "BYTE" : "PacketId" },
424 | { "int" : "nActionType" },
425 | { "int" : "nUnitGUID" }
426 | ]
427 | },
428 | "D2GS_NPC_CANCEL" : {
429 | "PacketId" : "0x30",
430 | "Description" : "",
431 | "Size" : 9,
432 | "Structure" : [
433 | { "BYTE" : "PacketId" },
434 | { "int" : "nActionType" },
435 | { "int" : "nUnitGUID" }
436 | ]
437 | },
438 | "D2GS_QUESTMESSAGE" : {
439 | "PacketId" : "0x31",
440 | "Description" : "",
441 | "Size" : 9,
442 | "Structure" : [
443 | { "BYTE" : "PacketId" },
444 | { "int" : "nUnitGUID" },
445 | { "int" : "nMessageID" }
446 | ]
447 | },
448 | "D2GS_NPC_BUY" : {
449 | "PacketId" : "0x32",
450 | "Description" : "",
451 | "Size" : 17,
452 | "Structure" : [
453 | { "BYTE" : "PacketId" },
454 | { "int" : "nUnitGUID" },
455 | { "int" : "nItemGUID" },
456 | { "int" : "nBuyType" },
457 | { "int" : "nCost" }
458 | ]
459 | },
460 | "D2GS_NPC_SELL" : {
461 | "PacketId" : "0x33",
462 | "Description" : "Sells item to NPC",
463 | "Size" : 17,
464 | "Structure" : [
465 | { "BYTE" : "PacketId" },
466 | { "int" : "nNpcGUID" },
467 | { "int" : "nItemGUID" },
468 | { "WORD" : "nMode" },
469 | { "BYTE" : "Padding[6]" }
470 | ]
471 | },
472 | "D2GS_NPC_IDENTIFYITEMS" : {
473 | "PacketId" : "0x34",
474 | "Description" : "Identifies all items if player can afford it",
475 | "Size" : 5,
476 | "Structure" : [
477 | { "BYTE" : "PacketId" },
478 | { "int" : "nNpcGUID" }
479 | ]
480 | },
481 | "D2GS_REPAIR" : {
482 | "PacketId" : "0x35",
483 | "Description" : "This is used to repair broken items. \nIf you set bRepairOne to 1 it will repair just this one item but when it is set to 0 it will repair all items.",
484 | "Size" : 17,
485 | "Structure" : [
486 | { "BYTE" : "PacketId" },
487 | { "int" : "nUnitGUID" },
488 | { "int" : "nItemGUID" },
489 | { "int" : "bRepairOne" },
490 | { "int" : "nUnused" }
491 | ]
492 | },
493 | "D2GS_HIREMERC" : {
494 | "PacketId" : "0x36",
495 | "Description" : "",
496 | "Size" : 9,
497 | "Structure" : [
498 | { "BYTE" : "PacketId" },
499 | { "int" : "nUnitGUID" },
500 | { "int" : "nMercID" }
501 | ]
502 | },
503 | "D2GS_IDENTIFYGAMBLE" : {
504 | "PacketId" : "0x37",
505 | "Description" : "",
506 | "Size" : 5,
507 | "Structure" : [
508 | { "BYTE" : "PacketId" },
509 | { "int" : "nItemGUID" }
510 | ]
511 | },
512 | "D2GS_ENTITYACTION" : {
513 | "PacketId" : "0x38",
514 | "Description" : "",
515 | "Size" : 13,
516 | "Structure" : [
517 | { "BYTE" : "PacketId" },
518 | { "int" : "nAction" },
519 | { "int" : "nUnitGUID" },
520 | { "int" : "nComplement" }
521 | ]
522 | },
523 | "D2GS_ADDSTAT" : {
524 | "PacketId" : "0x3A",
525 | "Description" : "",
526 | "Size" : 3,
527 | "Structure" : [
528 | { "BYTE" : "PacketId" },
529 | { "BYTE" : "nStatID" },
530 | { "BYTE" : "nCountSubOne" }
531 | ]
532 | },
533 | "D2GS_ADDSKILL" : {
534 | "PacketId" : "0x3B",
535 | "Description" : "",
536 | "Size" : 3,
537 | "Structure" : [
538 | { "BYTE" : "PacketId" },
539 | { "short" : "nSkillID" }
540 | ]
541 | },
542 | "D2GS_SELECTSKILL" : {
543 | "PacketId" : "0x3C",
544 | "Description" : "",
545 | "Size" : 9,
546 | "Structure" : [
547 | { "BYTE" : "PacketId" },
548 | { "short" : "nSkillID" },
549 | { "BYTE" : "Zero" },
550 | { "BYTE" : "nHand" },
551 | { "int" : "nItemGUID" }
552 | ]
553 | },
554 | "D2GS_UNKNOWN_3D" : {
555 | "PacketId" : "0x3D",
556 | "Description" : "",
557 | "Size" : 5,
558 | "Structure" : [
559 | { "BYTE" : "PacketId" },
560 | { "int" : "nUnitGUID" }
561 | ]
562 | },
563 | "D2GS_ACTIVATEITEM" : {
564 | "PacketId" : "0x3E",
565 | "Description" : "",
566 | "Size" : 5,
567 | "Structure" : [
568 | { "BYTE" : "PacketId" },
569 | { "int" : "nItemGUID" }
570 | ]
571 | },
572 | "D2GS_CHARACTERPHRASE" : {
573 | "PacketId" : "0x3F",
574 | "Description" : "",
575 | "Size" : 3,
576 | "Structure" : [
577 | { "BYTE" : "PacketId" },
578 | { "short" : "nPhraseID" }
579 | ]
580 | },
581 | "D2GS_UDPATEQUESTS" : {
582 | "PacketId" : "0x40",
583 | "Description" : "",
584 | "Size" : 1,
585 | "Structure" : [
586 | { "BYTE" : "PacketId" }
587 | ]
588 | },
589 | "D2GS_RESURRECT" : {
590 | "PacketId" : "0x41",
591 | "Description" : "",
592 | "Size" : 1,
593 | "Structure" : [
594 | { "BYTE" : "PacketId" }
595 | ]
596 | },
597 | "D2GS_STAFFINORIFICE" : {
598 | "PacketId" : "0x44",
599 | "Description" : "",
600 | "Size" : 17,
601 | "Structure" : [
602 | { "BYTE" : "PacketId" },
603 | { "int" : "nOrificeType" },
604 | { "int" : "nOrificeGUID" },
605 | { "int" : "nStaffGUID" },
606 | { "int" : "nEntityState" }
607 | ]
608 | },
609 | "D2GS_MERC_INTERACT" : {
610 | "PacketId" : "0x46",
611 | "Description" : "",
612 | "Size" : 13,
613 | "Structure" : [
614 | { "BYTE" : "PacketId" },
615 | { "int" : "nMercGUID" },
616 | { "int" : "nUnitGUID" },
617 | { "int" : "nUnitType" }
618 | ]
619 | },
620 | "D2GS_MERC_MOVE" : {
621 | "PacketId" : "0x47",
622 | "Description" : "",
623 | "Size" : 13,
624 | "Structure" : [
625 | { "BYTE" : "PacketId" },
626 | { "int" : "nMercGUID" },
627 | { "short" : "nTargetX" },
628 | { "short" : "PaddingX" },
629 | { "short" : "nTargetY" },
630 | { "short" : "PaddingY" }
631 | ]
632 | },
633 | "D2GS_BUSYSTATE_OFF" : {
634 | "PacketId" : "0x48",
635 | "Description" : "",
636 | "Size" : 1,
637 | "Structure" : [
638 | { "BYTE" : "PacketId" }
639 | ]
640 | },
641 | "D2GS_WAYPOINT" : {
642 | "PacketId" : "0x49",
643 | "Description" : "",
644 | "Size" : 9,
645 | "Structure" : [
646 | { "BYTE" : "PacketId" },
647 | { "int" : "nWaypointGUID" },
648 | { "int" : "nDestination" }
649 | ]
650 | },
651 | "D2GS_REQUESTENTITYUPDATE" : {
652 | "PacketId" : "0x4B",
653 | "Description" : "",
654 | "Size" : 9,
655 | "Structure" : [
656 | { "BYTE" : "PacketId" },
657 | { "int" : "nUnitType" },
658 | { "int" : "nUnitGUID" }
659 | ]
660 | },
661 | "D2GS_TRANSMORGIFY" : {
662 | "PacketId" : "0x4C",
663 | "Description" : "",
664 | "Size" : 5,
665 | "Structure" : [
666 | { "BYTE" : "PacketId" },
667 | { "int" : "nObjectGUID" }
668 | ]
669 | },
670 | "D2GS_PLAYNPCMESSAGE" : {
671 | "PacketId" : "0x4D",
672 | "Description" : "",
673 | "Size" : 3,
674 | "Structure" : [
675 | { "BYTE" : "PacketId" },
676 | { "short" : "nMonStatsId" }
677 | ]
678 | },
679 | "D2GS_CLICKBUTTON" : {
680 | "PacketId" : "0x4F",
681 | "Description" : "",
682 | "Size" : 7,
683 | "Structure" : [
684 | { "BYTE" : "PacketId" },
685 | { "short" : "nButtonId" },
686 | { "short" : "HiWORDGold" },
687 | { "short" : "LoWORDGold" }
688 | ]
689 | },
690 | "D2GS_DROPGOLD" : {
691 | "PacketId" : "0x50",
692 | "Description" : "",
693 | "Size" : 9,
694 | "Structure" : [
695 | { "BYTE" : "PacketId" },
696 | { "int" : "nUnitGUID" },
697 | { "int" : "nGoldAmount" }
698 | ]
699 | },
700 | "D2GS_BINDHOTKEY" : {
701 | "PacketId" : "0x51",
702 | "Description" : "",
703 | "Size" : 9,
704 | "Structure" : [
705 | { "BYTE" : "PacketId" },
706 | { "BYTE" : "nSkillID" },
707 | { "BYTE" : "nHand" },
708 | { "short" : "nHotkey" },
709 | { "int" : "nItemGUID" }
710 | ]
711 | },
712 | "D2GS_STAMINA_ON" : {
713 | "PacketId" : "0x53",
714 | "Description" : "",
715 | "Size" : 1,
716 | "Structure" : [
717 | { "BYTE" : "PacketId" }
718 | ]
719 | },
720 | "D2GS_STAMINA_OFF" : {
721 | "PacketId" : "0x54",
722 | "Description" : "",
723 | "Size" : 1,
724 | "Structure" : [
725 | { "BYTE" : "PacketId" }
726 | ]
727 | },
728 | "D2GS_QUESTCOMPLETED" : {
729 | "PacketId" : "0x58",
730 | "Description" : "",
731 | "Size" : 3,
732 | "Structure" : [
733 | { "BYTE" : "PacketId" },
734 | { "short" : "nQuestID" }
735 | ]
736 | },
737 | "D2GS_MAKEENTITYMOVE" : {
738 | "PacketId" : "0x59",
739 | "Description" : "",
740 | "Size" : 17,
741 | "Structure" : [
742 | { "BYTE" : "PacketId" },
743 | { "int" : "nUnitType" },
744 | { "int" : "nUnitGUID" },
745 | { "int" : "nTargetX" },
746 | { "int" : "nTargetY" }
747 | ]
748 | },
749 | "D2GS_SQUELCH_HOSTILE" : {
750 | "PacketId" : "0x5D",
751 | "Description" : "",
752 | "Size" : 7,
753 | "Structure" : [
754 | { "BYTE" : "PacketId" },
755 | { "BYTE" : "nActionType" },
756 | { "BYTE" : "bToggle" },
757 | { "int" : "nPlayerGUID" }
758 | ]
759 | },
760 | "D2GS_PARTY" : {
761 | "PacketId" : "0x5E",
762 | "Description" : "",
763 | "Size" : 6,
764 | "Structure" : [
765 | { "BYTE" : "PacketId" },
766 | { "BYTE" : "nActionType" },
767 | { "int" : "nPlayerGUID" }
768 | ]
769 | },
770 | "D2GS_UPDATEPLAYERPOS" : {
771 | "PacketId" : "0x5F",
772 | "Description" : "",
773 | "Size" : 5,
774 | "Structure" : [
775 | { "BYTE" : "PacketId" },
776 | { "short" : "nX" },
777 | { "short" : "nY" }
778 | ]
779 | },
780 | "D2GS_SWAPWEAPON" : {
781 | "PacketId" : "0x60",
782 | "Description" : "",
783 | "Size" : 1,
784 | "Structure" : [
785 | { "BYTE" : "PacketId" }
786 | ]
787 | },
788 | "D2GS_MERC_ITEM" : {
789 | "PacketId" : "0x61",
790 | "Description" : "",
791 | "Size" : 3,
792 | "Structure" : [
793 | { "BYTE" : "PacketId" },
794 | { "short" : "nPosition" }
795 | ]
796 | },
797 | "D2GS_MERC_RESSURECT" : {
798 | "PacketId" : "0x62",
799 | "Description" : "",
800 | "Size" : 5,
801 | "Structure" : [
802 | { "BYTE" : "PacketId" },
803 | { "int" : "nUnitGUID" }
804 | ]
805 | },
806 | "D2GS_ITEM_TOBELT" : {
807 | "PacketId" : "0x63",
808 | "Description" : "",
809 | "Size" : 5,
810 | "Structure" : [
811 | { "BYTE" : "PacketId" },
812 | { "int" : "nItemGUID" }
813 | ]
814 | },
815 | "D2GS_WARDEN" : {
816 | "PacketId" : "0x66",
817 | "Description" : "",
818 | "Size" : -1,
819 | "Structure" : [
820 | { "BYTE" : "PacketId" },
821 | { "short" : "nStreamSize" },
822 | { "BYTE" : "Stream[nStreamSize]" }
823 | ]
824 | },
825 | "D2GS_GAMELOGON_SP" : {
826 | "PacketId" : "0x67",
827 | "Description" : "",
828 | "Size" : 46,
829 | "Structure" : [
830 | { "BYTE" : "PacketId" },
831 | { "char" : "szGameName[16]" },
832 | { "BYTE" : "nGameType" },
833 | { "BYTE" : "nCharClass" },
834 | { "BYTE" : "nTemplate" },
835 | { "BYTE" : "nSelectedDiff" },
836 | { "char" : "szCharName[16]" },
837 | { "short" : "nUnknown4" },
838 | { "int" : "eArenaFlags" },
839 | { "BYTE" : "nUnknown6" },
840 | { "BYTE" : "nUnknown7" },
841 | { "BYTE" : "nLanguageCode" }
842 | ]
843 | },
844 | "D2GS_GAMELOGON_MULTI" : {
845 | "PacketId" : "0x68",
846 | "Description" : "nMinorGameVersion:\n\t- 1.14\t\t= 0x0000000E\n\t- 1.13\t\t= 0x0000000D\n\t- 1.12\t\t= 0x0000000C\n\t- 1.11\t\t= 0x0000000B\nnVersionConstant:\n\t- Classic \t= 0x2185EDD6\n\t- Expansion \t= 0xED5DCC50\nnConstant:\n\t\t\t= 0x91A519B6",
847 | "Size" : 37,
848 | "Structure" : [
849 | { "BYTE" : "PacketId" },
850 | { "int" : "nGameHash" },
851 | { "short" : "nGameToken" },
852 | { "BYTE" : "nCharClass" },
853 | { "int" : "nMinorGameVersion" },
854 | { "int" : "nVersionConstant" },
855 | { "int" : "nConstant" },
856 | { "BYTE" : "nLanguageCode" },
857 | { "char" : "szCharName[16]" }
858 | ]
859 | },
860 | "D2GS_LEAVEGAME" : {
861 | "PacketId" : "0x69",
862 | "Description" : "",
863 | "Size" : 1,
864 | "Structure" : [
865 | { "BYTE" : "PacketId" }
866 | ]
867 | },
868 | "D2GS_REQUESTHOSTEDGAMES" : {
869 | "PacketId" : "0x6A",
870 | "Description" : "",
871 | "Size" : 1,
872 | "Structure" : [
873 | { "BYTE" : "PacketId" }
874 | ]
875 | },
876 | "D2GS_JOINGAME" : {
877 | "PacketId" : "0x6B",
878 | "Description" : "",
879 | "Size" : 1,
880 | "Structure" : [
881 | { "BYTE" : "PacketId" }
882 | ]
883 | },
884 | "D2GS_UPLOADSAVE" : {
885 | "PacketId" : "0x6C",
886 | "Description" : "",
887 | "Size" : -1,
888 | "Structure" : [
889 | { "BYTE" : "PacketId" },
890 | { "BYTE" : "nChunkSize" },
891 | { "int" : "nFullSize" },
892 | { "BYTE" : "Bytes[nChunkSize]" },
893 | { "BYTE" : "Terminator" }
894 | ]
895 | },
896 | "D2GS_PING" : {
897 | "PacketId" : "0x6D",
898 | "Description" : "",
899 | "Size" : 13,
900 | "Structure" : [
901 | { "BYTE" : "PacketId" },
902 | { "int" : "nTickCount" },
903 | { "int" : "nDelay" },
904 | { "int" : "nWardenOrZero" }
905 | ]
906 | },
907 | "D2GS_FINDME_6E" : {
908 | "PacketId" : "0x6E",
909 | "Description" : "",
910 | "Size" : 1,
911 | "Structure" : [
912 | { "BYTE" : "PacketId" }
913 | ]
914 | },
915 | "D2GS_FINDME_70" : {
916 | "PacketId" : "0x70",
917 | "Description" : "",
918 | "Size" : 1,
919 | "Structure" : [
920 | { "BYTE" : "PacketId" }
921 | ]
922 | }
923 | }
924 |
--------------------------------------------------------------------------------
/src/data/1.14d/client2mcps.json:
--------------------------------------------------------------------------------
1 | {
2 | "MCP_STARTUP" : {
3 | "PacketId" : "0x01",
4 | "Description" : "",
5 | "Structure" : [
6 | { "McpHeader" : [
7 | { "short" : "nSize" },
8 | { "BYTE" : "PacketId" }
9 | ]
10 | },
11 | { "int" : "MCPCookie" },
12 | { "int" : "MCPStatus" },
13 | { "BYTE" : "MCPChunk1[8]" },
14 | { "BYTE" : "MCPChunk2[48]" },
15 | { "std::string" : "BnetName" }
16 | ]
17 | },
18 | "MCP_CHARCREATE" : {
19 | "PacketId" : "0x02",
20 | "Description" : "",
21 | "Structure" : [
22 | { "McpHeader" : [
23 | { "short" : "nSize" },
24 | { "BYTE" : "PacketId" }
25 | ]
26 | },
27 | { "int" : "Class" },
28 | { "short" : "Flags" },
29 | { "std::string" : "CharName" }
30 | ]
31 | },
32 | "MCP_CREATEGAME" : {
33 | "PacketId" : "0x03",
34 | "Description" : "",
35 | "Structure" : [
36 | { "McpHeader" : [
37 | { "short" : "nSize" },
38 | { "BYTE" : "PacketId" }
39 | ]
40 | },
41 | { "short" : "RequestId" },
42 | { "int" : "nGameFlags" },
43 | { "BYTE" : "Unknown1" },
44 | { "BYTE" : "Difference" },
45 | { "BYTE" : "MaxPlayers" },
46 | { "std::string" : "Name" },
47 | { "std::string" : "Password" },
48 | { "std::string" : "Description" }
49 | ]
50 | },
51 | "MCP_JOINGAME" : {
52 | "PacketId" : "0x04",
53 | "Description" : "",
54 | "Structure" : [
55 | { "McpHeader" : [
56 | { "short" : "nSize" },
57 | { "BYTE" : "PacketId" }
58 | ]
59 | },
60 | { "short" : "RequestId" },
61 | { "std::string" : "GameName" },
62 | { "std::string" : "GamePass" }
63 | ]
64 | },
65 | "MCP_GAMELIST" : {
66 | "PacketId" : "0x05",
67 | "Description" : "",
68 | "Structure" : [
69 | { "McpHeader" : [
70 | { "short" : "nSize" },
71 | { "BYTE" : "PacketId" }
72 | ]
73 | },
74 | { "short" : "RequestId" },
75 | { "int" : "HardcoreFlag" },
76 | { "std::string" : "SearchString" }
77 | ]
78 | },
79 | "MCP_GAMEINFO" : {
80 | "PacketId" : "0x06",
81 | "Description" : "",
82 | "Structure" : [
83 | { "McpHeader" : [
84 | { "short" : "nSize" },
85 | { "BYTE" : "PacketId" }
86 | ]
87 | },
88 | { "short" : "RequestId" },
89 | { "std::string" : "GameName" }
90 | ]
91 | },
92 | "MCP_CHARLOGON" : {
93 | "PacketId" : "0x07",
94 | "Description" : "",
95 | "Structure" : [
96 | { "McpHeader" : [
97 | { "short" : "nSize" },
98 | { "BYTE" : "PacketId" }
99 | ]
100 | },
101 | { "std::string" : "CharName" }
102 | ]
103 | },
104 | "MCP_CHARDELETE" : {
105 | "PacketId" : "0x0A",
106 | "Description" : "",
107 | "Structure" : [
108 | { "McpHeader" : [
109 | { "short" : "nSize" },
110 | { "BYTE" : "PacketId" }
111 | ]
112 | },
113 | { "short" : "RequestId" },
114 | { "std::string" : "CharName" }
115 | ]
116 | },
117 | "MCP_REQUESTLADDERDATA" : {
118 | "PacketId" : "0x11",
119 | "Description" : "",
120 | "Structure" : [
121 | { "McpHeader" : [
122 | { "short" : "nSize" },
123 | { "BYTE" : "PacketId" }
124 | ]
125 | },
126 | { "BYTE" : "LadderType" },
127 | { "short" : "StartPosition" }
128 | ]
129 | },
130 | "MCP_MOTD" : {
131 | "PacketId" : "0x12",
132 | "Description" : "",
133 | "Structure" : [
134 | { "McpHeader" : [
135 | { "short" : "nSize" },
136 | { "BYTE" : "PacketId" }
137 | ]
138 | }
139 | ]
140 | },
141 | "MCP_CANCELGAMECREATE" : {
142 | "PacketId" : "0x13",
143 | "Description" : "",
144 | "Structure" : [
145 | { "McpHeader" : [
146 | { "short" : "nSize" },
147 | { "BYTE" : "PacketId" }
148 | ]
149 | }
150 | ]
151 | },
152 | "MCP_CHARRANK" : {
153 | "PacketId" : "0x16",
154 | "Description" : "",
155 | "Structure" : [
156 | { "McpHeader" : [
157 | { "short" : "nSize" },
158 | { "BYTE" : "PacketId" }
159 | ]
160 | },
161 | { "int" : "Hardcore" },
162 | { "int" : "Expansion" },
163 | { "std::string" : "CharName" }
164 | ]
165 | },
166 | "MCP_CHARLIST" : {
167 | "PacketId" : "0x17",
168 | "Description" : "",
169 | "Structure" : [
170 | { "McpHeader" : [
171 | { "short" : "nSize" },
172 | { "BYTE" : "PacketId" }
173 | ]
174 | },
175 | { "int" : "Quantity" }
176 | ]
177 | },
178 | "MCP_CHARUPGRADE" : {
179 | "PacketId" : "0x18",
180 | "Description" : "",
181 | "Structure" : [
182 | { "McpHeader" : [
183 | { "short" : "nSize" },
184 | { "BYTE" : "PacketId" }
185 | ]
186 | },
187 | { "std::string" : "CharName" }
188 | ]
189 | },
190 | "MCP_CHARLIST2" : {
191 | "PacketId" : "0x19",
192 | "Description" : "",
193 | "Structure" : [
194 | { "McpHeader" : [
195 | { "short" : "nSize" },
196 | { "BYTE" : "PacketId" }
197 | ]
198 | },
199 | { "int" : "RequestCount" }
200 | ]
201 | }
202 | }
--------------------------------------------------------------------------------
/src/data/1.14d/client2sid.json:
--------------------------------------------------------------------------------
1 | {
2 | "SID_NULL" : {
3 | "PacketId" : "0x00",
4 | "Description" : "",
5 | "Structure" : [
6 | { "SidHeader" : [
7 | { "BYTE" : "AlwaysFF" },
8 | { "BYTE" : "PacketId" },
9 | { "short" : "nSize" }
10 | ]
11 | }
12 | ]
13 | },
14 | "SID_STOPADV" : {
15 | "PacketId" : "0x02",
16 | "Description" : "",
17 | "Structure" : [
18 | { "SidHeader" : [
19 | { "BYTE" : "AlwaysFF" },
20 | { "BYTE" : "PacketId" },
21 | { "short" : "nSize" }
22 | ]
23 | }
24 | ]
25 | },
26 | "SID_GETADVLISTEX" : {
27 | "PacketId" : "0x09",
28 | "Description" : "",
29 | "Structure" : [
30 | { "SidHeader" : [
31 | { "BYTE" : "AlwaysFF" },
32 | { "BYTE" : "PacketId" },
33 | { "short" : "nSize" }
34 | ]
35 | },
36 | { "short" : "GameType" },
37 | { "short" : "GameSubType" },
38 | { "int" : "ViewingFilter" },
39 | { "int" : "Zero" },
40 | { "int" : "NumberOfGames" },
41 | { "std::string" : "GameName" },
42 | { "std::string" : "GamePass" },
43 | { "std::string" : "GameDesc" }
44 | ]
45 | },
46 | "SID_ENTERCHAT" : {
47 | "PacketId" : "0x0A",
48 | "Description" : "",
49 | "Structure" : [
50 | { "SidHeader" : [
51 | { "BYTE" : "AlwaysFF" },
52 | { "BYTE" : "PacketId" },
53 | { "short" : "nSize" }
54 | ]
55 | },
56 | { "std::string" : "Username" },
57 | { "std::string" : "Statstring" }
58 | ]
59 | },
60 | "SID_GETCHANNELLIST" : {
61 | "PacketId" : "0x0B",
62 | "Description" : "",
63 | "Structure" : [
64 | { "SidHeader" : [
65 | { "BYTE" : "AlwaysFF" },
66 | { "BYTE" : "PacketId" },
67 | { "short" : "nSize" }
68 | ]
69 | },
70 | { "int" : "ProductCode" }
71 | ]
72 | },
73 | "SID_JOINCHANNEL" : {
74 | "PacketId" : "0x0C",
75 | "Description" : "",
76 | "Structure" : [
77 | { "SidHeader" : [
78 | { "BYTE" : "AlwaysFF" },
79 | { "BYTE" : "PacketId" },
80 | { "short" : "nSize" }
81 | ]
82 | },
83 | { "int" : "Flags" },
84 | { "std::string" : "Channel" }
85 | ]
86 | },
87 | "SID_CHATCOMMAND" : {
88 | "PacketId" : "0x0E",
89 | "Description" : "",
90 | "Structure" : [
91 | { "SidHeader" : [
92 | { "BYTE" : "AlwaysFF" },
93 | { "BYTE" : "PacketId" },
94 | { "short" : "nSize" }
95 | ]
96 | },
97 | { "std::string" : "Text" }
98 | ]
99 | },
100 | "SID_LEAVECHAT" : {
101 | "PacketId" : "0x10",
102 | "Description" : "",
103 | "Structure" : [
104 | { "SidHeader" : [
105 | { "BYTE" : "AlwaysFF" },
106 | { "BYTE" : "PacketId" },
107 | { "short" : "nSize" }
108 | ]
109 | }
110 | ]
111 | },
112 | "SID_CHECKAD" : {
113 | "PacketId" : "0x15",
114 | "Description" : "",
115 | "Structure" : [
116 | { "SidHeader" : [
117 | { "BYTE" : "AlwaysFF" },
118 | { "BYTE" : "PacketId" },
119 | { "short" : "nSize" }
120 | ]
121 | },
122 | { "int" : "PlatformCode" },
123 | { "int" : "ProductCode" },
124 | { "int" : "BannerID" },
125 | { "int" : "CurrentTime" }
126 | ]
127 | },
128 | "SID_CLICKAD" : {
129 | "PacketId" : "0x16",
130 | "Description" : "",
131 | "Structure" : [
132 | { "SidHeader" : [
133 | { "BYTE" : "AlwaysFF" },
134 | { "BYTE" : "PacketId" },
135 | { "short" : "nSize" }
136 | ]
137 | },
138 | { "int" : "AdID" },
139 | { "int" : "RequestType" }
140 | ]
141 | },
142 | "SID_REGISTRY" : {
143 | "PacketId" : "0x18",
144 | "Description" : "",
145 | "Structure" : [
146 | { "SidHeader" : [
147 | { "BYTE" : "AlwaysFF" },
148 | { "BYTE" : "PacketId" },
149 | { "short" : "nSize" }
150 | ]
151 | },
152 | { "int" : "Cookie" },
153 | { "std::string" : "KeyValue" }
154 | ]
155 | },
156 | "SID_STARTADVEX3" : {
157 | "PacketId" : "0x1C",
158 | "Description" : "",
159 | "Structure" : [
160 | { "SidHeader" : [
161 | { "BYTE" : "AlwaysFF" },
162 | { "BYTE" : "PacketId" },
163 | { "short" : "nSize" }
164 | ]
165 | },
166 | { "int" : "IsPrivateGame" },
167 | { "int" : "Uptime" },
168 | { "short" : "GameType" },
169 | { "short" : "GameSubtype" },
170 | { "int" : "ProviderVersion" },
171 | { "int" : "LadderType" },
172 | { "std::string" : "GameName" },
173 | { "std::string" : "GamePass" },
174 | { "std::string" : "GameStatString" }
175 | ]
176 | },
177 | "SID_LEAVEGAME" : {
178 | "PacketId" : "0x1F",
179 | "Description" : "",
180 | "Structure" : [
181 | { "SidHeader" : [
182 | { "BYTE" : "AlwaysFF" },
183 | { "BYTE" : "PacketId" },
184 | { "short" : "nSize" }
185 | ]
186 | }
187 | ]
188 | },
189 | "SID_DISPLAYAD" : {
190 | "PacketId" : "0x21",
191 | "Description" : "",
192 | "Structure" : [
193 | { "SidHeader" : [
194 | { "BYTE" : "AlwaysFF" },
195 | { "BYTE" : "PacketId" },
196 | { "short" : "nSize" }
197 | ]
198 | },
199 | { "int" : "PlatformCode" },
200 | { "int" : "ProductCode" },
201 | { "int" : "AdID" },
202 | { "std::string" : "Filename" },
203 | { "std::string" : "URL" }
204 | ]
205 | },
206 | "SID_NOTIFYJOIN" : {
207 | "PacketId" : "0x22",
208 | "Description" : "",
209 | "Structure" : [
210 | { "SidHeader" : [
211 | { "BYTE" : "AlwaysFF" },
212 | { "BYTE" : "PacketId" },
213 | { "short" : "nSize" }
214 | ]
215 | },
216 | { "int" : "ProductCode" },
217 | { "int" : "ProductVersion" },
218 | { "std::string" : "GameName" },
219 | { "std::string" : "GamePass" }
220 | ]
221 | },
222 | "SID_PING" : {
223 | "PacketId" : "0x25",
224 | "Description" : "",
225 | "Structure" : [
226 | { "SidHeader" : [
227 | { "BYTE" : "AlwaysFF" },
228 | { "BYTE" : "PacketId" },
229 | { "short" : "nSize" }
230 | ]
231 | },
232 | { "int" : "Value" }
233 | ]
234 | },
235 | "SID_READUSERDATA" : {
236 | "PacketId" : "0x26",
237 | "Description" : "",
238 | "Structure" : [
239 | { "SidHeader" : [
240 | { "BYTE" : "AlwaysFF" },
241 | { "BYTE" : "PacketId" },
242 | { "short" : "nSize" }
243 | ]
244 | },
245 | { "int" : "AccountsCount" },
246 | { "int" : "KeysCount" },
247 | { "int" : "RequestId" },
248 | { "std::string" : "Accounts[AccountsCount]" },
249 | { "std::string" : "Keys[KeysCount]" }
250 | ]
251 | },
252 | "SID_WRITEUSERDATA" : {
253 | "PacketId" : "0x27",
254 | "Description" : "",
255 | "Structure" : [
256 | { "SidHeader" : [
257 | { "BYTE" : "AlwaysFF" },
258 | { "BYTE" : "PacketId" },
259 | { "short" : "nSize" }
260 | ]
261 | },
262 | { "int" : "AccountsCount" },
263 | { "int" : "KeysCount" },
264 | { "std::string" : "Accounts[AccountsCount]" },
265 | { "std::string" : "Keys[KeysCount]" },
266 | { "std::string" : "Values[KeysCount]" }
267 | ]
268 | },
269 | "SID_CHANGEPASSWORD" : {
270 | "PacketId" : "0x31",
271 | "Description" : "",
272 | "Structure" : [
273 | { "SidHeader" : [
274 | { "BYTE" : "AlwaysFF" },
275 | { "BYTE" : "PacketId" },
276 | { "short" : "nSize" }
277 | ]
278 | },
279 | { "int" : "ClientToken" },
280 | { "int" : "ServerToken" },
281 | { "BYTE" : "OldDoubleHashPassword[20]" },
282 | { "BYTE" : "NewPasswordHash[20]" },
283 | { "std::string" : "Account" }
284 | ]
285 | },
286 | "SID_GETFILETIME" : {
287 | "PacketId" : "0x33",
288 | "Description" : "",
289 | "Structure" : [
290 | { "SidHeader" : [
291 | { "BYTE" : "AlwaysFF" },
292 | { "BYTE" : "PacketId" },
293 | { "short" : "nSize" }
294 | ]
295 | },
296 | { "int" : "RequestId" },
297 | { "int" : "Unknown" },
298 | { "std::string" : "Filename" }
299 | ]
300 | },
301 | "SID_LOGONRESPONSE2" : {
302 | "PacketId" : "0x3A",
303 | "Description" : "",
304 | "Structure" : [
305 | { "SidHeader" : [
306 | { "BYTE" : "AlwaysFF" },
307 | { "BYTE" : "PacketId" },
308 | { "short" : "nSize" }
309 | ]
310 | },
311 | { "int" : "ClientToken" },
312 | { "int" : "ServerToken" },
313 | { "BYTE" : "PWHash[20]" },
314 | { "std::string" : "Username" }
315 | ]
316 | },
317 | "SID_CREATEACCOUNT2" : {
318 | "PacketId" : "0x3D",
319 | "Description" : "",
320 | "Structure" : [
321 | { "SidHeader" : [
322 | { "BYTE" : "AlwaysFF" },
323 | { "BYTE" : "PacketId" },
324 | { "short" : "nSize" }
325 | ]
326 | },
327 | { "BYTE" : "PasswordHash[20]" },
328 | { "std::string" : "AccountName" }
329 | ]
330 | },
331 | "SID_LOGONREALMEX" : {
332 | "PacketId" : "0x3E",
333 | "Description" : "",
334 | "Structure" : [
335 | { "SidHeader" : [
336 | { "BYTE" : "AlwaysFF" },
337 | { "BYTE" : "PacketId" },
338 | { "short" : "nSize" }
339 | ]
340 | },
341 | { "int" : "ClientToken" },
342 | { "BYTE" : "HashedRealmPassword[20]" },
343 | { "std::string" : "RealmTitle" }
344 | ]
345 | },
346 | "SID_QUERYREALMS2" : {
347 | "PacketId" : "0x40",
348 | "Description" : "",
349 | "Structure" : [
350 | { "SidHeader" : [
351 | { "BYTE" : "AlwaysFF" },
352 | { "BYTE" : "PacketId" },
353 | { "short" : "nSize" }
354 | ]
355 | }
356 | ]
357 | },
358 | "SID_NEWS_INFO" : {
359 | "PacketId" : "0x46",
360 | "Description" : "",
361 | "Structure" : [
362 | { "SidHeader" : [
363 | { "BYTE" : "AlwaysFF" },
364 | { "BYTE" : "PacketId" },
365 | { "short" : "nSize" }
366 | ]
367 | },
368 | { "int" : "Timestamp" }
369 | ]
370 | },
371 | "SID_EXTRAWORK" : {
372 | "PacketId" : "0x4B",
373 | "Description" : "",
374 | "Structure" : [
375 | { "SidHeader" : [
376 | { "BYTE" : "AlwaysFF" },
377 | { "BYTE" : "PacketId" },
378 | { "short" : "nSize" }
379 | ]
380 | },
381 | { "short" : "GameType" },
382 | { "short" : "Length" },
383 | { "BYTE" : "Stream[Length]" }
384 | ]
385 | },
386 | "SID_AUTH_INFO" : {
387 | "PacketId" : "0x50",
388 | "Description" : "",
389 | "Structure" : [
390 | { "SidHeader" : [
391 | { "BYTE" : "AlwaysFF" },
392 | { "BYTE" : "PacketId" },
393 | { "short" : "nSize" }
394 | ]
395 | },
396 | { "int" : "ProtocolID" },
397 | { "int" : "PlatformCode" },
398 | { "int" : "ProductCode" },
399 | { "int" : "ProductVersion" },
400 | { "int" : "ProductLanguage" },
401 | { "int" : "LocalIP" },
402 | { "int" : "TimeZoneBias" },
403 | { "int" : "LocaleID" },
404 | { "int" : "LanguageID" },
405 | { "std::string" : "CountryAbreviation" },
406 | { "std::string" : "Coutry" }
407 | ]
408 | },
409 | "SID_AUTH_CHECK" : {
410 | "PacketId" : "0x51",
411 | "Description" : "",
412 | "Structure" : [
413 | { "SidHeader" : [
414 | { "BYTE" : "AlwaysFF" },
415 | { "BYTE" : "PacketId" },
416 | { "short" : "nSize" }
417 | ]
418 | },
419 | { "int" : "ClientToken" },
420 | { "int" : "ExeVersion" },
421 | { "int" : "ExeHash" },
422 | { "int" : "CDKeyCount" },
423 | { "int" : "Spawn" },
424 | { "CDKeys[CDKeyCount]" : [
425 | { "int" : "Length" },
426 | { "int" : "Product" },
427 | { "int" : "Public" },
428 | { "int" : "Unknown" },
429 | { "BYTE" : "Private[20]" }
430 | ]
431 | },
432 | { "std::string" : "ExeInfo" },
433 | { "std::string" : "Owner" }
434 | ]
435 | },
436 | "SID_RESETPASSWORD" : {
437 | "PacketId" : "0x5A",
438 | "Description" : "",
439 | "Structure" : [
440 | { "SidHeader" : [
441 | { "BYTE" : "AlwaysFF" },
442 | { "BYTE" : "PacketId" },
443 | { "short" : "nSize" }
444 | ]
445 | },
446 | { "std::string" : "Account" },
447 | { "std::string" : "eMail" }
448 | ]
449 | },
450 | "SID_CHANGEEMAIL" : {
451 | "PacketId" : "0x5B",
452 | "Description" : "",
453 | "Structure" : [
454 | { "SidHeader" : [
455 | { "BYTE" : "AlwaysFF" },
456 | { "BYTE" : "PacketId" },
457 | { "short" : "nSize" }
458 | ]
459 | },
460 | { "std::string" : "Account" },
461 | { "std::string" : "eMailOld" },
462 | { "std::string" : "eMailNew" }
463 | ]
464 | },
465 | "SID_SETEMAIL" : {
466 | "PacketId" : "0x59",
467 | "Description" : "",
468 | "Structure" : [
469 | { "SidHeader" : [
470 | { "BYTE" : "AlwaysFF" },
471 | { "BYTE" : "PacketId" },
472 | { "short" : "nSize" }
473 | ]
474 | },
475 | { "std::string" : "eMail" }
476 | ]
477 | },
478 | "SID_NEWPACKET" : {
479 | "PacketId" : "0xDE",
480 | "Description" : "",
481 | "Structure" : [
482 | { "SidHeader" : [
483 | { "BYTE" : "AlwaysFF" },
484 | { "BYTE" : "PacketId" },
485 | { "short" : "nSize" }
486 | ]
487 | },
488 | { "BYTE" : "Something1" },
489 | { "BYTE" : "Size" },
490 | { "BYTE" : "Something2" },
491 | { "BYTE" : "Stream[Size]" }
492 | ]
493 | }
494 | }
--------------------------------------------------------------------------------
/src/data/1.14d/mcps2client.json:
--------------------------------------------------------------------------------
1 | {
2 | "MCP_NULL" : {
3 | "PacketId" : "0x00",
4 | "Description" : "",
5 | "Structure" : [
6 | { "McpHeader" : [
7 | { "short" : "nSize" },
8 | { "BYTE" : "PacketId" }
9 | ]
10 | }
11 | ]
12 | },
13 | "MCP_STARTUP" : {
14 | "PacketId" : "0x01",
15 | "Description" : "",
16 | "Structure" : [
17 | { "McpHeader" : [
18 | { "short" : "nSize" },
19 | { "BYTE" : "PacketId" }
20 | ]
21 | },
22 | { "int" : "Result" }
23 | ]
24 | },
25 | "MCP_CHARCREATE" : {
26 | "PacketId" : "0x02",
27 | "Description" : "",
28 | "Structure" : [
29 | { "McpHeader" : [
30 | { "short" : "nSize" },
31 | { "BYTE" : "PacketId" }
32 | ]
33 | },
34 | { "int" : "Result" }
35 | ]
36 | },
37 | "MCP_CREATEGAME" : {
38 | "PacketId" : "0x03",
39 | "Description" : "",
40 | "Structure" : [
41 | { "McpHeader" : [
42 | { "short" : "nSize" },
43 | { "BYTE" : "PacketId" }
44 | ]
45 | },
46 | { "short" : "RequestId" },
47 | { "short" : "GameToken" },
48 | { "short" : "Unknown" },
49 | { "int" : "Result" }
50 | ]
51 | },
52 | "MCP_JOINGAME" : {
53 | "PacketId" : "0x04",
54 | "Description" : "",
55 | "Structure" : [
56 | { "McpHeader" : [
57 | { "short" : "nSize" },
58 | { "BYTE" : "PacketId" }
59 | ]
60 | },
61 | { "short" : "RequestId" },
62 | { "short" : "GameToken" },
63 | { "short" : "Unknown" },
64 | { "int" : "GameIP" },
65 | { "int" : "GameHash" },
66 | { "int" : "Result" }
67 | ]
68 | },
69 | "MCP_GAMELIST" : {
70 | "PacketId" : "0x05",
71 | "Description" : "",
72 | "Structure" : [
73 | { "McpHeader" : [
74 | { "short" : "nSize" },
75 | { "BYTE" : "PacketId" }
76 | ]
77 | },
78 | { "short" : "RequestId" },
79 | { "int" : "Index" },
80 | { "BYTE" : "Players" },
81 | { "int" : "Status" },
82 | { "std::string" : "GameName" },
83 | { "std::string" : "GameDesc" }
84 | ]
85 | },
86 | "MCP_GAMEINFO" : {
87 | "PacketId" : "0x06",
88 | "Description" : "",
89 | "Structure" : [
90 | { "McpHeader" : [
91 | { "short" : "nSize" },
92 | { "BYTE" : "PacketId" }
93 | ]
94 | },
95 | { "short" : "RequestId" },
96 | { "int" : "Status" },
97 | { "int" : "Uptime" },
98 | { "BYTE" : "CreatorLevel" },
99 | { "BYTE" : "Difference" },
100 | { "BYTE" : "MaxPayers" },
101 | { "BYTE" : "CharsInGame" },
102 | { "BYTE" : "Class[8]" },
103 | { "BYTE" : "Something1[8]" },
104 | { "BYTE" : "Level[8]" },
105 | { "BYTE" : "Something2[8]" },
106 | { "std::string" : "Description" },
107 | { "std::string" : "Nick[CharsInGame]" }
108 | ]
109 | },
110 | "MCP_CHARLOGON" : {
111 | "PacketId" : "0x07",
112 | "Description" : "",
113 | "Structure" : [
114 | { "McpHeader" : [
115 | { "short" : "nSize" },
116 | { "BYTE" : "PacketId" }
117 | ]
118 | },
119 | { "int" : "Result" }
120 | ]
121 | },
122 | "MCP_CHARDELETE" : {
123 | "PacketId" : "0x0A",
124 | "Description" : "",
125 | "Structure" : [
126 | { "McpHeader" : [
127 | { "short" : "nSize" },
128 | { "BYTE" : "PacketId" }
129 | ]
130 | },
131 | { "int" : "Result" }
132 | ]
133 | },
134 | "MCP_REQUESTLADDERDATA" : {
135 | "PacketId" : "0x11",
136 | "Description" : "",
137 | "Structure" : [
138 | { "McpHeader" : [
139 | { "short" : "nSize" },
140 | { "BYTE" : "PacketId" }
141 | ]
142 | },
143 | { "BYTE" : "LadderType" },
144 | { "short" : "TotalSize" },
145 | { "short" : "CurrentSize" },
146 | { "short" : "SizeLeft" },
147 | { "short" : "RankFirst" },
148 | { "short" : "Unknown0" },
149 | { "int" : "Count" },
150 | { "int" : "Unknown1" },
151 | { "Entry[(CurrentSize - 22) / 28]" : [
152 | { "long long" : "Experience" },
153 | { "BYTE" : "Flags" },
154 | { "BYTE" : "Act" },
155 | { "short" : "Level" },
156 | { "char" : "szName[16]" }
157 | ]
158 | }
159 | ]
160 | },
161 | "MCP_MOTD" : {
162 | "PacketId" : "0x12",
163 | "Description" : "",
164 | "Structure" : [
165 | { "McpHeader" : [
166 | { "short" : "nSize" },
167 | { "BYTE" : "PacketId" }
168 | ]
169 | },
170 | { "BYTE" : "Unknown" },
171 | { "std::string" : "Text" }
172 | ]
173 | },
174 | "MCP_CREATEQUEUE" : {
175 | "PacketId" : "0x14",
176 | "Description" : "",
177 | "Structure" : [
178 | { "McpHeader" : [
179 | { "short" : "nSize" },
180 | { "BYTE" : "PacketId" }
181 | ]
182 | },
183 | { "int" : "Position" }
184 | ]
185 | },
186 | "MCP_CHARLIST" : {
187 | "PacketId" : "0x17",
188 | "Description" : "",
189 | "Structure" : [
190 | { "McpHeader" : [
191 | { "short" : "nSize" },
192 | { "BYTE" : "PacketId" }
193 | ]
194 | },
195 | { "short" : "RequestCount" },
196 | { "int" : "ExistCount" },
197 | { "short" : "ReturnCount" },
198 | { "Characters[ReturnCount]" : [
199 | { "std::string" : "Name" },
200 | { "std::string" : "Statstring" }
201 | ]
202 | }
203 | ]
204 | },
205 | "MCP_CHARUPGRADE" : {
206 | "PacketId" : "0x18",
207 | "Description" : "",
208 | "Structure" : [
209 | { "McpHeader" : [
210 | { "short" : "nSize" },
211 | { "BYTE" : "PacketId" }
212 | ]
213 | },
214 | { "int" : "Result" }
215 | ]
216 | },
217 | "MCP_CHARLIST2" : {
218 | "PacketId" : "0x19",
219 | "Description" : "",
220 | "Structure" : [
221 | { "McpHeader" : [
222 | { "short" : "nSize" },
223 | { "BYTE" : "PacketId" }
224 | ]
225 | },
226 | { "short" : "RequestCount" },
227 | { "int" : "ExistCount" },
228 | { "short" : "ReturnCount" },
229 | { "Characters[ReturnCount]" : [
230 | { "int" : "ExpireTime" },
231 | { "std::string" : "Name" },
232 | { "std::string" : "Statstring" }
233 | ]
234 | }
235 | ]
236 | }
237 | }
--------------------------------------------------------------------------------
/src/data/1.14d/sid2client.json:
--------------------------------------------------------------------------------
1 | {
2 | "SID_NULL" : {
3 | "PacketId" : "0x00",
4 | "Description" : "",
5 | "Structure" : [
6 | { "SidHeader" : [
7 | { "BYTE" : "AlwaysFF" },
8 | { "BYTE" : "PacketId" },
9 | { "short" : "nSize" }
10 | ]
11 | }
12 | ]
13 | },
14 | "SID_SERVERLIST" : {
15 | "PacketId" : "0x04",
16 | "Description" : "",
17 | "Structure" : [
18 | { "SidHeader" : [
19 | { "BYTE" : "AlwaysFF" },
20 | { "BYTE" : "PacketId" },
21 | { "short" : "nSize" }
22 | ]
23 | },
24 | { "int" : "ServerVersion" },
25 | { "std::string" : "ServerList" }
26 | ]
27 | },
28 | "SID_GETADVLISTEX" : {
29 | "PacketId" : "0x09",
30 | "Description" : "",
31 | "Structure" : [
32 | { "SidHeader" : [
33 | { "BYTE" : "AlwaysFF" },
34 | { "BYTE" : "PacketId" },
35 | { "short" : "nSize" }
36 | ]
37 | },
38 | { "int" : "Count" },
39 | { "Game[Count]" : [
40 | { "short" : "GameType" },
41 | { "short" : "GameSubType" },
42 | { "int" : "LanguageCode" },
43 | { "short" : "AddressFamily" },
44 | { "short" : "GamePort" },
45 | { "int" : "GameIP" },
46 | { "int" : "Sin0_1" },
47 | { "int" : "Sin0_2" },
48 | { "int" : "GameStatus" },
49 | { "int" : "ElapsedTime" },
50 | { "std::string" : "GameName" },
51 | { "std::string" : "GamePass" },
52 | { "std::string" : "GameDesc" }
53 | ]
54 | }
55 | ]
56 | },
57 | "SID_ENTERCHAT" : {
58 | "PacketId" : "0x0A",
59 | "Description" : "",
60 | "Structure" : [
61 | { "SidHeader" : [
62 | { "BYTE" : "AlwaysFF" },
63 | { "BYTE" : "PacketId" },
64 | { "short" : "nSize" }
65 | ]
66 | },
67 | { "std::string" : "Username" },
68 | { "std::string" : "Statstring" },
69 | { "std::string" : "Account" }
70 | ]
71 | },
72 | "SID_GETCHANNELLIST" : {
73 | "PacketId" : "0x0B",
74 | "Description" : "",
75 | "Structure" : [
76 | { "SidHeader" : [
77 | { "BYTE" : "AlwaysFF" },
78 | { "BYTE" : "PacketId" },
79 | { "short" : "nSize" }
80 | ]
81 | },
82 | { "std::string[]" : "Channels" }
83 | ]
84 | },
85 | "SID_CHATEVENT" : {
86 | "PacketId" : "0x0F",
87 | "Description" : "",
88 | "Structure" : [
89 | { "SidHeader" : [
90 | { "BYTE" : "AlwaysFF" },
91 | { "BYTE" : "PacketId" },
92 | { "short" : "nSize" }
93 | ]
94 | },
95 | { "int" : "EventID" },
96 | { "int" : "UserFlags" },
97 | { "int" : "Ping" },
98 | { "int" : "Ip" },
99 | { "int" : "AccountID" },
100 | { "int" : "RegistrationAuth" },
101 | { "std::string" : "Username" },
102 | { "std::string" : "Text" }
103 | ]
104 | },
105 | "SID_FLOODDETECTED" : {
106 | "PacketId" : "0x13",
107 | "Description" : "",
108 | "Structure" : [
109 | { "SidHeader" : [
110 | { "BYTE" : "AlwaysFF" },
111 | { "BYTE" : "PacketId" },
112 | { "short" : "nSize" }
113 | ]
114 | }
115 | ]
116 | },
117 | "SID_CHECKAD" : {
118 | "PacketId" : "0x15",
119 | "Description" : "",
120 | "Structure" : [
121 | { "SidHeader" : [
122 | { "BYTE" : "AlwaysFF" },
123 | { "BYTE" : "PacketId" },
124 | { "short" : "nSize" }
125 | ]
126 | },
127 | { "int" : "AdID" },
128 | { "int" : "Extension" },
129 | { "FILETIME" : "Filetime" },
130 | { "std::string" : "Filename" },
131 | { "std::string" : "URL" }
132 | ]
133 | },
134 | "SID_REGISTRY" : {
135 | "PacketId" : "0x18",
136 | "Description" : "",
137 | "Structure" : [
138 | { "SidHeader" : [
139 | { "BYTE" : "AlwaysFF" },
140 | { "BYTE" : "PacketId" },
141 | { "short" : "nSize" }
142 | ]
143 | },
144 | { "int" : "Cookie" },
145 | { "int" : "HKEY" },
146 | { "std::string" : "RegistryPath" },
147 | { "std::string" : "RegistryKey" }
148 | ]
149 | },
150 | "SID_STARTADVEX3" : {
151 | "PacketId" : "0x1C",
152 | "Description" : "",
153 | "Structure" : [
154 | { "SidHeader" : [
155 | { "BYTE" : "AlwaysFF" },
156 | { "BYTE" : "PacketId" },
157 | { "short" : "nSize" }
158 | ]
159 | },
160 | { "int" : "Result" }
161 | ]
162 | },
163 | "SID_PING" : {
164 | "PacketId" : "0x25",
165 | "Description" : "",
166 | "Structure" : [
167 | { "SidHeader" : [
168 | { "BYTE" : "AlwaysFF" },
169 | { "BYTE" : "PacketId" },
170 | { "short" : "nSize" }
171 | ]
172 | },
173 | { "int" : "Value" }
174 | ]
175 | },
176 | "SID_READUSERDATA" : {
177 | "PacketId" : "0x26",
178 | "Description" : "",
179 | "Structure" : [
180 | { "SidHeader" : [
181 | { "BYTE" : "AlwaysFF" },
182 | { "BYTE" : "PacketId" },
183 | { "short" : "nSize" }
184 | ]
185 | },
186 | { "int" : "AccountsCount" },
187 | { "int" : "KeysCount" },
188 | { "int" : "RequestId" },
189 | { "std::string" : "Values[KeysCount]" }
190 | ]
191 | },
192 | "SID_CHANGEPASSWORD" : {
193 | "PacketId" : "0x31",
194 | "Description" : "",
195 | "Structure" : [
196 | { "SidHeader" : [
197 | { "BYTE" : "AlwaysFF" },
198 | { "BYTE" : "PacketId" },
199 | { "short" : "nSize" }
200 | ]
201 | },
202 | { "int" : "Result" }
203 | ]
204 | },
205 | "SID_GETFILETIME" : {
206 | "PacketId" : "0x33",
207 | "Description" : "",
208 | "Structure" : [
209 | { "SidHeader" : [
210 | { "BYTE" : "AlwaysFF" },
211 | { "BYTE" : "PacketId" },
212 | { "short" : "nSize" }
213 | ]
214 | },
215 | { "int" : "RequestId" },
216 | { "int" : "Unknown" },
217 | { "FILETIME" : "Filetime" },
218 | { "std::string" : "Filename" }
219 | ]
220 | },
221 | "SID_LOGONRESPONSE2" : {
222 | "PacketId" : "0x3A",
223 | "Description" : "",
224 | "Structure" : [
225 | { "SidHeader" : [
226 | { "BYTE" : "AlwaysFF" },
227 | { "BYTE" : "PacketId" },
228 | { "short" : "nSize" }
229 | ]
230 | },
231 | { "int" : "Status" }
232 | ]
233 | },
234 | "SID_CREATEACCOUNT2" : {
235 | "PacketId" : "0x3D",
236 | "Description" : "",
237 | "Structure" : [
238 | { "SidHeader" : [
239 | { "BYTE" : "AlwaysFF" },
240 | { "BYTE" : "PacketId" },
241 | { "short" : "nSize" }
242 | ]
243 | },
244 | { "int" : "Result" },
245 | { "BYTE" : "Unknown1" },
246 | { "short" : "Something" }
247 | ]
248 | },
249 | "SID_LOGONREALMEX" : {
250 | "PacketId" : "0x3E",
251 | "Description" : "",
252 | "Structure" : [
253 | { "SidHeader" : [
254 | { "BYTE" : "AlwaysFF" },
255 | { "BYTE" : "PacketId" },
256 | { "short" : "nSize" }
257 | ]
258 | },
259 | { "int" : "MCPCookie" },
260 | { "int" : "MCPStatus" },
261 | { "BYTE" : "MCPChunk1[8]" },
262 | { "int" : "RealmIP" },
263 | { "int" : "RealmPort" },
264 | { "BYTE" : "MCPChunk2[48]" },
265 | { "std::string" : "Name" }
266 | ]
267 | },
268 | "SID_QUERYREALMS2" : {
269 | "PacketId" : "0x40",
270 | "Description" : "",
271 | "Structure" : [
272 | { "SidHeader" : [
273 | { "BYTE" : "AlwaysFF" },
274 | { "BYTE" : "PacketId" },
275 | { "short" : "nSize" }
276 | ]
277 | },
278 | { "int" : "Unknown" },
279 | { "int" : "Count" },
280 | { "Realms[Count]" : [
281 | { "int" : "Unknown" },
282 | { "std::string" : "Title" },
283 | { "std::string" : "Description" }
284 | ]
285 | }
286 | ]
287 | },
288 | "SID_NEWS_INFO" : {
289 | "PacketId" : "0x46",
290 | "Description" : "",
291 | "Structure" : [
292 | { "SidHeader" : [
293 | { "BYTE" : "AlwaysFF" },
294 | { "BYTE" : "PacketId" },
295 | { "short" : "nSize" }
296 | ]
297 | },
298 | { "BYTE" : "Count" },
299 | { "int" : "LastLogon" },
300 | { "int" : "OldestNews" },
301 | { "int" : "LatestNews" },
302 | { "News[Count]" : [
303 | { "int" : "Timestamp" },
304 | { "std::string" : "Description" }
305 | ]
306 | }
307 | ]
308 | },
309 | "SID_OPTIONALWORK" : {
310 | "PacketId" : "0x4A",
311 | "Description" : "",
312 | "Structure" : [
313 | { "SidHeader" : [
314 | { "BYTE" : "AlwaysFF" },
315 | { "BYTE" : "PacketId" },
316 | { "short" : "nSize" }
317 | ]
318 | },
319 | { "std::string" : "Filename" }
320 | ]
321 | },
322 | "SID_REQUIREDWORK" : {
323 | "PacketId" : "0x4C",
324 | "Description" : "",
325 | "Structure" : [
326 | { "SidHeader" : [
327 | { "BYTE" : "AlwaysFF" },
328 | { "BYTE" : "PacketId" },
329 | { "short" : "nSize" }
330 | ]
331 | },
332 | { "std::string" : "Filename" }
333 | ]
334 | },
335 | "SID_AUTH_INFO" : {
336 | "PacketId" : "0x50",
337 | "Description" : "",
338 | "Structure" : [
339 | { "SidHeader" : [
340 | { "BYTE" : "AlwaysFF" },
341 | { "BYTE" : "PacketId" },
342 | { "short" : "nSize" }
343 | ]
344 | },
345 | { "int" : "LogonType" },
346 | { "int" : "ServerToken" },
347 | { "int" : "UDPValue" },
348 | { "FILETIME" : "MPQFILETIME" },
349 | { "std::string" : "Filename" },
350 | { "std::string" : "ValueString" }
351 | ]
352 | },
353 | "SID_AUTH_CHECK" : {
354 | "PacketId" : "0x51",
355 | "Description" : "",
356 | "Structure" : [
357 | { "SidHeader" : [
358 | { "BYTE" : "AlwaysFF" },
359 | { "BYTE" : "PacketId" },
360 | { "short" : "nSize" }
361 | ]
362 | },
363 | { "int" : "Result" },
364 | { "std::string" : "AdditionalInfo" }
365 | ]
366 | },
367 | "SID_SETEMAIL" : {
368 | "PacketId" : "0x59",
369 | "Description" : "",
370 | "Structure" : [
371 | { "SidHeader" : [
372 | { "BYTE" : "AlwaysFF" },
373 | { "BYTE" : "PacketId" },
374 | { "short" : "nSize" }
375 | ]
376 | }
377 | ]
378 | }
379 | }
380 |
--------------------------------------------------------------------------------
/src/data/1.15/client2gs.json:
--------------------------------------------------------------------------------
1 | {
2 | "D2GS_WALKTOLOCATION" : {
3 | "PacketId" : "0x01",
4 | "Description" : "",
5 | "Size" : 5,
6 | "Structure" : [
7 | { "BYTE" : "PacketId" },
8 | { "short" : "nTargetX" },
9 | { "short" : "nTargetY" }
10 | ]
11 | },
12 | "D2GS_WALKTOENTITY" : {
13 | "PacketId" : "0x02",
14 | "Description" : "",
15 | "Size" : 9,
16 | "Structure" : [
17 | { "BYTE" : "PacketId" },
18 | { "int" : "nUnitType" },
19 | { "int" : "nUnitGUID" }
20 | ]
21 | },
22 | "D2GS_RUNTOLOCATION" : {
23 | "PacketId" : "0x03",
24 | "Description" : "",
25 | "Size" : 5,
26 | "Structure" : [
27 | { "BYTE" : "PacketId" },
28 | { "short" : "nTargetX" },
29 | { "short" : "nTargetY" }
30 | ]
31 | },
32 | "D2GS_RUNTOENTITY" : {
33 | "PacketId" : "0x04",
34 | "Description" : "",
35 | "Size" : 9,
36 | "Structure" : [
37 | { "BYTE" : "PacketId" },
38 | { "int" : "nUnitType" },
39 | { "int" : "nUnitGUID" }
40 | ]
41 | },
42 | "D2GS_LEFTSKILLONLOCATION" : {
43 | "PacketId" : "0x05",
44 | "Description" : "",
45 | "Size" : 5,
46 | "Structure" : [
47 | { "BYTE" : "PacketId" },
48 | { "short" : "nTargetX" },
49 | { "short" : "nTargetY" }
50 | ]
51 | },
52 | "D2GS_LEFTSKILLONENTITY" : {
53 | "PacketId" : "0x06",
54 | "Description" : "",
55 | "Size" : 9,
56 | "Structure" : [
57 | { "BYTE" : "PacketId" },
58 | { "int" : "nUnitType" },
59 | { "int" : "nUnitGUID" }
60 | ]
61 | },
62 | "D2GS_LEFTSKILLONENTITYEX" : {
63 | "PacketId" : "0x07",
64 | "Description" : "",
65 | "Size" : 9,
66 | "Structure" : [
67 | { "BYTE" : "PacketId" },
68 | { "int" : "nUnitType" },
69 | { "int" : "nUnitGUID" }
70 | ]
71 | },
72 | "D2GS_LEFTSKILLONLOCATIONEX" : {
73 | "PacketId" : "0x08",
74 | "Description" : "",
75 | "Size" : 5,
76 | "Structure" : [
77 | { "BYTE" : "PacketId" },
78 | { "short" : "nTargetX" },
79 | { "short" : "nTargetY" }
80 | ]
81 | },
82 | "D2GS_LEFTSKILLONENTITYEX2" : {
83 | "PacketId" : "0x09",
84 | "Description" : "",
85 | "Size" : 9,
86 | "Structure" : [
87 | { "BYTE" : "PacketId" },
88 | { "int" : "nUnitType" },
89 | { "int" : "nUnitGUID" }
90 | ]
91 | },
92 | "D2GS_LEFTSKILLONENTITYEX3" : {
93 | "PacketId" : "0x0A",
94 | "Description" : "",
95 | "Size" : 9,
96 | "Structure" : [
97 | { "BYTE" : "PacketId" },
98 | { "int" : "nUnitType" },
99 | { "int" : "nUnitGUID" }
100 | ]
101 | },
102 | "D2GS_RIGHTSKILLONLOCATION" : {
103 | "PacketId" : "0x0C",
104 | "Description" : "",
105 | "Size" : 5,
106 | "Structure" : [
107 | { "BYTE" : "PacketId" },
108 | { "short" : "nTargetX" },
109 | { "short" : "nTargetY" }
110 | ]
111 | },
112 | "D2GS_RIGHTSKILLONENTITY" : {
113 | "PacketId" : "0x0D",
114 | "Description" : "",
115 | "Size" : 9,
116 | "Structure" : [
117 | { "BYTE" : "PacketId" },
118 | { "int" : "nUnitType" },
119 | { "int" : "nUnitGUID" }
120 | ]
121 | },
122 | "D2GS_RIGHTSKILLONENTITYEX" : {
123 | "PacketId" : "0x0E",
124 | "Description" : "",
125 | "Size" : 9,
126 | "Structure" : [
127 | { "BYTE" : "PacketId" },
128 | { "int" : "nUnitType" },
129 | { "int" : "nUnitGUID" }
130 | ]
131 | },
132 | "D2GS_RIGHTSKILLONLOCATIONEX" : {
133 | "PacketId" : "0x0F",
134 | "Description" : "",
135 | "Size" : 5,
136 | "Structure" : [
137 | { "BYTE" : "PacketId" },
138 | { "short" : "nTargetX" },
139 | { "short" : "nTargetY" }
140 | ]
141 | },
142 | "D2GS_RIGHTSKILLONENTITYEX2" : {
143 | "PacketId" : "0x10",
144 | "Description" : "",
145 | "Size" : 9,
146 | "Structure" : [
147 | { "BYTE" : "PacketId" },
148 | { "int" : "nUnitType" },
149 | { "int" : "nUnitGUID" }
150 | ]
151 | },
152 | "D2GS_RIGHTSKILLONENTITYEX3" : {
153 | "PacketId" : "0x11",
154 | "Description" : "",
155 | "Size" : 9,
156 | "Structure" : [
157 | { "BYTE" : "PacketId" },
158 | { "int" : "nUnitType" },
159 | { "int" : "nUnitGUID" }
160 | ]
161 | },
162 | "D2GS_SET_INFERNO_STATE" : {
163 | "PacketId" : "0x12",
164 | "Description" : "",
165 | "Size" : 1,
166 | "Structure" : [
167 | { "BYTE" : "PacketId" }
168 | ]
169 | },
170 | "D2GS_INTERACTWITHENTITY" : {
171 | "PacketId" : "0x13",
172 | "Description" : "",
173 | "Size" : 9,
174 | "Structure" : [
175 | { "BYTE" : "PacketId" },
176 | { "int" : "nUnitType" },
177 | { "int" : "nUnitGUID" }
178 | ]
179 | },
180 | "D2GS_OVERHEADMESSAGE" : {
181 | "PacketId" : "0x14",
182 | "Description" : "nType is ignored by server",
183 | "Size" : -1,
184 | "Structure" : [
185 | { "BYTE" : "PacketId" },
186 | { "BYTE" : "nType" },
187 | { "BYTE" : "nLanguageCode" },
188 | { "std::string" : "szMessage" },
189 | { "std::string" : "szTarget" },
190 | { "std::string" : "szUnknown" }
191 | ]
192 | },
193 | "D2GS_CHAT" : {
194 | "PacketId" : "0x15",
195 | "Description" : "",
196 | "Size" : -1,
197 | "Structure" : [
198 | { "BYTE" : "PacketId" },
199 | { "BYTE" : "nType" },
200 | { "BYTE" : "nLanguageCode" },
201 | { "std::string" : "szMessage" },
202 | { "std::string" : "szTarget" },
203 | { "std::string" : "szUnknown" }
204 | ]
205 | },
206 | "D2GS_PICKUPITEM" : {
207 | "PacketId" : "0x16",
208 | "Description" : "",
209 | "Size" : 13,
210 | "Structure" : [
211 | { "BYTE" : "PacketId" },
212 | { "int" : "nItemType" },
213 | { "int" : "nItemGUID" },
214 | { "int" : "bCursor" }
215 | ]
216 | },
217 | "D2GS_DROPITEM" : {
218 | "PacketId" : "0x17",
219 | "Description" : "",
220 | "Size" : 5,
221 | "Structure" : [
222 | { "BYTE" : "PacketId" },
223 | { "int" : "nItemGUID" }
224 | ]
225 | },
226 | "D2GS_ITEMTOBUFFER" : {
227 | "PacketId" : "0x18",
228 | "Description" : "",
229 | "Size" : 17,
230 | "Structure" : [
231 | { "BYTE" : "PacketId" },
232 | { "int" : "nItemGUID" },
233 | { "int" : "nTargetX" },
234 | { "int" : "nTargetY" },
235 | { "int" : "nBuffer" }
236 | ]
237 | },
238 | "D2GS_PICKUPBUFFERITEM" : {
239 | "PacketId" : "0x19",
240 | "Description" : "",
241 | "Size" : 5,
242 | "Structure" : [
243 | { "BYTE" : "PacketId" },
244 | { "int" : "nItemGUID" }
245 | ]
246 | },
247 | "D2GS_ITEMTOBODY" : {
248 | "PacketId" : "0x1A",
249 | "Description" : "",
250 | "Size" : 9,
251 | "Structure" : [
252 | { "BYTE" : "PacketId" },
253 | { "int" : "nItemGUID" },
254 | { "int" : "nBodyLocation" }
255 | ]
256 | },
257 | "D2GS_SWAP2HANDEDITEM" : {
258 | "PacketId" : "0x1B",
259 | "Description" : "",
260 | "Size" : 9,
261 | "Structure" : [
262 | { "BYTE" : "PacketId" },
263 | { "int" : "nItemGUID" },
264 | { "int" : "nBodyLocation" }
265 | ]
266 | },
267 | "D2GS_PICKUPBODYITEM" : {
268 | "PacketId" : "0x1C",
269 | "Description" : "",
270 | "Size" : 3,
271 | "Structure" : [
272 | { "BYTE" : "PacketId" },
273 | { "short" : "nBodyLocation" }
274 | ]
275 | },
276 | "D2GS_SWITCHBODYITEM" : {
277 | "PacketId" : "0x1D",
278 | "Description" : "",
279 | "Size" : 9,
280 | "Structure" : [
281 | { "BYTE" : "PacketId" },
282 | { "int" : "nItemGUID" },
283 | { "int" : "nBodyLocation" }
284 | ]
285 | },
286 | "D2GS_SWITCH1H_2H" : {
287 | "PacketId" : "0x1E",
288 | "Description" : "",
289 | "Size" : 9,
290 | "Structure" : [
291 | { "BYTE" : "PacketId" },
292 | { "int" : "nItemGUID" },
293 | { "int" : "nBodyLocation" }
294 | ]
295 | },
296 | "D2GS_SWITCHINVENTORYITEM" : {
297 | "PacketId" : "0x1F",
298 | "Description" : "",
299 | "Size" : 17,
300 | "Structure" : [
301 | { "BYTE" : "PacketId" },
302 | { "int" : "nItemCursorGUID" },
303 | { "int" : "nItemTargetGUID" },
304 | { "int" : "nTargetX" },
305 | { "int" : "nTargetY" }
306 | ]
307 | },
308 | "D2GS_USEITEM" : {
309 | "PacketId" : "0x20",
310 | "Description" : "",
311 | "Size" : 13,
312 | "Structure" : [
313 | { "BYTE" : "PacketId" },
314 | { "int" : "nItemGUID" },
315 | { "int" : "nItemX" },
316 | { "int" : "nItemY" }
317 | ]
318 | },
319 | "D2GS_STACKITEM" : {
320 | "PacketId" : "0x21",
321 | "Description" : "",
322 | "Size" : 9,
323 | "Structure" : [
324 | { "BYTE" : "PacketId" },
325 | { "int" : "nItemCursorGUID" },
326 | { "int" : "nItemTargetGUID" }
327 | ]
328 | },
329 | "D2GS_REMOVESTACKITEM" : {
330 | "PacketId" : "0x22",
331 | "Description" : "",
332 | "Size" : 5,
333 | "Structure" : [
334 | { "BYTE" : "PacketId" },
335 | { "int" : "nItemGUID" }
336 | ]
337 | },
338 | "D2GS_ITEMTOBELT" : {
339 | "PacketId" : "0x23",
340 | "Description" : "",
341 | "Size" : 9,
342 | "Structure" : [
343 | { "BYTE" : "PacketId" },
344 | { "int" : "nItemGUID" },
345 | { "int" : "nLocation" }
346 | ]
347 | },
348 | "D2GS_REMOVEBELTITEM" : {
349 | "PacketId" : "0x24",
350 | "Description" : "",
351 | "Size" : 5,
352 | "Structure" : [
353 | { "BYTE" : "PacketId" },
354 | { "int" : "nItemGUID" }
355 | ]
356 | },
357 | "D2GS_SWITCHBELTITEM" : {
358 | "PacketId" : "0x25",
359 | "Description" : "",
360 | "Size" : 9,
361 | "Structure" : [
362 | { "BYTE" : "PacketId" },
363 | { "int" : "nItemCursorGUID" },
364 | { "int" : "nItemTargetGUID" }
365 | ]
366 | },
367 | "D2GS_USEBELTITEM" : {
368 | "PacketId" : "0x26",
369 | "Description" : "",
370 | "Size" : 13,
371 | "Structure" : [
372 | { "BYTE" : "PacketId" },
373 | { "int" : "nItemGUID" },
374 | { "int" : "bOnMerc" },
375 | { "int" : "Unused" }
376 | ]
377 | },
378 | "D2GS_IDENTIFYITEM" : {
379 | "PacketId" : "0x27",
380 | "Description" : "",
381 | "Size" : 9,
382 | "Structure" : [
383 | { "BYTE" : "PacketId" },
384 | { "int" : "nItemGUID" },
385 | { "int" : "nScroolGUID" }
386 | ]
387 | },
388 | "D2GS_INSERTSOCKETITEM" : {
389 | "PacketId" : "0x28",
390 | "Description" : "",
391 | "Size" : 9,
392 | "Structure" : [
393 | { "BYTE" : "PacketId" },
394 | { "int" : "nItemCursorGUID" },
395 | { "int" : "nItemTargetGUID" }
396 | ]
397 | },
398 | "D2GS_SCROLLTOTOME" : {
399 | "PacketId" : "0x29",
400 | "Description" : "",
401 | "Size" : 9,
402 | "Structure" : [
403 | { "BYTE" : "PacketId" },
404 | { "int" : "nItemCursorGUID" },
405 | { "int" : "nItemTargetGUID" }
406 | ]
407 | },
408 | "D2GS_ITEMTOCUBE" : {
409 | "PacketId" : "0x2A",
410 | "Description" : "",
411 | "Size" : 9,
412 | "Structure" : [
413 | { "BYTE" : "PacketId" },
414 | { "int" : "nItemCursorGUID" },
415 | { "int" : "nCubeGUID" }
416 | ]
417 | },
418 | "D2GS_NPC_INIT" : {
419 | "PacketId" : "0x2F",
420 | "Description" : "",
421 | "Size" : 9,
422 | "Structure" : [
423 | { "BYTE" : "PacketId" },
424 | { "int" : "nActionType" },
425 | { "int" : "nUnitGUID" }
426 | ]
427 | },
428 | "D2GS_NPC_CANCEL" : {
429 | "PacketId" : "0x30",
430 | "Description" : "",
431 | "Size" : 9,
432 | "Structure" : [
433 | { "BYTE" : "PacketId" },
434 | { "int" : "nActionType" },
435 | { "int" : "nUnitGUID" }
436 | ]
437 | },
438 | "D2GS_QUESTMESSAGE" : {
439 | "PacketId" : "0x31",
440 | "Description" : "",
441 | "Size" : 9,
442 | "Structure" : [
443 | { "BYTE" : "PacketId" },
444 | { "int" : "nUnitGUID" },
445 | { "int" : "nMessageID" }
446 | ]
447 | },
448 | "D2GS_NPC_BUY" : {
449 | "PacketId" : "0x32",
450 | "Description" : "",
451 | "Size" : 17,
452 | "Structure" : [
453 | { "BYTE" : "PacketId" },
454 | { "int" : "nUnitGUID" },
455 | { "int" : "nItemGUID" },
456 | { "int" : "nBuyType" },
457 | { "int" : "nCost" }
458 | ]
459 | },
460 | "D2GS_NPC_SELL" : {
461 | "PacketId" : "0x33",
462 | "Description" : "Sells item to NPC",
463 | "Size" : 17,
464 | "Structure" : [
465 | { "BYTE" : "PacketId" },
466 | { "int" : "nNpcGUID" },
467 | { "int" : "nItemGUID" },
468 | { "WORD" : "nMode" },
469 | { "BYTE" : "Padding[6]" }
470 | ]
471 | },
472 | "D2GS_NPC_IDENTIFYITEMS" : {
473 | "PacketId" : "0x34",
474 | "Description" : "Identifies all items if player can afford it",
475 | "Size" : 5,
476 | "Structure" : [
477 | { "BYTE" : "PacketId" },
478 | { "int" : "nNpcGUID" }
479 | ]
480 | },
481 | "D2GS_REPAIR" : {
482 | "PacketId" : "0x35",
483 | "Description" : "This is used to repair broken items. \nIf you set bRepairOne to 1 it will repair just this one item but when it is set to 0 it will repair all items.",
484 | "Size" : 17,
485 | "Structure" : [
486 | { "BYTE" : "PacketId" },
487 | { "int" : "nUnitGUID" },
488 | { "int" : "nItemGUID" },
489 | { "int" : "bRepairOne" },
490 | { "int" : "nUnused" }
491 | ]
492 | },
493 | "D2GS_HIREMERC" : {
494 | "PacketId" : "0x36",
495 | "Description" : "",
496 | "Size" : 17,
497 | "Structure" : [
498 | { "BYTE" : "PacketId" },
499 | { "int" : "nUnitGUID" },
500 | { "int" : "nMercID" },
501 | { "int" : "nUnk" },
502 | { "int" : "nUnk2" }
503 | ]
504 | },
505 | "D2GS_IDENTIFYGAMBLE" : {
506 | "PacketId" : "0x37",
507 | "Description" : "",
508 | "Size" : 5,
509 | "Structure" : [
510 | { "BYTE" : "PacketId" },
511 | { "int" : "nItemGUID" }
512 | ]
513 | },
514 | "D2GS_ENTITYACTION" : {
515 | "PacketId" : "0x38",
516 | "Description" : "",
517 | "Size" : 13,
518 | "Structure" : [
519 | { "BYTE" : "PacketId" },
520 | { "int" : "nAction" },
521 | { "int" : "nUnitGUID" },
522 | { "int" : "nComplement" }
523 | ]
524 | },
525 | "D2GS_ADDSTAT" : {
526 | "PacketId" : "0x3A",
527 | "Description" : "",
528 | "Size" : 3,
529 | "Structure" : [
530 | { "BYTE" : "PacketId" },
531 | { "BYTE" : "nStatID" },
532 | { "BYTE" : "nCountSubOne" }
533 | ]
534 | },
535 | "D2GS_ADDSKILL" : {
536 | "PacketId" : "0x3B",
537 | "Description" : "",
538 | "Size" : 3,
539 | "Structure" : [
540 | { "BYTE" : "PacketId" },
541 | { "short" : "nSkillID" }
542 | ]
543 | },
544 | "D2GS_SELECTSKILL" : {
545 | "PacketId" : "0x3C",
546 | "Description" : "",
547 | "Size" : 9,
548 | "Structure" : [
549 | { "BYTE" : "PacketId" },
550 | { "short" : "nSkillID" },
551 | { "BYTE" : "Zero" },
552 | { "BYTE" : "nHand" },
553 | { "int" : "nItemGUID" }
554 | ]
555 | },
556 | "D2GS_UNKNOWN_3D" : {
557 | "PacketId" : "0x3D",
558 | "Description" : "",
559 | "Size" : 5,
560 | "Structure" : [
561 | { "BYTE" : "PacketId" },
562 | { "int" : "nUnitGUID" }
563 | ]
564 | },
565 | "D2GS_ACTIVATEITEM" : {
566 | "PacketId" : "0x3E",
567 | "Description" : "",
568 | "Size" : 5,
569 | "Structure" : [
570 | { "BYTE" : "PacketId" },
571 | { "int" : "nItemGUID" }
572 | ]
573 | },
574 | "D2GS_CHARACTERPHRASE" : {
575 | "PacketId" : "0x3F",
576 | "Description" : "",
577 | "Size" : 3,
578 | "Structure" : [
579 | { "BYTE" : "PacketId" },
580 | { "short" : "nPhraseID" }
581 | ]
582 | },
583 | "D2GS_UDPATEQUESTS" : {
584 | "PacketId" : "0x40",
585 | "Description" : "",
586 | "Size" : 1,
587 | "Structure" : [
588 | { "BYTE" : "PacketId" }
589 | ]
590 | },
591 | "D2GS_RESURRECT" : {
592 | "PacketId" : "0x41",
593 | "Description" : "",
594 | "Size" : 1,
595 | "Structure" : [
596 | { "BYTE" : "PacketId" }
597 | ]
598 | },
599 | "D2GS_STAFFINORIFICE" : {
600 | "PacketId" : "0x44",
601 | "Description" : "",
602 | "Size" : 17,
603 | "Structure" : [
604 | { "BYTE" : "PacketId" },
605 | { "int" : "nOrificeType" },
606 | { "int" : "nOrificeGUID" },
607 | { "int" : "nStaffGUID" },
608 | { "int" : "nEntityState" }
609 | ]
610 | },
611 | "D2GS_CONTROLLERMOVE" : {
612 | "PacketId" : "0x45",
613 | "Description" : "",
614 | "Size" : 3,
615 | "Structure" : [
616 | { "BYTE" : "PacketId" },
617 | { "short" : "nAngle" }
618 | ]
619 | },
620 | "D2GS_MERC_INTERACT" : {
621 | "PacketId" : "0x46",
622 | "Description" : "",
623 | "Size" : 13,
624 | "Structure" : [
625 | { "BYTE" : "PacketId" },
626 | { "int" : "nMercGUID" },
627 | { "int" : "nUnitGUID" },
628 | { "int" : "nUnitType" }
629 | ]
630 | },
631 | "D2GS_MERC_MOVE" : {
632 | "PacketId" : "0x47",
633 | "Description" : "",
634 | "Size" : 13,
635 | "Structure" : [
636 | { "BYTE" : "PacketId" },
637 | { "int" : "nMercGUID" },
638 | { "short" : "nTargetX" },
639 | { "short" : "PaddingX" },
640 | { "short" : "nTargetY" },
641 | { "short" : "PaddingY" }
642 | ]
643 | },
644 | "D2GS_BUSYSTATE_OFF" : {
645 | "PacketId" : "0x48",
646 | "Description" : "",
647 | "Size" : 1,
648 | "Structure" : [
649 | { "BYTE" : "PacketId" }
650 | ]
651 | },
652 | "D2GS_REQUESTENTITYUPDATE" : {
653 | "PacketId" : "0x4B",
654 | "Description" : "",
655 | "Size" : 9,
656 | "Structure" : [
657 | { "BYTE" : "PacketId" },
658 | { "int" : "nUnitType" },
659 | { "int" : "nUnitGUID" }
660 | ]
661 | },
662 | "D2GS_TRANSMORGIFY" : {
663 | "PacketId" : "0x4C",
664 | "Description" : "",
665 | "Size" : 5,
666 | "Structure" : [
667 | { "BYTE" : "PacketId" },
668 | { "int" : "nObjectGUID" }
669 | ]
670 | },
671 | "D2GS_PLAYNPCMESSAGE" : {
672 | "PacketId" : "0x4D",
673 | "Description" : "",
674 | "Size" : 3,
675 | "Structure" : [
676 | { "BYTE" : "PacketId" },
677 | { "short" : "nMonStatsId" }
678 | ]
679 | },
680 | "D2GS_CLICKBUTTON" : {
681 | "PacketId" : "0x4F",
682 | "Description" : "",
683 | "Size" : 7,
684 | "Structure" : [
685 | { "BYTE" : "PacketId" },
686 | { "short" : "nButtonId" },
687 | { "short" : "HiWORDGold" },
688 | { "short" : "LoWORDGold" }
689 | ]
690 | },
691 | "D2GS_DROPGOLD" : {
692 | "PacketId" : "0x50",
693 | "Description" : "",
694 | "Size" : 9,
695 | "Structure" : [
696 | { "BYTE" : "PacketId" },
697 | { "int" : "nUnitGUID" },
698 | { "int" : "nGoldAmount" }
699 | ]
700 | },
701 | "D2GS_BINDHOTKEY" : {
702 | "PacketId" : "0x51",
703 | "Description" : "",
704 | "Size" : 9,
705 | "Structure" : [
706 | { "BYTE" : "PacketId" },
707 | { "BYTE" : "nSkillID" },
708 | { "BYTE" : "nHand" },
709 | { "short" : "nHotkey" },
710 | { "int" : "nItemGUID" }
711 | ]
712 | },
713 | "D2GS_STAMINA_ON" : {
714 | "PacketId" : "0x53",
715 | "Description" : "",
716 | "Size" : 1,
717 | "Structure" : [
718 | { "BYTE" : "PacketId" }
719 | ]
720 | },
721 | "D2GS_STAMINA_OFF" : {
722 | "PacketId" : "0x54",
723 | "Description" : "",
724 | "Size" : 1,
725 | "Structure" : [
726 | { "BYTE" : "PacketId" }
727 | ]
728 | },
729 | "D2GS_WAYPOINTOPEN" : {
730 | "PacketId" : "0x55",
731 | "Description" : "",
732 | "Size" : 1,
733 | "Structure" : [
734 | { "BYTE" : "PacketId" }
735 | ]
736 | },
737 | "D2GS_WAYPOINTINTERACT" : {
738 | "PacketId" : "0x57",
739 | "Description" : "",
740 | "Size" : 5,
741 | "Structure" : [
742 | { "BYTE" : "PacketId" },
743 | { "int" : "nDestination" }
744 | ]
745 | },
746 | "D2GS_QUESTCOMPLETED" : {
747 | "PacketId" : "0x58",
748 | "Description" : "",
749 | "Size" : 3,
750 | "Structure" : [
751 | { "BYTE" : "PacketId" },
752 | { "short" : "nQuestID" }
753 | ]
754 | },
755 | "D2GS_MAKEENTITYMOVE" : {
756 | "PacketId" : "0x59",
757 | "Description" : "",
758 | "Size" : 17,
759 | "Structure" : [
760 | { "BYTE" : "PacketId" },
761 | { "int" : "nUnitType" },
762 | { "int" : "nUnitGUID" },
763 | { "int" : "nTargetX" },
764 | { "int" : "nTargetY" }
765 | ]
766 | },
767 | "D2GS_SQUELCH_HOSTILE" : {
768 | "PacketId" : "0x5D",
769 | "Description" : "",
770 | "Size" : 7,
771 | "Structure" : [
772 | { "BYTE" : "PacketId" },
773 | { "BYTE" : "nActionType" },
774 | { "BYTE" : "bToggle" },
775 | { "int" : "nPlayerGUID" }
776 | ]
777 | },
778 | "D2GS_PARTY" : {
779 | "PacketId" : "0x5E",
780 | "Description" : "",
781 | "Size" : 6,
782 | "Structure" : [
783 | { "BYTE" : "PacketId" },
784 | { "BYTE" : "nActionType" },
785 | { "int" : "nPlayerGUID" }
786 | ]
787 | },
788 | "D2GS_UPDATEPLAYERPOS" : {
789 | "PacketId" : "0x5F",
790 | "Description" : "",
791 | "Size" : 5,
792 | "Structure" : [
793 | { "BYTE" : "PacketId" },
794 | { "short" : "nX" },
795 | { "short" : "nY" }
796 | ]
797 | },
798 | "D2GS_SWAPWEAPON" : {
799 | "PacketId" : "0x60",
800 | "Description" : "",
801 | "Size" : 1,
802 | "Structure" : [
803 | { "BYTE" : "PacketId" }
804 | ]
805 | },
806 | "D2GS_MERC_ITEM" : {
807 | "PacketId" : "0x61",
808 | "Description" : "",
809 | "Size" : 3,
810 | "Structure" : [
811 | { "BYTE" : "PacketId" },
812 | { "short" : "nPosition" }
813 | ]
814 | },
815 | "D2GS_MERC_RESSURECT" : {
816 | "PacketId" : "0x62",
817 | "Description" : "",
818 | "Size" : 5,
819 | "Structure" : [
820 | { "BYTE" : "PacketId" },
821 | { "int" : "nUnitGUID" }
822 | ]
823 | },
824 | "D2GS_ITEM_TOBELT" : {
825 | "PacketId" : "0x63",
826 | "Description" : "",
827 | "Size" : 5,
828 | "Structure" : [
829 | { "BYTE" : "PacketId" },
830 | { "int" : "nItemGUID" }
831 | ]
832 | },
833 | "D2GS_CONTROLLERSTOP" : {
834 | "PacketId" : "0x64",
835 | "Description" : "",
836 | "Size" : 1,
837 | "Structure" : [
838 | { "BYTE" : "PacketId" }
839 | ]
840 | },
841 | "D2GS_WARDEN" : {
842 | "PacketId" : "0x66",
843 | "Description" : "",
844 | "Size" : -1,
845 | "Structure" : [
846 | { "BYTE" : "PacketId" },
847 | { "short" : "nStreamSize" },
848 | { "BYTE" : "Stream[nStreamSize]" }
849 | ]
850 | },
851 | "D2GS_GAMELOGON_SP" : {
852 | "PacketId" : "0x67",
853 | "Description" : "",
854 | "Size" : 46,
855 | "Structure" : [
856 | { "BYTE" : "PacketId" },
857 | { "char" : "szGameName[16]" },
858 | { "BYTE" : "nGameType" },
859 | { "BYTE" : "nCharClass" },
860 | { "BYTE" : "nTemplate" },
861 | { "BYTE" : "nSelectedDiff" },
862 | { "char" : "szCharName[16]" },
863 | { "short" : "nUnknown4" },
864 | { "int" : "eArenaFlags" },
865 | { "BYTE" : "nUnknown6" },
866 | { "BYTE" : "nUnknown7" },
867 | { "BYTE" : "nLanguageCode" }
868 | ]
869 | },
870 | "D2GS_GAMELOGON_MULTI" : {
871 | "PacketId" : "0x68",
872 | "Description" : "nMinorGameVersion:\n\t- 1.14\t\t= 0x0000000E\n\t- 1.13\t\t= 0x0000000D\n\t- 1.12\t\t= 0x0000000C\n\t- 1.11\t\t= 0x0000000B\nnVersionConstant:\n\t- Classic \t= 0x2185EDD6\n\t- Expansion \t= 0xED5DCC50\nnConstant:\n\t\t\t= 0x91A519B6",
873 | "Size" : 45,
874 | "Structure" : [
875 | { "BYTE" : "PacketId" },
876 | { "int" : "nGameHash" },
877 | { "short" : "nGameToken" },
878 | { "BYTE" : "nCharClass" },
879 | { "int" : "nMinorGameVersion" },
880 | { "int" : "nVersionConstant" },
881 | { "int" : "nConstant" },
882 | { "int" : "magic1"},
883 | { "int" : "magic2"},
884 | { "BYTE" : "nLanguageCode" },
885 | { "char" : "szCharName[16]" }
886 | ]
887 | },
888 | "D2GS_LEAVEGAME" : {
889 | "PacketId" : "0x69",
890 | "Description" : "",
891 | "Size" : 1,
892 | "Structure" : [
893 | { "BYTE" : "PacketId" }
894 | ]
895 | },
896 | "D2GS_REQUESTHOSTEDGAMES" : {
897 | "PacketId" : "0x6A",
898 | "Description" : "",
899 | "Size" : 1,
900 | "Structure" : [
901 | { "BYTE" : "PacketId" }
902 | ]
903 | },
904 | "D2GS_JOINGAME" : {
905 | "PacketId" : "0x6B",
906 | "Description" : "",
907 | "Size" : 1,
908 | "Structure" : [
909 | { "BYTE" : "PacketId" }
910 | ]
911 | },
912 | "D2GS_UPLOADSAVE" : {
913 | "PacketId" : "0x6C",
914 | "Description" : "",
915 | "Size" : -1,
916 | "Structure" : [
917 | { "BYTE" : "PacketId" },
918 | { "BYTE" : "nChunkSize" },
919 | { "int" : "nFullSize" },
920 | { "BYTE" : "Bytes[nChunkSize]" },
921 | { "BYTE" : "Terminator" }
922 | ]
923 | },
924 | "D2GS_PING" : {
925 | "PacketId" : "0x6D",
926 | "Description" : "",
927 | "Size" : 13,
928 | "Structure" : [
929 | { "BYTE" : "PacketId" },
930 | { "int" : "nTickCount" },
931 | { "int" : "nDelay" },
932 | { "int" : "nWardenOrZero" }
933 | ]
934 | },
935 | "D2GS_FINDME_6E" : {
936 | "PacketId" : "0x6E",
937 | "Description" : "",
938 | "Size" : 1,
939 | "Structure" : [
940 | { "BYTE" : "PacketId" }
941 | ]
942 | },
943 | "D2GS_FINDME_70" : {
944 | "PacketId" : "0x70",
945 | "Description" : "",
946 | "Size" : 1,
947 | "Structure" : [
948 | { "BYTE" : "PacketId" }
949 | ]
950 | }
951 | }
952 |
--------------------------------------------------------------------------------
/src/data/1.15/gs2client.json:
--------------------------------------------------------------------------------
1 | {
2 | "D2GS_GAMELOADING" : {
3 | "PacketId" : "0x00",
4 | "Description" : "",
5 | "Size" : 1,
6 | "Structure" : [
7 | { "BYTE" : "PacketId" }
8 | ]
9 | },
10 | "D2GS_GAMEFLAGS" : {
11 | "PacketId" : "0x01",
12 | "Description" : "eArenaFlags contains informatons about current game.\n eArenaFlags & 0x00000004 = Unknown (Always set) \n eArenaFlags & 0x00000800 = Hardcore \n eArenaFlags & 0x00100000 = Expansion",
13 | "Size" : 8,
14 | "Structure" : [
15 | { "BYTE" : "PacketId" },
16 | { "BYTE" : "nDifficulty" },
17 | { "int" : "eArenaFlags" },
18 | { "BYTE" : "bIsExpansion" },
19 | { "BYTE" : "bIsLadder" }
20 | ]
21 | },
22 | "D2GS_LOADSUCCESSFUL" : {
23 | "PacketId" : "0x02",
24 | "Description" : "",
25 | "Size" : 1,
26 | "Structure" : [
27 | { "BYTE" : "PacketId" }
28 | ]
29 | },
30 | "D2GS_LOADACT" : {
31 | "PacketId" : "0x03",
32 | "Description" : "",
33 | "Size" : 12,
34 | "Structure" : [
35 | { "BYTE" : "PacketId" },
36 | { "BYTE" : "nAct" },
37 | { "int" : "nMapID" },
38 | { "short" : "nArea" },
39 | { "int" : "nAutomap" }
40 | ]
41 | },
42 | "D2GS_LOADCOMPLETE" : {
43 | "PacketId" : "0x04",
44 | "Description" : "",
45 | "Size" : 1,
46 | "Structure" : [
47 | { "BYTE" : "PacketId" }
48 | ]
49 | },
50 | "D2GS_UNLOADCOMPLETE" : {
51 | "PacketId" : "0x05",
52 | "Description" : "",
53 | "Size" : 1,
54 | "Structure" : [
55 | { "BYTE" : "PacketId" }
56 | ]
57 | },
58 | "D2GS_GAMEEXIT" : {
59 | "PacketId" : "0x06",
60 | "Description" : "",
61 | "Size" : 1,
62 | "Structure" : [
63 | { "BYTE" : "PacketId" }
64 | ]
65 | },
66 | "D2GS_MAPREVEAL" : {
67 | "PacketId" : "0x07",
68 | "Description" : "",
69 | "Size" : 6,
70 | "Structure" : [
71 | { "BYTE" : "PacketId" },
72 | { "short" : "nTileX" },
73 | { "short" : "nTileY" },
74 | { "BYTE" : "nAreaID" }
75 | ]
76 | },
77 | "D2GS_MAPHIDE" : {
78 | "PacketId" : "0x08",
79 | "Description" : "",
80 | "Size" : 6,
81 | "Structure" : [
82 | { "BYTE" : "PacketId" },
83 | { "short" : "nTileX" },
84 | { "short" : "nTileY" },
85 | { "BYTE" : "nAreaID" }
86 | ]
87 | },
88 | "D2GS_ASSIGNLVLWARP" : {
89 | "PacketId" : "0x09",
90 | "Description" : "",
91 | "Size" : 11,
92 | "Structure" : [
93 | { "BYTE" : "PacketId" },
94 | { "BYTE" : "nWarpType" },
95 | { "int" : "nWarpGUID" },
96 | { "BYTE" : "nWarpClassId" },
97 | { "short" : "nWarpX" },
98 | { "short" : "nWarpY" }
99 | ]
100 | },
101 | "D2GS_REMOVEOBJECT" : {
102 | "PacketId" : "0x0A",
103 | "Description" : "",
104 | "Size" : 6,
105 | "Structure" : [
106 | { "BYTE" : "PacketId" },
107 | { "BYTE" : "nUnitType" },
108 | { "int" : "nUnitGUID" }
109 | ]
110 | },
111 | "D2GS_GAMEHANDSHAKE" : {
112 | "PacketId" : "0x0B",
113 | "Description" : "",
114 | "Size" : 6,
115 | "Structure" : [
116 | { "BYTE" : "PacketId" },
117 | { "BYTE" : "nUnitType" },
118 | { "int" : "nUnitGUID" }
119 | ]
120 | },
121 | "D2GS_NPC_HIT" : {
122 | "PacketId" : "0x0C",
123 | "Description" : "",
124 | "Size" : 9,
125 | "Structure" : [
126 | { "BYTE" : "PacketId" },
127 | { "BYTE" : "nUnitType" },
128 | { "int" : "nUnitGUID" },
129 | { "BYTE" : "nUnitHitType" },
130 | { "BYTE" : "nUnitHitClass" },
131 | { "BYTE" : "nUnitLife" }
132 | ]
133 | },
134 | "D2GS_PLAYERSTOP" : {
135 | "PacketId" : "0x0D",
136 | "Description" : "",
137 | "Size" : 13,
138 | "Structure" : [
139 | { "BYTE" : "PacketId" },
140 | { "BYTE" : "nUnitType" },
141 | { "int" : "nUnitGUID" },
142 | { "BYTE" : "bHitClass" },
143 | { "short" : "nUnitX" },
144 | { "short" : "nUnitY" },
145 | { "BYTE" : "nUnitHitClass" },
146 | { "BYTE" : "nUnitLife" }
147 | ]
148 | },
149 | "D2GS_OBJECTSTATE" : {
150 | "PacketId" : "0x0E",
151 | "Description" : "",
152 | "Size" : 12,
153 | "Structure" : [
154 | { "BYTE" : "PacketId" },
155 | { "BYTE" : "nUnitType" },
156 | { "int" : "nUnitGUID" },
157 | { "BYTE" : "nPortalFlags" },
158 | { "BYTE" : "bFlagIsTargetable" },
159 | { "int" : "nUnitState" }
160 | ]
161 | },
162 | "D2GS_PLAYERMOVE" : {
163 | "PacketId" : "0x0F",
164 | "Description" : "",
165 | "Size" : 16,
166 | "Structure" : [
167 | { "BYTE" : "PacketId" },
168 | { "BYTE" : "nUnitType" },
169 | { "int" : "nUnitGUID" },
170 | { "BYTE" : "nMoveType" },
171 | { "short" : "nTargetX" },
172 | { "short" : "nTargetY" },
173 | { "BYTE" : "nUnitHitClass" },
174 | { "short" : "nUnitX" },
175 | { "short" : "nUnitY" }
176 | ]
177 | },
178 | "D2GS_CHARTOOBJ" : {
179 | "PacketId" : "0x10",
180 | "Description" : "",
181 | "Size" : 16,
182 | "Structure" : [
183 | { "BYTE" : "PacketId" },
184 | { "BYTE" : "nPlayerType" },
185 | { "int" : "nPlayerGUID" },
186 | { "BYTE" : "nMoveType" },
187 | { "BYTE" : "nTargetType" },
188 | { "int" : "nTargetGUID" },
189 | { "short" : "nTargetX" },
190 | { "short" : "nTargetY" }
191 | ]
192 | },
193 | "D2GS_REPORTKILL" : {
194 | "PacketId" : "0x11",
195 | "Description" : "",
196 | "Size" : 8,
197 | "Structure" : [
198 | { "BYTE" : "PacketId" },
199 | { "BYTE" : "nUnitType" },
200 | { "int" : "nUnitGUID" },
201 | { "short" : "nOverlay" }
202 | ]
203 | },
204 | "D2GS_REASSIGNPLAYER" : {
205 | "PacketId" : "0x15",
206 | "Description" : "",
207 | "Size" : 11,
208 | "Structure" : [
209 | { "BYTE" : "PacketId" },
210 | { "BYTE" : "nUnitType" },
211 | { "int" : "nUnitGUID" },
212 | { "short" : "nX" },
213 | { "short" : "nY" },
214 | { "BYTE" : "bBool" }
215 | ]
216 | },
217 | "D2GS_MANYUNITSCOORDSUPDATE" : {
218 | "PacketId" : "0x16",
219 | "Description" : "",
220 | "Size" : -1,
221 | "Structure" : [
222 | { "BYTE" : "PacketId" },
223 | { "BYTE" : "Unused1" },
224 | { "BYTE" : "Unused2" },
225 | { "BYTE" : "Count" },
226 | { "sUnitInfo[Count]" : [
227 | { "BYTE" : "nUnitType" },
228 | { "int" : "nUnitGUID" },
229 | { "short" : "nUnitX" },
230 | { "short" : "nUnitY" }
231 | ]
232 | }
233 | ]
234 | },
235 | "D2GS_UNKNOWN_17" : {
236 | "PacketId" : "0x17",
237 | "Description" : "",
238 | "Size" : 0,
239 | "Structure" : [
240 | { "BYTE" : "PacketId" },
241 | { "BYTE" : "nUnitType" },
242 | { "int" : "nUnitGUID" },
243 | { "short" : "nUnitX" },
244 | { "short" : "nUnitY" },
245 | { "short" : "Unknown3" }
246 | ]
247 | },
248 | "D2GS_HPMPUPDATE2" : {
249 | "PacketId" : "0x18",
250 | "Description" : "BitStream data contains:\n HP (15bits) \n MP (15bits) \n Stamina (15bits) \n HPRegen (7bits) \n MPRegen (7bits) \n X (16bits) \n Y (16bits) \n dX (8bits) \n dY (8bits)",
251 | "Size" : 15,
252 | "Structure" : [
253 | { "BYTE" : "PacketId" },
254 | { "BYTE" : "aBitStream[14]" }
255 | ]
256 | },
257 | "D2GS_SMALLGOLDPICKUP" : {
258 | "PacketId" : "0x19",
259 | "Description" : "",
260 | "Size" : 2,
261 | "Structure" : [
262 | { "BYTE" : "PacketId" },
263 | { "BYTE" : "nAmount" }
264 | ]
265 | },
266 | "D2GS_ADDEXP_BYTE" : {
267 | "PacketId" : "0x1A",
268 | "Description" : "",
269 | "Size" : 2,
270 | "Structure" : [
271 | { "BYTE" : "PacketId" },
272 | { "BYTE" : "nAmount" }
273 | ]
274 | },
275 | "D2GS_ADDEXP_WORD" : {
276 | "PacketId" : "0x1B",
277 | "Description" : "",
278 | "Size" : 3,
279 | "Structure" : [
280 | { "BYTE" : "PacketId" },
281 | { "short" : "nAmount" }
282 | ]
283 | },
284 | "D2GS_ADDEXP_DWORD" : {
285 | "PacketId" : "0x1C",
286 | "Description" : "",
287 | "Size" : 5,
288 | "Structure" : [
289 | { "BYTE" : "PacketId" },
290 | { "int" : "nAmount" }
291 | ]
292 | },
293 | "D2GS_SETATTR_BYTE" : {
294 | "PacketId" : "0x1D",
295 | "Description" : "",
296 | "Size" : 3,
297 | "Structure" : [
298 | { "BYTE" : "PacketId" },
299 | { "BYTE" : "nAttribute" },
300 | { "BYTE" : "nValue" }
301 | ]
302 | },
303 | "D2GS_SETATTR_WORD" : {
304 | "PacketId" : "0x1E",
305 | "Description" : "",
306 | "Size" : 4,
307 | "Structure" : [
308 | { "BYTE" : "PacketId" },
309 | { "BYTE" : "nAttribute" },
310 | { "short" : "nValue" }
311 | ]
312 | },
313 | "D2GS_SETATTR_DWORD" : {
314 | "PacketId" : "0x1F",
315 | "Description" : "",
316 | "Size" : 6,
317 | "Structure" : [
318 | { "BYTE" : "PacketId" },
319 | { "BYTE" : "nAttribute" },
320 | { "int" : "nValue" }
321 | ]
322 | },
323 | "D2GS_ATTRIBUTEUPDATE" : {
324 | "PacketId" : "0x20",
325 | "Description" : "",
326 | "Size" : 10,
327 | "Structure" : [
328 | { "BYTE" : "PacketId" },
329 | { "int" : "nUnitGUID" },
330 | { "BYTE" : "nAttribute" },
331 | { "int" : "nAmount" }
332 | ]
333 | },
334 | "D2GS_UPDATEITEM_OSKILL" : {
335 | "PacketId" : "0x21",
336 | "Description" : "",
337 | "Size" : 12,
338 | "Structure" : [
339 | { "BYTE" : "PacketId" },
340 | { "BYTE" : "nUnitType" },
341 | { "BYTE" : "bDelete" },
342 | { "int" : "nUnitGUID" },
343 | { "short" : "nSkillID" },
344 | { "BYTE" : "nBaseLevel" },
345 | { "BYTE" : "nBonusLevel" },
346 | { "BYTE" : "Padding" }
347 | ]
348 | },
349 | "D2GS_UPDATEITEM_SKILL" : {
350 | "PacketId" : "0x22",
351 | "Description" : "",
352 | "Size" : 12,
353 | "Structure" : [
354 | { "BYTE" : "PacketId" },
355 | { "BYTE" : "nUnitType" },
356 | { "BYTE" : "bDelete" },
357 | { "int" : "nUnitGUID" },
358 | { "short" : "nSkillID" },
359 | { "BYTE" : "nQuantity" },
360 | { "BYTE" : "Padding" },
361 | { "BYTE" : "bBody" }
362 | ]
363 | },
364 | "D2GS_SETSKILL" : {
365 | "PacketId" : "0x23",
366 | "Description" : "",
367 | "Size" : 13,
368 | "Structure" : [
369 | { "BYTE" : "PacketId" },
370 | { "BYTE" : "nUnitTypeUnused" },
371 | { "int" : "nUnitGUID" },
372 | { "BYTE" : "nHand" },
373 | { "short" : "nSkillId" },
374 | { "int" : "nItemGUID" }
375 | ]
376 | },
377 | "D2GS_CHAT" : {
378 | "PacketId" : "0x26",
379 | "Description" : "",
380 | "Size" : -1,
381 | "Structure" : [
382 | { "BYTE" : "PacketId" },
383 | { "BYTE" : "nChatType" },
384 | { "BYTE" : "nLanguageCode" },
385 | { "BYTE" : "nUnitType" },
386 | { "int" : "nUnitGUID" },
387 | { "BYTE" : "nChatColor" },
388 | { "BYTE" : "nChatSubType" },
389 | { "std::string" : "szNick" },
390 | { "std::string" : "szMessage" }
391 | ]
392 | },
393 | "D2GS_NPC_INFO" : {
394 | "PacketId" : "0x27",
395 | "Description" : "",
396 | "Size" : 40,
397 | "Structure" : [
398 | { "BYTE" : "PacketId" },
399 | { "BYTE" : "nUnitType" },
400 | { "int" : "nUnitGUID" },
401 | { "BYTE" : "nCount" },
402 | { "BYTE" : "Unknown" },
403 | { "sUnitMessages[8]" : [
404 | { "BYTE" : "bShow" },
405 | { "BYTE" : "NotUsed" },
406 | { "short" : "nMsgID" }
407 | ]
408 | }
409 | ]
410 | },
411 | "D2GS_PLAYERQUESTINFO" : {
412 | "PacketId" : "0x28",
413 | "Description" : "",
414 | "Size" : 103,
415 | "Structure" : [
416 | { "BYTE" : "PacketId" },
417 | { "BYTE" : "nUpdateType" },
418 | { "int" : "nUnitGUID" },
419 | { "BYTE" : "nActionType" },
420 | { "BYTE" : "aQuestBitStream[96]" }
421 | ]
422 | },
423 | "D2GS_GAMEQUESTLOG" : {
424 | "PacketId" : "0x29",
425 | "Description" : "",
426 | "Size" : 97,
427 | "Structure" : [
428 | { "BYTE" : "PacketId" },
429 | { "BYTE" : "aQuestBitStream[96]" }
430 | ]
431 | },
432 | "D2GS_NPCTRANSACTION" : {
433 | "PacketId" : "0x2A",
434 | "Description" : "",
435 | "Size" : 15,
436 | "Structure" : [
437 | { "BYTE" : "PacketId" },
438 | { "BYTE" : "nTradeType" },
439 | { "BYTE" : "nResult" },
440 | { "int" : "Unused" },
441 | { "int" : "nUnitGUID" },
442 | { "int" : "nInventoryGold" }
443 | ]
444 | },
445 | "D2GS_PLAYSOUND" : {
446 | "PacketId" : "0x2C",
447 | "Description" : "",
448 | "Size" : 8,
449 | "Structure" : [
450 | { "BYTE" : "PacketId" },
451 | { "BYTE" : "nType" },
452 | { "int" : "nUnitGUID" },
453 | { "short" : "nSoundID" }
454 | ]
455 | },
456 | "D2GS_UPDATEITEMSTATS" : {
457 | "PacketId" : "0x3E",
458 | "Description" : "",
459 | "Size" : -1,
460 | "Structure" : [
461 | { "BYTE" : "PacketId" },
462 | { "BYTE" : "nFullPacketSize" },
463 | { "BYTE" : "StatBitStream[nFullPacketSize - 2]" }
464 | ]
465 | },
466 | "D2GS_USESTACKABLEITEM" : {
467 | "PacketId" : "0x3F",
468 | "Description" : "",
469 | "Size" : 8,
470 | "Structure" : [
471 | { "BYTE" : "PacketId" },
472 | { "BYTE" : "nSpellIcon" },
473 | { "int" : "nItemGUID" },
474 | { "short" : "nSkillID" }
475 | ]
476 | },
477 | "D2GS_ITEMFLAGSETTER" : {
478 | "PacketId" : "0x40",
479 | "Description" : "",
480 | "Size" : 13,
481 | "Structure" : [
482 | { "BYTE" : "PacketId" },
483 | { "int" : "nUnitGUID" },
484 | { "int" : "nItemFlag" },
485 | { "int" : "bRemove" }
486 | ]
487 | },
488 | "D2GS_CLEARCURSOR" : {
489 | "PacketId" : "0x42",
490 | "Description" : "",
491 | "Size" : 6,
492 | "Structure" : [
493 | { "BYTE" : "PacketId" },
494 | { "BYTE" : "nUnitType" },
495 | { "int" : "nUnitGUID" }
496 | ]
497 | },
498 | "D2GS_RELATOR1" : {
499 | "PacketId" : "0x47",
500 | "Description" : "",
501 | "Size" : 11,
502 | "Structure" : [
503 | { "BYTE" : "PacketId" },
504 | { "BYTE" : "nUnitType" },
505 | { "BYTE" : "Gap" },
506 | { "int" : "nUnitGUID" },
507 | { "BYTE" : "Padding[4]" }
508 | ]
509 | },
510 | "D2GS_RELATOR2" : {
511 | "PacketId" : "0x48",
512 | "Description" : "",
513 | "Size" : 11,
514 | "Structure" : [
515 | { "BYTE" : "PacketId" },
516 | { "BYTE" : "nUnitType" },
517 | { "BYTE" : "Gap" },
518 | { "int" : "nUnitGUID" },
519 | { "BYTE" : "Padding[4]" }
520 | ]
521 | },
522 | "D2GS_UNITCASTSKILL_TARGET" : {
523 | "PacketId" : "0x4C",
524 | "Description" : "",
525 | "Size" : 16,
526 | "Structure" : [
527 | { "BYTE" : "PacketId" },
528 | { "BYTE" : "nAttackerType" },
529 | { "int" : "nAttackerGUID" },
530 | { "short" : "nSkillID" },
531 | { "BYTE" : "nSkillLevel" },
532 | { "BYTE" : "nTargetType" },
533 | { "int" : "nTargetGUID" },
534 | { "short" : "Zero" }
535 | ]
536 | },
537 | "D2GS_UNITCASTSKILL_XY" : {
538 | "PacketId" : "0x4D",
539 | "Description" : "",
540 | "Size" : 17,
541 | "Structure" : [
542 | { "BYTE" : "PacketId" },
543 | { "BYTE" : "nAttackerType" },
544 | { "int" : "nAttackerGUID" },
545 | { "short" : "nSkillID" },
546 | { "short" : "Filler" },
547 | { "BYTE" : "nSkillLevel" },
548 | { "short" : "nTargetX" },
549 | { "short" : "nTargetY" },
550 | { "short" : "Zero" }
551 | ]
552 | },
553 | "D2GS_MERCFORHIRE" : {
554 | "PacketId" : "0x4E",
555 | "Description" : "",
556 | "Size" : 7,
557 | "Structure" : [
558 | { "BYTE" : "PacketId" },
559 | { "short" : "nNameStringID" },
560 | { "int" : "nSeed" }
561 | ]
562 | },
563 | "D2GS_CLEARMERCLIST" : {
564 | "PacketId" : "0x4F",
565 | "Description" : "",
566 | "Size" : 1,
567 | "Structure" : [
568 | { "BYTE" : "PacketId" }
569 | ]
570 | },
571 | "D2GS_QUEST_SPECIAL" : {
572 | "PacketId" : "0x50",
573 | "Description" : "",
574 | "Size" : 15,
575 | "Structure" : [
576 | { "BYTE" : "PacketId" },
577 | { "short" : "nMessageType" },
578 | { "short" : "nArg1" },
579 | { "short" : "nArg2" },
580 | { "short" : "nArg3" },
581 | { "short" : "nArg4" },
582 | { "short" : "nArg5" },
583 | { "short" : "nArg6" }
584 | ]
585 | },
586 | "D2GS_WORLDOBJECT" : {
587 | "PacketId" : "0x51",
588 | "Description" : "",
589 | "Size" : 14,
590 | "Structure" : [
591 | { "BYTE" : "PacketId" },
592 | { "BYTE" : "nObjectType" },
593 | { "int" : "nObjectGUID" },
594 | { "short" : "nClassID" },
595 | { "short" : "nObjectX" },
596 | { "short" : "nObjectY" },
597 | { "BYTE" : "nState" },
598 | { "BYTE" : "nInteraction" }
599 | ]
600 | },
601 | "D2GS_PLAYERQUESTLOG" : {
602 | "PacketId" : "0x52",
603 | "Description" : "",
604 | "Size" : 42,
605 | "Structure" : [
606 | { "BYTE" : "PacketId" },
607 | { "BYTE" : "aQuestBitStream[41]" }
608 | ]
609 | },
610 | "D2GS_DARKNESS" : {
611 | "PacketId" : "0x53",
612 | "Description" : "",
613 | "Size" : 10,
614 | "Structure" : [
615 | { "BYTE" : "PacketId" },
616 | { "int" : "nAct" },
617 | { "int" : "nAngle" },
618 | { "BYTE" : "bDarknessOnOff" }
619 | ]
620 | },
621 | "D2GS_NPC_ENCHANTS" : {
622 | "PacketId" : "0x57",
623 | "Description" : "",
624 | "Size" : 14,
625 | "Structure" : [
626 | { "BYTE" : "PacketId" },
627 | { "int" : "nMonsterGUID" },
628 | { "BYTE" : "nMonsterType" },
629 | { "short" : "nMonsterNameIDX" },
630 | { "BYTE" : "aEnchant[3]" },
631 | { "BYTE" : "Filler" },
632 | { "short" : "nMonsterIsChampion" }
633 | ]
634 | },
635 | "D2GS_OPENUI" : {
636 | "PacketId" : "0x58",
637 | "Description" : "",
638 | "Size" : 7,
639 | "Structure" : [
640 | { "BYTE" : "PacketId" },
641 | { "int" : "nUnitGUID" },
642 | { "BYTE" : "nUIType" },
643 | { "BYTE" : "bBool" }
644 | ]
645 | },
646 | "D2GS_ASSIGNPLAYER" : {
647 | "PacketId" : "0x59",
648 | "Description" : "",
649 | "Size" : 26,
650 | "Structure" : [
651 | { "BYTE" : "PacketId" },
652 | { "int" : "nUnitGUID" },
653 | { "BYTE" : "nUnitType" },
654 | { "char" : "szUnitName[16]" },
655 | { "short" : "nUnitX" },
656 | { "short" : "nUnitY" }
657 | ]
658 | },
659 | "D2GS_EVENTMESSAGES" : {
660 | "PacketId" : "0x5A",
661 | "Description" : "",
662 | "Size" : 40,
663 | "Structure" : [
664 | { "BYTE" : "PacketId" },
665 | { "BYTE" : "nMessageType" },
666 | { "BYTE" : "nColor" },
667 | { "int" : "nArg" },
668 | { "BYTE" : "nArgTypes" },
669 | { "char" : "szName1[16]" },
670 | { "char" : "szName2[16]" }
671 | ]
672 | },
673 | "D2GS_PLAYER_JOIN" : {
674 | "PacketId" : "0x5B",
675 | "Description" : "",
676 | "Size" : -1,
677 | "Structure" : [
678 | { "BYTE" : "PacketId" },
679 | { "short" : "nPacketLength" },
680 | { "int" : "nPlayerGUID" },
681 | { "BYTE" : "nCharType" },
682 | { "char" : "szPlayerName[16]" },
683 | { "short" : "nPlayerLevel" },
684 | { "short" : "nPartyId" },
685 | { "short" : "nUnused" },
686 | { "short" : "nUnk1" },
687 | { "short" : "nUnk2" },
688 | { "std::string" : "szUnk1" },
689 | { "std::string" : "szUnk2" }
690 | ]
691 | },
692 | "D2GS_PLAYER_LEAVE" : {
693 | "PacketId" : "0x5C",
694 | "Description" : "",
695 | "Size" : 5,
696 | "Structure" : [
697 | { "BYTE" : "PacketId" },
698 | { "int" : "nPlayerGUID" }
699 | ]
700 | },
701 | "D2GS_QUESTSTATE" : {
702 | "PacketId" : "0x5D",
703 | "Description" : "",
704 | "Size" : 6,
705 | "Structure" : [
706 | { "BYTE" : "PacketId" },
707 | { "BYTE" : "nQuestID" },
708 | { "BYTE" : "nAlertFlags" },
709 | { "BYTE" : "nFilterStatus" },
710 | { "short" : "nExtra" }
711 | ]
712 | },
713 | "D2GS_GAME_QUESTS_AVAILABILITY" : {
714 | "PacketId" : "0x5E",
715 | "Description" : "",
716 | "Size" : 38,
717 | "Structure" : [
718 | { "BYTE" : "PacketId" },
719 | { "BYTE" : "aQuestBitStream[37]" }
720 | ]
721 | },
722 | "D2GS_PORTAL_FLAGS" : {
723 | "PacketId" : "0x5F",
724 | "Description" : "",
725 | "Size" : 5,
726 | "Structure" : [
727 | { "BYTE" : "PacketId" },
728 | { "int" : "nPortalFlags" }
729 | ]
730 | },
731 | "D2GS_TOWNPORTALSTATE" : {
732 | "PacketId" : "0x60",
733 | "Description" : "",
734 | "Size" : 7,
735 | "Structure" : [
736 | { "BYTE" : "PacketId" },
737 | { "BYTE" : "nState" },
738 | { "BYTE" : "nAreaID" },
739 | { "int" : "nUnitGUID" }
740 | ]
741 | },
742 | "D2GS_CANGOTOACT" : {
743 | "PacketId" : "0x61",
744 | "Description" : "",
745 | "Size" : 2,
746 | "Structure" : [
747 | { "BYTE" : "PacketId" },
748 | { "BYTE" : "nAct" }
749 | ]
750 | },
751 | "D2GS_MAKEUNITTARGETABLE" : {
752 | "PacketId" : "0x62",
753 | "Description" : "",
754 | "Size" : 7,
755 | "Structure" : [
756 | { "BYTE" : "PacketId" },
757 | { "BYTE" : "nUnitType" },
758 | { "int" : "nUnitGUID" },
759 | { "BYTE" : "Unused" }
760 | ]
761 | },
762 | "D2GS_WAYPOINTMENU" : {
763 | "PacketId" : "0x63",
764 | "Description" : "",
765 | "Size" : 17,
766 | "Structure" : [
767 | { "BYTE" : "PacketId" },
768 | { "short" : "Unknown102" },
769 | { "BYTE" : "aWaypointBitStream[8]" },
770 | { "int" : "Padding" }
771 | ]
772 | },
773 | "D2GS_WAYPOINTCURRENT" : {
774 | "PacketId" : "0x64",
775 | "Description" : "",
776 | "Size" : 4,
777 | "Structure" : [
778 | { "BYTE" : "PacketId" },
779 | { "short" : "Unknown1" },
780 | { "BYTE" : "Unknown2" }
781 | ]
782 | },
783 | "D2GS_PLAYERKILLCOUNT" : {
784 | "PacketId" : "0x65",
785 | "Description" : "",
786 | "Size" : 7,
787 | "Structure" : [
788 | { "BYTE" : "PacketId" },
789 | { "int" : "nPlayerGUID" },
790 | { "short" : "nCount" }
791 | ]
792 | },
793 | "D2GS_NPC_MOVE" : {
794 | "PacketId" : "0x67",
795 | "Description" : "",
796 | "Size" : 16,
797 | "Structure" : [
798 | { "BYTE" : "PacketId" },
799 | { "int" : "nUnitGUID" },
800 | { "BYTE" : "nMoveType" },
801 | { "short" : "nTargetX" },
802 | { "short" : "nTargetY" },
803 | { "BYTE" : "Unknown" },
804 | { "BYTE" : "Unknown1" },
805 | { "BYTE" : "Unknown2" },
806 | { "short" : "nVelocity" },
807 | { "BYTE" : "Unknown4" }
808 | ]
809 | },
810 | "D2GS_NPC_MOVETOENTITY" : {
811 | "PacketId" : "0x68",
812 | "Description" : "",
813 | "Size" : 21,
814 | "Structure" : [
815 | { "BYTE" : "PacketId" },
816 | { "int" : "nUnitGUID" },
817 | { "BYTE" : "nMoveType" },
818 | { "short" : "nTargetX" },
819 | { "short" : "nTargetY" },
820 | { "BYTE" : "nTargetType" },
821 | { "int" : "nTargetGUID" },
822 | { "BYTE" : "Unknown1" },
823 | { "BYTE" : "Unknown2" },
824 | { "BYTE" : "Unknown3" },
825 | { "short" : "NotUsed" },
826 | { "BYTE" : "Unknown4" }
827 | ]
828 | },
829 | "D2GS_NPC_STATE" : {
830 | "PacketId" : "0x69",
831 | "Description" : "",
832 | "Size" : 12,
833 | "Structure" : [
834 | { "BYTE" : "PacketId" },
835 | { "int" : "nUnitGUID" },
836 | { "BYTE" : "nState" },
837 | { "short" : "nUnitX" },
838 | { "short" : "nUnitY" },
839 | { "BYTE" : "nUnitLife" },
840 | { "BYTE" : "nHitClass" }
841 | ]
842 | },
843 | "D2GS_NPC_UNKNOWN_0x6A" : {
844 | "PacketId" : "0x6A",
845 | "Description" : "",
846 | "Size" : 12,
847 | "Structure" : [
848 | { "BYTE" : "PacketId" },
849 | { "int" : "nUnitGUID" },
850 | { "BYTE" : "nState" },
851 | { "BYTE" : "Unknown1" },
852 | { "int" : "Unknown2" },
853 | { "BYTE" : "Unknown3" }
854 | ]
855 | },
856 | "D2GS_NPC_ACTION" : {
857 | "PacketId" : "0x6B",
858 | "Description" : "",
859 | "Size" : 16,
860 | "Structure" : [
861 | { "BYTE" : "PacketId" },
862 | { "int" : "nUnitGUID" },
863 | { "BYTE" : "nAction" },
864 | { "BYTE" : "Padding[6]" },
865 | { "short" : "nUnitX" },
866 | { "short" : "nUnitY" }
867 | ]
868 | },
869 | "D2GS_NPC_ATTACK" : {
870 | "PacketId" : "0x6C",
871 | "Description" : "",
872 | "Size" : 16,
873 | "Structure" : [
874 | { "BYTE" : "PacketId" },
875 | { "int" : "nUnitGUID" },
876 | { "short" : "nAttackType" },
877 | { "int" : "nTargetGUID" },
878 | { "BYTE" : "nTargetType" },
879 | { "short" : "nTargetX" },
880 | { "short" : "nTargetY" }
881 | ]
882 | },
883 | "D2GS_NPC_STOP" : {
884 | "PacketId" : "0x6D",
885 | "Description" : "",
886 | "Size" : 10,
887 | "Structure" : [
888 | { "BYTE" : "PacketId" },
889 | { "int" : "nUnitGUID" },
890 | { "short" : "nUnitX" },
891 | { "short" : "nUnitY" },
892 | { "BYTE" : "nUnitLife" }
893 | ]
894 | },
895 | "D2GS_MISSILEDATA" : {
896 | "PacketId" : "0x73",
897 | "Description" : "nCurrentFrame might be wrong",
898 | "Size" : 32,
899 | "Structure" : [
900 | { "BYTE" : "PacketId" },
901 | { "int" : "Unused" },
902 | { "short" : "nMissileClassId" },
903 | { "int" : "nMissileX" },
904 | { "int" : "nMissileY" },
905 | { "int" : "nTargetX" },
906 | { "int" : "nTargetY" },
907 | { "short" : "nCurrentFrame" },
908 | { "BYTE" : "nOwnerType" },
909 | { "int" : "nOwnerGUID" },
910 | { "BYTE" : "nSkillLevel" },
911 | { "BYTE" : "nPierceIdxValue" }
912 | ]
913 | },
914 | "D2GS_PLAYERCORPSEASSIGN" : {
915 | "PacketId" : "0x74",
916 | "Description" : "",
917 | "Size" : 10,
918 | "Structure" : [
919 | { "BYTE" : "PacketId" },
920 | { "BYTE" : "bAssign" },
921 | { "int" : "nOwnerGUID" },
922 | { "int" : "nCorpseGUID" }
923 | ]
924 | },
925 | "D2GS_PLAYERPARTYINFO" : {
926 | "PacketId" : "0x75",
927 | "Description" : "",
928 | "Size" : 13,
929 | "Structure" : [
930 | { "BYTE" : "PacketId" },
931 | { "int" : "nUnitGUID" },
932 | { "short" : "nPartyId" },
933 | { "short" : "nCharLevel" },
934 | { "short" : "nRelationship" },
935 | { "short" : "nInParty" }
936 | ]
937 | },
938 | "D2GS_PLAYERINPROXIMITY" : {
939 | "PacketId" : "0x76",
940 | "Description" : "",
941 | "Size" : 6,
942 | "Structure" : [
943 | { "BYTE" : "PacketId" },
944 | { "BYTE" : "nUnitType" },
945 | { "int" : "nUnitGUID" }
946 | ]
947 | },
948 | "D2GS_TRADEACTION" : {
949 | "PacketId" : "0x77",
950 | "Description" : "",
951 | "Size" : 2,
952 | "Structure" : [
953 | { "BYTE" : "PacketId" },
954 | { "BYTE" : "nRequestType" }
955 | ]
956 | },
957 | "D2GS_TRADEACCEPTED" : {
958 | "PacketId" : "0x78",
959 | "Description" : "",
960 | "Size" : 21,
961 | "Structure" : [
962 | { "BYTE" : "PacketId" },
963 | { "char" : "szCharName[16]" },
964 | { "int" : "nUnitGUID" }
965 | ]
966 | },
967 | "D2GS_GOLDINTRADE" : {
968 | "PacketId" : "0x79",
969 | "Description" : "",
970 | "Size" : 6,
971 | "Structure" : [
972 | { "BYTE" : "PacketId" },
973 | { "BYTE" : "nOwnerGUID" },
974 | { "int" : "nAmount" }
975 | ]
976 | },
977 | "D2GS_SUMMONLOG" : {
978 | "PacketId" : "0x7A",
979 | "Description" : "",
980 | "Size" : 13,
981 | "Structure" : [
982 | { "BYTE" : "PacketId" },
983 | { "BYTE" : "nAction" },
984 | { "BYTE" : "nSkillID" },
985 | { "short" : "nSummonType" },
986 | { "int" : "nPlayerGUID" },
987 | { "int" : "nSummonGUID" }
988 | ]
989 | },
990 | "D2GS_ASSIGNHOTKEY" : {
991 | "PacketId" : "0x7B",
992 | "Description" : "",
993 | "Size" : 8,
994 | "Structure" : [
995 | { "BYTE" : "PacketId" },
996 | { "BYTE" : "nSlot" },
997 | { "BYTE" : "nSkillID" },
998 | { "BYTE" : "nHand" },
999 | { "int" : "nItemGUID" }
1000 | ]
1001 | },
1002 | "D2GS_USESCROLL" : {
1003 | "PacketId" : "0x7C",
1004 | "Description" : "",
1005 | "Size" : 6,
1006 | "Structure" : [
1007 | { "BYTE" : "PacketId" },
1008 | { "BYTE" : "nScroolType" },
1009 | { "int" : "nScroolGUID" }
1010 | ]
1011 | },
1012 | "D2GS_SETITEMFLAGS" : {
1013 | "PacketId" : "0x7D",
1014 | "Description" : "",
1015 | "Size" : 18,
1016 | "Structure" : [
1017 | { "BYTE" : "PacketId" },
1018 | { "BYTE" : "nUnitType" },
1019 | { "int" : "nUnitGUID" },
1020 | { "int" : "nItemGUID" },
1021 | { "int" : "AndValue" },
1022 | { "int" : "nFlagsAfterAnd" }
1023 | ]
1024 | },
1025 | "D2GS_CMNCOF" : {
1026 | "PacketId" : "0x7E",
1027 | "Description" : "",
1028 | "Size" : 5,
1029 | "Structure" : [
1030 | { "BYTE" : "PacketId" },
1031 | { "BYTE" : "Unused[4]" }
1032 | ]
1033 | },
1034 | "D2GS_ALLYPARTYINFO" : {
1035 | "PacketId" : "0x7F",
1036 | "Description" : "",
1037 | "Size" : 10,
1038 | "Structure" : [
1039 | { "BYTE" : "PacketId" },
1040 | { "BYTE" : "nUnitType" },
1041 | { "short" : "nUnitLife" },
1042 | { "int" : "nUnitGUID" },
1043 | { "short" : "nAreaID" }
1044 | ]
1045 | },
1046 | "D2GS_ASSIGNMERC" : {
1047 | "PacketId" : "0x81",
1048 | "Description" : "",
1049 | "Size" : 20,
1050 | "Structure" : [
1051 | { "BYTE" : "PacketId" },
1052 | { "BYTE" : "nSkillId" },
1053 | { "short" : "nSummonType" },
1054 | { "int" : "nOwnerGUID" },
1055 | { "int" : "nMercGUID" },
1056 | { "int" : "nSeed2" },
1057 | { "int" : "nInitSeed" }
1058 | ]
1059 | },
1060 | "D2GS_PORTALOWNERSHIP" : {
1061 | "PacketId" : "0x82",
1062 | "Description" : "Seems like nPortalGUID1 and nPortalGUID2 contains portals GUID for both ends of each portal.",
1063 | "Size" : 29,
1064 | "Structure" : [
1065 | { "BYTE" : "PacketId" },
1066 | { "int" : "nOwnerGUID" },
1067 | { "char" : "szOwnerName[16]" },
1068 | { "int" : "nPortalGUID1" },
1069 | { "int" : "nPortalGUID2" }
1070 | ]
1071 | },
1072 | "D2GS_UNIQUEEVENTS" : {
1073 | "PacketId" : "0x89",
1074 | "Description" : "",
1075 | "Size" : 2,
1076 | "Structure" : [
1077 | { "BYTE" : "PacketId" },
1078 | { "BYTE" : "nEventType" }
1079 | ]
1080 | },
1081 | "D2GS_NPC_WANTSINTERACT" : {
1082 | "PacketId" : "0x8A",
1083 | "Description" : "",
1084 | "Size" : 6,
1085 | "Structure" : [
1086 | { "BYTE" : "PacketId" },
1087 | { "BYTE" : "nUnitType" },
1088 | { "int" : "nUnitGUID" }
1089 | ]
1090 | },
1091 | "D2GS_PLAYERRELATIONSHIP" : {
1092 | "PacketId" : "0x8B",
1093 | "Description" : "",
1094 | "Size" : 6,
1095 | "Structure" : [
1096 | { "BYTE" : "PacketId" },
1097 | { "int" : "nUnitGUID" },
1098 | { "BYTE" : "nInParty" }
1099 | ]
1100 | },
1101 | "D2GS_RELATIONSHIPUPDATE" : {
1102 | "PacketId" : "0x8C",
1103 | "Description" : "",
1104 | "Size" : 11,
1105 | "Structure" : [
1106 | { "BYTE" : "PacketId" },
1107 | { "int" : "nUnitAGUID" },
1108 | { "int" : "nUnitBGUID" },
1109 | { "short" : "nRelation" }
1110 | ]
1111 | },
1112 | "D2GS_ASSIGNPLAYERTOPARTY" : {
1113 | "PacketId" : "0x8D",
1114 | "Description" : "",
1115 | "Size" : 7,
1116 | "Structure" : [
1117 | { "BYTE" : "PacketId" },
1118 | { "int" : "nPlayerGUID" },
1119 | { "short" : "nPartyId" }
1120 | ]
1121 | },
1122 | "D2GS_CORPSEASSIGN" : {
1123 | "PacketId" : "0x8E",
1124 | "Description" : "",
1125 | "Size" : 10,
1126 | "Structure" : [
1127 | { "BYTE" : "PacketId" },
1128 | { "BYTE" : "bAssign" },
1129 | { "int" : "nOwnerGUID" },
1130 | { "int" : "nCorpseGUID" }
1131 | ]
1132 | },
1133 | "D2GS_PONG" : {
1134 | "PacketId" : "0x8F",
1135 | "Description" : "",
1136 | "Size" : 33,
1137 | "Structure" : [
1138 | { "BYTE" : "PacketId" },
1139 | { "int" : "nPong1" },
1140 | { "int" : "nPong2" },
1141 | { "int" : "nPong3" },
1142 | { "int" : "nTickCount" },
1143 | { "int" : "nPong5" },
1144 | { "int" : "nPong6WardenRequest" },
1145 | { "int" : "nPong7Warden" },
1146 | { "int" : "nPong8Warden" }
1147 | ]
1148 | },
1149 | "D2GS_PARTYAUTOMAPINFO" : {
1150 | "PacketId" : "0x90",
1151 | "Description" : "",
1152 | "Size" : 13,
1153 | "Structure" : [
1154 | { "BYTE" : "PacketId" },
1155 | { "int" : "nPlayerGUID" },
1156 | { "int" : "nPlayerX" },
1157 | { "int" : "nPlayerY" }
1158 | ]
1159 | },
1160 | "D2GS_NPCGOSSIP" : {
1161 | "PacketId" : "0x91",
1162 | "Description" : "Add intro (! above head) to NPC",
1163 | "Size" : 26,
1164 | "Structure" : [
1165 | { "BYTE" : "PacketId" },
1166 | { "BYTE" : "nAct" },
1167 | { "WORD" : "nNpcID[12]" }
1168 | ]
1169 | },
1170 | "D2GS_REMOVEITEMSDISPLAY" : {
1171 | "PacketId" : "0x92",
1172 | "Description" : "",
1173 | "Size" : 6,
1174 | "Structure" : [
1175 | { "BYTE" : "PacketId" },
1176 | { "BYTE" : "nUnitType" },
1177 | { "int" : "nUnitGUID" }
1178 | ]
1179 | },
1180 | "D2GS_UNKNOWN_UNITSKILL_0x93" : {
1181 | "PacketId" : "0x93",
1182 | "Description" : "",
1183 | "Size" : 8,
1184 | "Structure" : [
1185 | { "BYTE" : "PacketId" },
1186 | { "int" : "nPlayerGUID" },
1187 | { "BYTE" : "Unknown1" },
1188 | { "BYTE" : "nType" },
1189 | { "BYTE" : "nSkillPage" }
1190 | ]
1191 | },
1192 | "D2GS_SKILLSLIST" : {
1193 | "PacketId" : "0x94",
1194 | "Description" : "",
1195 | "Size" : -1,
1196 | "Structure" : [
1197 | { "BYTE" : "PacketId" },
1198 | { "BYTE" : "nSkillsCount" },
1199 | { "int" : "nPlayerGUID" },
1200 | { "sSkills[nSkillsCount]" : [
1201 | { "short" : "nSkillId" },
1202 | { "BYTE" : "nLevel" }
1203 | ]
1204 | }
1205 | ]
1206 | },
1207 | "D2GS_HPMPUPDATE" : {
1208 | "PacketId" : "0x95",
1209 | "Description" : "BitStream data contains:\n HP (15bits) \n MP (15bits) \n Stamina (15bits) \n X (16bits) \n Y (16bits) \n dX (8bits) \n dY (8bits)",
1210 | "Size" : 13,
1211 | "Structure" : [
1212 | { "BYTE" : "PacketId" },
1213 | { "BYTE" : "aBitStream[12]" }
1214 | ]
1215 | },
1216 | "D2GS_WALKVERIFY" : {
1217 | "PacketId" : "0x96",
1218 | "Description" : "BitStream data contains:\n Stamina (15bits) \n X (16bits) \n Y (16bits) \n dX (8bits) \n dY (8bits)",
1219 | "Size" : 9,
1220 | "Structure" : [
1221 | { "BYTE" : "PacketId" },
1222 | { "BYTE" : "aBitStream[8]" }
1223 | ]
1224 | },
1225 | "D2GS_WEAPONSWITCH" : {
1226 | "PacketId" : "0x97",
1227 | "Description" : "",
1228 | "Size" : 1,
1229 | "Structure" : [
1230 | { "BYTE" : "PacketId" }
1231 | ]
1232 | },
1233 | "D2GS_EVILHUT" : {
1234 | "PacketId" : "0x98",
1235 | "Description" : "",
1236 | "Size" : 7,
1237 | "Structure" : [
1238 | { "BYTE" : "PacketId" },
1239 | { "int" : "nUnitGUID" },
1240 | { "short" : "nValue" }
1241 | ]
1242 | },
1243 | "D2GS_UNITSKILLCAST_TARGET" : {
1244 | "PacketId" : "0x99",
1245 | "Description" : "",
1246 | "Size" : 16,
1247 | "Structure" : [
1248 | { "BYTE" : "PacketId" },
1249 | { "BYTE" : "nAttackerType" },
1250 | { "int" : "nAttackerGUID" },
1251 | { "short" : "nSkillID" },
1252 | { "BYTE" : "nSkillLevel" },
1253 | { "BYTE" : "nTargetType" },
1254 | { "int" : "nTargetGUID" },
1255 | { "short" : "Zero" }
1256 | ]
1257 | },
1258 | "D2GS_UNITSKILLCAST_XY" : {
1259 | "PacketId" : "0x9A",
1260 | "Description" : "",
1261 | "Size" : 17,
1262 | "Structure" : [
1263 | { "BYTE" : "PacketId" },
1264 | { "BYTE" : "nAttackerType" },
1265 | { "int" : "nAttackerGUID" },
1266 | { "short" : "nSkillId" },
1267 | { "short" : "Padding" },
1268 | { "BYTE" : "nSkillLevel" },
1269 | { "short" : "nTargetX" },
1270 | { "short" : "nTargetY" },
1271 | { "short" : "Zero" }
1272 | ]
1273 | },
1274 | "D2GS_MERCREVIVECOST" : {
1275 | "PacketId" : "0x9B",
1276 | "Description" : "",
1277 | "Size" : 7,
1278 | "Structure": [
1279 | { "BYTE": "PacketId" },
1280 | { "short": "nMercNameId" },
1281 | { "short": "nReviveCost" },
1282 | { "short": "wPad" }
1283 | ]
1284 | },
1285 | "D2GS_ITEM_WORLD" : {
1286 | "PacketId" : "0x9C",
1287 | "Description" : "",
1288 | "Size" : -1,
1289 | "Structure" : [
1290 | { "BYTE" : "PacketId" },
1291 | { "BYTE" : "nAction" },
1292 | { "BYTE" : "nFullPacketSize" },
1293 | { "BYTE" : "nCategory" },
1294 | { "int" : "nItemGUID" },
1295 | { "BYTE" : "BitStream[nFullPacketSize - 8]" }
1296 | ]
1297 | },
1298 | "D2GS_ITEM_OWNED" : {
1299 | "PacketId" : "0x9D",
1300 | "Description" : "",
1301 | "Size" : -1,
1302 | "Structure" : [
1303 | { "BYTE" : "PacketId" },
1304 | { "BYTE" : "nAction" },
1305 | { "BYTE" : "nFullPacketSize" },
1306 | { "BYTE" : "nCategory" },
1307 | { "int" : "nItemGUID" },
1308 | { "BYTE" : "nOwnerType" },
1309 | { "int" : "nOwnerGUID" },
1310 | { "BYTE" : "BitStream[nFullPacketSize - 13]" }
1311 | ]
1312 | },
1313 | "D2GS_MERCATTRIBUTE_BYTE" : {
1314 | "PacketId" : "0x9E",
1315 | "Description" : "",
1316 | "Size" : 7,
1317 | "Structure" : [
1318 | { "BYTE" : "PacketId" },
1319 | { "BYTE" : "nStatID" },
1320 | { "int" : "nMercGUID" },
1321 | { "BYTE" : "nValue" }
1322 | ]
1323 | },
1324 | "D2GS_MERCATTRIBUTE_WORD" : {
1325 | "PacketId" : "0x9F",
1326 | "Description" : "",
1327 | "Size" : 8,
1328 | "Structure" : [
1329 | { "BYTE" : "PacketId" },
1330 | { "BYTE" : "nStatID" },
1331 | { "int" : "nMercGUID" },
1332 | { "short" : "nValue" }
1333 | ]
1334 | },
1335 | "D2GS_MERCATTRIBUTE_DWORD" : {
1336 | "PacketId" : "0xA0",
1337 | "Description" : "",
1338 | "Size" : 10,
1339 | "Structure" : [
1340 | { "BYTE" : "PacketId" },
1341 | { "BYTE" : "nStatID" },
1342 | { "int" : "nMercGUID" },
1343 | { "int" : "nValue" }
1344 | ]
1345 | },
1346 | "D2GS_MERC_ADDEXP_BYTE" : {
1347 | "PacketId" : "0xA1",
1348 | "Description" : "",
1349 | "Size" : 7,
1350 | "Structure" : [
1351 | { "BYTE" : "PacketId" },
1352 | { "BYTE" : "nStatID" },
1353 | { "int" : "nMercGUID" },
1354 | { "BYTE" : "nValue" }
1355 | ]
1356 | },
1357 | "D2GS_MERC_ADDEXP_WORD" : {
1358 | "PacketId" : "0xA2",
1359 | "Description" : "",
1360 | "Size" : 8,
1361 | "Structure" : [
1362 | { "BYTE" : "PacketId" },
1363 | { "BYTE" : "nStatID" },
1364 | { "int" : "nMercGUID" },
1365 | { "short" : "nValue" }
1366 | ]
1367 | },
1368 | "D2GS_SKILL_AURA_STAT" : {
1369 | "PacketId" : "0xA3",
1370 | "Description" : "",
1371 | "Size" : 24,
1372 | "Structure" : [
1373 | { "BYTE" : "PacketId" },
1374 | { "BYTE" : "nAuraStatId" },
1375 | { "short" : "nSkillID" },
1376 | { "short" : "nSkillLevel" },
1377 | { "BYTE" : "nUnitType" },
1378 | { "int" : "nUnitGUID" },
1379 | { "BYTE" : "nTargetType" },
1380 | { "int" : "nTargetGUID" },
1381 | { "int" : "nTargetX" },
1382 | { "int" : "nTargetY" }
1383 | ]
1384 | },
1385 | "D2GS_BAALWAVES" : {
1386 | "PacketId" : "0xA4",
1387 | "Description" : "",
1388 | "Size" : 3,
1389 | "Structure" : [
1390 | { "BYTE" : "PacketId" },
1391 | { "short" : "nClassID" }
1392 | ]
1393 | },
1394 | "D2GS_STATE_SKILL_MOVE" : {
1395 | "PacketId" : "0xA5",
1396 | "Description" : "",
1397 | "Size" : 8,
1398 | "Structure" : [
1399 | { "BYTE" : "PacketId" },
1400 | { "BYTE" : "nUnitType" },
1401 | { "int" : "nUnitGUID" },
1402 | { "short" : "nSkillID" }
1403 | ]
1404 | },
1405 | "D2GS_RUNES_TXT" : {
1406 | "PacketId" : "0xA6",
1407 | "Description" : "This packet has it's handler in game code but it seems like it is never used.",
1408 | "Size" : -1,
1409 | "Structure" : [
1410 | { "BYTE" : "PacketId" },
1411 | { "BYTE" : "nMustBeZero" },
1412 | { "short" : "nFullPacketSize" },
1413 | { "short" : "nTxtRunesSize" },
1414 | { "BYTE" : "BitStream[nFullPacketSize - 6]" }
1415 | ]
1416 | },
1417 | "D2GS_DELAYSTATE" : {
1418 | "PacketId" : "0xA7",
1419 | "Description" : "",
1420 | "Size" : 7,
1421 | "Structure" : [
1422 | { "BYTE" : "PacketId" },
1423 | { "BYTE" : "nUnitType" },
1424 | { "int" : "nUnitGUID" },
1425 | { "BYTE" : "nStateID" }
1426 | ]
1427 | },
1428 | "D2GS_SETSTATE" : {
1429 | "PacketId" : "0xA8",
1430 | "Description" : "",
1431 | "Size" : -1,
1432 | "Structure" : [
1433 | { "BYTE" : "PacketId" },
1434 | { "BYTE" : "nUnitType" },
1435 | { "int" : "nUnitGUID" },
1436 | { "BYTE" : "nFullPacketSize" },
1437 | { "BYTE" : "State" },
1438 | { "BYTE" : "BitStream[nFullPacketSize - 8]" }
1439 | ]
1440 | },
1441 | "D2GS_ENDSTATE" : {
1442 | "PacketId" : "0xA9",
1443 | "Description" : "",
1444 | "Size" : 7,
1445 | "Structure" : [
1446 | { "BYTE" : "PacketId" },
1447 | { "BYTE" : "nUnitType" },
1448 | { "int" : "nUnitGUID" },
1449 | { "BYTE" : "nStateID" }
1450 | ]
1451 | },
1452 | "D2GS_MULTISTATES" : {
1453 | "PacketId" : "0xAA",
1454 | "Description" : "",
1455 | "Size" : -1,
1456 | "Structure" : [
1457 | { "BYTE" : "PacketId" },
1458 | { "BYTE" : "nUnitType" },
1459 | { "int" : "nUnitGUID" },
1460 | { "BYTE" : "nFullPacketSize" },
1461 | { "BYTE" : "BitStream[nFullPacketSize - 7]" }
1462 | ]
1463 | },
1464 | "D2GS_NPC_HEAL" : {
1465 | "PacketId" : "0xAB",
1466 | "Description" : "",
1467 | "Size" : 7,
1468 | "Structure" : [
1469 | { "BYTE" : "PacketId" },
1470 | { "BYTE" : "nUnitType" },
1471 | { "int" : "nUnitGUID" },
1472 | { "BYTE" : "nUnitLife" }
1473 | ]
1474 | },
1475 | "D2GS_MONSTERPACKET" : {
1476 | "PacketId" : "0xAC",
1477 | "Description" : "",
1478 | "Size" : -1,
1479 | "Structure" : [
1480 | { "BYTE" : "PacketId" },
1481 | { "int" : "nUnitGUID" },
1482 | { "short" : "nUnitClassID" },
1483 | { "short" : "nUnitX" },
1484 | { "short" : "nUnitY" },
1485 | { "BYTE" : "nHPPercent" },
1486 | { "BYTE" : "nFullPacketSize" },
1487 | { "BYTE" : "BitStream[nFullPacketSize - 13]" }
1488 | ]
1489 | },
1490 | "D2GS_MONSTERPACKET2" : {
1491 | "PacketId" : "0xAD",
1492 | "Description" : "",
1493 | "Size" : -1,
1494 | "Structure" : [
1495 | { "BYTE" : "PacketId" },
1496 | { "short" : "nUnitClassID" },
1497 | { "short" : "Unknown1" },
1498 | { "BYTE" : "Unknown2" },
1499 | { "int" : "nUnitGUID" },
1500 | { "short" : "nAnimation" },
1501 | { "BYTE" : "nHPPercent" }
1502 | ]
1503 | },
1504 | "D2GS_WARDEN" : {
1505 | "PacketId" : "0xAE",
1506 | "Description" : "",
1507 | "Size" : -1,
1508 | "Structure" : [
1509 | { "BYTE" : "PacketId" },
1510 | { "short" : "nStreamSize" },
1511 | { "BYTE" : "Stream[nStreamSize]" }
1512 | ]
1513 | },
1514 | "D2GS_STARTLOGON" : {
1515 | "PacketId" : "0xAF",
1516 | "Description" : "",
1517 | "Size" : -1,
1518 | "Structure" : [
1519 | { "BYTE" : "PacketId" },
1520 | { "BYTE" : "bUseCompression" }
1521 | ]
1522 | },
1523 | "D2GS_CONNECTIONTERMINATED" : {
1524 | "PacketId" : "0xB0",
1525 | "Description" : "",
1526 | "Size" : 1,
1527 | "Structure" : [
1528 | { "BYTE" : "PacketId" }
1529 | ]
1530 | },
1531 | "D2GS_GAMESINFO" : {
1532 | "PacketId" : "0xB2",
1533 | "Description" : "",
1534 | "Size" : 53,
1535 | "Structure" : [
1536 | { "BYTE" : "PacketId" },
1537 | { "char" : "szUnk1[16]" },
1538 | { "char" : "szUnk2[16]" },
1539 | { "char" : "szUnk3[16]" },
1540 | { "short" : "nClientsCount" },
1541 | { "short" : "nGameToken" }
1542 | ]
1543 | },
1544 | "D2GS_DOWNLOADSAVE" : {
1545 | "PacketId" : "0xB3",
1546 | "Description" : "",
1547 | "Size" : -1,
1548 | "Structure" : [
1549 | { "BYTE" : "PacketId" },
1550 | { "BYTE" : "nChunkSize" },
1551 | { "BYTE" : "bFirst" },
1552 | { "int" : "nFullSize" },
1553 | { "BYTE" : "Stream[nChunkSize]" }
1554 | ]
1555 | },
1556 | "D2GS_CONNECTIONREFUSED" : {
1557 | "PacketId" : "0xB4",
1558 | "Description" : "",
1559 | "Size" : 5,
1560 | "Structure" : [
1561 | { "BYTE" : "PacketId" },
1562 | { "int" : "nReason" }
1563 | ]
1564 | }
1565 | }
1566 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 |
4 | Vue.config.productionTip = false
5 |
6 | new Vue({
7 | render: h => h(App),
8 | }).$mount('#app')
9 |
--------------------------------------------------------------------------------
/src/styles/accessible-colors.scss:
--------------------------------------------------------------------------------
1 | // accessible-colors.scss - colors generated with accessibility-friendly color contrast
2 |
3 | // contrast ratio must be 4.5+ for AA accessibility
4 | // white and black have a contrast ratio of 21 together
5 |
6 | // light and dark colors have contrast ratio of 4.5+
7 | // extra light and dark colors have even higher contrast ratios
8 | // so hue and saturation is interchangable
9 |
10 | // hue: 0, saturation: 0%
11 | $color_0_0: #757575; // Contrast on white & black: 4.61 & 4.56
12 | $color_light_0_0: #c9c9c9;
13 | $color_dark_0_0: #545454; // Contrast against each other: 4.57
14 | $color_extra_light_0_0: #eeeeee; // Contrast against dark color: 6.53
15 |
16 | // hue: 0, saturation: 100%
17 | $color_0_100: #ec0000; // Contrast on white & black: 4.6 & 4.57
18 | $color_light_0_100: #ffb6b6;
19 | $color_dark_0_100: #ac0000; // Contrast against each other: 4.58
20 | $color_extra_light_0_100: #ffe9e9; // Contrast against dark color: 6.57
21 | // hue: 0, saturation: 80%
22 | $color_0_80: #e61d1d; // Contrast on white & black: 4.61 & 4.56
23 | $color_light_0_80: #f8b9b9;
24 | $color_dark_0_80: #a81212; // Contrast against each other: 4.58
25 | $color_extra_light_0_80: #fdeaea; // Contrast against dark color: 6.57
26 | // hue: 0, saturation: 60%
27 | $color_0_60: #d04343; // Contrast on white & black: 4.6 & 4.57
28 | $color_light_0_60: #efbdbd;
29 | $color_dark_0_60: #9d2727; // Contrast against each other: 4.61
30 | $color_extra_light_0_60: #faeaea; // Contrast against dark color: 6.55
31 | // hue: 0, saturation: 40%
32 | $color_0_40: #b75858; // Contrast on white & black: 4.62 & 4.55
33 | $color_light_0_40: #e5c1c1;
34 | $color_dark_0_40: #8a3b3b; // Contrast against each other: 4.6
35 | $color_extra_light_0_40: #f7ebeb; // Contrast against dark color: 6.51
36 | // hue: 0, saturation: 20%
37 | $color_0_20: #9a6868; // Contrast on white & black: 4.61 & 4.55
38 | $color_light_0_20: #d8c4c4;
39 | $color_dark_0_20: #6f4a4a; // Contrast against each other: 4.58
40 | $color_extra_light_0_20: #f3eded; // Contrast against dark color: 6.59
41 |
42 | // hue: 15, saturation: 100%
43 | $color_15_100: #db3700; // Contrast on white & black: 4.61 & 4.56
44 | $color_light_15_100: #ffb8a1;
45 | $color_dark_15_100: #9f2700; // Contrast against each other: 4.57
46 | $color_extra_light_15_100: #ffe9e2; // Contrast against dark color: 6.51
47 | // hue: 15, saturation: 80%
48 | $color_15_80: #d04517; // Contrast on white & black: 4.62 & 4.55
49 | $color_light_15_80: #f6bca9;
50 | $color_dark_15_80: #963210; // Contrast against each other: 4.6
51 | $color_extra_light_15_80: #fceae4; // Contrast against dark color: 6.53
52 | // hue: 15, saturation: 60%
53 | $color_15_60: #c05430; // Contrast on white & black: 4.61 & 4.55
54 | $color_light_15_60: #ecbfb0;
55 | $color_dark_15_60: #8a3c22; // Contrast against each other: 4.6
56 | $color_extra_light_15_60: #f9ebe6; // Contrast against dark color: 6.56
57 | // hue: 15, saturation: 40%
58 | $color_15_40: #ab6249; // Contrast on white & black: 4.59 & 4.57
59 | $color_light_15_40: #e1c3b8;
60 | $color_dark_15_40: #7a4634; // Contrast against each other: 4.61
61 | $color_extra_light_15_40: #f6ece9; // Contrast against dark color: 6.57
62 | // hue: 15, saturation: 20%
63 | $color_15_20: #916d61; // Contrast on white & black: 4.6 & 4.56
64 | $color_light_15_20: #d6c6c1;
65 | $color_dark_15_20: #684e45; // Contrast against each other: 4.6
66 | $color_extra_light_15_20: #f2edeb; // Contrast against dark color: 6.54
67 |
68 | // hue: 30, saturation: 100%
69 | $color_30_100: #b85c00; // Contrast on white & black: 4.6 & 4.57
70 | $color_light_30_100: #ffbb77;
71 | $color_dark_30_100: #844200; // Contrast against each other: 4.57
72 | $color_extra_light_30_100: #ffebd6; // Contrast against dark color: 6.56
73 | // hue: 30, saturation: 80%
74 | $color_30_80: #af6113; // Contrast on white & black: 4.62 & 4.54
75 | $color_light_30_80: #f3bf8c;
76 | $color_dark_30_80: #7e460e; // Contrast against each other: 4.56
77 | $color_extra_light_30_80: #fbebdb; // Contrast against dark color: 6.5
78 | // hue: 30, saturation: 60%
79 | $color_30_60: #a46729; // Contrast on white & black: 4.61 & 4.55
80 | $color_light_30_60: #e7c39e;
81 | $color_dark_30_60: #764a1d; // Contrast against each other: 4.59
82 | $color_extra_light_30_60: #f8ece1; // Contrast against dark color: 6.53
83 | // hue: 30, saturation: 40%
84 | $color_30_40: #976c41; // Contrast on white & black: 4.63 & 4.54
85 | $color_light_30_40: #dcc5ae;
86 | $color_dark_30_40: #6c4d2e; // Contrast against each other: 4.62
87 | $color_extra_light_30_40: #f4ede5; // Contrast against dark color: 6.61
88 | // hue: 30, saturation: 20%
89 | $color_30_20: #88715a; // Contrast on white & black: 4.61 & 4.56
90 | $color_light_30_20: #d2c7bc;
91 | $color_dark_30_20: #615141; // Contrast against each other: 4.58
92 | $color_extra_light_30_20: #f1edea; // Contrast against dark color: 6.53
93 |
94 | // hue: 45, saturation: 100%
95 | $color_45_100: #946f00; // Contrast on white & black: 4.63 & 4.53
96 | $color_light_45_100: #febf00;
97 | $color_dark_45_100: #6a5000; // Contrast against each other: 4.59
98 | $color_extra_light_45_100: #ffedb6; // Contrast against dark color: 6.54
99 | // hue: 45, saturation: 80%
100 | $color_45_80: #917110; // Contrast on white & black: 4.59 & 4.57
101 | $color_light_45_80: #ecc550;
102 | $color_dark_45_80: #68510b; // Contrast against each other: 4.57
103 | $color_extra_light_45_80: #faeeca; // Contrast against dark color: 6.55
104 | // hue: 45, saturation: 60%
105 | $color_45_60: #8c7223; // Contrast on white & black: 4.62 & 4.55
106 | $color_light_45_60: #dfc77f;
107 | $color_dark_45_60: #645219; // Contrast against each other: 4.57
108 | $color_extra_light_45_60: #f5eed7; // Contrast against dark color: 6.55
109 | // hue: 45, saturation: 40%
110 | $color_45_40: #87733a; // Contrast on white & black: 4.62 & 4.54
111 | $color_light_45_40: #d6c89f;
112 | $color_dark_45_40: #605229; // Contrast against each other: 4.61
113 | $color_extra_light_45_40: #f2eee1; // Contrast against dark color: 6.61
114 | // hue: 45, saturation: 20%
115 | $color_45_20: #7f7455; // Contrast on white & black: 4.63 & 4.53
116 | $color_light_45_20: #cfc9b7;
117 | $color_dark_45_20: #5b533c; // Contrast against each other: 4.62
118 | $color_extra_light_45_20: #f0eee8; // Contrast against dark color: 6.59
119 |
120 | // hue: 60, saturation: 100%
121 | $color_60_100: #797900; // Contrast on white & black: 4.62 & 4.55
122 | $color_light_60_100: #d0d000;
123 | $color_dark_60_100: #575700; // Contrast against each other: 4.59
124 | $color_extra_light_60_100: #f6f600; // Contrast against dark color: 6.54
125 | // hue: 60, saturation: 80%
126 | $color_60_80: #79790d; // Contrast on white & black: 4.61 & 4.55
127 | $color_light_60_80: #d0d018;
128 | $color_dark_60_80: #575709; // Contrast against each other: 4.59
129 | $color_extra_light_60_80: #f3f391; // Contrast against dark color: 6.51
130 | // hue: 60, saturation: 60%
131 | $color_60_60: #79791e; // Contrast on white & black: 4.6 & 4.57
132 | $color_light_60_60: #cfcf3e;
133 | $color_dark_60_60: #565615; // Contrast against each other: 4.62
134 | $color_extra_light_60_60: #f1f1c4; // Contrast against dark color: 6.62
135 | // hue: 60, saturation: 40%
136 | $color_60_40: #787834; // Contrast on white & black: 4.63 & 4.53
137 | $color_light_60_40: #cdcd89;
138 | $color_dark_60_40: #565625; // Contrast against each other: 4.61
139 | $color_extra_light_60_40: #efefda; // Contrast against dark color: 6.55
140 | // hue: 60, saturation: 20%
141 | $color_60_20: #77774f; // Contrast on white & black: 4.63 & 4.54
142 | $color_light_60_20: #cbcbb0;
143 | $color_dark_60_20: #555539; // Contrast against each other: 4.63
144 | $color_extra_light_60_20: #eeeee6; // Contrast against dark color: 6.56
145 |
146 | // hue: 75, saturation: 100%
147 | $color_75_100: #607f00; // Contrast on white & black: 4.63 & 4.53
148 | $color_light_75_100: #a4db00;
149 | $color_dark_75_100: #445b00; // Contrast against each other: 4.64
150 | $color_extra_light_75_100: #cfff3c; // Contrast against dark color: 6.57
151 | // hue: 75, saturation: 80%
152 | $color_75_80: #637f0e; // Contrast on white & black: 4.59 & 4.57
153 | $color_light_75_80: #a9d919;
154 | $color_dark_75_80: #465b0a; // Contrast against each other: 4.57
155 | $color_extra_light_75_80: #e4f6ac; // Contrast against dark color: 6.55
156 | // hue: 75, saturation: 60%
157 | $color_75_60: #667e1f; // Contrast on white & black: 4.6 & 4.57
158 | $color_light_75_60: #b6d557;
159 | $color_dark_75_60: #495a16; // Contrast against each other: 4.59
160 | $color_extra_light_75_60: #e9f2cb; // Contrast against dark color: 6.54
161 | // hue: 75, saturation: 40%
162 | $color_75_40: #6a7c35; // Contrast on white & black: 4.62 & 4.55
163 | $color_light_75_40: #c0d091;
164 | $color_dark_75_40: #4c5926; // Contrast against each other: 4.58
165 | $color_extra_light_75_40: #ebf0dc; // Contrast against dark color: 6.52
166 | // hue: 75, saturation: 20%
167 | $color_75_20: #6f7951; // Contrast on white & black: 4.64 & 4.53
168 | $color_light_75_20: #c6ccb2;
169 | $color_dark_75_20: #50573a; // Contrast against each other: 4.59
170 | $color_extra_light_75_20: #edefe7; // Contrast against dark color: 6.55
171 |
172 | // hue: 90, saturation: 100%
173 | $color_90_100: #428400; // Contrast on white & black: 4.63 & 4.53
174 | $color_light_90_100: #72e300;
175 | $color_dark_90_100: #2f5f00; // Contrast against each other: 4.61
176 | $color_extra_light_90_100: #c4ff89; // Contrast against dark color: 6.53
177 | // hue: 90, saturation: 80%
178 | $color_90_80: #49830f; // Contrast on white & black: 4.63 & 4.54
179 | $color_light_90_80: #7de119;
180 | $color_dark_90_80: #345e0a; // Contrast against each other: 4.6
181 | $color_extra_light_90_80: #d9f8bb; // Contrast against dark color: 6.58
182 | // hue: 90, saturation: 60%
183 | $color_90_60: #518220; // Contrast on white & black: 4.6 & 4.56
184 | $color_light_90_60: #a0d967;
185 | $color_dark_90_60: #3a5d17; // Contrast against each other: 4.57
186 | $color_extra_light_90_60: #e2f4d1; // Contrast against dark color: 6.56
187 | // hue: 90, saturation: 40%
188 | $color_90_40: #5b7f37; // Contrast on white & black: 4.63 & 4.54
189 | $color_light_90_40: #b4d296;
190 | $color_dark_90_40: #415b27; // Contrast against each other: 4.58
191 | $color_extra_light_90_40: #e8f1de; // Contrast against dark color: 6.57
192 | // hue: 90, saturation: 20%
193 | $color_90_20: #677b52; // Contrast on white & black: 4.63 & 4.53
194 | $color_light_90_20: #c1cdb4;
195 | $color_dark_90_20: #49583b; // Contrast against each other: 4.62
196 | $color_extra_light_90_20: #ebefe7; // Contrast against dark color: 6.58
197 |
198 | // hue: 105, saturation: 100%
199 | $color_105_100: #228700; // Contrast on white & black: 4.63 & 4.53
200 | $color_light_105_100: #3ae700;
201 | $color_dark_105_100: #186100; // Contrast against each other: 4.59
202 | $color_extra_light_105_100: #bdffa7; // Contrast against dark color: 6.56
203 | // hue: 105, saturation: 80%
204 | $color_105_80: #2d860f; // Contrast on white & black: 4.64 & 4.53
205 | $color_light_105_80: #4de61b;
206 | $color_dark_105_80: #20600a; // Contrast against each other: 4.62
207 | $color_extra_light_105_80: #d2f9c5; // Contrast against dark color: 6.61
208 | // hue: 105, saturation: 60%
209 | $color_105_60: #3a8521; // Contrast on white & black: 4.61 & 4.56
210 | $color_light_105_60: #8ddc73;
211 | $color_dark_105_60: #295f17; // Contrast against each other: 4.6
212 | $color_extra_light_105_60: #ddf5d5; // Contrast against dark color: 6.6
213 | // hue: 105, saturation: 40%
214 | $color_105_40: #4a8238; // Contrast on white & black: 4.62 & 4.54
215 | $color_light_105_40: #aad59c;
216 | $color_dark_105_40: #355d28; // Contrast against each other: 4.62
217 | $color_extra_light_105_40: #e4f2e0; // Contrast against dark color: 6.58
218 | // hue: 105, saturation: 20%
219 | $color_105_20: #5e7d54; // Contrast on white & black: 4.63 & 4.54
220 | $color_light_105_20: #bcceb6;
221 | $color_dark_105_20: #435a3c; // Contrast against each other: 4.57
222 | $color_extra_light_105_20: #eaf0e8; // Contrast against dark color: 6.55
223 |
224 | // hue: 120, saturation: 100%
225 | $color_120_100: #008800; // Contrast on white & black: 4.64 & 4.52
226 | $color_light_120_100: #00e900;
227 | $color_dark_120_100: #006200; // Contrast against each other: 4.61
228 | $color_extra_light_120_100: #b7ffb7; // Contrast against dark color: 6.55
229 | // hue: 120, saturation: 80%
230 | $color_120_80: #0f880f; // Contrast on white & black: 4.62 & 4.55
231 | $color_light_120_80: #2be82b;
232 | $color_dark_120_80: #0a620a; // Contrast against each other: 4.59
233 | $color_extra_light_120_80: #ccfacc; // Contrast against dark color: 6.55
234 | // hue: 120, saturation: 60%
235 | $color_120_60: #228722; // Contrast on white & black: 4.61 & 4.56
236 | $color_light_120_60: #7cdf7c;
237 | $color_dark_120_60: #186118; // Contrast against each other: 4.6
238 | $color_extra_light_120_60: #d8f6d8; // Contrast against dark color: 6.55
239 | // hue: 120, saturation: 40%
240 | $color_120_40: #398439; // Contrast on white & black: 4.63 & 4.53
241 | $color_light_120_40: #a0d6a0;
242 | $color_dark_120_40: #285f28; // Contrast against each other: 4.58
243 | $color_extra_light_120_40: #e1f3e1; // Contrast against dark color: 6.57
244 | // hue: 120, saturation: 20%
245 | $color_120_20: #557f55; // Contrast on white & black: 4.61 & 4.55
246 | $color_light_120_20: #b7cfb7;
247 | $color_dark_120_20: #3c5b3c; // Contrast against each other: 4.58
248 | $color_extra_light_120_20: #e8f0e8; // Contrast against dark color: 6.56
249 |
250 | // hue: 135, saturation: 100%
251 | $color_135_100: #008822; // Contrast on white & black: 4.62 & 4.54
252 | $color_light_135_100: #00e83a;
253 | $color_dark_135_100: #006218; // Contrast against each other: 4.57
254 | $color_extra_light_135_100: #b2ffc6; // Contrast against dark color: 6.53
255 | // hue: 135, saturation: 80%
256 | $color_135_80: #0f872d; // Contrast on white & black: 4.64 & 4.52
257 | $color_light_135_80: #25e755;
258 | $color_dark_135_80: #0a6120; // Contrast against each other: 4.61
259 | $color_extra_light_135_80: #cafad6; // Contrast against dark color: 6.62
260 | // hue: 135, saturation: 60%
261 | $color_135_60: #22863b; // Contrast on white & black: 4.62 & 4.54
262 | $color_light_135_60: #79de92;
263 | $color_dark_135_60: #18602a; // Contrast against each other: 4.62
264 | $color_extra_light_135_60: #d7f5df; // Contrast against dark color: 6.56
265 | // hue: 135, saturation: 40%
266 | $color_135_40: #38844b; // Contrast on white & black: 4.59 & 4.57
267 | $color_light_135_40: #9ed6ac;
268 | $color_dark_135_40: #285e36; // Contrast against each other: 4.62
269 | $color_extra_light_135_40: #e1f2e5; // Contrast against dark color: 6.57
270 | // hue: 135, saturation: 20%
271 | $color_135_20: #547e5f; // Contrast on white & black: 4.64 & 4.53
272 | $color_light_135_20: #b7cfbd;
273 | $color_dark_135_20: #3c5a44; // Contrast against each other: 4.63
274 | $color_extra_light_135_20: #e8f0ea; // Contrast against dark color: 6.6
275 |
276 | // hue: 150, saturation: 100%
277 | $color_150_100: #008744; // Contrast on white & black: 4.62 & 4.55
278 | $color_light_150_100: #00e774;
279 | $color_dark_150_100: #006130; // Contrast against each other: 4.61
280 | $color_extra_light_150_100: #acffd6; // Contrast against dark color: 6.55
281 | // hue: 150, saturation: 80%
282 | $color_150_80: #0f864b; // Contrast on white & black: 4.63 & 4.53
283 | $color_light_150_80: #1ae680;
284 | $color_dark_150_80: #0a6035; // Contrast against each other: 4.63
285 | $color_extra_light_150_80: #c7f9e0; // Contrast against dark color: 6.6
286 | // hue: 150, saturation: 60%
287 | $color_150_60: #218553; // Contrast on white & black: 4.62 & 4.54
288 | $color_light_150_60: #75dda9;
289 | $color_dark_150_60: #175f3b; // Contrast against each other: 4.63
290 | $color_extra_light_150_60: #d6f5e6; // Contrast against dark color: 6.6
291 | // hue: 150, saturation: 40%
292 | $color_150_40: #38835d; // Contrast on white & black: 4.59 & 4.57
293 | $color_light_150_40: #9dd5b9;
294 | $color_dark_150_40: #285e43; // Contrast against each other: 4.56
295 | $color_extra_light_150_40: #e0f2e9; // Contrast against dark color: 6.51
296 | // hue: 150, saturation: 20%
297 | $color_150_20: #547e69; // Contrast on white & black: 4.6 & 4.57
298 | $color_light_150_20: #b6cfc2;
299 | $color_dark_150_20: #3c5a4b; // Contrast against each other: 4.61
300 | $color_extra_light_150_20: #e8f0ec; // Contrast against dark color: 6.57
301 |
302 | // hue: 165, saturation: 100%
303 | $color_165_100: #008564; // Contrast on white & black: 4.63 & 4.54
304 | $color_light_165_100: #00e4ab;
305 | $color_dark_165_100: #006048; // Contrast against each other: 4.58
306 | $color_extra_light_165_100: #a2ffe8; // Contrast against dark color: 6.51
307 | // hue: 165, saturation: 80%
308 | $color_165_80: #0f8567; // Contrast on white & black: 4.59 & 4.57
309 | $color_light_165_80: #1ae3b1;
310 | $color_dark_165_80: #0a5f4a; // Contrast against each other: 4.61
311 | $color_extra_light_165_80: #c4f9ec; // Contrast against dark color: 6.59
312 | // hue: 165, saturation: 60%
313 | $color_165_60: #21846b; // Contrast on white & black: 4.59 & 4.58
314 | $color_light_165_60: #70dcc1;
315 | $color_dark_165_60: #175e4d; // Contrast against each other: 4.63
316 | $color_extra_light_165_60: #d5f5ed; // Contrast against dark color: 6.6
317 | // hue: 165, saturation: 40%
318 | $color_165_40: #37816f; // Contrast on white & black: 4.63 & 4.53
319 | $color_light_165_40: #9bd4c6;
320 | $color_dark_165_40: #275d4f; // Contrast against each other: 4.57
321 | $color_extra_light_165_40: #e0f2ed; // Contrast against dark color: 6.54
322 | // hue: 165, saturation: 20%
323 | $color_165_20: #537d73; // Contrast on white & black: 4.62 & 4.55
324 | $color_light_165_20: #b6cec8;
325 | $color_dark_165_20: #3b5952; // Contrast against each other: 4.62
326 | $color_extra_light_165_20: #e8f0ee; // Contrast against dark color: 6.62
327 |
328 | // hue: 180, saturation: 100%
329 | $color_180_100: #008383; // Contrast on white & black: 4.59 & 4.57
330 | $color_light_180_100: #00dfdf;
331 | $color_dark_180_100: #005e5e; // Contrast against each other: 4.57
332 | $color_extra_light_180_100: #94ffff; // Contrast against dark color: 6.52
333 | // hue: 180, saturation: 80%
334 | $color_180_80: #0e8282; // Contrast on white & black: 4.63 & 4.53
335 | $color_light_180_80: #19dfdf;
336 | $color_dark_180_80: #0a5d5d; // Contrast against each other: 4.63
337 | $color_extra_light_180_80: #c0f8f8; // Contrast against dark color: 6.59
338 | // hue: 180, saturation: 60%
339 | $color_180_60: #208282; // Contrast on white & black: 4.59 & 4.58
340 | $color_light_180_60: #6adada;
341 | $color_dark_180_60: #175d5d; // Contrast against each other: 4.58
342 | $color_extra_light_180_60: #d3f4f4; // Contrast against dark color: 6.53
343 | // hue: 180, saturation: 40%
344 | $color_180_40: #378080; // Contrast on white & black: 4.6 & 4.56
345 | $color_light_180_40: #99d4d4;
346 | $color_dark_180_40: #275c5c; // Contrast against each other: 4.59
347 | $color_extra_light_180_40: #dff2f2; // Contrast against dark color: 6.54
348 | // hue: 180, saturation: 20%
349 | $color_180_20: #537c7c; // Contrast on white & black: 4.62 & 4.54
350 | $color_light_180_20: #b5cece;
351 | $color_dark_180_20: #3b5959; // Contrast against each other: 4.6
352 | $color_extra_light_180_20: #e8f0f0; // Contrast against dark color: 6.58
353 |
354 | // hue: 195, saturation: 100%
355 | $color_195_100: #007ea8; // Contrast on white & black: 4.62 & 4.55
356 | $color_light_195_100: #5ed7ff;
357 | $color_dark_195_100: #005b79; // Contrast against each other: 4.56
358 | $color_extra_light_195_100: #d1f4ff; // Contrast against dark color: 6.53
359 | // hue: 195, saturation: 80%
360 | $color_195_80: #127ea2; // Contrast on white & black: 4.63 & 4.53
361 | $color_light_195_80: #7fd5f1;
362 | $color_dark_195_80: #0d5b75; // Contrast against each other: 4.58
363 | $color_extra_light_195_80: #d8f2fb; // Contrast against dark color: 6.5
364 | // hue: 195, saturation: 60%
365 | $color_195_60: #277e9b; // Contrast on white & black: 4.62 & 4.54
366 | $color_light_195_60: #97d2e5;
367 | $color_dark_195_60: #1b5a6f; // Contrast against each other: 4.62
368 | $color_extra_light_195_60: #dff1f7; // Contrast against dark color: 6.6
369 | // hue: 195, saturation: 40%
370 | $color_195_40: #3e7d92; // Contrast on white & black: 4.61 & 4.55
371 | $color_light_195_40: #abcfdb;
372 | $color_dark_195_40: #2c5968; // Contrast against each other: 4.63
373 | $color_extra_light_195_40: #e4f0f4; // Contrast against dark color: 6.6
374 | // hue: 195, saturation: 20%
375 | $color_195_20: #597a85; // Contrast on white & black: 4.62 & 4.55
376 | $color_light_195_20: #bbccd2;
377 | $color_dark_195_20: #3f575f; // Contrast against each other: 4.63
378 | $color_extra_light_195_20: #e9eff1; // Contrast against dark color: 6.6
379 |
380 | // hue: 210, saturation: 100%
381 | $color_210_100: #0072e5; // Contrast on white & black: 4.63 & 4.54
382 | $color_light_210_100: #9cceff;
383 | $color_dark_210_100: #0052a5; // Contrast against each other: 4.61
384 | $color_extra_light_210_100: #e0f0ff; // Contrast against dark color: 6.57
385 | // hue: 210, saturation: 80%
386 | $color_210_80: #1775d3; // Contrast on white & black: 4.64 & 4.52
387 | $color_light_210_80: #a5cdf5;
388 | $color_dark_210_80: #105498; // Contrast against each other: 4.61
389 | $color_extra_light_210_80: #e3f0fc; // Contrast against dark color: 6.61
390 | // hue: 210, saturation: 60%
391 | $color_210_60: #3078bf; // Contrast on white & black: 4.6 & 4.56
392 | $color_light_210_60: #aecceb;
393 | $color_dark_210_60: #225689; // Contrast against each other: 4.58
394 | $color_extra_light_210_60: #e5eff9; // Contrast against dark color: 6.54
395 | // hue: 210, saturation: 40%
396 | $color_210_40: #4878a8; // Contrast on white & black: 4.64 & 4.53
397 | $color_light_210_40: #b7cbe0;
398 | $color_dark_210_40: #335679; // Contrast against each other: 4.6
399 | $color_extra_light_210_40: #e8eff5; // Contrast against dark color: 6.59
400 | // hue: 210, saturation: 20%
401 | $color_210_20: #60778f; // Contrast on white & black: 4.63 & 4.53
402 | $color_light_210_20: #c0cad5;
403 | $color_dark_210_20: #445567; // Contrast against each other: 4.62
404 | $color_extra_light_210_20: #ebeef2; // Contrast against dark color: 6.58
405 |
406 | // hue: 225, saturation: 100%
407 | $color_225_100: #3567ff; // Contrast on white & black: 4.63 & 4.54
408 | $color_light_225_100: #b5c8ff;
409 | $color_dark_225_100: #003ae8; // Contrast against each other: 4.57
410 | $color_extra_light_225_100: #e8eeff; // Contrast against dark color: 6.54
411 | // hue: 225, saturation: 80%
412 | $color_225_80: #426cea; // Contrast on white & black: 4.6 & 4.56
413 | $color_light_225_80: #b8c8f8;
414 | $color_dark_225_80: #1644ce; // Contrast against each other: 4.6
415 | $color_extra_light_225_80: #e9eefd; // Contrast against dark color: 6.58
416 | // hue: 225, saturation: 60%
417 | $color_225_60: #4e6fd3; // Contrast on white & black: 4.63 & 4.54
418 | $color_light_225_60: #bcc8ef;
419 | $color_dark_225_60: #2b4caf; // Contrast against each other: 4.59
420 | $color_extra_light_225_60: #eaeefa; // Contrast against dark color: 6.57
421 | // hue: 225, saturation: 40%
422 | $color_225_40: #5b72b9; // Contrast on white & black: 4.61 & 4.55
423 | $color_light_225_40: #bfc9e4;
424 | $color_dark_225_40: #3c518e; // Contrast against each other: 4.6
425 | $color_extra_light_225_40: #ebeef7; // Contrast against dark color: 6.56
426 | // hue: 225, saturation: 20%
427 | $color_225_20: #67749a; // Contrast on white & black: 4.62 & 4.54
428 | $color_light_225_20: #c4c9d8;
429 | $color_dark_225_20: #4a536f; // Contrast against each other: 4.6
430 | $color_extra_light_225_20: #eceef3; // Contrast against dark color: 6.56
431 |
432 | // hue: 240, saturation: 100%
433 | $color_240_100: #5f5fff; // Contrast on white & black: 4.6 & 4.57
434 | $color_light_240_100: #c4c4ff;
435 | $color_dark_240_100: #2424ff; // Contrast against each other: 4.58
436 | $color_extra_light_240_100: #ececff; // Contrast against dark color: 6.5
437 | // hue: 240, saturation: 80%
438 | $color_240_80: #6363ee; // Contrast on white & black: 4.62 & 4.55
439 | $color_light_240_80: #c4c4f9;
440 | $color_dark_240_80: #3232e8; // Contrast against each other: 4.57
441 | $color_extra_light_240_80: #ededfd; // Contrast against dark color: 6.58
442 | // hue: 240, saturation: 60%
443 | $color_240_60: #6868d9; // Contrast on white & black: 4.59 & 4.57
444 | $color_light_240_60: #c5c5f1;
445 | $color_dark_240_60: #3d3dce; // Contrast against each other: 4.58
446 | $color_extra_light_240_60: #ededfb; // Contrast against dark color: 6.57
447 | // hue: 240, saturation: 40%
448 | $color_240_40: #6c6cc0; // Contrast on white & black: 4.62 & 4.54
449 | $color_light_240_40: #c6c6e7;
450 | $color_dark_240_40: #4848a8; // Contrast against each other: 4.56
451 | $color_extra_light_240_40: #ededf8; // Contrast against dark color: 6.53
452 | // hue: 240, saturation: 20%
453 | $color_240_20: #7171a0; // Contrast on white & black: 4.59 & 4.57
454 | $color_light_240_20: #c7c7da;
455 | $color_dark_240_20: #505078; // Contrast against each other: 4.57
456 | $color_extra_light_240_20: #ededf3; // Contrast against dark color: 6.53
457 |
458 | // hue: 255, saturation: 100%
459 | $color_255_100: #7e53ff; // Contrast on white & black: 4.6 & 4.57
460 | $color_light_255_100: #d0c0ff;
461 | $color_dark_255_100: #480bff; // Contrast against each other: 4.58
462 | $color_extra_light_255_100: #f0ebff; // Contrast against dark color: 6.52
463 | // hue: 255, saturation: 80%
464 | $color_255_80: #7e59ed; // Contrast on white & black: 4.63 & 4.54
465 | $color_light_255_80: #cfc1f9;
466 | $color_dark_255_80: #5423e6; // Contrast against each other: 4.58
467 | $color_extra_light_255_80: #f0ecfd; // Contrast against dark color: 6.57
468 | // hue: 255, saturation: 60%
469 | $color_255_60: #7e60d7; // Contrast on white & black: 4.62 & 4.54
470 | $color_light_255_60: #cec3f0;
471 | $color_dark_255_60: #5933cc; // Contrast against each other: 4.58
472 | $color_extra_light_255_60: #f0ecfb; // Contrast against dark color: 6.53
473 | // hue: 255, saturation: 40%
474 | $color_255_40: #7d67be; // Contrast on white & black: 4.61 & 4.56
475 | $color_light_255_40: #cdc4e6;
476 | $color_dark_255_40: #5a449f; // Contrast against each other: 4.57
477 | $color_extra_light_255_40: #efedf7; // Contrast against dark color: 6.56
478 | // hue: 255, saturation: 20%
479 | $color_255_20: #7a6e9e; // Contrast on white & black: 4.61 & 4.55
480 | $color_light_255_20: #cbc6d9;
481 | $color_dark_255_20: #584e75; // Contrast against each other: 4.57
482 | $color_extra_light_255_20: #efedf3; // Contrast against dark color: 6.55
483 |
484 | // hue: 270, saturation: 100%
485 | $color_270_100: #9e3cff; // Contrast on white & black: 4.62 & 4.54
486 | $color_light_270_100: #ddbbff;
487 | $color_dark_270_100: #7000e0; // Contrast against each other: 4.57
488 | $color_extra_light_270_100: #f5eaff; // Contrast against dark color: 6.54
489 | // hue: 270, saturation: 80%
490 | $color_270_80: #9a4aeb; // Contrast on white & black: 4.61 & 4.55
491 | $color_light_270_80: #dbbdf8;
492 | $color_dark_270_80: #7317d0; // Contrast against each other: 4.58
493 | $color_extra_light_270_80: #f4eafd; // Contrast against dark color: 6.53
494 | // hue: 270, saturation: 60%
495 | $color_270_60: #9555d5; // Contrast on white & black: 4.63 & 4.54
496 | $color_light_270_60: #d8c0f0;
497 | $color_dark_270_60: #712db6; // Contrast against each other: 4.62
498 | $color_extra_light_270_60: #f3ebfa; // Contrast against dark color: 6.57
499 | // hue: 270, saturation: 40%
500 | $color_270_40: #8e60bb; // Contrast on white & black: 4.62 & 4.54
501 | $color_light_270_40: #d4c2e5;
502 | $color_dark_270_40: #6a3f94; // Contrast against each other: 4.6
503 | $color_extra_light_270_40: #f1ecf7; // Contrast against dark color: 6.57
504 | // hue: 270, saturation: 20%
505 | $color_270_20: #836b9c; // Contrast on white & black: 4.62 & 4.55
506 | $color_light_270_20: #cfc5d9;
507 | $color_dark_270_20: #5f4c72; // Contrast against each other: 4.57
508 | $color_extra_light_270_20: #f0edf3; // Contrast against dark color: 6.55
509 |
510 | // hue: 285, saturation: 100%
511 | $color_285_100: #bd00fb; // Contrast on white & black: 4.61 & 4.56
512 | $color_light_285_100: #edb5ff;
513 | $color_dark_285_100: #8a00b8; // Contrast against each other: 4.56
514 | $color_extra_light_285_100: #fae8ff; // Contrast against dark color: 6.51
515 | // hue: 285, saturation: 80%
516 | $color_285_80: #b82be7; // Contrast on white & black: 4.63 & 4.54
517 | $color_light_285_80: #e8b8f8;
518 | $color_dark_285_80: #8813af; // Contrast against each other: 4.58
519 | $color_extra_light_285_80: #f8e9fd; // Contrast against dark color: 6.55
520 | // hue: 285, saturation: 60%
521 | $color_285_60: #ae45d0; // Contrast on white & black: 4.6 & 4.56
522 | $color_light_285_60: #e2bcef;
523 | $color_dark_285_60: #8228a0; // Contrast against each other: 4.59
524 | $color_extra_light_285_60: #f6eafa; // Contrast against dark color: 6.55
525 | // hue: 285, saturation: 40%
526 | $color_285_40: #9f58b7; // Contrast on white & black: 4.61 & 4.55
527 | $color_light_285_40: #dbc0e4;
528 | $color_dark_285_40: #763b8a; // Contrast against each other: 4.59
529 | $color_extra_light_285_40: #f4ebf7; // Contrast against dark color: 6.54
530 | // hue: 285, saturation: 20%
531 | $color_285_20: #8d679a; // Contrast on white & black: 4.63 & 4.54
532 | $color_light_285_20: #d3c4d8;
533 | $color_dark_285_20: #654a6f; // Contrast against each other: 4.58
534 | $color_extra_light_285_20: #f1ecf3; // Contrast against dark color: 6.53
535 |
536 | // hue: 300, saturation: 100%
537 | $color_300_100: #cf00cf; // Contrast on white & black: 4.61 & 4.55
538 | $color_light_300_100: #ffadff;
539 | $color_dark_300_100: #970097; // Contrast against each other: 4.59
540 | $color_extra_light_300_100: #ffe6ff; // Contrast against dark color: 6.52
541 | // hue: 300, saturation: 80%
542 | $color_300_80: #cc17cc; // Contrast on white & black: 4.6 & 4.56
543 | $color_light_300_80: #f7b2f7;
544 | $color_dark_300_80: #941094; // Contrast against each other: 4.59
545 | $color_extra_light_300_80: #fde8fd; // Contrast against dark color: 6.57
546 | // hue: 300, saturation: 60%
547 | $color_300_60: #c331c3; // Contrast on white & black: 4.62 & 4.55
548 | $color_light_300_60: #eeb8ee;
549 | $color_dark_300_60: #8d238d; // Contrast against each other: 4.62
550 | $color_extra_light_300_60: #fae9fa; // Contrast against dark color: 6.56
551 | // hue: 300, saturation: 40%
552 | $color_300_40: #b14cb1; // Contrast on white & black: 4.63 & 4.54
553 | $color_light_300_40: #e3bde3;
554 | $color_dark_300_40: #803680; // Contrast against each other: 4.59
555 | $color_extra_light_300_40: #f6eaf6; // Contrast against dark color: 6.54
556 | // hue: 300, saturation: 20%
557 | $color_300_20: #966496; // Contrast on white & black: 4.61 & 4.56
558 | $color_light_300_20: #d7c3d7;
559 | $color_dark_300_20: #6b476b; // Contrast against each other: 4.63
560 | $color_extra_light_300_20: #f3ecf3; // Contrast against dark color: 6.61
561 |
562 | // hue: 315, saturation: 100%
563 | $color_315_100: #db00a4; // Contrast on white & black: 4.62 & 4.55
564 | $color_light_315_100: #ffb0ec;
565 | $color_dark_315_100: #a00078; // Contrast against each other: 4.58
566 | $color_extra_light_315_100: #ffe7f9; // Contrast against dark color: 6.53
567 | // hue: 315, saturation: 80%
568 | $color_315_80: #d618a7; // Contrast on white & black: 4.62 & 4.55
569 | $color_light_315_80: #f7b4e6;
570 | $color_dark_315_80: #9c1179; // Contrast against each other: 4.56
571 | $color_extra_light_315_80: #fde8f8; // Contrast against dark color: 6.53
572 | // hue: 315, saturation: 60%
573 | $color_315_60: #cb33a5; // Contrast on white & black: 4.61 & 4.56
574 | $color_light_315_60: #eeb9e1;
575 | $color_dark_315_60: #932477; // Contrast against each other: 4.59
576 | $color_extra_light_315_60: #fae9f6; // Contrast against dark color: 6.54
577 | // hue: 315, saturation: 40%
578 | $color_315_40: #b4509b; // Contrast on white & black: 4.6 & 4.56
579 | $color_light_315_40: #e3beda;
580 | $color_dark_315_40: #833870; // Contrast against each other: 4.57
581 | $color_extra_light_315_40: #f7ebf4; // Contrast against dark color: 6.56
582 | // hue: 315, saturation: 20%
583 | $color_315_20: #97658b; // Contrast on white & black: 4.62 & 4.55
584 | $color_light_315_20: #d7c3d2;
585 | $color_dark_315_20: #6c4863; // Contrast against each other: 4.6
586 | $color_extra_light_315_20: #f3ecf1; // Contrast against dark color: 6.59
587 |
588 | // hue: 330, saturation: 100%
589 | $color_330_100: #e40072; // Contrast on white & black: 4.62 & 4.54
590 | $color_light_330_100: #ffb2d9;
591 | $color_dark_330_100: #a70053; // Contrast against each other: 4.56
592 | $color_extra_light_330_100: #ffe8f4; // Contrast against dark color: 6.54
593 | // hue: 330, saturation: 80%
594 | $color_330_80: #df197c; // Contrast on white & black: 4.6 & 4.57
595 | $color_light_330_80: #f7b6d7;
596 | $color_dark_330_80: #a2125a; // Contrast against each other: 4.56
597 | $color_extra_light_330_80: #fde9f3; // Contrast against dark color: 6.54
598 | // hue: 330, saturation: 60%
599 | $color_330_60: #ce3a84; // Contrast on white & black: 4.6 & 4.56
600 | $color_light_330_60: #eebad4;
601 | $color_dark_330_60: #97255e; // Contrast against each other: 4.6
602 | $color_extra_light_330_60: #faeaf2; // Contrast against dark color: 6.61
603 | // hue: 330, saturation: 40%
604 | $color_330_40: #b55384; // Contrast on white & black: 4.63 & 4.54
605 | $color_light_330_40: #e4bfd1;
606 | $color_dark_330_40: #85395f; // Contrast against each other: 4.61
607 | $color_extra_light_330_40: #f7ebf1; // Contrast against dark color: 6.59
608 | // hue: 330, saturation: 20%
609 | $color_330_20: #99667f; // Contrast on white & black: 4.6 & 4.56
610 | $color_light_330_20: #d8c4ce;
611 | $color_dark_330_20: #6d495b; // Contrast against each other: 4.61
612 | $color_extra_light_330_20: #f3ecef; // Contrast against dark color: 6.56
613 |
614 | // hue: 345, saturation: 100%
615 | $color_345_100: #ea003a; // Contrast on white & black: 4.61 & 4.56
616 | $color_light_345_100: #ffb4c7;
617 | $color_dark_345_100: #ab002a; // Contrast against each other: 4.56
618 | $color_extra_light_345_100: #ffe8ee; // Contrast against dark color: 6.52
619 | // hue: 345, saturation: 80%
620 | $color_345_80: #e4194c; // Contrast on white & black: 4.62 & 4.54
621 | $color_light_345_80: #f8b8c8;
622 | $color_dark_345_80: #a61237; // Contrast against each other: 4.59
623 | $color_extra_light_345_80: #fde9ee; // Contrast against dark color: 6.54
624 | // hue: 345, saturation: 60%
625 | $color_345_60: #cf3f63; // Contrast on white & black: 4.62 & 4.54
626 | $color_light_345_60: #efbcc8;
627 | $color_dark_345_60: #9b2644; // Contrast against each other: 4.61
628 | $color_extra_light_345_60: #faeaee; // Contrast against dark color: 6.56
629 | // hue: 345, saturation: 40%
630 | $color_345_40: #b6566e; // Contrast on white & black: 4.62 & 4.55
631 | $color_light_345_40: #e4c0c9;
632 | $color_dark_345_40: #883a4d; // Contrast against each other: 4.6
633 | $color_extra_light_345_40: #f7ebee; // Contrast against dark color: 6.55
634 | // hue: 345, saturation: 20%
635 | $color_345_20: #9a6774; // Contrast on white & black: 4.6 & 4.57
636 | $color_light_345_20: #d8c4c9;
637 | $color_dark_345_20: #6e4953; // Contrast against each other: 4.62
638 | $color_extra_light_345_20: #f3ecee; // Contrast against dark color: 6.58
--------------------------------------------------------------------------------
/src/styles/base.scss:
--------------------------------------------------------------------------------
1 | @import "normalize";
2 | @import "accessible-colors";
3 | @import "variables";
4 | @import "mixins";
5 | @import "page";
6 | @import "utilities";
7 |
--------------------------------------------------------------------------------
/src/styles/mixins.scss:
--------------------------------------------------------------------------------
1 | @mixin ie-only {
2 |
3 | @media all and (-ms-high-contrast: none),
4 | (-ms-high-contrast: active) {
5 | @content;
6 | }
7 | }
8 |
9 | @mixin min-small {
10 | @media (min-width: 576px) {
11 | @content;
12 | }
13 | }
14 |
15 | @mixin min-medium {
16 | @media (min-width: 768px) {
17 | @content;
18 | }
19 | }
20 |
21 | @mixin min-large {
22 | @media (min-width: 992px) {
23 | @content;
24 | }
25 | }
26 |
27 | @mixin min-xlarge {
28 | @media (min-width: 1200px) {
29 | @content;
30 | }
31 | }
32 |
33 | @mixin max-xsmall {
34 | @media (max-width: 575.98px) {
35 | @content;
36 | }
37 | }
38 |
39 | @mixin max-small {
40 | @media (max-width: 767.98px) {
41 | @content;
42 | }
43 | }
44 |
45 | @mixin max-medium {
46 | @media (max-width: 991.98px) {
47 | @content;
48 | }
49 | }
50 |
51 | @mixin max-large {
52 | @media (max-width: 1199.98px) {
53 | @content;
54 | }
55 | }
56 |
57 | @mixin input-type-button {
58 |
59 | button,
60 | .button,
61 | .btn,
62 | input[type="button"],
63 | input[type="submit"],
64 | input[type="reset"],
65 | input[type="file"] {
66 | @content;
67 | }
68 | }
69 |
70 | @mixin input-type-box {
71 |
72 | textarea,
73 | select,
74 | datalist,
75 | input[type="color"],
76 | input[type="date"],
77 | input[type="datetime-local"],
78 | input[type="email"],
79 | input[type="month"],
80 | input[type="number"],
81 | input[type="password"],
82 | input[type="search"],
83 | input[type="tel"],
84 | input[type="text"],
85 | input[type="time"],
86 | input[type="url"],
87 | input[type="week"] {
88 | &:not(.visually-hidden) {
89 | @content;
90 | }
91 | }
92 | }
93 |
94 | @mixin input-type-checkbox {
95 | input[type="checkbox"] {
96 | &:not(.visually-hidden) {
97 | @content;
98 | }
99 | }
100 | }
101 |
102 | @mixin input-type-radio {
103 | input[type="radio"] {
104 | &:not(.visually-hidden) {
105 | @content;
106 | }
107 | }
108 | }
109 |
110 | @mixin input-type-image {
111 | input[type="image"] {
112 | &:not(.visually-hidden) {
113 | @content;
114 | }
115 | }
116 | }
117 |
118 | @mixin flex-row($child-display: null) {
119 | display: flex;
120 | flex-wrap: nowrap;
121 | flex-direction: row;
122 | justify-content: center;
123 | align-items: stretch;
124 |
125 | >* {
126 | flex: 1 1 1px;
127 |
128 | @if $child-display {
129 | display: $child-display;
130 | }
131 | }
132 | }
133 |
134 | @mixin flex-column($child-display: null) {
135 | display: flex;
136 | flex-wrap: nowrap;
137 | flex-direction: column;
138 | justify-content: center;
139 | align-items: stretch;
140 |
141 | >* {
142 | flex: 1 1 auto;
143 |
144 | @if $child-display {
145 | display: $child-display;
146 | }
147 | }
148 | }
149 |
150 | @mixin anchor($color: $color_0_100, $hover_color: $color_0_40, $underline: true, $important: false) {
151 |
152 | &,
153 | &:visited,
154 | &:active {
155 | color: $color #{if($important, '!important', '')};
156 | text-decoration: none #{if($important, '!important', '')};
157 | cursor: pointer #{if($important, '!important', '')};
158 | }
159 |
160 | &:hover {
161 | color: $hover_color #{if($important, '!important', '')};
162 |
163 | @if $underline {
164 | text-decoration: underline #{if($important, '!important', '')};
165 | }
166 |
167 | @else {
168 | text-decoration: none #{if($important, '!important', '')};
169 | }
170 | }
171 | }
172 |
173 | @mixin button($color, $hover_color, $text_color, $important: false) {
174 | display: inline-block #{if($important, '!important', '')};
175 | font-style: normal #{if($important, '!important', '')};
176 | text-decoration: none #{if($important, '!important', '')};
177 | padding: $normal_padding #{if($important, '!important', '')};
178 | border: 2px solid $color #{if($important, '!important', '')};
179 | border-radius: $border_radius #{if($important, '!important', '')};
180 | transition: all 150ms #{if($important, '!important', '')};
181 | white-space: nowrap #{if($important, '!important', '')};
182 | cursor: pointer #{if($important, '!important', '')};
183 |
184 | color: $text_color #{if($important, '!important', '')};
185 | background-color: $color #{if($important, '!important', '')};
186 | text-decoration: none #{if($important, '!important', '')};
187 |
188 | &:hover {
189 | color: $text_color #{if($important, '!important', '')};
190 | background-color: $color #{if($important, '!important', '')};
191 | text-decoration: none #{if($important, '!important', '')};
192 | border: 2px solid $hover_color #{if($important, '!important', '')};
193 | }
194 | }
195 |
196 | @mixin badge($color, $hover_color, $text_color, $important: false) {
197 | display: inline-block #{if($important, '!important', '')};
198 | font-size: 0.75em #{if($important, '!important', '')};
199 | font-weight: bold #{if($important, '!important', '')};
200 | font-style: normal #{if($important, '!important', '')};
201 | vertical-align: middle #{if($important, '!important', '')};
202 | text-decoration: none #{if($important, '!important', '')};
203 | padding: $tight_padding #{if($important, '!important', '')};
204 | border: 2px solid $color #{if($important, '!important', '')};
205 | border-radius: $border_radius #{if($important, '!important', '')};
206 | transition: all 150ms #{if($important, '!important', '')};
207 | white-space: nowrap #{if($important, '!important', '')};
208 |
209 | color: $text_color #{if($important, '!important', '')};
210 | background-color: $color #{if($important, '!important', '')};
211 | text-decoration: none #{if($important, '!important', '')};
212 |
213 | &:hover {
214 | color: $text_color #{if($important, '!important', '')};
215 | background-color: $color #{if($important, '!important', '')};
216 | text-decoration: none #{if($important, '!important', '')};
217 | border: 2px solid $hover_color #{if($important, '!important', '')};
218 | }
219 | }
220 |
--------------------------------------------------------------------------------
/src/styles/normalize.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /* Document
4 | ========================================================================== */
5 |
6 | /**
7 | * 1. Correct the line height in all browsers.
8 | * 2. Prevent adjustments of font size after orientation changes in iOS.
9 | */
10 |
11 | html {
12 | line-height: 1.15;
13 | /* 1 */
14 | -webkit-text-size-adjust: 100%;
15 | /* 2 */
16 | }
17 |
18 | /* Sections
19 | ========================================================================== */
20 |
21 | /**
22 | * Remove the margin in all browsers.
23 | */
24 |
25 | body {
26 | margin: 0;
27 | }
28 |
29 | /**
30 | * Render the `main` element consistently in IE.
31 | */
32 |
33 | main {
34 | display: block;
35 | }
36 |
37 | /**
38 | * Correct the font size and margin on `h1` elements within `section` and
39 | * `article` contexts in Chrome, Firefox, and Safari.
40 | */
41 |
42 | h1 {
43 | font-size: 2em;
44 | margin: 0.67em 0;
45 | }
46 |
47 | /* Grouping content
48 | ========================================================================== */
49 |
50 | /**
51 | * 1. Add the correct box sizing in Firefox.
52 | * 2. Show the overflow in Edge and IE.
53 | */
54 |
55 | hr {
56 | box-sizing: content-box;
57 | /* 1 */
58 | height: 0;
59 | /* 1 */
60 | overflow: visible;
61 | /* 2 */
62 | }
63 |
64 | /**
65 | * 1. Correct the inheritance and scaling of font size in all browsers.
66 | * 2. Correct the odd `em` font sizing in all browsers.
67 | */
68 |
69 | pre {
70 | font-family: monospace, monospace;
71 | /* 1 */
72 | font-size: 1em;
73 | /* 2 */
74 | }
75 |
76 | /* Text-level semantics
77 | ========================================================================== */
78 |
79 | /**
80 | * Remove the gray background on active links in IE 10.
81 | */
82 |
83 | a {
84 | background-color: transparent;
85 | }
86 |
87 | /**
88 | * 1. Remove the bottom border in Chrome 57-
89 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
90 | */
91 |
92 | abbr[title] {
93 | border-bottom: none;
94 | /* 1 */
95 | text-decoration: underline;
96 | /* 2 */
97 | text-decoration: underline dotted;
98 | /* 2 */
99 | }
100 |
101 | /**
102 | * Add the correct font weight in Chrome, Edge, and Safari.
103 | */
104 |
105 | b,
106 | strong {
107 | font-weight: bolder;
108 | }
109 |
110 | /**
111 | * 1. Correct the inheritance and scaling of font size in all browsers.
112 | * 2. Correct the odd `em` font sizing in all browsers.
113 | */
114 |
115 | code,
116 | kbd,
117 | samp {
118 | font-family: monospace, monospace;
119 | /* 1 */
120 | font-size: 1em;
121 | /* 2 */
122 | }
123 |
124 | /**
125 | * Add the correct font size in all browsers.
126 | */
127 |
128 | small {
129 | font-size: 80%;
130 | }
131 |
132 | /**
133 | * Prevent `sub` and `sup` elements from affecting the line height in
134 | * all browsers.
135 | */
136 |
137 | sub,
138 | sup {
139 | font-size: 75%;
140 | line-height: 0;
141 | position: relative;
142 | vertical-align: baseline;
143 | }
144 |
145 | sub {
146 | bottom: -0.25em;
147 | }
148 |
149 | sup {
150 | top: -0.5em;
151 | }
152 |
153 | /* Embedded content
154 | ========================================================================== */
155 |
156 | /**
157 | * Remove the border on images inside links in IE 10.
158 | */
159 |
160 | img {
161 | border-style: none;
162 | }
163 |
164 | /* Forms
165 | ========================================================================== */
166 |
167 | /**
168 | * 1. Change the font styles in all browsers.
169 | * 2. Remove the margin in Firefox and Safari.
170 | */
171 |
172 | button,
173 | input,
174 | optgroup,
175 | select,
176 | textarea {
177 | font-family: inherit;
178 | /* 1 */
179 | font-size: 100%;
180 | /* 1 */
181 | line-height: 1.15;
182 | /* 1 */
183 | margin: 0;
184 | /* 2 */
185 | }
186 |
187 | /**
188 | * Show the overflow in IE.
189 | * 1. Show the overflow in Edge.
190 | */
191 |
192 | button,
193 | input {
194 | /* 1 */
195 | overflow: visible;
196 | }
197 |
198 | /**
199 | * Remove the inheritance of text transform in Edge, Firefox, and IE.
200 | * 1. Remove the inheritance of text transform in Firefox.
201 | */
202 |
203 | button,
204 | select {
205 | /* 1 */
206 | text-transform: none;
207 | }
208 |
209 | /**
210 | * Correct the inability to style clickable types in iOS and Safari.
211 | */
212 |
213 | button,
214 | [type="button"],
215 | [type="reset"],
216 | [type="submit"] {
217 | -webkit-appearance: button;
218 | }
219 |
220 | /**
221 | * Remove the inner border and padding in Firefox.
222 | */
223 |
224 | button::-moz-focus-inner,
225 | [type="button"]::-moz-focus-inner,
226 | [type="reset"]::-moz-focus-inner,
227 | [type="submit"]::-moz-focus-inner {
228 | border-style: none;
229 | padding: 0;
230 | }
231 |
232 | /**
233 | * Restore the focus styles unset by the previous rule.
234 | */
235 |
236 | button:-moz-focusring,
237 | [type="button"]:-moz-focusring,
238 | [type="reset"]:-moz-focusring,
239 | [type="submit"]:-moz-focusring {
240 | outline: 1px dotted ButtonText;
241 | }
242 |
243 | /**
244 | * Correct the padding in Firefox.
245 | */
246 |
247 | fieldset {
248 | padding: 0.35em 0.75em 0.625em;
249 | }
250 |
251 | /**
252 | * 1. Correct the text wrapping in Edge and IE.
253 | * 2. Correct the color inheritance from `fieldset` elements in IE.
254 | * 3. Remove the padding so developers are not caught out when they zero out
255 | * `fieldset` elements in all browsers.
256 | */
257 |
258 | legend {
259 | box-sizing: border-box;
260 | /* 1 */
261 | color: inherit;
262 | /* 2 */
263 | display: table;
264 | /* 1 */
265 | max-width: 100%;
266 | /* 1 */
267 | padding: 0;
268 | /* 3 */
269 | white-space: normal;
270 | /* 1 */
271 | }
272 |
273 | /**
274 | * Add the correct vertical alignment in Chrome, Firefox, and Opera.
275 | */
276 |
277 | progress {
278 | vertical-align: baseline;
279 | }
280 |
281 | /**
282 | * Remove the default vertical scrollbar in IE 10+.
283 | */
284 |
285 | textarea {
286 | overflow: auto;
287 | }
288 |
289 | /**
290 | * 1. Add the correct box sizing in IE 10.
291 | * 2. Remove the padding in IE 10.
292 | */
293 |
294 | [type="checkbox"],
295 | [type="radio"] {
296 | box-sizing: border-box;
297 | /* 1 */
298 | padding: 0;
299 | /* 2 */
300 | }
301 |
302 | /**
303 | * Correct the cursor style of increment and decrement buttons in Chrome.
304 | */
305 |
306 | [type="number"]::-webkit-inner-spin-button,
307 | [type="number"]::-webkit-outer-spin-button {
308 | height: auto;
309 | }
310 |
311 | /**
312 | * 1. Correct the odd appearance in Chrome and Safari.
313 | * 2. Correct the outline style in Safari.
314 | */
315 |
316 | [type="search"] {
317 | -webkit-appearance: textfield;
318 | /* 1 */
319 | outline-offset: -2px;
320 | /* 2 */
321 | }
322 |
323 | /**
324 | * Remove the inner padding in Chrome and Safari on macOS.
325 | */
326 |
327 | [type="search"]::-webkit-search-decoration {
328 | -webkit-appearance: none;
329 | }
330 |
331 | /**
332 | * 1. Correct the inability to style clickable types in iOS and Safari.
333 | * 2. Change font properties to `inherit` in Safari.
334 | */
335 |
336 | ::-webkit-file-upload-button {
337 | -webkit-appearance: button;
338 | /* 1 */
339 | font: inherit;
340 | /* 2 */
341 | }
342 |
343 | /* Interactive
344 | ========================================================================== */
345 |
346 | /*
347 | * Add the correct display in Edge, IE 10+, and Firefox.
348 | */
349 |
350 | details {
351 | display: block;
352 | }
353 |
354 | /*
355 | * Add the correct display in all browsers.
356 | */
357 |
358 | summary {
359 | display: list-item;
360 | }
361 |
362 | /* Misc
363 | ========================================================================== */
364 |
365 | /**
366 | * Add the correct display in IE 10+.
367 | */
368 |
369 | template {
370 | display: none;
371 | }
372 |
373 | /**
374 | * Add the correct display in IE 10.
375 | */
376 |
377 | [hidden] {
378 | display: none;
379 | }
--------------------------------------------------------------------------------
/src/styles/page.scss:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Inconsolata:wght@200;400;700;900&display=swap');
2 |
3 | * {
4 | box-sizing: border-box;
5 | font-weight: inherit;
6 |
7 | &:focus {
8 | outline: none;
9 | }
10 | }
11 |
12 | html,
13 | body,
14 | p,
15 | .p,
16 | div,
17 | header,
18 | footer,
19 | section,
20 | nav,
21 | h1,
22 | h2,
23 | h3,
24 | h4,
25 | h5,
26 | h6,
27 | span,
28 | label,
29 | .label,
30 | a,
31 | ol,
32 | ul {
33 | margin: 0;
34 | }
35 |
36 | html,
37 | body,
38 | p,
39 | .p,
40 | div,
41 | header,
42 | footer,
43 | section,
44 | nav,
45 | h1,
46 | h2,
47 | h3,
48 | h4,
49 | h5,
50 | h6,
51 | span,
52 | label,
53 | .label,
54 | a {
55 | padding: 0;
56 | }
57 |
58 | ol,
59 | ul {
60 | padding: 0 0 0 1em;
61 | }
62 |
63 | html,
64 | body,
65 | p,
66 | .p,
67 | div,
68 | header,
69 | footer,
70 | section,
71 | nav,
72 | h1,
73 | h2,
74 | h3,
75 | h4,
76 | h5,
77 | h6 {
78 | display: block;
79 | }
80 |
81 | span,
82 | label,
83 | .label,
84 | a {
85 | display: inline;
86 | }
87 |
88 | /* Extended from type-scale.com */
89 | h1 {
90 | font-size: 2.000rem;
91 | }
92 |
93 | h2 {
94 | font-size: 1.741rem;
95 | }
96 |
97 | h3 {
98 | font-size: 1.516rem;
99 | }
100 |
101 | h4 {
102 | font-size: 1.320rem;
103 | }
104 |
105 | h5 {
106 | font-size: 1.149rem;
107 | }
108 |
109 | h6 {
110 | font-size: 1.000rem;
111 | }
112 |
113 | h1,
114 | h2,
115 | h3,
116 | h4,
117 | h5,
118 | h6,
119 | b,
120 | strong,
121 | label {
122 | font-weight: 700;
123 | }
124 |
125 | h1:not(.page-title),
126 | h2,
127 | h3,
128 | h4,
129 | h5,
130 | h6 {
131 | &:not(.field__label) {
132 | margin-bottom: 0.5rem;
133 | }
134 | }
135 |
136 | p {
137 | margin-top: 0.5rem;
138 | margin-bottom: 0.5rem;
139 | }
140 |
141 | html {
142 | font-family: 'Inconsolata', monospace;
143 | font-size: 18px;
144 | height: 100%;
145 | }
146 |
147 | html, body {
148 | display: flex;
149 | flex-direction: column;
150 | }
151 |
152 | body, .app {
153 | flex: 1 1 auto;
154 | position: relative;
155 | }
156 |
157 | .theme-button {
158 | position: absolute;
159 | left: 0;
160 | top: 0;
161 | }
162 |
163 | .search-input, .filter-input {
164 | margin-bottom: 1rem;
165 | }
166 |
167 | .filter-input-group:not(:first-child) {
168 | margin-left: 0.25rem;
169 | }
170 |
171 | .filter-button:not(:first-child) {
172 | margin-left: 0.25rem;
173 | }
174 |
175 | .result {
176 | overflow: hidden;
177 | border: 1px solid $color_0_0;
178 | border-radius: $border_radius;
179 |
180 | &:not(:first-child) {
181 | margin-top: 0.5rem;
182 | }
183 | }
184 |
185 | .result-title {
186 | padding: $normal_padding;
187 | }
188 |
189 | .result-details {
190 | border-top: 1px solid $color_0_0;
191 | padding: $normal_padding;
192 | }
193 |
194 | .field-row {
195 | margin-bottom: 0.5rem;
196 | }
197 |
198 | .field:not(:first-child) {
199 | margin-left: 0.5rem;
200 | }
201 |
202 | .border {
203 | border-radius: $border_radius;
204 | }
205 |
206 | .list {
207 | border: 1px solid $color_0_0;
208 | border-radius: $border_radius;
209 | }
210 |
211 | .list-item {
212 | padding: $normal_padding;
213 |
214 | &:not(:first-child) {
215 | border-top: 1px solid $color_0_0;
216 | }
217 | }
218 |
219 | @include input-type-box {
220 | border: 1px solid $color_0_0;
221 | border-radius: $border_radius;
222 | padding: $normal_padding;
223 | width: 100%;
224 | }
225 |
226 | .app-content {
227 | padding: $normal_padding;
228 | border-radius: $border_radius;
229 | }
230 |
231 | @each $name, $color, $bg_color, $title_bg_color, $colors in $themes {
232 | .app.#{$name} {
233 | background-color: hsl(210, 10%, 20%);
234 |
235 | .app-content {
236 | color: $color;
237 | background-color: $bg_color;
238 | }
239 |
240 | .background {
241 | background-color: $title_bg_color;
242 | }
243 |
244 | .result, .result-details {
245 | border-color: $color;
246 | }
247 |
248 | @each $name, $color, $hover_color, $subtle_color, $text_color in $colors {
249 | a:not(.button):not(.btn):not(.badge) {
250 | @if $name {
251 | &.#{$name} {
252 | @include anchor($color, $hover_color);
253 | }
254 | } @else {
255 | @include anchor($color, $hover_color);
256 | }
257 | }
258 |
259 | @include input-type-button {
260 | @if $name {
261 | &.#{$name} {
262 | @include button($color, $hover_color, $text_color);
263 | }
264 | } @else {
265 | @include button($color, $hover_color, $text_color);
266 | }
267 | }
268 |
269 | .list {
270 | @if $name {
271 | &.#{$name} {
272 | background-color: $subtle_color;
273 | border-color: $color;
274 | color: $hover_color;
275 | }
276 | } @else {
277 | background-color: $subtle_color;
278 | border-color: $color;
279 | color: $hover_color;
280 | }
281 | }
282 |
283 | .list-item {
284 | @if $name {
285 | &.#{$name} {
286 | background-color: $subtle_color;
287 | border-color: $color;
288 | color: $hover_color;
289 | }
290 | } @else {
291 | background-color: $subtle_color;
292 | border-color: $color;
293 | color: $hover_color;
294 | }
295 | }
296 |
297 | .border {
298 | @if $name {
299 | &.#{$name} {
300 | border: 2px solid $color;
301 | }
302 | } @else {
303 | border: 2px solid $color;
304 | }
305 | }
306 |
307 | .badge {
308 | @if $name {
309 | &.#{$name} {
310 | @include badge($color, $color, $text_color);
311 | }
312 | } @else {
313 | @include badge($color, $color, $text_color);
314 | }
315 | }
316 | }
317 |
318 | @include input-type-box {
319 | color: $color;
320 | background-color: $bg_color;
321 | }
322 | }
323 | }
324 |
--------------------------------------------------------------------------------
/src/styles/utilities.scss:
--------------------------------------------------------------------------------
1 | /* Utility styles inspired by boostrap */
2 |
3 | /* Font Size - Extended from type-scale.com */
4 | .h0 {
5 | font-size: 2.297rem !important;
6 | }
7 |
8 | .h1 {
9 | font-size: 2.000rem;
10 | }
11 |
12 | .h2 {
13 | font-size: 1.741rem;
14 | }
15 |
16 | .h3 {
17 | font-size: 1.516rem;
18 | }
19 |
20 | .h4 {
21 | font-size: 1.320rem;
22 | }
23 |
24 | .h5 {
25 | font-size: 1.149rem;
26 | }
27 |
28 | .h6,
29 | .font-size-normal {
30 | font-size: 1rem !important;
31 | }
32 |
33 | .h7 {
34 | font-size: 0.871rem !important;
35 | }
36 |
37 | .h8 {
38 | font-size: 0.758rem !important;
39 | }
40 |
41 | .h9 {
42 | font-size: 0.660rem !important;
43 | }
44 |
45 | .h0,
46 | .h1,
47 | .h2,
48 | .h3,
49 | .h4,
50 | .h5,
51 | .h6,
52 | .h7,
53 | .h8,
54 | .h9 {
55 | font-weight: 700 !important;
56 | }
57 |
58 | /* Margin and Padding */
59 | @each $class,
60 | $value in $sizes {
61 |
62 | .m-#{$class},
63 | .my-#{$class},
64 | .mt-#{$class} {
65 | margin-top: $value !important;
66 | }
67 |
68 | .m-#{$class},
69 | .my-#{$class},
70 | .mb-#{$class} {
71 | margin-bottom: $value !important;
72 | }
73 |
74 | .m-#{$class},
75 | .mx-#{$class},
76 | .ml-#{$class} {
77 | margin-left: $value !important;
78 | }
79 |
80 | .m-#{$class},
81 | .mx-#{$class},
82 | .mr-#{$class} {
83 | margin-right: $value !important;
84 | }
85 |
86 | .p-#{$class},
87 | .py-#{$class},
88 | .pt-#{$class} {
89 | padding-top: $value !important;
90 | }
91 |
92 | .p-#{$class},
93 | .py-#{$class},
94 | .pb-#{$class} {
95 | padding-bottom: $value !important;
96 | }
97 |
98 | .p-#{$class},
99 | .px-#{$class},
100 | .pl-#{$class} {
101 | padding-left: $value !important;
102 | }
103 |
104 | .p-#{$class},
105 | .px-#{$class},
106 | .pr-#{$class} {
107 | padding-right: $value !important;
108 | }
109 | }
110 |
111 | .p-n {
112 | padding: $tight_padding !important;
113 | }
114 |
115 | /* Text */
116 | .text-left {
117 | text-align: left !important;
118 | }
119 |
120 | .text-right {
121 | text-align: right !important;
122 | }
123 |
124 | .text-center {
125 | text-align: center !important;
126 | }
127 |
128 | .text-justify {
129 | text-align: justify !important;
130 | }
131 |
132 | .text-wrap {
133 | white-space: normal !important;
134 | }
135 |
136 | .text-nowrap {
137 | white-space: nowrap !important;
138 | }
139 |
140 | .text-truncate {
141 | overflow: hidden !important;
142 | text-overflow: ellipsis !important;
143 | white-space: nowrap !important;
144 | }
145 |
146 | .text-break {
147 | word-break: break-word !important;
148 | overflow-wrap: break-word !important;
149 | }
150 |
151 | .text-lowercase {
152 | text-transform: lowercase !important;
153 | }
154 |
155 | .text-uppercase {
156 | text-transform: uppercase !important;
157 | }
158 |
159 | .text-capitalize {
160 | text-transform: capitalize !important;
161 | }
162 |
163 | .text-muted {
164 | color: $color_0_0 !important;
165 | }
166 |
167 | .font-weight-bold {
168 | font-weight: 700 !important;
169 | }
170 |
171 | .font-weight-bolder {
172 | font-weight: bolder !important;
173 | }
174 |
175 | .font-weight-normal {
176 | font-weight: 400 !important;
177 | }
178 |
179 | .font-weight-light {
180 | font-weight: 300 !important;
181 | }
182 |
183 | .font-weight-lighter {
184 | font-weight: lighter !important;
185 | }
186 |
187 | .font-italic {
188 | font-style: italic !important;
189 | }
190 |
191 | /* Float */
192 | .float-left {
193 | float: left !important;
194 | }
195 |
196 | .float-right {
197 | float: right !important;
198 | }
199 |
200 | .float-none {
201 | float: none !important;
202 | }
203 |
204 | .clearfix::after {
205 | display: block;
206 | content: "";
207 | clear: both;
208 | }
209 |
210 | /* Sizing */
211 | .w-0 {
212 | width: 0 !important;
213 | }
214 |
215 | .w-25 {
216 | width: 25% !important;
217 | }
218 |
219 | .w-50 {
220 | width: 50% !important;
221 | }
222 |
223 | .w-75 {
224 | width: 75% !important;
225 | }
226 |
227 | .w-100 {
228 | width: 100% !important;
229 | }
230 |
231 | .w-auto {
232 | width: auto !important;
233 | }
234 |
235 | .h-0 {
236 | height: 0 !important;
237 | }
238 |
239 | .h-25 {
240 | height: 25% !important;
241 | }
242 |
243 | .h-50 {
244 | height: 50% !important;
245 | }
246 |
247 | .h-75 {
248 | height: 75% !important;
249 | }
250 |
251 | .h-100 {
252 | height: 100% !important;
253 | }
254 |
255 | .h-auto {
256 | height: auto !important;
257 | }
258 |
259 | .mw-0 {
260 | max-width: 0 !important;
261 | }
262 |
263 | .mw-25 {
264 | max-width: 25% !important;
265 | }
266 |
267 | .mw-50 {
268 | max-width: 50% !important;
269 | }
270 |
271 | .mw-75 {
272 | max-width: 75% !important;
273 | }
274 |
275 | .mw-100 {
276 | max-width: 100% !important;
277 | }
278 |
279 | .mw-auto {
280 | max-width: auto !important;
281 | }
282 |
283 | .mh-0 {
284 | max-height: 0 !important;
285 | }
286 |
287 | .mh-25 {
288 | max-height: 25% !important;
289 | }
290 |
291 | .mh-50 {
292 | max-height: 50% !important;
293 | }
294 |
295 | .mh-75 {
296 | max-height: 75% !important;
297 | }
298 |
299 | .mh-100 {
300 | max-height: 100% !important;
301 | }
302 |
303 | .mh-auto {
304 | max-height: auto !important;
305 | }
306 |
307 | .container,
308 | .container-fluid {
309 | margin: 0 auto;
310 | padding: 0;
311 | width: 100%;
312 | }
313 |
314 | .container-fluid {
315 | padding: 0 0.5rem;
316 | }
317 |
318 | @include min-small {
319 | .container {
320 | width: 540px;
321 | }
322 | }
323 |
324 | @include min-medium {
325 | .container {
326 | width: 720px;
327 | }
328 | }
329 |
330 | @include min-large {
331 | .container {
332 | width: 960px;
333 | }
334 |
335 | .row>* {
336 | flex: 1 0 0px;
337 | display: block;
338 | }
339 |
340 | .row>.col-auto {
341 | flex: 0 0 auto;
342 | }
343 |
344 | .row,
345 | .row>.row {
346 | display: flex;
347 | flex-direction: row;
348 | align-items: flex-start;
349 | justify-content: flex-start;
350 | flex-wrap: wrap;
351 | }
352 | }
353 |
354 | @include min-xlarge {
355 | .container {
356 | width: 1140px;
357 | }
358 | }
359 |
360 | .drawer {
361 | transition: all 350ms ease;
362 | display: block;
363 |
364 | &.closed {
365 | display: none;
366 | }
367 | }
368 |
369 | .rounded {
370 | border-radius: 99999px !important;
371 | }
372 |
373 | .pill {
374 | padding: $tight_padding !important;
375 | border-radius: 99999px !important;
376 | }
377 |
--------------------------------------------------------------------------------
/src/styles/variables.scss:
--------------------------------------------------------------------------------
1 | $border_radius: 3px;
2 | $normal_padding: 0.5em 0.75em;
3 | $tight_padding: 0 0.25em;
4 |
5 | $sizes: ("0": 0,
6 | "1": 0.25rem,
7 | "2": 0.5rem,
8 | "3": 1rem,
9 | "4": 2rem,
10 | "5": 3rem,
11 | );
12 |
13 | $light_colors: (
14 | null $color_210_60 $color_dark_210_60 $color_light_210_60 #fff,
15 | "secondary" $color_dark_0_0 #000 $color_light_0_0 #fff,
16 | "light" $color_light_0_0 #fff $color_dark_0_0 #000,
17 | "success" $color_135_60 $color_dark_135_60 $color_light_135_60 #fff,
18 | "danger" $color_0_60 $color_dark_0_60 $color_light_0_60 #fff,
19 | "inner" #fff $color_light_0_0 $color_dark_0_0 #000,
20 | "color-1" $color_180_60 $color_dark_180_60 $color_light_180_60 #fff,
21 | "color-2" $color_150_60 $color_dark_150_60 $color_light_150_60 #fff,
22 | "color-3" $color_120_60 $color_dark_120_60 $color_light_120_60 #fff,
23 | "color-4" $color_90_60 $color_dark_90_60 $color_light_90_60 #fff,
24 | );
25 |
26 | $dark_colors: (
27 | null $color_210_60 $color_light_210_60 $color_dark_210_60 #000,
28 | "secondary" $color_light_0_0 #fff $color_dark_0_0 #000,
29 | "light" $color_light_0_0 #fff $color_dark_0_0 #000,
30 | "success" $color_135_60 $color_light_135_60 $color_dark_135_60 #000,
31 | "danger" $color_0_60 $color_light_0_60 $color_dark_0_60 #000,
32 | "inner" #000 $color_dark_0_0 $color_light_0_0 #fff,
33 | "color-1" $color_180_60 $color_light_180_60 $color_dark_180_60 #000,
34 | "color-2" $color_150_60 $color_light_150_60 $color_dark_150_60 #000,
35 | "color-3" $color_120_60 $color_light_120_60 $color_dark_120_60 #000,
36 | "color-4" $color_90_60 $color_light_90_60 $color_dark_90_60 #000,
37 | );
38 |
39 | $themes: (
40 | "light" $color_dark_0_0 #fff #ccc $light_colors,
41 | "dark" $color_light_0_0 #000 #333 $dark_colors,
42 | );
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | const path = require("path");
2 |
3 | module.exports = {
4 | outputDir: path.resolve(__dirname, "./docs"),
5 | publicPath: './',
6 | };
7 |
--------------------------------------------------------------------------------