@d2runewizard/d2s 2.0.125 → 2.0.126

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/lib/binary/bitreader.d.ts +23 -23
  2. package/lib/binary/bitreader.js +107 -107
  3. package/lib/binary/bitwriter.d.ts +21 -21
  4. package/lib/binary/bitwriter.js +117 -117
  5. package/lib/binary/constants.d.ts +4 -4
  6. package/lib/binary/constants.js +8 -8
  7. package/lib/binary/seekToSequence.d.ts +2 -2
  8. package/lib/binary/seekToSequence.js +12 -12
  9. package/lib/d2/attribute_enhancer.d.ts +5 -5
  10. package/lib/d2/attribute_enhancer.js +595 -595
  11. package/lib/d2/attributes.d.ts +4 -4
  12. package/lib/d2/attributes.js +98 -98
  13. package/lib/d2/constants.d.ts +4 -4
  14. package/lib/d2/constants.js +15 -15
  15. package/lib/d2/d2s.d.ts +10 -10
  16. package/lib/d2/d2s.js +115 -115
  17. package/lib/d2/header.d.ts +8 -8
  18. package/lib/d2/header.js +94 -94
  19. package/lib/d2/items.d.ts +19 -19
  20. package/lib/d2/items.js +869 -831
  21. package/lib/d2/items.js.map +1 -1
  22. package/lib/d2/skills.d.ts +4 -4
  23. package/lib/d2/skills.js +45 -45
  24. package/lib/d2/stash.d.ts +3 -3
  25. package/lib/d2/stash.js +243 -243
  26. package/lib/d2/types.d.ts +438 -420
  27. package/lib/d2/types.js +14 -14
  28. package/lib/d2/versions/default_header.d.ts +5 -5
  29. package/lib/d2/versions/default_header.js +750 -750
  30. package/lib/data/parser.d.ts +3 -3
  31. package/lib/data/parser.js +626 -626
  32. package/lib/data/versions/105_constant_data.d.ts +16150 -16150
  33. package/lib/data/versions/105_constant_data.js +24316 -24316
  34. package/lib/data/versions/96_constant_data.d.ts +14427 -14427
  35. package/lib/data/versions/96_constant_data.js +4 -4
  36. package/lib/data/versions/99_constant_data.d.ts +15572 -15572
  37. package/lib/data/versions/99_constant_data.js +4 -4
  38. package/lib/index.d.ts +8 -8
  39. package/lib/index.js +46 -46
  40. package/package.json +46 -46
package/lib/d2/stash.js CHANGED
@@ -1,244 +1,244 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.write = exports.read = void 0;
23
- const types = __importStar(require("./types"));
24
- const bitwriter_1 = require("../binary/bitwriter");
25
- const items = __importStar(require("./items"));
26
- const attribute_enhancer_1 = require("./attribute_enhancer");
27
- const bitreader_1 = require("../binary/bitreader");
28
- const constants_1 = require("./constants");
29
- const defaultConfig = {
30
- extendedStash: false,
31
- };
32
- async function read(buffer, constants, version, userConfig) {
33
- const stash = {};
34
- const reader = new bitreader_1.BitReader(buffer);
35
- const config = Object.assign(defaultConfig, userConfig);
36
- const firstHeader = reader.ReadUInt32();
37
- reader.SeekByte(0);
38
- if (firstHeader == 0xaa55aa55) {
39
- stash.pages = [];
40
- stash.sharedGold = 0;
41
- let pageCount = 0;
42
- while (reader.offset < reader.bits.length && pageCount < 6) {
43
- const pageIndex = pageCount;
44
- pageCount++;
45
- await readStashHeader(stash, reader, pageIndex);
46
- const saveVersion = version || parseInt(stash.version);
47
- if (!constants) {
48
- constants = constants_1.getConstantData(saveVersion);
49
- }
50
- await readStashPart(stash, reader, saveVersion, constants, pageIndex);
51
- }
52
- const saveVersion = version || parseInt(stash.version);
53
- if (!constants) {
54
- constants = constants_1.getConstantData(saveVersion);
55
- }
56
- await readChronicle(stash, reader, saveVersion, constants);
57
- stash.pageCount = pageCount;
58
- }
59
- else {
60
- await readStashHeader(stash, reader);
61
- const saveVersion = version || parseInt(stash.version);
62
- if (!constants) {
63
- constants = constants_1.getConstantData(saveVersion);
64
- }
65
- await readStashPages(stash, reader, saveVersion, constants);
66
- }
67
- return stash;
68
- }
69
- exports.read = read;
70
- async function readStashHeader(stash, reader, pageIndex) {
71
- const header = reader.ReadUInt32();
72
- switch (header) {
73
- // Resurrected
74
- case 0xaa55aa55:
75
- stash.type = types.EStashType.shared;
76
- stash.hardcore = reader.ReadUInt32() == 0;
77
- stash.version = reader.ReadUInt32().toString();
78
- const version = parseInt(stash.version);
79
- stash.sharedGold += reader.ReadUInt32();
80
- reader.ReadUInt32(); // size of the sector
81
- if (version === 0x69 && pageIndex !== undefined) {
82
- const isStackable = reader.ReadByte();
83
- stash.pages[pageIndex] = {
84
- items: [],
85
- name: "",
86
- type: 0,
87
- isStackable,
88
- };
89
- reader.SkipBytes(43);
90
- }
91
- else {
92
- reader.SkipBytes(44); // empty
93
- }
94
- break;
95
- // LoD
96
- case 0x535353: // SSS
97
- case 0x4d545343: // CSTM
98
- stash.version = reader.ReadString(2);
99
- if (stash.version !== "01" && stash.version !== "02") {
100
- throw new Error(`unkown stash version ${stash.version} at position ${reader.offset - 2 * 8}`);
101
- }
102
- stash.type = header === 0x535353 ? types.EStashType.shared : types.EStashType.private;
103
- if (stash.type === types.EStashType.shared && stash.version == "02") {
104
- stash.sharedGold = reader.ReadUInt32();
105
- }
106
- if (stash.type === types.EStashType.private) {
107
- reader.ReadUInt32();
108
- stash.sharedGold = 0;
109
- }
110
- stash.pageCount = reader.ReadUInt32();
111
- break;
112
- default:
113
- debugger;
114
- throw new Error(`shared stash header 'SSS' / 0xAA55AA55 / private stash header 'CSTM' not found at position ${reader.offset - 3 * 8}`);
115
- }
116
- }
117
- async function readStashPages(stash, reader, version, constants) {
118
- stash.pages = [];
119
- for (let i = 0; i < stash.pageCount; i++) {
120
- await readStashPage(stash, reader, version, constants);
121
- }
122
- }
123
- async function readChronicle(stash, reader, version, constants) {
124
- stash.chronicle = {
125
- data: Array.from(reader.ReadBytes((reader.bits.length - reader.offset) / 8)),
126
- };
127
- }
128
- async function writeChronicle(stash) {
129
- var _a;
130
- const writer = new bitwriter_1.BitWriter();
131
- if ((_a = stash.chronicle) === null || _a === void 0 ? void 0 : _a.data) {
132
- writer.WriteBytes(new Uint8Array(stash.chronicle.data));
133
- }
134
- return writer.ToArray();
135
- }
136
- async function readStashPage(stash, reader, version, constants) {
137
- const page = {
138
- items: [],
139
- name: "",
140
- type: 0,
141
- };
142
- const header = reader.ReadString(2);
143
- if (header !== "ST") {
144
- throw new Error(`can not read stash page header ST at position ${reader.offset - 2 * 8}`);
145
- }
146
- page.type = reader.ReadUInt32();
147
- page.name = reader.ReadNullTerminatedString();
148
- page.items = await items.readItems(reader, version, constants, defaultConfig);
149
- attribute_enhancer_1.enhanceItems(page.items, constants, 1);
150
- stash.pages.push(page);
151
- }
152
- async function readStashPart(stash, reader, version, constants, pageIndex) {
153
- const currentPage = pageIndex !== undefined ? stash.pages[pageIndex] : undefined;
154
- const page = currentPage || {
155
- items: [],
156
- name: "",
157
- type: 0,
158
- };
159
- page.items = await items.readItems(reader, version, constants, defaultConfig);
160
- attribute_enhancer_1.enhanceItems(page.items, constants, 1);
161
- if (!currentPage) {
162
- stash.pages.push(page);
163
- }
164
- }
165
- async function write(data, constants, version, userConfig) {
166
- const config = Object.assign(defaultConfig, userConfig);
167
- const writer = new bitwriter_1.BitWriter();
168
- if (!constants) {
169
- constants = constants_1.getConstantData(version);
170
- }
171
- if (version > 0x61) {
172
- for (const page of data.pages) {
173
- writer.WriteArray(await writeStashSection(data, page, constants, config));
174
- }
175
- /*if (version === 0x69) {
176
- writer.WriteArray(await writeChronicle(data));
177
- }*/ // not required to load
178
- }
179
- else {
180
- writer.WriteArray(await writeStashHeader(data));
181
- writer.WriteArray(await writeStashPages(data, version, constants, config));
182
- }
183
- return writer.ToArray();
184
- }
185
- exports.write = write;
186
- async function writeStashHeader(data) {
187
- const writer = new bitwriter_1.BitWriter();
188
- if (data.type === types.EStashType.private) {
189
- writer.WriteString("CSTM", 4);
190
- }
191
- else {
192
- writer.WriteString("SSS", 4);
193
- }
194
- writer.WriteString(data.version, data.version.length);
195
- if (data.type === types.EStashType.private) {
196
- writer.WriteString("", 4);
197
- }
198
- else {
199
- if (data.version == "02") {
200
- writer.WriteUInt32(data.sharedGold);
201
- }
202
- }
203
- writer.WriteUInt32(data.pages.length);
204
- return writer.ToArray();
205
- }
206
- async function writeStashSection(data, page, constants, userConfig) {
207
- const writer = new bitwriter_1.BitWriter();
208
- const version = parseInt(data.version);
209
- writer.WriteUInt32(0xaa55aa55);
210
- writer.WriteUInt32(data.hardcore ? 0 : version === 0x69 ? 2 : 1); // change to 0x02
211
- writer.WriteUInt32(version);
212
- const maxGold = Math.min(data.sharedGold, 2500000);
213
- data.sharedGold = Math.max(0, data.sharedGold - maxGold);
214
- writer.WriteUInt32(maxGold);
215
- writer.WriteUInt32(0); // size of the sector, to be fixed later
216
- if (version === 0x69) {
217
- writer.WriteByte(page.isStackable || 0);
218
- writer.WriteBytes(new Uint8Array(43).fill(0)); // empty
219
- }
220
- else {
221
- writer.WriteBytes(new Uint8Array(44).fill(0)); // empty
222
- }
223
- writer.WriteArray(await items.writeItems(page.items, parseInt(data.version), constants, userConfig));
224
- const size = writer.offset;
225
- writer.SeekByte(16);
226
- writer.WriteUInt32(Math.ceil(size / 8));
227
- return writer.ToArray();
228
- }
229
- async function writeStashPages(data, version, constants, config) {
230
- const writer = new bitwriter_1.BitWriter();
231
- for (let i = 0; i < data.pages.length; i++) {
232
- writer.WriteArray(await writeStashPage(data.pages[i], version, constants, config));
233
- }
234
- return writer.ToArray();
235
- }
236
- async function writeStashPage(data, version, constants, config) {
237
- const writer = new bitwriter_1.BitWriter();
238
- writer.WriteString("ST", 2);
239
- writer.WriteUInt32(data.type);
240
- writer.WriteString(data.name, data.name.length + 1);
241
- writer.WriteArray(await items.writeItems(data.items, version, constants, config));
242
- return writer.ToArray();
243
- }
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.write = exports.read = void 0;
23
+ const types = __importStar(require("./types"));
24
+ const bitwriter_1 = require("../binary/bitwriter");
25
+ const items = __importStar(require("./items"));
26
+ const attribute_enhancer_1 = require("./attribute_enhancer");
27
+ const bitreader_1 = require("../binary/bitreader");
28
+ const constants_1 = require("./constants");
29
+ const defaultConfig = {
30
+ extendedStash: false,
31
+ };
32
+ async function read(buffer, constants, version, userConfig) {
33
+ const stash = {};
34
+ const reader = new bitreader_1.BitReader(buffer);
35
+ const config = Object.assign(defaultConfig, userConfig);
36
+ const firstHeader = reader.ReadUInt32();
37
+ reader.SeekByte(0);
38
+ if (firstHeader == 0xaa55aa55) {
39
+ stash.pages = [];
40
+ stash.sharedGold = 0;
41
+ let pageCount = 0;
42
+ while (reader.offset < reader.bits.length && pageCount < 6) {
43
+ const pageIndex = pageCount;
44
+ pageCount++;
45
+ await readStashHeader(stash, reader, pageIndex);
46
+ const saveVersion = version || parseInt(stash.version);
47
+ if (!constants) {
48
+ constants = constants_1.getConstantData(saveVersion);
49
+ }
50
+ await readStashPart(stash, reader, saveVersion, constants, pageIndex);
51
+ }
52
+ const saveVersion = version || parseInt(stash.version);
53
+ if (!constants) {
54
+ constants = constants_1.getConstantData(saveVersion);
55
+ }
56
+ await readChronicle(stash, reader, saveVersion, constants);
57
+ stash.pageCount = pageCount;
58
+ }
59
+ else {
60
+ await readStashHeader(stash, reader);
61
+ const saveVersion = version || parseInt(stash.version);
62
+ if (!constants) {
63
+ constants = constants_1.getConstantData(saveVersion);
64
+ }
65
+ await readStashPages(stash, reader, saveVersion, constants);
66
+ }
67
+ return stash;
68
+ }
69
+ exports.read = read;
70
+ async function readStashHeader(stash, reader, pageIndex) {
71
+ const header = reader.ReadUInt32();
72
+ switch (header) {
73
+ // Resurrected
74
+ case 0xaa55aa55:
75
+ stash.type = types.EStashType.shared;
76
+ stash.hardcore = reader.ReadUInt32() == 0;
77
+ stash.version = reader.ReadUInt32().toString();
78
+ const version = parseInt(stash.version);
79
+ stash.sharedGold += reader.ReadUInt32();
80
+ reader.ReadUInt32(); // size of the sector
81
+ if (version === 0x69 && pageIndex !== undefined) {
82
+ const isStackable = reader.ReadByte();
83
+ stash.pages[pageIndex] = {
84
+ items: [],
85
+ name: "",
86
+ type: 0,
87
+ isStackable,
88
+ };
89
+ reader.SkipBytes(43);
90
+ }
91
+ else {
92
+ reader.SkipBytes(44); // empty
93
+ }
94
+ break;
95
+ // LoD
96
+ case 0x535353: // SSS
97
+ case 0x4d545343: // CSTM
98
+ stash.version = reader.ReadString(2);
99
+ if (stash.version !== "01" && stash.version !== "02") {
100
+ throw new Error(`unkown stash version ${stash.version} at position ${reader.offset - 2 * 8}`);
101
+ }
102
+ stash.type = header === 0x535353 ? types.EStashType.shared : types.EStashType.private;
103
+ if (stash.type === types.EStashType.shared && stash.version == "02") {
104
+ stash.sharedGold = reader.ReadUInt32();
105
+ }
106
+ if (stash.type === types.EStashType.private) {
107
+ reader.ReadUInt32();
108
+ stash.sharedGold = 0;
109
+ }
110
+ stash.pageCount = reader.ReadUInt32();
111
+ break;
112
+ default:
113
+ debugger;
114
+ throw new Error(`shared stash header 'SSS' / 0xAA55AA55 / private stash header 'CSTM' not found at position ${reader.offset - 3 * 8}`);
115
+ }
116
+ }
117
+ async function readStashPages(stash, reader, version, constants) {
118
+ stash.pages = [];
119
+ for (let i = 0; i < stash.pageCount; i++) {
120
+ await readStashPage(stash, reader, version, constants);
121
+ }
122
+ }
123
+ async function readChronicle(stash, reader, version, constants) {
124
+ stash.chronicle = {
125
+ data: Array.from(reader.ReadBytes((reader.bits.length - reader.offset) / 8)),
126
+ };
127
+ }
128
+ async function writeChronicle(stash) {
129
+ var _a;
130
+ const writer = new bitwriter_1.BitWriter();
131
+ if ((_a = stash.chronicle) === null || _a === void 0 ? void 0 : _a.data) {
132
+ writer.WriteBytes(new Uint8Array(stash.chronicle.data));
133
+ }
134
+ return writer.ToArray();
135
+ }
136
+ async function readStashPage(stash, reader, version, constants) {
137
+ const page = {
138
+ items: [],
139
+ name: "",
140
+ type: 0,
141
+ };
142
+ const header = reader.ReadString(2);
143
+ if (header !== "ST") {
144
+ throw new Error(`can not read stash page header ST at position ${reader.offset - 2 * 8}`);
145
+ }
146
+ page.type = reader.ReadUInt32();
147
+ page.name = reader.ReadNullTerminatedString();
148
+ page.items = await items.readItems(reader, version, constants, defaultConfig);
149
+ attribute_enhancer_1.enhanceItems(page.items, constants, 1);
150
+ stash.pages.push(page);
151
+ }
152
+ async function readStashPart(stash, reader, version, constants, pageIndex) {
153
+ const currentPage = pageIndex !== undefined ? stash.pages[pageIndex] : undefined;
154
+ const page = currentPage || {
155
+ items: [],
156
+ name: "",
157
+ type: 0,
158
+ };
159
+ page.items = await items.readItems(reader, version, constants, defaultConfig);
160
+ attribute_enhancer_1.enhanceItems(page.items, constants, 1);
161
+ if (!currentPage) {
162
+ stash.pages.push(page);
163
+ }
164
+ }
165
+ async function write(data, constants, version, userConfig) {
166
+ const config = Object.assign(defaultConfig, userConfig);
167
+ const writer = new bitwriter_1.BitWriter();
168
+ if (!constants) {
169
+ constants = constants_1.getConstantData(version);
170
+ }
171
+ if (version > 0x61) {
172
+ for (const page of data.pages) {
173
+ writer.WriteArray(await writeStashSection(data, page, constants, config));
174
+ }
175
+ /*if (version === 0x69) {
176
+ writer.WriteArray(await writeChronicle(data));
177
+ }*/ // not required to load
178
+ }
179
+ else {
180
+ writer.WriteArray(await writeStashHeader(data));
181
+ writer.WriteArray(await writeStashPages(data, version, constants, config));
182
+ }
183
+ return writer.ToArray();
184
+ }
185
+ exports.write = write;
186
+ async function writeStashHeader(data) {
187
+ const writer = new bitwriter_1.BitWriter();
188
+ if (data.type === types.EStashType.private) {
189
+ writer.WriteString("CSTM", 4);
190
+ }
191
+ else {
192
+ writer.WriteString("SSS", 4);
193
+ }
194
+ writer.WriteString(data.version, data.version.length);
195
+ if (data.type === types.EStashType.private) {
196
+ writer.WriteString("", 4);
197
+ }
198
+ else {
199
+ if (data.version == "02") {
200
+ writer.WriteUInt32(data.sharedGold);
201
+ }
202
+ }
203
+ writer.WriteUInt32(data.pages.length);
204
+ return writer.ToArray();
205
+ }
206
+ async function writeStashSection(data, page, constants, userConfig) {
207
+ const writer = new bitwriter_1.BitWriter();
208
+ const version = parseInt(data.version);
209
+ writer.WriteUInt32(0xaa55aa55);
210
+ writer.WriteUInt32(data.hardcore ? 0 : version === 0x69 ? 2 : 1); // change to 0x02
211
+ writer.WriteUInt32(version);
212
+ const maxGold = Math.min(data.sharedGold, 2500000);
213
+ data.sharedGold = Math.max(0, data.sharedGold - maxGold);
214
+ writer.WriteUInt32(maxGold);
215
+ writer.WriteUInt32(0); // size of the sector, to be fixed later
216
+ if (version === 0x69) {
217
+ writer.WriteByte(page.isStackable || 0);
218
+ writer.WriteBytes(new Uint8Array(43).fill(0)); // empty
219
+ }
220
+ else {
221
+ writer.WriteBytes(new Uint8Array(44).fill(0)); // empty
222
+ }
223
+ writer.WriteArray(await items.writeItems(page.items, parseInt(data.version), constants, userConfig));
224
+ const size = writer.offset;
225
+ writer.SeekByte(16);
226
+ writer.WriteUInt32(Math.ceil(size / 8));
227
+ return writer.ToArray();
228
+ }
229
+ async function writeStashPages(data, version, constants, config) {
230
+ const writer = new bitwriter_1.BitWriter();
231
+ for (let i = 0; i < data.pages.length; i++) {
232
+ writer.WriteArray(await writeStashPage(data.pages[i], version, constants, config));
233
+ }
234
+ return writer.ToArray();
235
+ }
236
+ async function writeStashPage(data, version, constants, config) {
237
+ const writer = new bitwriter_1.BitWriter();
238
+ writer.WriteString("ST", 2);
239
+ writer.WriteUInt32(data.type);
240
+ writer.WriteString(data.name, data.name.length + 1);
241
+ writer.WriteArray(await items.writeItems(data.items, version, constants, config));
242
+ return writer.ToArray();
243
+ }
244
244
  //# sourceMappingURL=stash.js.map