quake2ts 0.0.277 → 0.0.282
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +13 -13
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +46 -10
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +45 -10
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/index.d.ts +10 -0
- package/packages/client/dist/types/index.d.ts.map +1 -1
- package/packages/engine/dist/browser/index.global.js +9 -9
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs +3 -0
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js +3 -0
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/demo/playback.d.ts +1 -0
- package/packages/engine/dist/types/demo/playback.d.ts.map +1 -1
- package/packages/game/dist/browser/index.global.js +3 -3
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +2108 -1193
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +1879 -957
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/combat/weapons/animation.d.ts +3 -2
- package/packages/game/dist/types/combat/weapons/animation.d.ts.map +1 -1
- package/packages/game/dist/types/combat/weapons/bfg.d.ts +4 -0
- package/packages/game/dist/types/combat/weapons/bfg.d.ts.map +1 -0
- package/packages/game/dist/types/combat/weapons/blaster.d.ts +4 -0
- package/packages/game/dist/types/combat/weapons/blaster.d.ts.map +1 -0
- package/packages/game/dist/types/combat/weapons/chaingun.d.ts.map +1 -1
- package/packages/game/dist/types/combat/weapons/firing.d.ts +10 -0
- package/packages/game/dist/types/combat/weapons/firing.d.ts.map +1 -1
- package/packages/game/dist/types/combat/weapons/frames.d.ts +43 -0
- package/packages/game/dist/types/combat/weapons/frames.d.ts.map +1 -1
- package/packages/game/dist/types/combat/weapons/grenadelauncher.d.ts +4 -0
- package/packages/game/dist/types/combat/weapons/grenadelauncher.d.ts.map +1 -0
- package/packages/game/dist/types/combat/weapons/hyperblaster.d.ts +4 -0
- package/packages/game/dist/types/combat/weapons/hyperblaster.d.ts.map +1 -0
- package/packages/game/dist/types/combat/weapons/machinegun.d.ts +4 -0
- package/packages/game/dist/types/combat/weapons/machinegun.d.ts.map +1 -0
- package/packages/game/dist/types/combat/weapons/railgun.d.ts +4 -0
- package/packages/game/dist/types/combat/weapons/railgun.d.ts.map +1 -0
- package/packages/game/dist/types/combat/weapons/rocket.d.ts +4 -0
- package/packages/game/dist/types/combat/weapons/rocket.d.ts.map +1 -0
- package/packages/game/dist/types/combat/weapons/shotgun.d.ts +4 -0
- package/packages/game/dist/types/combat/weapons/shotgun.d.ts.map +1 -0
- package/packages/game/dist/types/combat/weapons/supershotgun.d.ts +4 -0
- package/packages/game/dist/types/combat/weapons/supershotgun.d.ts.map +1 -0
- package/packages/game/dist/types/entities/entity.d.ts +17 -0
- package/packages/game/dist/types/entities/entity.d.ts.map +1 -1
- package/packages/game/dist/types/entities/system.d.ts +2 -1
- package/packages/game/dist/types/entities/system.d.ts.map +1 -1
- package/packages/game/dist/types/entities/targets.d.ts.map +1 -1
- package/packages/game/dist/types/index.d.ts.map +1 -1
- package/packages/game/dist/types/inventory/items.d.ts.map +1 -1
- package/packages/shared/dist/browser/index.global.js +1 -1
- package/packages/shared/dist/browser/index.global.js.map +1 -1
- package/packages/shared/dist/cjs/index.cjs +26 -0
- package/packages/shared/dist/cjs/index.cjs.map +1 -1
- package/packages/shared/dist/esm/index.js +25 -0
- package/packages/shared/dist/esm/index.js.map +1 -1
- package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/shared/dist/types/protocol/index.d.ts +1 -0
- package/packages/shared/dist/types/protocol/index.d.ts.map +1 -1
- package/packages/shared/dist/types/protocol/renderFx.d.ts +22 -0
- package/packages/shared/dist/types/protocol/renderFx.d.ts.map +1 -0
- package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
// ../shared/dist/esm/index.js
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __esm = (fn, res) => function __init() {
|
|
4
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
5
|
+
};
|
|
3
6
|
var __export = (target, all) => {
|
|
4
7
|
for (var name in all)
|
|
5
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
9
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var DEG_TO_RAD = Math.PI / 180;
|
|
10
|
+
|
|
11
|
+
// ../shared/dist/esm/index.js
|
|
10
12
|
function copyVec3(a) {
|
|
11
13
|
return { x: a.x, y: a.y, z: a.z };
|
|
12
14
|
}
|
|
@@ -153,11 +155,6 @@ function rotatePointAroundVector(dir, point, degrees) {
|
|
|
153
155
|
z: rot[2][0] * point.x + rot[2][1] * point.y + rot[2][2] * point.z
|
|
154
156
|
};
|
|
155
157
|
}
|
|
156
|
-
var PITCH = 0;
|
|
157
|
-
var YAW = 1;
|
|
158
|
-
var ROLL = 2;
|
|
159
|
-
var DEG2RAD_FACTOR = Math.PI / 180;
|
|
160
|
-
var RAD2DEG_FACTOR = 180 / Math.PI;
|
|
161
158
|
function axisComponent(vec, axis) {
|
|
162
159
|
switch (axis) {
|
|
163
160
|
case PITCH:
|
|
@@ -243,247 +240,9 @@ function vectorToAngles(vec) {
|
|
|
243
240
|
}
|
|
244
241
|
return { x: -pitch, y: yaw, z: 0 };
|
|
245
242
|
}
|
|
246
|
-
var STATE_SIZE = 624;
|
|
247
|
-
var MIDDLE_WORD = 397;
|
|
248
|
-
var MATRIX_A = 2567483615;
|
|
249
|
-
var UPPER_MASK = 2147483648;
|
|
250
|
-
var LOWER_MASK = 2147483647;
|
|
251
|
-
var TWO_POW_32 = 4294967296;
|
|
252
|
-
var MersenneTwister19937 = class {
|
|
253
|
-
constructor(seed = 5489) {
|
|
254
|
-
this.state = new Uint32Array(STATE_SIZE);
|
|
255
|
-
this.index = STATE_SIZE;
|
|
256
|
-
this.seed(seed);
|
|
257
|
-
}
|
|
258
|
-
seed(seed) {
|
|
259
|
-
this.state[0] = seed >>> 0;
|
|
260
|
-
for (let i = 1; i < STATE_SIZE; i++) {
|
|
261
|
-
const prev = this.state[i - 1] ^ this.state[i - 1] >>> 30;
|
|
262
|
-
const next = Math.imul(prev >>> 0, 1812433253) + i;
|
|
263
|
-
this.state[i] = next >>> 0;
|
|
264
|
-
}
|
|
265
|
-
this.index = STATE_SIZE;
|
|
266
|
-
}
|
|
267
|
-
nextUint32() {
|
|
268
|
-
if (this.index >= STATE_SIZE) {
|
|
269
|
-
this.twist();
|
|
270
|
-
}
|
|
271
|
-
let y = this.state[this.index++];
|
|
272
|
-
y ^= y >>> 11;
|
|
273
|
-
y ^= y << 7 & 2636928640;
|
|
274
|
-
y ^= y << 15 & 4022730752;
|
|
275
|
-
y ^= y >>> 18;
|
|
276
|
-
return y >>> 0;
|
|
277
|
-
}
|
|
278
|
-
twist() {
|
|
279
|
-
for (let i = 0; i < STATE_SIZE; i++) {
|
|
280
|
-
const y = this.state[i] & UPPER_MASK | this.state[(i + 1) % STATE_SIZE] & LOWER_MASK;
|
|
281
|
-
let next = this.state[(i + MIDDLE_WORD) % STATE_SIZE] ^ y >>> 1;
|
|
282
|
-
if ((y & 1) !== 0) {
|
|
283
|
-
next ^= MATRIX_A;
|
|
284
|
-
}
|
|
285
|
-
this.state[i] = next >>> 0;
|
|
286
|
-
}
|
|
287
|
-
this.index = 0;
|
|
288
|
-
}
|
|
289
|
-
getState() {
|
|
290
|
-
return {
|
|
291
|
-
index: this.index,
|
|
292
|
-
state: Array.from(this.state)
|
|
293
|
-
};
|
|
294
|
-
}
|
|
295
|
-
setState(snapshot) {
|
|
296
|
-
if (snapshot.state.length !== STATE_SIZE) {
|
|
297
|
-
throw new Error(`Expected ${STATE_SIZE} MT state values, received ${snapshot.state.length}`);
|
|
298
|
-
}
|
|
299
|
-
this.index = snapshot.index;
|
|
300
|
-
this.state = Uint32Array.from(snapshot.state, (value) => value >>> 0);
|
|
301
|
-
}
|
|
302
|
-
};
|
|
303
|
-
var RandomGenerator = class {
|
|
304
|
-
constructor(options = {}) {
|
|
305
|
-
this.mt = new MersenneTwister19937(options.seed);
|
|
306
|
-
}
|
|
307
|
-
seed(seed) {
|
|
308
|
-
this.mt.seed(seed);
|
|
309
|
-
}
|
|
310
|
-
/** Uniform float in [0, 1). */
|
|
311
|
-
frandom() {
|
|
312
|
-
return this.mt.nextUint32() / TWO_POW_32;
|
|
313
|
-
}
|
|
314
|
-
/** Uniform float in [min, max). */
|
|
315
|
-
frandomRange(minInclusive, maxExclusive) {
|
|
316
|
-
return minInclusive + (maxExclusive - minInclusive) * this.frandom();
|
|
317
|
-
}
|
|
318
|
-
/** Uniform float in [0, max). */
|
|
319
|
-
frandomMax(maxExclusive) {
|
|
320
|
-
return this.frandomRange(0, maxExclusive);
|
|
321
|
-
}
|
|
322
|
-
/** Uniform float in [-1, 1). */
|
|
323
|
-
crandom() {
|
|
324
|
-
return this.frandomRange(-1, 1);
|
|
325
|
-
}
|
|
326
|
-
/** Uniform float in (-1, 1). */
|
|
327
|
-
crandomOpen() {
|
|
328
|
-
const epsilon = Number.EPSILON;
|
|
329
|
-
return this.frandomRange(-1 + epsilon, 1);
|
|
330
|
-
}
|
|
331
|
-
/** Raw uint32 sample. */
|
|
332
|
-
irandomUint32() {
|
|
333
|
-
return this.mt.nextUint32();
|
|
334
|
-
}
|
|
335
|
-
/** Uniform integer in [min, max). */
|
|
336
|
-
irandomRange(minInclusive, maxExclusive) {
|
|
337
|
-
if (maxExclusive - minInclusive <= 1) {
|
|
338
|
-
return minInclusive;
|
|
339
|
-
}
|
|
340
|
-
const span = maxExclusive - minInclusive;
|
|
341
|
-
const limit = TWO_POW_32 - TWO_POW_32 % span;
|
|
342
|
-
let sample;
|
|
343
|
-
do {
|
|
344
|
-
sample = this.mt.nextUint32();
|
|
345
|
-
} while (sample >= limit);
|
|
346
|
-
return minInclusive + sample % span;
|
|
347
|
-
}
|
|
348
|
-
/** Uniform integer in [0, max). */
|
|
349
|
-
irandom(maxExclusive) {
|
|
350
|
-
if (maxExclusive <= 0) {
|
|
351
|
-
return 0;
|
|
352
|
-
}
|
|
353
|
-
return this.irandomRange(0, maxExclusive);
|
|
354
|
-
}
|
|
355
|
-
/** Uniform time in milliseconds [min, max). */
|
|
356
|
-
randomTimeRange(minMs, maxMs) {
|
|
357
|
-
if (maxMs <= minMs) {
|
|
358
|
-
return minMs;
|
|
359
|
-
}
|
|
360
|
-
return this.irandomRange(minMs, maxMs);
|
|
361
|
-
}
|
|
362
|
-
/** Uniform time in milliseconds [0, max). */
|
|
363
|
-
randomTime(maxMs) {
|
|
364
|
-
return this.irandom(maxMs);
|
|
365
|
-
}
|
|
366
|
-
randomIndex(container) {
|
|
367
|
-
return this.irandom(container.length);
|
|
368
|
-
}
|
|
369
|
-
getState() {
|
|
370
|
-
return { mt: this.mt.getState() };
|
|
371
|
-
}
|
|
372
|
-
setState(snapshot) {
|
|
373
|
-
this.mt.setState(snapshot.mt);
|
|
374
|
-
}
|
|
375
|
-
};
|
|
376
243
|
function createRandomGenerator(options) {
|
|
377
244
|
return new RandomGenerator(options);
|
|
378
245
|
}
|
|
379
|
-
var CONTENTS_SOLID = 1 << 0;
|
|
380
|
-
var CONTENTS_WINDOW = 1 << 1;
|
|
381
|
-
var CONTENTS_AUX = 1 << 2;
|
|
382
|
-
var CONTENTS_LAVA = 1 << 3;
|
|
383
|
-
var CONTENTS_SLIME = 1 << 4;
|
|
384
|
-
var CONTENTS_WATER = 1 << 5;
|
|
385
|
-
var CONTENTS_MIST = 1 << 6;
|
|
386
|
-
var CONTENTS_NO_WATERJUMP = 1 << 13;
|
|
387
|
-
var CONTENTS_PROJECTILECLIP = 1 << 14;
|
|
388
|
-
var CONTENTS_AREAPORTAL = 1 << 15;
|
|
389
|
-
var CONTENTS_PLAYERCLIP = 1 << 16;
|
|
390
|
-
var CONTENTS_MONSTERCLIP = 1 << 17;
|
|
391
|
-
var CONTENTS_CURRENT_0 = 1 << 18;
|
|
392
|
-
var CONTENTS_CURRENT_90 = 1 << 19;
|
|
393
|
-
var CONTENTS_CURRENT_180 = 1 << 20;
|
|
394
|
-
var CONTENTS_CURRENT_270 = 1 << 21;
|
|
395
|
-
var CONTENTS_CURRENT_UP = 1 << 22;
|
|
396
|
-
var CONTENTS_CURRENT_DOWN = 1 << 23;
|
|
397
|
-
var CONTENTS_ORIGIN = 1 << 24;
|
|
398
|
-
var CONTENTS_MONSTER = 1 << 25;
|
|
399
|
-
var CONTENTS_DEADMONSTER = 1 << 26;
|
|
400
|
-
var CONTENTS_DETAIL = 1 << 27;
|
|
401
|
-
var CONTENTS_TRANSLUCENT = 1 << 28;
|
|
402
|
-
var CONTENTS_LADDER = 1 << 29;
|
|
403
|
-
var CONTENTS_PLAYER = 1 << 30;
|
|
404
|
-
var CONTENTS_PROJECTILE = 1 << 31;
|
|
405
|
-
var SURF_LIGHT = 1 << 0;
|
|
406
|
-
var SURF_SLICK = 1 << 1;
|
|
407
|
-
var SURF_SKY = 1 << 2;
|
|
408
|
-
var SURF_WARP = 1 << 3;
|
|
409
|
-
var SURF_TRANS33 = 1 << 4;
|
|
410
|
-
var SURF_TRANS66 = 1 << 5;
|
|
411
|
-
var SURF_FLOWING = 1 << 6;
|
|
412
|
-
var SURF_NODRAW = 1 << 7;
|
|
413
|
-
var SURF_ALPHATEST = 1 << 25;
|
|
414
|
-
var SURF_N64_UV = 1 << 28;
|
|
415
|
-
var SURF_N64_SCROLL_X = 1 << 29;
|
|
416
|
-
var SURF_N64_SCROLL_Y = 1 << 30;
|
|
417
|
-
var SURF_N64_SCROLL_FLIP = 1 << 31;
|
|
418
|
-
var MASK_SOLID = CONTENTS_SOLID | CONTENTS_WINDOW;
|
|
419
|
-
var MASK_PLAYERSOLID = CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_WINDOW | CONTENTS_MONSTER | CONTENTS_PLAYER;
|
|
420
|
-
var MASK_DEADSOLID = CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_WINDOW;
|
|
421
|
-
var MASK_MONSTERSOLID = CONTENTS_SOLID | CONTENTS_MONSTERCLIP | CONTENTS_WINDOW | CONTENTS_MONSTER | CONTENTS_PLAYER;
|
|
422
|
-
var MASK_WATER = CONTENTS_WATER | CONTENTS_LAVA | CONTENTS_SLIME;
|
|
423
|
-
var MASK_OPAQUE = CONTENTS_SOLID | CONTENTS_SLIME | CONTENTS_LAVA;
|
|
424
|
-
var MASK_SHOT = CONTENTS_SOLID | CONTENTS_MONSTER | CONTENTS_PLAYER | CONTENTS_WINDOW | CONTENTS_DEADMONSTER;
|
|
425
|
-
var MASK_CURRENT = CONTENTS_CURRENT_0 | CONTENTS_CURRENT_90 | CONTENTS_CURRENT_180 | CONTENTS_CURRENT_270 | CONTENTS_CURRENT_UP | CONTENTS_CURRENT_DOWN;
|
|
426
|
-
var MASK_BLOCK_SIGHT = CONTENTS_SOLID | CONTENTS_LAVA | CONTENTS_SLIME | CONTENTS_MONSTER | CONTENTS_PLAYER;
|
|
427
|
-
var MASK_NAV_SOLID = CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_WINDOW;
|
|
428
|
-
var MASK_LADDER_NAV_SOLID = CONTENTS_SOLID | CONTENTS_WINDOW;
|
|
429
|
-
var MASK_WALK_NAV_SOLID = CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_WINDOW | CONTENTS_MONSTERCLIP;
|
|
430
|
-
var MASK_PROJECTILE = MASK_SHOT | CONTENTS_PROJECTILECLIP;
|
|
431
|
-
var MAX_CHECKCOUNT = Number.MAX_SAFE_INTEGER - 1;
|
|
432
|
-
var CvarFlags = /* @__PURE__ */ ((CvarFlags2) => {
|
|
433
|
-
CvarFlags2[CvarFlags2["None"] = 0] = "None";
|
|
434
|
-
CvarFlags2[CvarFlags2["Archive"] = 1] = "Archive";
|
|
435
|
-
CvarFlags2[CvarFlags2["UserInfo"] = 2] = "UserInfo";
|
|
436
|
-
CvarFlags2[CvarFlags2["ServerInfo"] = 4] = "ServerInfo";
|
|
437
|
-
CvarFlags2[CvarFlags2["Latch"] = 8] = "Latch";
|
|
438
|
-
CvarFlags2[CvarFlags2["Cheat"] = 16] = "Cheat";
|
|
439
|
-
return CvarFlags2;
|
|
440
|
-
})(CvarFlags || {});
|
|
441
|
-
var MAX_CLIENTS = 256;
|
|
442
|
-
var MAX_LIGHTSTYLES = 256;
|
|
443
|
-
var MAX_MODELS = 8192;
|
|
444
|
-
var MAX_SOUNDS = 2048;
|
|
445
|
-
var MAX_IMAGES = 512;
|
|
446
|
-
var MAX_ITEMS = 256;
|
|
447
|
-
var MAX_GENERAL = MAX_CLIENTS * 2;
|
|
448
|
-
var MAX_SHADOW_LIGHTS = 256;
|
|
449
|
-
var MAX_WHEEL_ITEMS = 32;
|
|
450
|
-
var ConfigStringIndex = ((ConfigStringIndex2) => {
|
|
451
|
-
ConfigStringIndex2[ConfigStringIndex2["Name"] = 0] = "Name";
|
|
452
|
-
ConfigStringIndex2[ConfigStringIndex2["CdTrack"] = 1] = "CdTrack";
|
|
453
|
-
ConfigStringIndex2[ConfigStringIndex2["Sky"] = 2] = "Sky";
|
|
454
|
-
ConfigStringIndex2[ConfigStringIndex2["SkyAxis"] = 3] = "SkyAxis";
|
|
455
|
-
ConfigStringIndex2[ConfigStringIndex2["SkyRotate"] = 4] = "SkyRotate";
|
|
456
|
-
ConfigStringIndex2[ConfigStringIndex2["StatusBar"] = 5] = "StatusBar";
|
|
457
|
-
ConfigStringIndex2[ConfigStringIndex2["CONFIG_N64_PHYSICS"] = 56] = "CONFIG_N64_PHYSICS";
|
|
458
|
-
ConfigStringIndex2[ConfigStringIndex2["CONFIG_CTF_TEAMS"] = 57] = "CONFIG_CTF_TEAMS";
|
|
459
|
-
ConfigStringIndex2[ConfigStringIndex2["CONFIG_COOP_RESPAWN_STRING"] = 58] = "CONFIG_COOP_RESPAWN_STRING";
|
|
460
|
-
ConfigStringIndex2[ConfigStringIndex2["AirAccel"] = 59] = "AirAccel";
|
|
461
|
-
ConfigStringIndex2[ConfigStringIndex2["MaxClients"] = 60] = "MaxClients";
|
|
462
|
-
ConfigStringIndex2[ConfigStringIndex2["MapChecksum"] = 61] = "MapChecksum";
|
|
463
|
-
ConfigStringIndex2[ConfigStringIndex2["Models"] = 62] = "Models";
|
|
464
|
-
ConfigStringIndex2[ConfigStringIndex2["Sounds"] = 62 + MAX_MODELS] = "Sounds";
|
|
465
|
-
ConfigStringIndex2[ConfigStringIndex2["Images"] = ConfigStringIndex2.Sounds + MAX_SOUNDS] = "Images";
|
|
466
|
-
ConfigStringIndex2[ConfigStringIndex2["Lights"] = ConfigStringIndex2.Images + MAX_IMAGES] = "Lights";
|
|
467
|
-
ConfigStringIndex2[ConfigStringIndex2["ShadowLights"] = ConfigStringIndex2.Lights + MAX_LIGHTSTYLES] = "ShadowLights";
|
|
468
|
-
ConfigStringIndex2[ConfigStringIndex2["Items"] = ConfigStringIndex2.ShadowLights + MAX_SHADOW_LIGHTS] = "Items";
|
|
469
|
-
ConfigStringIndex2[ConfigStringIndex2["PlayerSkins"] = ConfigStringIndex2.Items + MAX_ITEMS] = "PlayerSkins";
|
|
470
|
-
ConfigStringIndex2[ConfigStringIndex2["General"] = ConfigStringIndex2.PlayerSkins + MAX_CLIENTS] = "General";
|
|
471
|
-
ConfigStringIndex2[ConfigStringIndex2["WheelWeapons"] = ConfigStringIndex2.General + MAX_GENERAL] = "WheelWeapons";
|
|
472
|
-
ConfigStringIndex2[ConfigStringIndex2["WheelAmmo"] = ConfigStringIndex2.WheelWeapons + MAX_WHEEL_ITEMS] = "WheelAmmo";
|
|
473
|
-
ConfigStringIndex2[ConfigStringIndex2["WheelPowerups"] = ConfigStringIndex2.WheelAmmo + MAX_WHEEL_ITEMS] = "WheelPowerups";
|
|
474
|
-
ConfigStringIndex2[ConfigStringIndex2["CdLoopCount"] = ConfigStringIndex2.WheelPowerups + MAX_WHEEL_ITEMS] = "CdLoopCount";
|
|
475
|
-
ConfigStringIndex2[ConfigStringIndex2["GameStyle"] = ConfigStringIndex2.CdLoopCount + 1] = "GameStyle";
|
|
476
|
-
ConfigStringIndex2[ConfigStringIndex2["MaxConfigStrings"] = ConfigStringIndex2.GameStyle + 1] = "MaxConfigStrings";
|
|
477
|
-
return ConfigStringIndex2;
|
|
478
|
-
})(ConfigStringIndex || {});
|
|
479
|
-
var MAX_CONFIGSTRINGS = ConfigStringIndex.MaxConfigStrings;
|
|
480
|
-
var replay_exports = {};
|
|
481
|
-
__export(replay_exports, {
|
|
482
|
-
addReplayFrame: () => addReplayFrame,
|
|
483
|
-
createReplaySession: () => createReplaySession,
|
|
484
|
-
deserializeReplay: () => deserializeReplay,
|
|
485
|
-
serializeReplay: () => serializeReplay
|
|
486
|
-
});
|
|
487
246
|
function serializeReplay(session) {
|
|
488
247
|
return JSON.stringify(session, null, 2);
|
|
489
248
|
}
|
|
@@ -512,13 +271,6 @@ function addReplayFrame(session, cmd, serverFrame, startTime) {
|
|
|
512
271
|
timestamp: Date.now() - startTime
|
|
513
272
|
});
|
|
514
273
|
}
|
|
515
|
-
var WaterLevel = /* @__PURE__ */ ((WaterLevel4) => {
|
|
516
|
-
WaterLevel4[WaterLevel4["None"] = 0] = "None";
|
|
517
|
-
WaterLevel4[WaterLevel4["Feet"] = 1] = "Feet";
|
|
518
|
-
WaterLevel4[WaterLevel4["Waist"] = 2] = "Waist";
|
|
519
|
-
WaterLevel4[WaterLevel4["Under"] = 3] = "Under";
|
|
520
|
-
return WaterLevel4;
|
|
521
|
-
})(WaterLevel || {});
|
|
522
274
|
function applyPmoveFriction(params) {
|
|
523
275
|
const {
|
|
524
276
|
velocity,
|
|
@@ -617,111 +369,6 @@ function buildWaterWish(params) {
|
|
|
617
369
|
wishspeed
|
|
618
370
|
};
|
|
619
371
|
}
|
|
620
|
-
var WATERJUMP_CLEAR = 8 | 16 | 32 | 1024;
|
|
621
|
-
var ServerCommand = /* @__PURE__ */ ((ServerCommand22) => {
|
|
622
|
-
ServerCommand22[ServerCommand22["bad"] = 0] = "bad";
|
|
623
|
-
ServerCommand22[ServerCommand22["muzzleflash"] = 1] = "muzzleflash";
|
|
624
|
-
ServerCommand22[ServerCommand22["muzzleflash2"] = 2] = "muzzleflash2";
|
|
625
|
-
ServerCommand22[ServerCommand22["temp_entity"] = 3] = "temp_entity";
|
|
626
|
-
ServerCommand22[ServerCommand22["layout"] = 4] = "layout";
|
|
627
|
-
ServerCommand22[ServerCommand22["inventory"] = 5] = "inventory";
|
|
628
|
-
ServerCommand22[ServerCommand22["nop"] = 6] = "nop";
|
|
629
|
-
ServerCommand22[ServerCommand22["disconnect"] = 7] = "disconnect";
|
|
630
|
-
ServerCommand22[ServerCommand22["reconnect"] = 8] = "reconnect";
|
|
631
|
-
ServerCommand22[ServerCommand22["sound"] = 9] = "sound";
|
|
632
|
-
ServerCommand22[ServerCommand22["print"] = 10] = "print";
|
|
633
|
-
ServerCommand22[ServerCommand22["stufftext"] = 11] = "stufftext";
|
|
634
|
-
ServerCommand22[ServerCommand22["serverdata"] = 12] = "serverdata";
|
|
635
|
-
ServerCommand22[ServerCommand22["configstring"] = 13] = "configstring";
|
|
636
|
-
ServerCommand22[ServerCommand22["spawnbaseline"] = 14] = "spawnbaseline";
|
|
637
|
-
ServerCommand22[ServerCommand22["centerprint"] = 15] = "centerprint";
|
|
638
|
-
ServerCommand22[ServerCommand22["download"] = 16] = "download";
|
|
639
|
-
ServerCommand22[ServerCommand22["playerinfo"] = 17] = "playerinfo";
|
|
640
|
-
ServerCommand22[ServerCommand22["packetentities"] = 18] = "packetentities";
|
|
641
|
-
ServerCommand22[ServerCommand22["deltapacketentities"] = 19] = "deltapacketentities";
|
|
642
|
-
ServerCommand22[ServerCommand22["frame"] = 20] = "frame";
|
|
643
|
-
ServerCommand22[ServerCommand22["splitclient"] = 21] = "splitclient";
|
|
644
|
-
ServerCommand22[ServerCommand22["configblast"] = 22] = "configblast";
|
|
645
|
-
ServerCommand22[ServerCommand22["spawnbaselineblast"] = 23] = "spawnbaselineblast";
|
|
646
|
-
ServerCommand22[ServerCommand22["level_restart"] = 24] = "level_restart";
|
|
647
|
-
ServerCommand22[ServerCommand22["damage"] = 25] = "damage";
|
|
648
|
-
ServerCommand22[ServerCommand22["locprint"] = 26] = "locprint";
|
|
649
|
-
ServerCommand22[ServerCommand22["fog"] = 27] = "fog";
|
|
650
|
-
ServerCommand22[ServerCommand22["waitingforplayers"] = 28] = "waitingforplayers";
|
|
651
|
-
ServerCommand22[ServerCommand22["bot_chat"] = 29] = "bot_chat";
|
|
652
|
-
ServerCommand22[ServerCommand22["poi"] = 30] = "poi";
|
|
653
|
-
ServerCommand22[ServerCommand22["help_path"] = 31] = "help_path";
|
|
654
|
-
ServerCommand22[ServerCommand22["muzzleflash3"] = 32] = "muzzleflash3";
|
|
655
|
-
ServerCommand22[ServerCommand22["achievement"] = 33] = "achievement";
|
|
656
|
-
return ServerCommand22;
|
|
657
|
-
})(ServerCommand || {});
|
|
658
|
-
var TempEntity = /* @__PURE__ */ ((TempEntity2) => {
|
|
659
|
-
TempEntity2[TempEntity2["GUNSHOT"] = 0] = "GUNSHOT";
|
|
660
|
-
TempEntity2[TempEntity2["BLOOD"] = 1] = "BLOOD";
|
|
661
|
-
TempEntity2[TempEntity2["BLASTER"] = 2] = "BLASTER";
|
|
662
|
-
TempEntity2[TempEntity2["RAILTRAIL"] = 3] = "RAILTRAIL";
|
|
663
|
-
TempEntity2[TempEntity2["SHOTGUN"] = 4] = "SHOTGUN";
|
|
664
|
-
TempEntity2[TempEntity2["EXPLOSION1"] = 5] = "EXPLOSION1";
|
|
665
|
-
TempEntity2[TempEntity2["EXPLOSION2"] = 6] = "EXPLOSION2";
|
|
666
|
-
TempEntity2[TempEntity2["ROCKET_EXPLOSION"] = 7] = "ROCKET_EXPLOSION";
|
|
667
|
-
TempEntity2[TempEntity2["GRENADE_EXPLOSION"] = 8] = "GRENADE_EXPLOSION";
|
|
668
|
-
TempEntity2[TempEntity2["SPARKS"] = 9] = "SPARKS";
|
|
669
|
-
TempEntity2[TempEntity2["SPLASH"] = 10] = "SPLASH";
|
|
670
|
-
TempEntity2[TempEntity2["BUBBLETRAIL"] = 11] = "BUBBLETRAIL";
|
|
671
|
-
TempEntity2[TempEntity2["SCREEN_SPARKS"] = 12] = "SCREEN_SPARKS";
|
|
672
|
-
TempEntity2[TempEntity2["SHIELD_SPARKS"] = 13] = "SHIELD_SPARKS";
|
|
673
|
-
TempEntity2[TempEntity2["BULLET_SPARKS"] = 14] = "BULLET_SPARKS";
|
|
674
|
-
TempEntity2[TempEntity2["LASER_SPARKS"] = 15] = "LASER_SPARKS";
|
|
675
|
-
TempEntity2[TempEntity2["PARASITE_ATTACK"] = 16] = "PARASITE_ATTACK";
|
|
676
|
-
TempEntity2[TempEntity2["ROCKET_EXPLOSION_WATER"] = 17] = "ROCKET_EXPLOSION_WATER";
|
|
677
|
-
TempEntity2[TempEntity2["GRENADE_EXPLOSION_WATER"] = 18] = "GRENADE_EXPLOSION_WATER";
|
|
678
|
-
TempEntity2[TempEntity2["MEDIC_CABLE_ATTACK"] = 19] = "MEDIC_CABLE_ATTACK";
|
|
679
|
-
TempEntity2[TempEntity2["BFG_EXPLOSION"] = 20] = "BFG_EXPLOSION";
|
|
680
|
-
TempEntity2[TempEntity2["BFG_BIGEXPLOSION"] = 21] = "BFG_BIGEXPLOSION";
|
|
681
|
-
TempEntity2[TempEntity2["BOSSTPORT"] = 22] = "BOSSTPORT";
|
|
682
|
-
TempEntity2[TempEntity2["BFG_LASER"] = 23] = "BFG_LASER";
|
|
683
|
-
TempEntity2[TempEntity2["GRAPPLE_CABLE"] = 24] = "GRAPPLE_CABLE";
|
|
684
|
-
TempEntity2[TempEntity2["WELDING_SPARKS"] = 25] = "WELDING_SPARKS";
|
|
685
|
-
TempEntity2[TempEntity2["GREENBLOOD"] = 26] = "GREENBLOOD";
|
|
686
|
-
TempEntity2[TempEntity2["BLUEHYPERBLASTER"] = 27] = "BLUEHYPERBLASTER";
|
|
687
|
-
TempEntity2[TempEntity2["PLASMA_EXPLOSION"] = 28] = "PLASMA_EXPLOSION";
|
|
688
|
-
TempEntity2[TempEntity2["TUNNEL_SPARKS"] = 29] = "TUNNEL_SPARKS";
|
|
689
|
-
TempEntity2[TempEntity2["BLASTER2"] = 30] = "BLASTER2";
|
|
690
|
-
TempEntity2[TempEntity2["RAILTRAIL2"] = 31] = "RAILTRAIL2";
|
|
691
|
-
TempEntity2[TempEntity2["FLAME"] = 32] = "FLAME";
|
|
692
|
-
TempEntity2[TempEntity2["LIGHTNING"] = 33] = "LIGHTNING";
|
|
693
|
-
TempEntity2[TempEntity2["DEBUGTRAIL"] = 34] = "DEBUGTRAIL";
|
|
694
|
-
TempEntity2[TempEntity2["PLAIN_EXPLOSION"] = 35] = "PLAIN_EXPLOSION";
|
|
695
|
-
TempEntity2[TempEntity2["FLASHLIGHT"] = 36] = "FLASHLIGHT";
|
|
696
|
-
TempEntity2[TempEntity2["FORCEWALL"] = 37] = "FORCEWALL";
|
|
697
|
-
TempEntity2[TempEntity2["HEATBEAM"] = 38] = "HEATBEAM";
|
|
698
|
-
TempEntity2[TempEntity2["MONSTER_HEATBEAM"] = 39] = "MONSTER_HEATBEAM";
|
|
699
|
-
TempEntity2[TempEntity2["STEAM"] = 40] = "STEAM";
|
|
700
|
-
TempEntity2[TempEntity2["BUBBLETRAIL2"] = 41] = "BUBBLETRAIL2";
|
|
701
|
-
TempEntity2[TempEntity2["MOREBLOOD"] = 42] = "MOREBLOOD";
|
|
702
|
-
TempEntity2[TempEntity2["HEATBEAM_SPARKS"] = 43] = "HEATBEAM_SPARKS";
|
|
703
|
-
TempEntity2[TempEntity2["HEATBEAM_STEAM"] = 44] = "HEATBEAM_STEAM";
|
|
704
|
-
TempEntity2[TempEntity2["CHAINFIST_SMOKE"] = 45] = "CHAINFIST_SMOKE";
|
|
705
|
-
TempEntity2[TempEntity2["ELECTRIC_SPARKS"] = 46] = "ELECTRIC_SPARKS";
|
|
706
|
-
TempEntity2[TempEntity2["TRACKER_EXPLOSION"] = 47] = "TRACKER_EXPLOSION";
|
|
707
|
-
TempEntity2[TempEntity2["TELEPORT_EFFECT"] = 48] = "TELEPORT_EFFECT";
|
|
708
|
-
TempEntity2[TempEntity2["DBALL_GOAL"] = 49] = "DBALL_GOAL";
|
|
709
|
-
TempEntity2[TempEntity2["WIDOWBEAMOUT"] = 50] = "WIDOWBEAMOUT";
|
|
710
|
-
TempEntity2[TempEntity2["NUKEBLAST"] = 51] = "NUKEBLAST";
|
|
711
|
-
TempEntity2[TempEntity2["WIDOWSPLASH"] = 52] = "WIDOWSPLASH";
|
|
712
|
-
TempEntity2[TempEntity2["EXPLOSION1_BIG"] = 53] = "EXPLOSION1_BIG";
|
|
713
|
-
TempEntity2[TempEntity2["EXPLOSION1_NP"] = 54] = "EXPLOSION1_NP";
|
|
714
|
-
TempEntity2[TempEntity2["FLECHETTE"] = 55] = "FLECHETTE";
|
|
715
|
-
TempEntity2[TempEntity2["BLUEHYPERBLASTER_KEX"] = 56] = "BLUEHYPERBLASTER_KEX";
|
|
716
|
-
TempEntity2[TempEntity2["BFG_ZAP"] = 57] = "BFG_ZAP";
|
|
717
|
-
TempEntity2[TempEntity2["BERSERK_SLAM"] = 58] = "BERSERK_SLAM";
|
|
718
|
-
TempEntity2[TempEntity2["GRAPPLE_CABLE_2"] = 59] = "GRAPPLE_CABLE_2";
|
|
719
|
-
TempEntity2[TempEntity2["POWER_SPLASH"] = 60] = "POWER_SPLASH";
|
|
720
|
-
TempEntity2[TempEntity2["LIGHTNING_BEAM"] = 61] = "LIGHTNING_BEAM";
|
|
721
|
-
TempEntity2[TempEntity2["EXPLOSION1_NL"] = 62] = "EXPLOSION1_NL";
|
|
722
|
-
TempEntity2[TempEntity2["EXPLOSION2_NL"] = 63] = "EXPLOSION2_NL";
|
|
723
|
-
return TempEntity2;
|
|
724
|
-
})(TempEntity || {});
|
|
725
372
|
function toSigned16(val) {
|
|
726
373
|
return val << 16 >> 16;
|
|
727
374
|
}
|
|
@@ -767,191 +414,6 @@ function setCompressedInteger(stats, startIndex, id, count, bitsPerValue) {
|
|
|
767
414
|
const valueToWrite = base & ~mask | count << bitShift & mask;
|
|
768
415
|
writeUint16LE(stats, startIndex, byteOffset, valueToWrite & 65535);
|
|
769
416
|
}
|
|
770
|
-
var PowerupId = /* @__PURE__ */ ((PowerupId22) => {
|
|
771
|
-
PowerupId22["QuadDamage"] = "quad";
|
|
772
|
-
PowerupId22["Invulnerability"] = "invulnerability";
|
|
773
|
-
PowerupId22["EnviroSuit"] = "enviro_suit";
|
|
774
|
-
PowerupId22["Rebreather"] = "rebreather";
|
|
775
|
-
PowerupId22["Silencer"] = "silencer";
|
|
776
|
-
PowerupId22["PowerScreen"] = "power_screen";
|
|
777
|
-
PowerupId22["PowerShield"] = "power_shield";
|
|
778
|
-
PowerupId22["QuadFire"] = "quad_fire";
|
|
779
|
-
PowerupId22["Invisibility"] = "invisibility";
|
|
780
|
-
PowerupId22["Bandolier"] = "bandolier";
|
|
781
|
-
PowerupId22["AmmoPack"] = "ammo_pack";
|
|
782
|
-
PowerupId22["IRGoggles"] = "ir_goggles";
|
|
783
|
-
PowerupId22["DoubleDamage"] = "double_damage";
|
|
784
|
-
PowerupId22["SphereVengeance"] = "sphere_vengeance";
|
|
785
|
-
PowerupId22["SphereHunter"] = "sphere_hunter";
|
|
786
|
-
PowerupId22["SphereDefender"] = "sphere_defender";
|
|
787
|
-
PowerupId22["Doppelganger"] = "doppelganger";
|
|
788
|
-
PowerupId22["TagToken"] = "tag_token";
|
|
789
|
-
PowerupId22["TechResistance"] = "tech_resistance";
|
|
790
|
-
PowerupId22["TechStrength"] = "tech_strength";
|
|
791
|
-
PowerupId22["TechHaste"] = "tech_haste";
|
|
792
|
-
PowerupId22["TechRegeneration"] = "tech_regeneration";
|
|
793
|
-
PowerupId22["Flashlight"] = "flashlight";
|
|
794
|
-
PowerupId22["Compass"] = "compass";
|
|
795
|
-
return PowerupId22;
|
|
796
|
-
})(PowerupId || {});
|
|
797
|
-
var PlayerStat = /* @__PURE__ */ ((PlayerStat2) => {
|
|
798
|
-
PlayerStat2[PlayerStat2["STAT_HEALTH_ICON"] = 0] = "STAT_HEALTH_ICON";
|
|
799
|
-
PlayerStat2[PlayerStat2["STAT_HEALTH"] = 1] = "STAT_HEALTH";
|
|
800
|
-
PlayerStat2[PlayerStat2["STAT_AMMO_ICON"] = 2] = "STAT_AMMO_ICON";
|
|
801
|
-
PlayerStat2[PlayerStat2["STAT_AMMO"] = 3] = "STAT_AMMO";
|
|
802
|
-
PlayerStat2[PlayerStat2["STAT_ARMOR_ICON"] = 4] = "STAT_ARMOR_ICON";
|
|
803
|
-
PlayerStat2[PlayerStat2["STAT_ARMOR"] = 5] = "STAT_ARMOR";
|
|
804
|
-
PlayerStat2[PlayerStat2["STAT_SELECTED_ICON"] = 6] = "STAT_SELECTED_ICON";
|
|
805
|
-
PlayerStat2[PlayerStat2["STAT_PICKUP_ICON"] = 7] = "STAT_PICKUP_ICON";
|
|
806
|
-
PlayerStat2[PlayerStat2["STAT_PICKUP_STRING"] = 8] = "STAT_PICKUP_STRING";
|
|
807
|
-
PlayerStat2[PlayerStat2["STAT_TIMER_ICON"] = 9] = "STAT_TIMER_ICON";
|
|
808
|
-
PlayerStat2[PlayerStat2["STAT_TIMER"] = 10] = "STAT_TIMER";
|
|
809
|
-
PlayerStat2[PlayerStat2["STAT_HELPICON"] = 11] = "STAT_HELPICON";
|
|
810
|
-
PlayerStat2[PlayerStat2["STAT_SELECTED_ITEM"] = 12] = "STAT_SELECTED_ITEM";
|
|
811
|
-
PlayerStat2[PlayerStat2["STAT_LAYOUTS"] = 13] = "STAT_LAYOUTS";
|
|
812
|
-
PlayerStat2[PlayerStat2["STAT_FRAGS"] = 14] = "STAT_FRAGS";
|
|
813
|
-
PlayerStat2[PlayerStat2["STAT_FLASHES"] = 15] = "STAT_FLASHES";
|
|
814
|
-
PlayerStat2[PlayerStat2["STAT_CHASE"] = 16] = "STAT_CHASE";
|
|
815
|
-
PlayerStat2[PlayerStat2["STAT_SPECTATOR"] = 17] = "STAT_SPECTATOR";
|
|
816
|
-
PlayerStat2[PlayerStat2["STAT_CTF_TEAM1_PIC"] = 18] = "STAT_CTF_TEAM1_PIC";
|
|
817
|
-
PlayerStat2[PlayerStat2["STAT_CTF_TEAM1_CAPS"] = 19] = "STAT_CTF_TEAM1_CAPS";
|
|
818
|
-
PlayerStat2[PlayerStat2["STAT_CTF_TEAM2_PIC"] = 20] = "STAT_CTF_TEAM2_PIC";
|
|
819
|
-
PlayerStat2[PlayerStat2["STAT_CTF_TEAM2_CAPS"] = 21] = "STAT_CTF_TEAM2_CAPS";
|
|
820
|
-
PlayerStat2[PlayerStat2["STAT_CTF_FLAG_PIC"] = 22] = "STAT_CTF_FLAG_PIC";
|
|
821
|
-
PlayerStat2[PlayerStat2["STAT_CTF_JOINED_TEAM1_PIC"] = 23] = "STAT_CTF_JOINED_TEAM1_PIC";
|
|
822
|
-
PlayerStat2[PlayerStat2["STAT_CTF_JOINED_TEAM2_PIC"] = 24] = "STAT_CTF_JOINED_TEAM2_PIC";
|
|
823
|
-
PlayerStat2[PlayerStat2["STAT_CTF_TEAM1_HEADER"] = 25] = "STAT_CTF_TEAM1_HEADER";
|
|
824
|
-
PlayerStat2[PlayerStat2["STAT_CTF_TEAM2_HEADER"] = 26] = "STAT_CTF_TEAM2_HEADER";
|
|
825
|
-
PlayerStat2[PlayerStat2["STAT_CTF_TECH"] = 27] = "STAT_CTF_TECH";
|
|
826
|
-
PlayerStat2[PlayerStat2["STAT_CTF_ID_VIEW"] = 28] = "STAT_CTF_ID_VIEW";
|
|
827
|
-
PlayerStat2[PlayerStat2["STAT_CTF_MATCH"] = 29] = "STAT_CTF_MATCH";
|
|
828
|
-
PlayerStat2[PlayerStat2["STAT_CTF_ID_VIEW_COLOR"] = 30] = "STAT_CTF_ID_VIEW_COLOR";
|
|
829
|
-
PlayerStat2[PlayerStat2["STAT_CTF_TEAMINFO"] = 31] = "STAT_CTF_TEAMINFO";
|
|
830
|
-
PlayerStat2[PlayerStat2["STAT_WEAPONS_OWNED_1"] = 32] = "STAT_WEAPONS_OWNED_1";
|
|
831
|
-
PlayerStat2[PlayerStat2["STAT_WEAPONS_OWNED_2"] = 33] = "STAT_WEAPONS_OWNED_2";
|
|
832
|
-
PlayerStat2[PlayerStat2["STAT_AMMO_INFO_START"] = 34] = "STAT_AMMO_INFO_START";
|
|
833
|
-
PlayerStat2[PlayerStat2["STAT_POWERUP_INFO_START"] = 41] = "STAT_POWERUP_INFO_START";
|
|
834
|
-
PlayerStat2[PlayerStat2["STAT_KEY_A"] = 44] = "STAT_KEY_A";
|
|
835
|
-
PlayerStat2[PlayerStat2["STAT_KEY_B"] = 45] = "STAT_KEY_B";
|
|
836
|
-
PlayerStat2[PlayerStat2["STAT_KEY_C"] = 46] = "STAT_KEY_C";
|
|
837
|
-
PlayerStat2[PlayerStat2["STAT_ACTIVE_WHEEL_WEAPON"] = 47] = "STAT_ACTIVE_WHEEL_WEAPON";
|
|
838
|
-
PlayerStat2[PlayerStat2["STAT_COOP_RESPAWN"] = 48] = "STAT_COOP_RESPAWN";
|
|
839
|
-
PlayerStat2[PlayerStat2["STAT_LIVES"] = 49] = "STAT_LIVES";
|
|
840
|
-
PlayerStat2[PlayerStat2["STAT_HIT_MARKER"] = 50] = "STAT_HIT_MARKER";
|
|
841
|
-
PlayerStat2[PlayerStat2["STAT_SELECTED_ITEM_NAME"] = 51] = "STAT_SELECTED_ITEM_NAME";
|
|
842
|
-
PlayerStat2[PlayerStat2["STAT_HEALTH_BARS"] = 52] = "STAT_HEALTH_BARS";
|
|
843
|
-
PlayerStat2[PlayerStat2["STAT_ACTIVE_WEAPON"] = 53] = "STAT_ACTIVE_WEAPON";
|
|
844
|
-
PlayerStat2[PlayerStat2["STAT_LAST"] = 54] = "STAT_LAST";
|
|
845
|
-
return PlayerStat2;
|
|
846
|
-
})(PlayerStat || {});
|
|
847
|
-
var AMMO_MAX = 12;
|
|
848
|
-
var NUM_BITS_FOR_AMMO = 9;
|
|
849
|
-
var NUM_AMMO_STATS = Math.ceil(AMMO_MAX * NUM_BITS_FOR_AMMO / 16);
|
|
850
|
-
var POWERUP_MAX = 23;
|
|
851
|
-
var NUM_BITS_FOR_POWERUP = 2;
|
|
852
|
-
var NUM_POWERUP_STATS = Math.ceil(POWERUP_MAX * NUM_BITS_FOR_POWERUP / 16);
|
|
853
|
-
var POWERUP_STAT_MAP = {
|
|
854
|
-
[
|
|
855
|
-
"power_screen"
|
|
856
|
-
/* PowerScreen */
|
|
857
|
-
]: 0,
|
|
858
|
-
[
|
|
859
|
-
"power_shield"
|
|
860
|
-
/* PowerShield */
|
|
861
|
-
]: 1,
|
|
862
|
-
// 2 is POWERUP_AM_BOMB (not in PowerupId?)
|
|
863
|
-
[
|
|
864
|
-
"quad"
|
|
865
|
-
/* QuadDamage */
|
|
866
|
-
]: 3,
|
|
867
|
-
[
|
|
868
|
-
"quad_fire"
|
|
869
|
-
/* QuadFire */
|
|
870
|
-
]: 4,
|
|
871
|
-
[
|
|
872
|
-
"invulnerability"
|
|
873
|
-
/* Invulnerability */
|
|
874
|
-
]: 5,
|
|
875
|
-
[
|
|
876
|
-
"invisibility"
|
|
877
|
-
/* Invisibility */
|
|
878
|
-
]: 6,
|
|
879
|
-
[
|
|
880
|
-
"silencer"
|
|
881
|
-
/* Silencer */
|
|
882
|
-
]: 7,
|
|
883
|
-
[
|
|
884
|
-
"rebreather"
|
|
885
|
-
/* Rebreather */
|
|
886
|
-
]: 8,
|
|
887
|
-
[
|
|
888
|
-
"enviro_suit"
|
|
889
|
-
/* EnviroSuit */
|
|
890
|
-
]: 9,
|
|
891
|
-
[
|
|
892
|
-
"bandolier"
|
|
893
|
-
/* Bandolier */
|
|
894
|
-
]: 10,
|
|
895
|
-
// Placeholder/Map mismatch handling?
|
|
896
|
-
[
|
|
897
|
-
"ammo_pack"
|
|
898
|
-
/* AmmoPack */
|
|
899
|
-
]: 10,
|
|
900
|
-
// Original reused indices or had gaps?
|
|
901
|
-
[
|
|
902
|
-
"ir_goggles"
|
|
903
|
-
/* IRGoggles */
|
|
904
|
-
]: 11,
|
|
905
|
-
[
|
|
906
|
-
"double_damage"
|
|
907
|
-
/* DoubleDamage */
|
|
908
|
-
]: 12,
|
|
909
|
-
[
|
|
910
|
-
"sphere_vengeance"
|
|
911
|
-
/* SphereVengeance */
|
|
912
|
-
]: 13,
|
|
913
|
-
[
|
|
914
|
-
"sphere_hunter"
|
|
915
|
-
/* SphereHunter */
|
|
916
|
-
]: 14,
|
|
917
|
-
[
|
|
918
|
-
"sphere_defender"
|
|
919
|
-
/* SphereDefender */
|
|
920
|
-
]: 15,
|
|
921
|
-
[
|
|
922
|
-
"doppelganger"
|
|
923
|
-
/* Doppelganger */
|
|
924
|
-
]: 16,
|
|
925
|
-
[
|
|
926
|
-
"flashlight"
|
|
927
|
-
/* Flashlight */
|
|
928
|
-
]: 17,
|
|
929
|
-
[
|
|
930
|
-
"compass"
|
|
931
|
-
/* Compass */
|
|
932
|
-
]: 18,
|
|
933
|
-
[
|
|
934
|
-
"tech_resistance"
|
|
935
|
-
/* TechResistance */
|
|
936
|
-
]: 19,
|
|
937
|
-
[
|
|
938
|
-
"tech_strength"
|
|
939
|
-
/* TechStrength */
|
|
940
|
-
]: 20,
|
|
941
|
-
[
|
|
942
|
-
"tech_haste"
|
|
943
|
-
/* TechHaste */
|
|
944
|
-
]: 21,
|
|
945
|
-
[
|
|
946
|
-
"tech_regeneration"
|
|
947
|
-
/* TechRegeneration */
|
|
948
|
-
]: 22,
|
|
949
|
-
// Add missing mappings to avoid runtime lookups failing for new types
|
|
950
|
-
[
|
|
951
|
-
"tag_token"
|
|
952
|
-
/* TagToken */
|
|
953
|
-
]: -1
|
|
954
|
-
};
|
|
955
417
|
function G_SetAmmoStat(stats, ammoId, count) {
|
|
956
418
|
if (ammoId < 0 || ammoId >= AMMO_MAX) return;
|
|
957
419
|
let val = count;
|
|
@@ -972,228 +434,800 @@ function G_SetPowerupStat(stats, powerupId, val) {
|
|
|
972
434
|
if (safeVal < 0) safeVal = 0;
|
|
973
435
|
setCompressedInteger(stats, 41, index, safeVal, NUM_BITS_FOR_POWERUP);
|
|
974
436
|
}
|
|
975
|
-
var entityFlags_exports
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
437
|
+
var __defProp2, __export2, ZERO_VEC3, STOP_EPSILON, DEG_TO_RAD, PITCH, YAW, ROLL, DEG2RAD_FACTOR, RAD2DEG_FACTOR, STATE_SIZE, MIDDLE_WORD, MATRIX_A, UPPER_MASK, LOWER_MASK, TWO_POW_32, MersenneTwister19937, RandomGenerator, CONTENTS_SOLID, CONTENTS_WINDOW, CONTENTS_AUX, CONTENTS_LAVA, CONTENTS_SLIME, CONTENTS_WATER, CONTENTS_MIST, CONTENTS_NO_WATERJUMP, CONTENTS_PROJECTILECLIP, CONTENTS_AREAPORTAL, CONTENTS_PLAYERCLIP, CONTENTS_MONSTERCLIP, CONTENTS_CURRENT_0, CONTENTS_CURRENT_90, CONTENTS_CURRENT_180, CONTENTS_CURRENT_270, CONTENTS_CURRENT_UP, CONTENTS_CURRENT_DOWN, CONTENTS_ORIGIN, CONTENTS_MONSTER, CONTENTS_DEADMONSTER, CONTENTS_DETAIL, CONTENTS_TRANSLUCENT, CONTENTS_LADDER, CONTENTS_PLAYER, CONTENTS_PROJECTILE, SURF_LIGHT, SURF_SLICK, SURF_SKY, SURF_WARP, SURF_TRANS33, SURF_TRANS66, SURF_FLOWING, SURF_NODRAW, SURF_ALPHATEST, SURF_N64_UV, SURF_N64_SCROLL_X, SURF_N64_SCROLL_Y, SURF_N64_SCROLL_FLIP, MASK_SOLID, MASK_PLAYERSOLID, MASK_DEADSOLID, MASK_MONSTERSOLID, MASK_WATER, MASK_OPAQUE, MASK_SHOT, MASK_CURRENT, MASK_BLOCK_SIGHT, MASK_NAV_SOLID, MASK_LADDER_NAV_SOLID, MASK_WALK_NAV_SOLID, MASK_PROJECTILE, MAX_CHECKCOUNT, CvarFlags, MAX_CLIENTS, MAX_LIGHTSTYLES, MAX_MODELS, MAX_SOUNDS, MAX_IMAGES, MAX_ITEMS, MAX_GENERAL, MAX_SHADOW_LIGHTS, MAX_WHEEL_ITEMS, ConfigStringIndex, MAX_CONFIGSTRINGS, replay_exports, WaterLevel, WATERJUMP_CLEAR, ServerCommand, TempEntity, MZ_BLASTER, MZ_MACHINEGUN, MZ_SHOTGUN, MZ_CHAINGUN1, MZ_RAILGUN, MZ_ROCKET, MZ_GRENADE, MZ_SSHOTGUN, MZ_BFG, MZ_HYPERBLASTER, PowerupId, PlayerStat, AMMO_MAX, NUM_BITS_FOR_AMMO, NUM_AMMO_STATS, POWERUP_MAX, NUM_BITS_FOR_POWERUP, NUM_POWERUP_STATS, POWERUP_STAT_MAP, RenderFx, entityFlags_exports, U_NUMBER, U_MODEL, U_SOUND, U_ORIGIN1, U_ORIGIN2, U_ORIGIN3, U_ANGLE1, U_ANGLE2, U_ANGLE3, U_FRAME, U_SKIN, U_EFFECTS, U_RENDERFX, U_SOLID, U_EVENT, U_MOREBITS, U_MODEL2, U_MODEL3, U_MODEL4, U_REMOVE, FRAMETIME, MASK_WATER2, WaterLevel3, categorizePosition2, checkWater, applyPmove, WeaponId, AmmoType, AMMO_TYPE_COUNT, AmmoItemId, WEAPON_WHEEL_ORDER;
|
|
438
|
+
var init_esm = __esm({
|
|
439
|
+
"../shared/dist/esm/index.js"() {
|
|
440
|
+
"use strict";
|
|
441
|
+
__defProp2 = Object.defineProperty;
|
|
442
|
+
__export2 = (target, all) => {
|
|
443
|
+
for (var name in all)
|
|
444
|
+
__defProp2(target, name, { get: all[name], enumerable: true });
|
|
445
|
+
};
|
|
446
|
+
ZERO_VEC3 = { x: 0, y: 0, z: 0 };
|
|
447
|
+
STOP_EPSILON = 0.1;
|
|
448
|
+
DEG_TO_RAD = Math.PI / 180;
|
|
449
|
+
PITCH = 0;
|
|
450
|
+
YAW = 1;
|
|
451
|
+
ROLL = 2;
|
|
452
|
+
DEG2RAD_FACTOR = Math.PI / 180;
|
|
453
|
+
RAD2DEG_FACTOR = 180 / Math.PI;
|
|
454
|
+
STATE_SIZE = 624;
|
|
455
|
+
MIDDLE_WORD = 397;
|
|
456
|
+
MATRIX_A = 2567483615;
|
|
457
|
+
UPPER_MASK = 2147483648;
|
|
458
|
+
LOWER_MASK = 2147483647;
|
|
459
|
+
TWO_POW_32 = 4294967296;
|
|
460
|
+
MersenneTwister19937 = class {
|
|
461
|
+
constructor(seed = 5489) {
|
|
462
|
+
this.state = new Uint32Array(STATE_SIZE);
|
|
463
|
+
this.index = STATE_SIZE;
|
|
464
|
+
this.seed(seed);
|
|
465
|
+
}
|
|
466
|
+
seed(seed) {
|
|
467
|
+
this.state[0] = seed >>> 0;
|
|
468
|
+
for (let i = 1; i < STATE_SIZE; i++) {
|
|
469
|
+
const prev = this.state[i - 1] ^ this.state[i - 1] >>> 30;
|
|
470
|
+
const next = Math.imul(prev >>> 0, 1812433253) + i;
|
|
471
|
+
this.state[i] = next >>> 0;
|
|
472
|
+
}
|
|
473
|
+
this.index = STATE_SIZE;
|
|
474
|
+
}
|
|
475
|
+
nextUint32() {
|
|
476
|
+
if (this.index >= STATE_SIZE) {
|
|
477
|
+
this.twist();
|
|
478
|
+
}
|
|
479
|
+
let y = this.state[this.index++];
|
|
480
|
+
y ^= y >>> 11;
|
|
481
|
+
y ^= y << 7 & 2636928640;
|
|
482
|
+
y ^= y << 15 & 4022730752;
|
|
483
|
+
y ^= y >>> 18;
|
|
484
|
+
return y >>> 0;
|
|
485
|
+
}
|
|
486
|
+
twist() {
|
|
487
|
+
for (let i = 0; i < STATE_SIZE; i++) {
|
|
488
|
+
const y = this.state[i] & UPPER_MASK | this.state[(i + 1) % STATE_SIZE] & LOWER_MASK;
|
|
489
|
+
let next = this.state[(i + MIDDLE_WORD) % STATE_SIZE] ^ y >>> 1;
|
|
490
|
+
if ((y & 1) !== 0) {
|
|
491
|
+
next ^= MATRIX_A;
|
|
492
|
+
}
|
|
493
|
+
this.state[i] = next >>> 0;
|
|
494
|
+
}
|
|
495
|
+
this.index = 0;
|
|
496
|
+
}
|
|
497
|
+
getState() {
|
|
498
|
+
return {
|
|
499
|
+
index: this.index,
|
|
500
|
+
state: Array.from(this.state)
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
setState(snapshot) {
|
|
504
|
+
if (snapshot.state.length !== STATE_SIZE) {
|
|
505
|
+
throw new Error(`Expected ${STATE_SIZE} MT state values, received ${snapshot.state.length}`);
|
|
506
|
+
}
|
|
507
|
+
this.index = snapshot.index;
|
|
508
|
+
this.state = Uint32Array.from(snapshot.state, (value) => value >>> 0);
|
|
509
|
+
}
|
|
510
|
+
};
|
|
511
|
+
RandomGenerator = class {
|
|
512
|
+
constructor(options = {}) {
|
|
513
|
+
this.mt = new MersenneTwister19937(options.seed);
|
|
514
|
+
}
|
|
515
|
+
seed(seed) {
|
|
516
|
+
this.mt.seed(seed);
|
|
517
|
+
}
|
|
518
|
+
/** Uniform float in [0, 1). */
|
|
519
|
+
frandom() {
|
|
520
|
+
return this.mt.nextUint32() / TWO_POW_32;
|
|
521
|
+
}
|
|
522
|
+
/** Uniform float in [min, max). */
|
|
523
|
+
frandomRange(minInclusive, maxExclusive) {
|
|
524
|
+
return minInclusive + (maxExclusive - minInclusive) * this.frandom();
|
|
525
|
+
}
|
|
526
|
+
/** Uniform float in [0, max). */
|
|
527
|
+
frandomMax(maxExclusive) {
|
|
528
|
+
return this.frandomRange(0, maxExclusive);
|
|
529
|
+
}
|
|
530
|
+
/** Uniform float in [-1, 1). */
|
|
531
|
+
crandom() {
|
|
532
|
+
return this.frandomRange(-1, 1);
|
|
533
|
+
}
|
|
534
|
+
/** Uniform float in (-1, 1). */
|
|
535
|
+
crandomOpen() {
|
|
536
|
+
const epsilon = Number.EPSILON;
|
|
537
|
+
return this.frandomRange(-1 + epsilon, 1);
|
|
538
|
+
}
|
|
539
|
+
/** Raw uint32 sample. */
|
|
540
|
+
irandomUint32() {
|
|
541
|
+
return this.mt.nextUint32();
|
|
542
|
+
}
|
|
543
|
+
/** Uniform integer in [min, max). */
|
|
544
|
+
irandomRange(minInclusive, maxExclusive) {
|
|
545
|
+
if (maxExclusive - minInclusive <= 1) {
|
|
546
|
+
return minInclusive;
|
|
547
|
+
}
|
|
548
|
+
const span = maxExclusive - minInclusive;
|
|
549
|
+
const limit = TWO_POW_32 - TWO_POW_32 % span;
|
|
550
|
+
let sample;
|
|
551
|
+
do {
|
|
552
|
+
sample = this.mt.nextUint32();
|
|
553
|
+
} while (sample >= limit);
|
|
554
|
+
return minInclusive + sample % span;
|
|
555
|
+
}
|
|
556
|
+
/** Uniform integer in [0, max). */
|
|
557
|
+
irandom(maxExclusive) {
|
|
558
|
+
if (maxExclusive <= 0) {
|
|
559
|
+
return 0;
|
|
560
|
+
}
|
|
561
|
+
return this.irandomRange(0, maxExclusive);
|
|
562
|
+
}
|
|
563
|
+
/** Uniform time in milliseconds [min, max). */
|
|
564
|
+
randomTimeRange(minMs, maxMs) {
|
|
565
|
+
if (maxMs <= minMs) {
|
|
566
|
+
return minMs;
|
|
567
|
+
}
|
|
568
|
+
return this.irandomRange(minMs, maxMs);
|
|
569
|
+
}
|
|
570
|
+
/** Uniform time in milliseconds [0, max). */
|
|
571
|
+
randomTime(maxMs) {
|
|
572
|
+
return this.irandom(maxMs);
|
|
573
|
+
}
|
|
574
|
+
randomIndex(container) {
|
|
575
|
+
return this.irandom(container.length);
|
|
576
|
+
}
|
|
577
|
+
getState() {
|
|
578
|
+
return { mt: this.mt.getState() };
|
|
579
|
+
}
|
|
580
|
+
setState(snapshot) {
|
|
581
|
+
this.mt.setState(snapshot.mt);
|
|
582
|
+
}
|
|
583
|
+
};
|
|
584
|
+
CONTENTS_SOLID = 1 << 0;
|
|
585
|
+
CONTENTS_WINDOW = 1 << 1;
|
|
586
|
+
CONTENTS_AUX = 1 << 2;
|
|
587
|
+
CONTENTS_LAVA = 1 << 3;
|
|
588
|
+
CONTENTS_SLIME = 1 << 4;
|
|
589
|
+
CONTENTS_WATER = 1 << 5;
|
|
590
|
+
CONTENTS_MIST = 1 << 6;
|
|
591
|
+
CONTENTS_NO_WATERJUMP = 1 << 13;
|
|
592
|
+
CONTENTS_PROJECTILECLIP = 1 << 14;
|
|
593
|
+
CONTENTS_AREAPORTAL = 1 << 15;
|
|
594
|
+
CONTENTS_PLAYERCLIP = 1 << 16;
|
|
595
|
+
CONTENTS_MONSTERCLIP = 1 << 17;
|
|
596
|
+
CONTENTS_CURRENT_0 = 1 << 18;
|
|
597
|
+
CONTENTS_CURRENT_90 = 1 << 19;
|
|
598
|
+
CONTENTS_CURRENT_180 = 1 << 20;
|
|
599
|
+
CONTENTS_CURRENT_270 = 1 << 21;
|
|
600
|
+
CONTENTS_CURRENT_UP = 1 << 22;
|
|
601
|
+
CONTENTS_CURRENT_DOWN = 1 << 23;
|
|
602
|
+
CONTENTS_ORIGIN = 1 << 24;
|
|
603
|
+
CONTENTS_MONSTER = 1 << 25;
|
|
604
|
+
CONTENTS_DEADMONSTER = 1 << 26;
|
|
605
|
+
CONTENTS_DETAIL = 1 << 27;
|
|
606
|
+
CONTENTS_TRANSLUCENT = 1 << 28;
|
|
607
|
+
CONTENTS_LADDER = 1 << 29;
|
|
608
|
+
CONTENTS_PLAYER = 1 << 30;
|
|
609
|
+
CONTENTS_PROJECTILE = 1 << 31;
|
|
610
|
+
SURF_LIGHT = 1 << 0;
|
|
611
|
+
SURF_SLICK = 1 << 1;
|
|
612
|
+
SURF_SKY = 1 << 2;
|
|
613
|
+
SURF_WARP = 1 << 3;
|
|
614
|
+
SURF_TRANS33 = 1 << 4;
|
|
615
|
+
SURF_TRANS66 = 1 << 5;
|
|
616
|
+
SURF_FLOWING = 1 << 6;
|
|
617
|
+
SURF_NODRAW = 1 << 7;
|
|
618
|
+
SURF_ALPHATEST = 1 << 25;
|
|
619
|
+
SURF_N64_UV = 1 << 28;
|
|
620
|
+
SURF_N64_SCROLL_X = 1 << 29;
|
|
621
|
+
SURF_N64_SCROLL_Y = 1 << 30;
|
|
622
|
+
SURF_N64_SCROLL_FLIP = 1 << 31;
|
|
623
|
+
MASK_SOLID = CONTENTS_SOLID | CONTENTS_WINDOW;
|
|
624
|
+
MASK_PLAYERSOLID = CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_WINDOW | CONTENTS_MONSTER | CONTENTS_PLAYER;
|
|
625
|
+
MASK_DEADSOLID = CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_WINDOW;
|
|
626
|
+
MASK_MONSTERSOLID = CONTENTS_SOLID | CONTENTS_MONSTERCLIP | CONTENTS_WINDOW | CONTENTS_MONSTER | CONTENTS_PLAYER;
|
|
627
|
+
MASK_WATER = CONTENTS_WATER | CONTENTS_LAVA | CONTENTS_SLIME;
|
|
628
|
+
MASK_OPAQUE = CONTENTS_SOLID | CONTENTS_SLIME | CONTENTS_LAVA;
|
|
629
|
+
MASK_SHOT = CONTENTS_SOLID | CONTENTS_MONSTER | CONTENTS_PLAYER | CONTENTS_WINDOW | CONTENTS_DEADMONSTER;
|
|
630
|
+
MASK_CURRENT = CONTENTS_CURRENT_0 | CONTENTS_CURRENT_90 | CONTENTS_CURRENT_180 | CONTENTS_CURRENT_270 | CONTENTS_CURRENT_UP | CONTENTS_CURRENT_DOWN;
|
|
631
|
+
MASK_BLOCK_SIGHT = CONTENTS_SOLID | CONTENTS_LAVA | CONTENTS_SLIME | CONTENTS_MONSTER | CONTENTS_PLAYER;
|
|
632
|
+
MASK_NAV_SOLID = CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_WINDOW;
|
|
633
|
+
MASK_LADDER_NAV_SOLID = CONTENTS_SOLID | CONTENTS_WINDOW;
|
|
634
|
+
MASK_WALK_NAV_SOLID = CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_WINDOW | CONTENTS_MONSTERCLIP;
|
|
635
|
+
MASK_PROJECTILE = MASK_SHOT | CONTENTS_PROJECTILECLIP;
|
|
636
|
+
MAX_CHECKCOUNT = Number.MAX_SAFE_INTEGER - 1;
|
|
637
|
+
CvarFlags = /* @__PURE__ */ ((CvarFlags2) => {
|
|
638
|
+
CvarFlags2[CvarFlags2["None"] = 0] = "None";
|
|
639
|
+
CvarFlags2[CvarFlags2["Archive"] = 1] = "Archive";
|
|
640
|
+
CvarFlags2[CvarFlags2["UserInfo"] = 2] = "UserInfo";
|
|
641
|
+
CvarFlags2[CvarFlags2["ServerInfo"] = 4] = "ServerInfo";
|
|
642
|
+
CvarFlags2[CvarFlags2["Latch"] = 8] = "Latch";
|
|
643
|
+
CvarFlags2[CvarFlags2["Cheat"] = 16] = "Cheat";
|
|
644
|
+
return CvarFlags2;
|
|
645
|
+
})(CvarFlags || {});
|
|
646
|
+
MAX_CLIENTS = 256;
|
|
647
|
+
MAX_LIGHTSTYLES = 256;
|
|
648
|
+
MAX_MODELS = 8192;
|
|
649
|
+
MAX_SOUNDS = 2048;
|
|
650
|
+
MAX_IMAGES = 512;
|
|
651
|
+
MAX_ITEMS = 256;
|
|
652
|
+
MAX_GENERAL = MAX_CLIENTS * 2;
|
|
653
|
+
MAX_SHADOW_LIGHTS = 256;
|
|
654
|
+
MAX_WHEEL_ITEMS = 32;
|
|
655
|
+
ConfigStringIndex = ((ConfigStringIndex2) => {
|
|
656
|
+
ConfigStringIndex2[ConfigStringIndex2["Name"] = 0] = "Name";
|
|
657
|
+
ConfigStringIndex2[ConfigStringIndex2["CdTrack"] = 1] = "CdTrack";
|
|
658
|
+
ConfigStringIndex2[ConfigStringIndex2["Sky"] = 2] = "Sky";
|
|
659
|
+
ConfigStringIndex2[ConfigStringIndex2["SkyAxis"] = 3] = "SkyAxis";
|
|
660
|
+
ConfigStringIndex2[ConfigStringIndex2["SkyRotate"] = 4] = "SkyRotate";
|
|
661
|
+
ConfigStringIndex2[ConfigStringIndex2["StatusBar"] = 5] = "StatusBar";
|
|
662
|
+
ConfigStringIndex2[ConfigStringIndex2["CONFIG_N64_PHYSICS"] = 56] = "CONFIG_N64_PHYSICS";
|
|
663
|
+
ConfigStringIndex2[ConfigStringIndex2["CONFIG_CTF_TEAMS"] = 57] = "CONFIG_CTF_TEAMS";
|
|
664
|
+
ConfigStringIndex2[ConfigStringIndex2["CONFIG_COOP_RESPAWN_STRING"] = 58] = "CONFIG_COOP_RESPAWN_STRING";
|
|
665
|
+
ConfigStringIndex2[ConfigStringIndex2["AirAccel"] = 59] = "AirAccel";
|
|
666
|
+
ConfigStringIndex2[ConfigStringIndex2["MaxClients"] = 60] = "MaxClients";
|
|
667
|
+
ConfigStringIndex2[ConfigStringIndex2["MapChecksum"] = 61] = "MapChecksum";
|
|
668
|
+
ConfigStringIndex2[ConfigStringIndex2["Models"] = 62] = "Models";
|
|
669
|
+
ConfigStringIndex2[ConfigStringIndex2["Sounds"] = 62 + MAX_MODELS] = "Sounds";
|
|
670
|
+
ConfigStringIndex2[ConfigStringIndex2["Images"] = ConfigStringIndex2.Sounds + MAX_SOUNDS] = "Images";
|
|
671
|
+
ConfigStringIndex2[ConfigStringIndex2["Lights"] = ConfigStringIndex2.Images + MAX_IMAGES] = "Lights";
|
|
672
|
+
ConfigStringIndex2[ConfigStringIndex2["ShadowLights"] = ConfigStringIndex2.Lights + MAX_LIGHTSTYLES] = "ShadowLights";
|
|
673
|
+
ConfigStringIndex2[ConfigStringIndex2["Items"] = ConfigStringIndex2.ShadowLights + MAX_SHADOW_LIGHTS] = "Items";
|
|
674
|
+
ConfigStringIndex2[ConfigStringIndex2["PlayerSkins"] = ConfigStringIndex2.Items + MAX_ITEMS] = "PlayerSkins";
|
|
675
|
+
ConfigStringIndex2[ConfigStringIndex2["General"] = ConfigStringIndex2.PlayerSkins + MAX_CLIENTS] = "General";
|
|
676
|
+
ConfigStringIndex2[ConfigStringIndex2["WheelWeapons"] = ConfigStringIndex2.General + MAX_GENERAL] = "WheelWeapons";
|
|
677
|
+
ConfigStringIndex2[ConfigStringIndex2["WheelAmmo"] = ConfigStringIndex2.WheelWeapons + MAX_WHEEL_ITEMS] = "WheelAmmo";
|
|
678
|
+
ConfigStringIndex2[ConfigStringIndex2["WheelPowerups"] = ConfigStringIndex2.WheelAmmo + MAX_WHEEL_ITEMS] = "WheelPowerups";
|
|
679
|
+
ConfigStringIndex2[ConfigStringIndex2["CdLoopCount"] = ConfigStringIndex2.WheelPowerups + MAX_WHEEL_ITEMS] = "CdLoopCount";
|
|
680
|
+
ConfigStringIndex2[ConfigStringIndex2["GameStyle"] = ConfigStringIndex2.CdLoopCount + 1] = "GameStyle";
|
|
681
|
+
ConfigStringIndex2[ConfigStringIndex2["MaxConfigStrings"] = ConfigStringIndex2.GameStyle + 1] = "MaxConfigStrings";
|
|
682
|
+
return ConfigStringIndex2;
|
|
683
|
+
})(ConfigStringIndex || {});
|
|
684
|
+
MAX_CONFIGSTRINGS = ConfigStringIndex.MaxConfigStrings;
|
|
685
|
+
replay_exports = {};
|
|
686
|
+
__export2(replay_exports, {
|
|
687
|
+
addReplayFrame: () => addReplayFrame,
|
|
688
|
+
createReplaySession: () => createReplaySession,
|
|
689
|
+
deserializeReplay: () => deserializeReplay,
|
|
690
|
+
serializeReplay: () => serializeReplay
|
|
691
|
+
});
|
|
692
|
+
WaterLevel = /* @__PURE__ */ ((WaterLevel4) => {
|
|
693
|
+
WaterLevel4[WaterLevel4["None"] = 0] = "None";
|
|
694
|
+
WaterLevel4[WaterLevel4["Feet"] = 1] = "Feet";
|
|
695
|
+
WaterLevel4[WaterLevel4["Waist"] = 2] = "Waist";
|
|
696
|
+
WaterLevel4[WaterLevel4["Under"] = 3] = "Under";
|
|
697
|
+
return WaterLevel4;
|
|
698
|
+
})(WaterLevel || {});
|
|
699
|
+
WATERJUMP_CLEAR = 8 | 16 | 32 | 1024;
|
|
700
|
+
ServerCommand = /* @__PURE__ */ ((ServerCommand22) => {
|
|
701
|
+
ServerCommand22[ServerCommand22["bad"] = 0] = "bad";
|
|
702
|
+
ServerCommand22[ServerCommand22["muzzleflash"] = 1] = "muzzleflash";
|
|
703
|
+
ServerCommand22[ServerCommand22["muzzleflash2"] = 2] = "muzzleflash2";
|
|
704
|
+
ServerCommand22[ServerCommand22["temp_entity"] = 3] = "temp_entity";
|
|
705
|
+
ServerCommand22[ServerCommand22["layout"] = 4] = "layout";
|
|
706
|
+
ServerCommand22[ServerCommand22["inventory"] = 5] = "inventory";
|
|
707
|
+
ServerCommand22[ServerCommand22["nop"] = 6] = "nop";
|
|
708
|
+
ServerCommand22[ServerCommand22["disconnect"] = 7] = "disconnect";
|
|
709
|
+
ServerCommand22[ServerCommand22["reconnect"] = 8] = "reconnect";
|
|
710
|
+
ServerCommand22[ServerCommand22["sound"] = 9] = "sound";
|
|
711
|
+
ServerCommand22[ServerCommand22["print"] = 10] = "print";
|
|
712
|
+
ServerCommand22[ServerCommand22["stufftext"] = 11] = "stufftext";
|
|
713
|
+
ServerCommand22[ServerCommand22["serverdata"] = 12] = "serverdata";
|
|
714
|
+
ServerCommand22[ServerCommand22["configstring"] = 13] = "configstring";
|
|
715
|
+
ServerCommand22[ServerCommand22["spawnbaseline"] = 14] = "spawnbaseline";
|
|
716
|
+
ServerCommand22[ServerCommand22["centerprint"] = 15] = "centerprint";
|
|
717
|
+
ServerCommand22[ServerCommand22["download"] = 16] = "download";
|
|
718
|
+
ServerCommand22[ServerCommand22["playerinfo"] = 17] = "playerinfo";
|
|
719
|
+
ServerCommand22[ServerCommand22["packetentities"] = 18] = "packetentities";
|
|
720
|
+
ServerCommand22[ServerCommand22["deltapacketentities"] = 19] = "deltapacketentities";
|
|
721
|
+
ServerCommand22[ServerCommand22["frame"] = 20] = "frame";
|
|
722
|
+
ServerCommand22[ServerCommand22["splitclient"] = 21] = "splitclient";
|
|
723
|
+
ServerCommand22[ServerCommand22["configblast"] = 22] = "configblast";
|
|
724
|
+
ServerCommand22[ServerCommand22["spawnbaselineblast"] = 23] = "spawnbaselineblast";
|
|
725
|
+
ServerCommand22[ServerCommand22["level_restart"] = 24] = "level_restart";
|
|
726
|
+
ServerCommand22[ServerCommand22["damage"] = 25] = "damage";
|
|
727
|
+
ServerCommand22[ServerCommand22["locprint"] = 26] = "locprint";
|
|
728
|
+
ServerCommand22[ServerCommand22["fog"] = 27] = "fog";
|
|
729
|
+
ServerCommand22[ServerCommand22["waitingforplayers"] = 28] = "waitingforplayers";
|
|
730
|
+
ServerCommand22[ServerCommand22["bot_chat"] = 29] = "bot_chat";
|
|
731
|
+
ServerCommand22[ServerCommand22["poi"] = 30] = "poi";
|
|
732
|
+
ServerCommand22[ServerCommand22["help_path"] = 31] = "help_path";
|
|
733
|
+
ServerCommand22[ServerCommand22["muzzleflash3"] = 32] = "muzzleflash3";
|
|
734
|
+
ServerCommand22[ServerCommand22["achievement"] = 33] = "achievement";
|
|
735
|
+
return ServerCommand22;
|
|
736
|
+
})(ServerCommand || {});
|
|
737
|
+
TempEntity = /* @__PURE__ */ ((TempEntity2) => {
|
|
738
|
+
TempEntity2[TempEntity2["GUNSHOT"] = 0] = "GUNSHOT";
|
|
739
|
+
TempEntity2[TempEntity2["BLOOD"] = 1] = "BLOOD";
|
|
740
|
+
TempEntity2[TempEntity2["BLASTER"] = 2] = "BLASTER";
|
|
741
|
+
TempEntity2[TempEntity2["RAILTRAIL"] = 3] = "RAILTRAIL";
|
|
742
|
+
TempEntity2[TempEntity2["SHOTGUN"] = 4] = "SHOTGUN";
|
|
743
|
+
TempEntity2[TempEntity2["EXPLOSION1"] = 5] = "EXPLOSION1";
|
|
744
|
+
TempEntity2[TempEntity2["EXPLOSION2"] = 6] = "EXPLOSION2";
|
|
745
|
+
TempEntity2[TempEntity2["ROCKET_EXPLOSION"] = 7] = "ROCKET_EXPLOSION";
|
|
746
|
+
TempEntity2[TempEntity2["GRENADE_EXPLOSION"] = 8] = "GRENADE_EXPLOSION";
|
|
747
|
+
TempEntity2[TempEntity2["SPARKS"] = 9] = "SPARKS";
|
|
748
|
+
TempEntity2[TempEntity2["SPLASH"] = 10] = "SPLASH";
|
|
749
|
+
TempEntity2[TempEntity2["BUBBLETRAIL"] = 11] = "BUBBLETRAIL";
|
|
750
|
+
TempEntity2[TempEntity2["SCREEN_SPARKS"] = 12] = "SCREEN_SPARKS";
|
|
751
|
+
TempEntity2[TempEntity2["SHIELD_SPARKS"] = 13] = "SHIELD_SPARKS";
|
|
752
|
+
TempEntity2[TempEntity2["BULLET_SPARKS"] = 14] = "BULLET_SPARKS";
|
|
753
|
+
TempEntity2[TempEntity2["LASER_SPARKS"] = 15] = "LASER_SPARKS";
|
|
754
|
+
TempEntity2[TempEntity2["PARASITE_ATTACK"] = 16] = "PARASITE_ATTACK";
|
|
755
|
+
TempEntity2[TempEntity2["ROCKET_EXPLOSION_WATER"] = 17] = "ROCKET_EXPLOSION_WATER";
|
|
756
|
+
TempEntity2[TempEntity2["GRENADE_EXPLOSION_WATER"] = 18] = "GRENADE_EXPLOSION_WATER";
|
|
757
|
+
TempEntity2[TempEntity2["MEDIC_CABLE_ATTACK"] = 19] = "MEDIC_CABLE_ATTACK";
|
|
758
|
+
TempEntity2[TempEntity2["BFG_EXPLOSION"] = 20] = "BFG_EXPLOSION";
|
|
759
|
+
TempEntity2[TempEntity2["BFG_BIGEXPLOSION"] = 21] = "BFG_BIGEXPLOSION";
|
|
760
|
+
TempEntity2[TempEntity2["BOSSTPORT"] = 22] = "BOSSTPORT";
|
|
761
|
+
TempEntity2[TempEntity2["BFG_LASER"] = 23] = "BFG_LASER";
|
|
762
|
+
TempEntity2[TempEntity2["GRAPPLE_CABLE"] = 24] = "GRAPPLE_CABLE";
|
|
763
|
+
TempEntity2[TempEntity2["WELDING_SPARKS"] = 25] = "WELDING_SPARKS";
|
|
764
|
+
TempEntity2[TempEntity2["GREENBLOOD"] = 26] = "GREENBLOOD";
|
|
765
|
+
TempEntity2[TempEntity2["BLUEHYPERBLASTER"] = 27] = "BLUEHYPERBLASTER";
|
|
766
|
+
TempEntity2[TempEntity2["PLASMA_EXPLOSION"] = 28] = "PLASMA_EXPLOSION";
|
|
767
|
+
TempEntity2[TempEntity2["TUNNEL_SPARKS"] = 29] = "TUNNEL_SPARKS";
|
|
768
|
+
TempEntity2[TempEntity2["BLASTER2"] = 30] = "BLASTER2";
|
|
769
|
+
TempEntity2[TempEntity2["RAILTRAIL2"] = 31] = "RAILTRAIL2";
|
|
770
|
+
TempEntity2[TempEntity2["FLAME"] = 32] = "FLAME";
|
|
771
|
+
TempEntity2[TempEntity2["LIGHTNING"] = 33] = "LIGHTNING";
|
|
772
|
+
TempEntity2[TempEntity2["DEBUGTRAIL"] = 34] = "DEBUGTRAIL";
|
|
773
|
+
TempEntity2[TempEntity2["PLAIN_EXPLOSION"] = 35] = "PLAIN_EXPLOSION";
|
|
774
|
+
TempEntity2[TempEntity2["FLASHLIGHT"] = 36] = "FLASHLIGHT";
|
|
775
|
+
TempEntity2[TempEntity2["FORCEWALL"] = 37] = "FORCEWALL";
|
|
776
|
+
TempEntity2[TempEntity2["HEATBEAM"] = 38] = "HEATBEAM";
|
|
777
|
+
TempEntity2[TempEntity2["MONSTER_HEATBEAM"] = 39] = "MONSTER_HEATBEAM";
|
|
778
|
+
TempEntity2[TempEntity2["STEAM"] = 40] = "STEAM";
|
|
779
|
+
TempEntity2[TempEntity2["BUBBLETRAIL2"] = 41] = "BUBBLETRAIL2";
|
|
780
|
+
TempEntity2[TempEntity2["MOREBLOOD"] = 42] = "MOREBLOOD";
|
|
781
|
+
TempEntity2[TempEntity2["HEATBEAM_SPARKS"] = 43] = "HEATBEAM_SPARKS";
|
|
782
|
+
TempEntity2[TempEntity2["HEATBEAM_STEAM"] = 44] = "HEATBEAM_STEAM";
|
|
783
|
+
TempEntity2[TempEntity2["CHAINFIST_SMOKE"] = 45] = "CHAINFIST_SMOKE";
|
|
784
|
+
TempEntity2[TempEntity2["ELECTRIC_SPARKS"] = 46] = "ELECTRIC_SPARKS";
|
|
785
|
+
TempEntity2[TempEntity2["TRACKER_EXPLOSION"] = 47] = "TRACKER_EXPLOSION";
|
|
786
|
+
TempEntity2[TempEntity2["TELEPORT_EFFECT"] = 48] = "TELEPORT_EFFECT";
|
|
787
|
+
TempEntity2[TempEntity2["DBALL_GOAL"] = 49] = "DBALL_GOAL";
|
|
788
|
+
TempEntity2[TempEntity2["WIDOWBEAMOUT"] = 50] = "WIDOWBEAMOUT";
|
|
789
|
+
TempEntity2[TempEntity2["NUKEBLAST"] = 51] = "NUKEBLAST";
|
|
790
|
+
TempEntity2[TempEntity2["WIDOWSPLASH"] = 52] = "WIDOWSPLASH";
|
|
791
|
+
TempEntity2[TempEntity2["EXPLOSION1_BIG"] = 53] = "EXPLOSION1_BIG";
|
|
792
|
+
TempEntity2[TempEntity2["EXPLOSION1_NP"] = 54] = "EXPLOSION1_NP";
|
|
793
|
+
TempEntity2[TempEntity2["FLECHETTE"] = 55] = "FLECHETTE";
|
|
794
|
+
TempEntity2[TempEntity2["BLUEHYPERBLASTER_KEX"] = 56] = "BLUEHYPERBLASTER_KEX";
|
|
795
|
+
TempEntity2[TempEntity2["BFG_ZAP"] = 57] = "BFG_ZAP";
|
|
796
|
+
TempEntity2[TempEntity2["BERSERK_SLAM"] = 58] = "BERSERK_SLAM";
|
|
797
|
+
TempEntity2[TempEntity2["GRAPPLE_CABLE_2"] = 59] = "GRAPPLE_CABLE_2";
|
|
798
|
+
TempEntity2[TempEntity2["POWER_SPLASH"] = 60] = "POWER_SPLASH";
|
|
799
|
+
TempEntity2[TempEntity2["LIGHTNING_BEAM"] = 61] = "LIGHTNING_BEAM";
|
|
800
|
+
TempEntity2[TempEntity2["EXPLOSION1_NL"] = 62] = "EXPLOSION1_NL";
|
|
801
|
+
TempEntity2[TempEntity2["EXPLOSION2_NL"] = 63] = "EXPLOSION2_NL";
|
|
802
|
+
return TempEntity2;
|
|
803
|
+
})(TempEntity || {});
|
|
804
|
+
MZ_BLASTER = 0;
|
|
805
|
+
MZ_MACHINEGUN = 1;
|
|
806
|
+
MZ_SHOTGUN = 2;
|
|
807
|
+
MZ_CHAINGUN1 = 3;
|
|
808
|
+
MZ_RAILGUN = 6;
|
|
809
|
+
MZ_ROCKET = 7;
|
|
810
|
+
MZ_GRENADE = 8;
|
|
811
|
+
MZ_SSHOTGUN = 11;
|
|
812
|
+
MZ_BFG = 12;
|
|
813
|
+
MZ_HYPERBLASTER = 13;
|
|
814
|
+
PowerupId = /* @__PURE__ */ ((PowerupId22) => {
|
|
815
|
+
PowerupId22["QuadDamage"] = "quad";
|
|
816
|
+
PowerupId22["Invulnerability"] = "invulnerability";
|
|
817
|
+
PowerupId22["EnviroSuit"] = "enviro_suit";
|
|
818
|
+
PowerupId22["Rebreather"] = "rebreather";
|
|
819
|
+
PowerupId22["Silencer"] = "silencer";
|
|
820
|
+
PowerupId22["PowerScreen"] = "power_screen";
|
|
821
|
+
PowerupId22["PowerShield"] = "power_shield";
|
|
822
|
+
PowerupId22["QuadFire"] = "quad_fire";
|
|
823
|
+
PowerupId22["Invisibility"] = "invisibility";
|
|
824
|
+
PowerupId22["Bandolier"] = "bandolier";
|
|
825
|
+
PowerupId22["AmmoPack"] = "ammo_pack";
|
|
826
|
+
PowerupId22["IRGoggles"] = "ir_goggles";
|
|
827
|
+
PowerupId22["DoubleDamage"] = "double_damage";
|
|
828
|
+
PowerupId22["SphereVengeance"] = "sphere_vengeance";
|
|
829
|
+
PowerupId22["SphereHunter"] = "sphere_hunter";
|
|
830
|
+
PowerupId22["SphereDefender"] = "sphere_defender";
|
|
831
|
+
PowerupId22["Doppelganger"] = "doppelganger";
|
|
832
|
+
PowerupId22["TagToken"] = "tag_token";
|
|
833
|
+
PowerupId22["TechResistance"] = "tech_resistance";
|
|
834
|
+
PowerupId22["TechStrength"] = "tech_strength";
|
|
835
|
+
PowerupId22["TechHaste"] = "tech_haste";
|
|
836
|
+
PowerupId22["TechRegeneration"] = "tech_regeneration";
|
|
837
|
+
PowerupId22["Flashlight"] = "flashlight";
|
|
838
|
+
PowerupId22["Compass"] = "compass";
|
|
839
|
+
return PowerupId22;
|
|
840
|
+
})(PowerupId || {});
|
|
841
|
+
PlayerStat = /* @__PURE__ */ ((PlayerStat2) => {
|
|
842
|
+
PlayerStat2[PlayerStat2["STAT_HEALTH_ICON"] = 0] = "STAT_HEALTH_ICON";
|
|
843
|
+
PlayerStat2[PlayerStat2["STAT_HEALTH"] = 1] = "STAT_HEALTH";
|
|
844
|
+
PlayerStat2[PlayerStat2["STAT_AMMO_ICON"] = 2] = "STAT_AMMO_ICON";
|
|
845
|
+
PlayerStat2[PlayerStat2["STAT_AMMO"] = 3] = "STAT_AMMO";
|
|
846
|
+
PlayerStat2[PlayerStat2["STAT_ARMOR_ICON"] = 4] = "STAT_ARMOR_ICON";
|
|
847
|
+
PlayerStat2[PlayerStat2["STAT_ARMOR"] = 5] = "STAT_ARMOR";
|
|
848
|
+
PlayerStat2[PlayerStat2["STAT_SELECTED_ICON"] = 6] = "STAT_SELECTED_ICON";
|
|
849
|
+
PlayerStat2[PlayerStat2["STAT_PICKUP_ICON"] = 7] = "STAT_PICKUP_ICON";
|
|
850
|
+
PlayerStat2[PlayerStat2["STAT_PICKUP_STRING"] = 8] = "STAT_PICKUP_STRING";
|
|
851
|
+
PlayerStat2[PlayerStat2["STAT_TIMER_ICON"] = 9] = "STAT_TIMER_ICON";
|
|
852
|
+
PlayerStat2[PlayerStat2["STAT_TIMER"] = 10] = "STAT_TIMER";
|
|
853
|
+
PlayerStat2[PlayerStat2["STAT_HELPICON"] = 11] = "STAT_HELPICON";
|
|
854
|
+
PlayerStat2[PlayerStat2["STAT_SELECTED_ITEM"] = 12] = "STAT_SELECTED_ITEM";
|
|
855
|
+
PlayerStat2[PlayerStat2["STAT_LAYOUTS"] = 13] = "STAT_LAYOUTS";
|
|
856
|
+
PlayerStat2[PlayerStat2["STAT_FRAGS"] = 14] = "STAT_FRAGS";
|
|
857
|
+
PlayerStat2[PlayerStat2["STAT_FLASHES"] = 15] = "STAT_FLASHES";
|
|
858
|
+
PlayerStat2[PlayerStat2["STAT_CHASE"] = 16] = "STAT_CHASE";
|
|
859
|
+
PlayerStat2[PlayerStat2["STAT_SPECTATOR"] = 17] = "STAT_SPECTATOR";
|
|
860
|
+
PlayerStat2[PlayerStat2["STAT_CTF_TEAM1_PIC"] = 18] = "STAT_CTF_TEAM1_PIC";
|
|
861
|
+
PlayerStat2[PlayerStat2["STAT_CTF_TEAM1_CAPS"] = 19] = "STAT_CTF_TEAM1_CAPS";
|
|
862
|
+
PlayerStat2[PlayerStat2["STAT_CTF_TEAM2_PIC"] = 20] = "STAT_CTF_TEAM2_PIC";
|
|
863
|
+
PlayerStat2[PlayerStat2["STAT_CTF_TEAM2_CAPS"] = 21] = "STAT_CTF_TEAM2_CAPS";
|
|
864
|
+
PlayerStat2[PlayerStat2["STAT_CTF_FLAG_PIC"] = 22] = "STAT_CTF_FLAG_PIC";
|
|
865
|
+
PlayerStat2[PlayerStat2["STAT_CTF_JOINED_TEAM1_PIC"] = 23] = "STAT_CTF_JOINED_TEAM1_PIC";
|
|
866
|
+
PlayerStat2[PlayerStat2["STAT_CTF_JOINED_TEAM2_PIC"] = 24] = "STAT_CTF_JOINED_TEAM2_PIC";
|
|
867
|
+
PlayerStat2[PlayerStat2["STAT_CTF_TEAM1_HEADER"] = 25] = "STAT_CTF_TEAM1_HEADER";
|
|
868
|
+
PlayerStat2[PlayerStat2["STAT_CTF_TEAM2_HEADER"] = 26] = "STAT_CTF_TEAM2_HEADER";
|
|
869
|
+
PlayerStat2[PlayerStat2["STAT_CTF_TECH"] = 27] = "STAT_CTF_TECH";
|
|
870
|
+
PlayerStat2[PlayerStat2["STAT_CTF_ID_VIEW"] = 28] = "STAT_CTF_ID_VIEW";
|
|
871
|
+
PlayerStat2[PlayerStat2["STAT_CTF_MATCH"] = 29] = "STAT_CTF_MATCH";
|
|
872
|
+
PlayerStat2[PlayerStat2["STAT_CTF_ID_VIEW_COLOR"] = 30] = "STAT_CTF_ID_VIEW_COLOR";
|
|
873
|
+
PlayerStat2[PlayerStat2["STAT_CTF_TEAMINFO"] = 31] = "STAT_CTF_TEAMINFO";
|
|
874
|
+
PlayerStat2[PlayerStat2["STAT_WEAPONS_OWNED_1"] = 32] = "STAT_WEAPONS_OWNED_1";
|
|
875
|
+
PlayerStat2[PlayerStat2["STAT_WEAPONS_OWNED_2"] = 33] = "STAT_WEAPONS_OWNED_2";
|
|
876
|
+
PlayerStat2[PlayerStat2["STAT_AMMO_INFO_START"] = 34] = "STAT_AMMO_INFO_START";
|
|
877
|
+
PlayerStat2[PlayerStat2["STAT_POWERUP_INFO_START"] = 41] = "STAT_POWERUP_INFO_START";
|
|
878
|
+
PlayerStat2[PlayerStat2["STAT_KEY_A"] = 44] = "STAT_KEY_A";
|
|
879
|
+
PlayerStat2[PlayerStat2["STAT_KEY_B"] = 45] = "STAT_KEY_B";
|
|
880
|
+
PlayerStat2[PlayerStat2["STAT_KEY_C"] = 46] = "STAT_KEY_C";
|
|
881
|
+
PlayerStat2[PlayerStat2["STAT_ACTIVE_WHEEL_WEAPON"] = 47] = "STAT_ACTIVE_WHEEL_WEAPON";
|
|
882
|
+
PlayerStat2[PlayerStat2["STAT_COOP_RESPAWN"] = 48] = "STAT_COOP_RESPAWN";
|
|
883
|
+
PlayerStat2[PlayerStat2["STAT_LIVES"] = 49] = "STAT_LIVES";
|
|
884
|
+
PlayerStat2[PlayerStat2["STAT_HIT_MARKER"] = 50] = "STAT_HIT_MARKER";
|
|
885
|
+
PlayerStat2[PlayerStat2["STAT_SELECTED_ITEM_NAME"] = 51] = "STAT_SELECTED_ITEM_NAME";
|
|
886
|
+
PlayerStat2[PlayerStat2["STAT_HEALTH_BARS"] = 52] = "STAT_HEALTH_BARS";
|
|
887
|
+
PlayerStat2[PlayerStat2["STAT_ACTIVE_WEAPON"] = 53] = "STAT_ACTIVE_WEAPON";
|
|
888
|
+
PlayerStat2[PlayerStat2["STAT_LAST"] = 54] = "STAT_LAST";
|
|
889
|
+
return PlayerStat2;
|
|
890
|
+
})(PlayerStat || {});
|
|
891
|
+
AMMO_MAX = 12;
|
|
892
|
+
NUM_BITS_FOR_AMMO = 9;
|
|
893
|
+
NUM_AMMO_STATS = Math.ceil(AMMO_MAX * NUM_BITS_FOR_AMMO / 16);
|
|
894
|
+
POWERUP_MAX = 23;
|
|
895
|
+
NUM_BITS_FOR_POWERUP = 2;
|
|
896
|
+
NUM_POWERUP_STATS = Math.ceil(POWERUP_MAX * NUM_BITS_FOR_POWERUP / 16);
|
|
897
|
+
POWERUP_STAT_MAP = {
|
|
898
|
+
[
|
|
899
|
+
"power_screen"
|
|
900
|
+
/* PowerScreen */
|
|
901
|
+
]: 0,
|
|
902
|
+
[
|
|
903
|
+
"power_shield"
|
|
904
|
+
/* PowerShield */
|
|
905
|
+
]: 1,
|
|
906
|
+
// 2 is POWERUP_AM_BOMB (not in PowerupId?)
|
|
907
|
+
[
|
|
908
|
+
"quad"
|
|
909
|
+
/* QuadDamage */
|
|
910
|
+
]: 3,
|
|
911
|
+
[
|
|
912
|
+
"quad_fire"
|
|
913
|
+
/* QuadFire */
|
|
914
|
+
]: 4,
|
|
915
|
+
[
|
|
916
|
+
"invulnerability"
|
|
917
|
+
/* Invulnerability */
|
|
918
|
+
]: 5,
|
|
919
|
+
[
|
|
920
|
+
"invisibility"
|
|
921
|
+
/* Invisibility */
|
|
922
|
+
]: 6,
|
|
923
|
+
[
|
|
924
|
+
"silencer"
|
|
925
|
+
/* Silencer */
|
|
926
|
+
]: 7,
|
|
927
|
+
[
|
|
928
|
+
"rebreather"
|
|
929
|
+
/* Rebreather */
|
|
930
|
+
]: 8,
|
|
931
|
+
[
|
|
932
|
+
"enviro_suit"
|
|
933
|
+
/* EnviroSuit */
|
|
934
|
+
]: 9,
|
|
935
|
+
[
|
|
936
|
+
"bandolier"
|
|
937
|
+
/* Bandolier */
|
|
938
|
+
]: 10,
|
|
939
|
+
// Placeholder/Map mismatch handling?
|
|
940
|
+
[
|
|
941
|
+
"ammo_pack"
|
|
942
|
+
/* AmmoPack */
|
|
943
|
+
]: 10,
|
|
944
|
+
// Original reused indices or had gaps?
|
|
945
|
+
[
|
|
946
|
+
"ir_goggles"
|
|
947
|
+
/* IRGoggles */
|
|
948
|
+
]: 11,
|
|
949
|
+
[
|
|
950
|
+
"double_damage"
|
|
951
|
+
/* DoubleDamage */
|
|
952
|
+
]: 12,
|
|
953
|
+
[
|
|
954
|
+
"sphere_vengeance"
|
|
955
|
+
/* SphereVengeance */
|
|
956
|
+
]: 13,
|
|
957
|
+
[
|
|
958
|
+
"sphere_hunter"
|
|
959
|
+
/* SphereHunter */
|
|
960
|
+
]: 14,
|
|
961
|
+
[
|
|
962
|
+
"sphere_defender"
|
|
963
|
+
/* SphereDefender */
|
|
964
|
+
]: 15,
|
|
965
|
+
[
|
|
966
|
+
"doppelganger"
|
|
967
|
+
/* Doppelganger */
|
|
968
|
+
]: 16,
|
|
969
|
+
[
|
|
970
|
+
"flashlight"
|
|
971
|
+
/* Flashlight */
|
|
972
|
+
]: 17,
|
|
973
|
+
[
|
|
974
|
+
"compass"
|
|
975
|
+
/* Compass */
|
|
976
|
+
]: 18,
|
|
977
|
+
[
|
|
978
|
+
"tech_resistance"
|
|
979
|
+
/* TechResistance */
|
|
980
|
+
]: 19,
|
|
981
|
+
[
|
|
982
|
+
"tech_strength"
|
|
983
|
+
/* TechStrength */
|
|
984
|
+
]: 20,
|
|
985
|
+
[
|
|
986
|
+
"tech_haste"
|
|
987
|
+
/* TechHaste */
|
|
988
|
+
]: 21,
|
|
989
|
+
[
|
|
990
|
+
"tech_regeneration"
|
|
991
|
+
/* TechRegeneration */
|
|
992
|
+
]: 22,
|
|
993
|
+
// Add missing mappings to avoid runtime lookups failing for new types
|
|
994
|
+
[
|
|
995
|
+
"tag_token"
|
|
996
|
+
/* TagToken */
|
|
997
|
+
]: -1
|
|
998
|
+
};
|
|
999
|
+
RenderFx = /* @__PURE__ */ ((RenderFx2) => {
|
|
1000
|
+
RenderFx2[RenderFx2["MinLight"] = 1] = "MinLight";
|
|
1001
|
+
RenderFx2[RenderFx2["ViewerModel"] = 2] = "ViewerModel";
|
|
1002
|
+
RenderFx2[RenderFx2["WeaponModel"] = 4] = "WeaponModel";
|
|
1003
|
+
RenderFx2[RenderFx2["FullBright"] = 8] = "FullBright";
|
|
1004
|
+
RenderFx2[RenderFx2["DepthHack"] = 16] = "DepthHack";
|
|
1005
|
+
RenderFx2[RenderFx2["Translucent"] = 32] = "Translucent";
|
|
1006
|
+
RenderFx2[RenderFx2["FrameLerp"] = 64] = "FrameLerp";
|
|
1007
|
+
RenderFx2[RenderFx2["Beam"] = 128] = "Beam";
|
|
1008
|
+
RenderFx2[RenderFx2["CustomLight"] = 256] = "CustomLight";
|
|
1009
|
+
RenderFx2[RenderFx2["Glow"] = 512] = "Glow";
|
|
1010
|
+
RenderFx2[RenderFx2["ShellRed"] = 1024] = "ShellRed";
|
|
1011
|
+
RenderFx2[RenderFx2["ShellGreen"] = 2048] = "ShellGreen";
|
|
1012
|
+
RenderFx2[RenderFx2["ShellBlue"] = 4096] = "ShellBlue";
|
|
1013
|
+
RenderFx2[RenderFx2["IrVisible"] = 32768] = "IrVisible";
|
|
1014
|
+
RenderFx2[RenderFx2["ShellDouble"] = 65536] = "ShellDouble";
|
|
1015
|
+
RenderFx2[RenderFx2["ShellHalfDam"] = 131072] = "ShellHalfDam";
|
|
1016
|
+
RenderFx2[RenderFx2["MinLightPlus"] = 262144] = "MinLightPlus";
|
|
1017
|
+
RenderFx2[RenderFx2["ExtraLight"] = 524288] = "ExtraLight";
|
|
1018
|
+
RenderFx2[RenderFx2["BeamLightning"] = 1048576] = "BeamLightning";
|
|
1019
|
+
return RenderFx2;
|
|
1020
|
+
})(RenderFx || {});
|
|
1021
|
+
entityFlags_exports = {};
|
|
1022
|
+
__export2(entityFlags_exports, {
|
|
1023
|
+
U_ANGLE1: () => U_ANGLE1,
|
|
1024
|
+
U_ANGLE2: () => U_ANGLE2,
|
|
1025
|
+
U_ANGLE3: () => U_ANGLE3,
|
|
1026
|
+
U_EFFECTS: () => U_EFFECTS,
|
|
1027
|
+
U_EVENT: () => U_EVENT,
|
|
1028
|
+
U_FRAME: () => U_FRAME,
|
|
1029
|
+
U_MODEL: () => U_MODEL,
|
|
1030
|
+
U_MODEL2: () => U_MODEL2,
|
|
1031
|
+
U_MODEL3: () => U_MODEL3,
|
|
1032
|
+
U_MODEL4: () => U_MODEL4,
|
|
1033
|
+
U_MOREBITS: () => U_MOREBITS,
|
|
1034
|
+
U_NUMBER: () => U_NUMBER,
|
|
1035
|
+
U_ORIGIN1: () => U_ORIGIN1,
|
|
1036
|
+
U_ORIGIN2: () => U_ORIGIN2,
|
|
1037
|
+
U_ORIGIN3: () => U_ORIGIN3,
|
|
1038
|
+
U_REMOVE: () => U_REMOVE,
|
|
1039
|
+
U_RENDERFX: () => U_RENDERFX,
|
|
1040
|
+
U_SKIN: () => U_SKIN,
|
|
1041
|
+
U_SOLID: () => U_SOLID,
|
|
1042
|
+
U_SOUND: () => U_SOUND
|
|
1043
|
+
});
|
|
1044
|
+
U_NUMBER = 1 << 0;
|
|
1045
|
+
U_MODEL = 1 << 1;
|
|
1046
|
+
U_SOUND = 1 << 2;
|
|
1047
|
+
U_ORIGIN1 = 1 << 3;
|
|
1048
|
+
U_ORIGIN2 = 1 << 4;
|
|
1049
|
+
U_ORIGIN3 = 1 << 5;
|
|
1050
|
+
U_ANGLE1 = 1 << 6;
|
|
1051
|
+
U_ANGLE2 = 1 << 7;
|
|
1052
|
+
U_ANGLE3 = 1 << 8;
|
|
1053
|
+
U_FRAME = 1 << 9;
|
|
1054
|
+
U_SKIN = 1 << 10;
|
|
1055
|
+
U_EFFECTS = 1 << 11;
|
|
1056
|
+
U_RENDERFX = 1 << 12;
|
|
1057
|
+
U_SOLID = 1 << 13;
|
|
1058
|
+
U_EVENT = 1 << 14;
|
|
1059
|
+
U_MOREBITS = 1 << 15;
|
|
1060
|
+
U_MODEL2 = 1 << 0;
|
|
1061
|
+
U_MODEL3 = 1 << 1;
|
|
1062
|
+
U_MODEL4 = 1 << 2;
|
|
1063
|
+
U_REMOVE = 32768;
|
|
1064
|
+
FRAMETIME = 0.025;
|
|
1065
|
+
MASK_WATER2 = 33554432;
|
|
1066
|
+
WaterLevel3 = {
|
|
1067
|
+
None: 0,
|
|
1068
|
+
Feet: 1,
|
|
1069
|
+
Waist: 2,
|
|
1070
|
+
Under: 3
|
|
1071
|
+
};
|
|
1072
|
+
categorizePosition2 = (state, trace) => {
|
|
1073
|
+
const point = { ...state.origin };
|
|
1074
|
+
point.z -= 0.25;
|
|
1075
|
+
const traceResult = trace(state.origin, point);
|
|
1076
|
+
return {
|
|
1077
|
+
...state,
|
|
1078
|
+
onGround: traceResult.fraction < 1
|
|
1079
|
+
};
|
|
1080
|
+
};
|
|
1081
|
+
checkWater = (state, pointContents2) => {
|
|
1082
|
+
const point = { ...state.origin };
|
|
1083
|
+
const { mins, maxs } = state;
|
|
1084
|
+
point.z = state.origin.z + mins.z + 1;
|
|
1085
|
+
const contents = pointContents2(point);
|
|
1086
|
+
if (!(contents & MASK_WATER2)) {
|
|
1087
|
+
return { ...state, waterLevel: WaterLevel3.None };
|
|
1088
|
+
}
|
|
1089
|
+
let waterLevel = WaterLevel3.Feet;
|
|
1090
|
+
const waist = state.origin.z + (mins.z + maxs.z) * 0.5;
|
|
1091
|
+
point.z = waist;
|
|
1092
|
+
const waistContents = pointContents2(point);
|
|
1093
|
+
if (waistContents & MASK_WATER2) {
|
|
1094
|
+
waterLevel = WaterLevel3.Waist;
|
|
1095
|
+
const head = state.origin.z + 22;
|
|
1096
|
+
point.z = head;
|
|
1097
|
+
const headContents = pointContents2(point);
|
|
1098
|
+
if (headContents & MASK_WATER2) {
|
|
1099
|
+
waterLevel = WaterLevel3.Under;
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
return { ...state, waterLevel };
|
|
1103
|
+
};
|
|
1104
|
+
applyPmove = (state, cmd, trace, pointContents2) => {
|
|
1105
|
+
let newState = { ...state };
|
|
1106
|
+
newState = categorizePosition2(newState, trace);
|
|
1107
|
+
newState = checkWater(newState, pointContents2);
|
|
1108
|
+
const { origin, velocity, onGround, waterLevel, viewAngles } = newState;
|
|
1109
|
+
const adjustedAngles = waterLevel >= 2 ? viewAngles : {
|
|
1110
|
+
// For ground/air movement, reduce pitch influence (rerelease/p_move.cpp:1689)
|
|
1111
|
+
x: viewAngles.x > 180 ? (viewAngles.x - 360) / 3 : viewAngles.x / 3,
|
|
1112
|
+
y: viewAngles.y,
|
|
1113
|
+
z: viewAngles.z
|
|
1114
|
+
};
|
|
1115
|
+
const { forward, right } = angleVectors(adjustedAngles);
|
|
1116
|
+
const frictionedVelocity = applyPmoveFriction({
|
|
1117
|
+
velocity,
|
|
1118
|
+
frametime: FRAMETIME,
|
|
1119
|
+
onGround,
|
|
1120
|
+
groundIsSlick: false,
|
|
1121
|
+
onLadder: false,
|
|
1122
|
+
waterlevel: waterLevel,
|
|
1123
|
+
pmFriction: 6,
|
|
1124
|
+
pmStopSpeed: 100,
|
|
1125
|
+
pmWaterFriction: 1
|
|
1126
|
+
});
|
|
1127
|
+
const wish = waterLevel >= 2 ? buildWaterWish({
|
|
1128
|
+
forward,
|
|
1129
|
+
right,
|
|
1130
|
+
cmd,
|
|
1131
|
+
maxSpeed: 320
|
|
1132
|
+
}) : buildAirGroundWish({
|
|
1133
|
+
forward,
|
|
1134
|
+
right,
|
|
1135
|
+
cmd,
|
|
1136
|
+
maxSpeed: 320
|
|
1137
|
+
});
|
|
1138
|
+
const finalVelocity = applyPmoveAccelerate({
|
|
1139
|
+
velocity: frictionedVelocity,
|
|
1140
|
+
wishdir: wish.wishdir,
|
|
1141
|
+
wishspeed: wish.wishspeed,
|
|
1142
|
+
// Water movement uses ground acceleration (10), not air acceleration (1)
|
|
1143
|
+
accel: onGround || waterLevel >= 2 ? 10 : 1,
|
|
1144
|
+
frametime: FRAMETIME
|
|
1145
|
+
});
|
|
1146
|
+
const traceResult = trace(origin, {
|
|
1147
|
+
x: origin.x + finalVelocity.x * FRAMETIME,
|
|
1148
|
+
y: origin.y + finalVelocity.y * FRAMETIME,
|
|
1149
|
+
z: origin.z + finalVelocity.z * FRAMETIME
|
|
1150
|
+
});
|
|
1151
|
+
return {
|
|
1152
|
+
...newState,
|
|
1153
|
+
origin: traceResult.endpos,
|
|
1154
|
+
velocity: finalVelocity
|
|
1155
|
+
};
|
|
1156
|
+
};
|
|
1157
|
+
WeaponId = /* @__PURE__ */ ((WeaponId22) => {
|
|
1158
|
+
WeaponId22["Blaster"] = "blaster";
|
|
1159
|
+
WeaponId22["Shotgun"] = "shotgun";
|
|
1160
|
+
WeaponId22["SuperShotgun"] = "supershotgun";
|
|
1161
|
+
WeaponId22["Machinegun"] = "machinegun";
|
|
1162
|
+
WeaponId22["Chaingun"] = "chaingun";
|
|
1163
|
+
WeaponId22["HandGrenade"] = "grenades";
|
|
1164
|
+
WeaponId22["GrenadeLauncher"] = "grenadelauncher";
|
|
1165
|
+
WeaponId22["RocketLauncher"] = "rocketlauncher";
|
|
1166
|
+
WeaponId22["HyperBlaster"] = "hyperblaster";
|
|
1167
|
+
WeaponId22["Railgun"] = "railgun";
|
|
1168
|
+
WeaponId22["BFG10K"] = "bfg10k";
|
|
1169
|
+
WeaponId22["Grapple"] = "grapple";
|
|
1170
|
+
WeaponId22["ChainFist"] = "chainfist";
|
|
1171
|
+
WeaponId22["EtfRifle"] = "etf_rifle";
|
|
1172
|
+
WeaponId22["ProxLauncher"] = "prox_launcher";
|
|
1173
|
+
WeaponId22["IonRipper"] = "ionripper";
|
|
1174
|
+
WeaponId22["PlasmaBeam"] = "plasmabeam";
|
|
1175
|
+
WeaponId22["Phalanx"] = "phalanx";
|
|
1176
|
+
WeaponId22["Disruptor"] = "disruptor";
|
|
1177
|
+
WeaponId22["Trap"] = "trap";
|
|
1178
|
+
return WeaponId22;
|
|
1179
|
+
})(WeaponId || {});
|
|
1180
|
+
AmmoType = /* @__PURE__ */ ((AmmoType22) => {
|
|
1181
|
+
AmmoType22[AmmoType22["Bullets"] = 0] = "Bullets";
|
|
1182
|
+
AmmoType22[AmmoType22["Shells"] = 1] = "Shells";
|
|
1183
|
+
AmmoType22[AmmoType22["Rockets"] = 2] = "Rockets";
|
|
1184
|
+
AmmoType22[AmmoType22["Grenades"] = 3] = "Grenades";
|
|
1185
|
+
AmmoType22[AmmoType22["Cells"] = 4] = "Cells";
|
|
1186
|
+
AmmoType22[AmmoType22["Slugs"] = 5] = "Slugs";
|
|
1187
|
+
AmmoType22[AmmoType22["MagSlugs"] = 6] = "MagSlugs";
|
|
1188
|
+
AmmoType22[AmmoType22["Trap"] = 7] = "Trap";
|
|
1189
|
+
AmmoType22[AmmoType22["Flechettes"] = 8] = "Flechettes";
|
|
1190
|
+
AmmoType22[AmmoType22["Tesla"] = 9] = "Tesla";
|
|
1191
|
+
AmmoType22[AmmoType22["Disruptor"] = 10] = "Disruptor";
|
|
1192
|
+
AmmoType22[AmmoType22["Prox"] = 11] = "Prox";
|
|
1193
|
+
AmmoType22[AmmoType22["Nuke"] = 12] = "Nuke";
|
|
1194
|
+
AmmoType22[AmmoType22["Rounds"] = 13] = "Rounds";
|
|
1195
|
+
return AmmoType22;
|
|
1196
|
+
})(AmmoType || {});
|
|
1197
|
+
AMMO_TYPE_COUNT = Object.keys(AmmoType).length / 2;
|
|
1198
|
+
AmmoItemId = /* @__PURE__ */ ((AmmoItemId22) => {
|
|
1199
|
+
AmmoItemId22["Shells"] = "ammo_shells";
|
|
1200
|
+
AmmoItemId22["Bullets"] = "ammo_bullets";
|
|
1201
|
+
AmmoItemId22["Rockets"] = "ammo_rockets";
|
|
1202
|
+
AmmoItemId22["Grenades"] = "ammo_grenades";
|
|
1203
|
+
AmmoItemId22["Cells"] = "ammo_cells";
|
|
1204
|
+
AmmoItemId22["Slugs"] = "ammo_slugs";
|
|
1205
|
+
AmmoItemId22["MagSlugs"] = "ammo_magslug";
|
|
1206
|
+
AmmoItemId22["Flechettes"] = "ammo_flechettes";
|
|
1207
|
+
AmmoItemId22["Disruptor"] = "ammo_disruptor";
|
|
1208
|
+
AmmoItemId22["Tesla"] = "ammo_tesla";
|
|
1209
|
+
AmmoItemId22["Trap"] = "ammo_trap";
|
|
1210
|
+
AmmoItemId22["Prox"] = "ammo_prox";
|
|
1211
|
+
return AmmoItemId22;
|
|
1212
|
+
})(AmmoItemId || {});
|
|
1213
|
+
WEAPON_WHEEL_ORDER = [
|
|
1214
|
+
"blaster",
|
|
1215
|
+
"shotgun",
|
|
1216
|
+
"supershotgun",
|
|
1217
|
+
"machinegun",
|
|
1218
|
+
"chaingun",
|
|
1219
|
+
"grenadelauncher",
|
|
1220
|
+
"rocketlauncher",
|
|
1221
|
+
"grenades",
|
|
1222
|
+
"hyperblaster",
|
|
1223
|
+
"railgun",
|
|
1224
|
+
"bfg10k"
|
|
1225
|
+
/* BFG10K */
|
|
1226
|
+
];
|
|
1227
|
+
}
|
|
997
1228
|
});
|
|
998
|
-
var U_NUMBER = 1 << 0;
|
|
999
|
-
var U_MODEL = 1 << 1;
|
|
1000
|
-
var U_SOUND = 1 << 2;
|
|
1001
|
-
var U_ORIGIN1 = 1 << 3;
|
|
1002
|
-
var U_ORIGIN2 = 1 << 4;
|
|
1003
|
-
var U_ORIGIN3 = 1 << 5;
|
|
1004
|
-
var U_ANGLE1 = 1 << 6;
|
|
1005
|
-
var U_ANGLE2 = 1 << 7;
|
|
1006
|
-
var U_ANGLE3 = 1 << 8;
|
|
1007
|
-
var U_FRAME = 1 << 9;
|
|
1008
|
-
var U_SKIN = 1 << 10;
|
|
1009
|
-
var U_EFFECTS = 1 << 11;
|
|
1010
|
-
var U_RENDERFX = 1 << 12;
|
|
1011
|
-
var U_SOLID = 1 << 13;
|
|
1012
|
-
var U_EVENT = 1 << 14;
|
|
1013
|
-
var U_MOREBITS = 1 << 15;
|
|
1014
|
-
var U_MODEL2 = 1 << 0;
|
|
1015
|
-
var U_MODEL3 = 1 << 1;
|
|
1016
|
-
var U_MODEL4 = 1 << 2;
|
|
1017
|
-
var U_REMOVE = 32768;
|
|
1018
|
-
var FRAMETIME = 0.025;
|
|
1019
|
-
var MASK_WATER2 = 33554432;
|
|
1020
|
-
var WaterLevel3 = {
|
|
1021
|
-
None: 0,
|
|
1022
|
-
Feet: 1,
|
|
1023
|
-
Waist: 2,
|
|
1024
|
-
Under: 3
|
|
1025
|
-
};
|
|
1026
|
-
var categorizePosition2 = (state, trace) => {
|
|
1027
|
-
const point = { ...state.origin };
|
|
1028
|
-
point.z -= 0.25;
|
|
1029
|
-
const traceResult = trace(state.origin, point);
|
|
1030
|
-
return {
|
|
1031
|
-
...state,
|
|
1032
|
-
onGround: traceResult.fraction < 1
|
|
1033
|
-
};
|
|
1034
|
-
};
|
|
1035
|
-
var checkWater = (state, pointContents2) => {
|
|
1036
|
-
const point = { ...state.origin };
|
|
1037
|
-
const { mins, maxs } = state;
|
|
1038
|
-
point.z = state.origin.z + mins.z + 1;
|
|
1039
|
-
const contents = pointContents2(point);
|
|
1040
|
-
if (!(contents & MASK_WATER2)) {
|
|
1041
|
-
return { ...state, waterLevel: WaterLevel3.None };
|
|
1042
|
-
}
|
|
1043
|
-
let waterLevel = WaterLevel3.Feet;
|
|
1044
|
-
const waist = state.origin.z + (mins.z + maxs.z) * 0.5;
|
|
1045
|
-
point.z = waist;
|
|
1046
|
-
const waistContents = pointContents2(point);
|
|
1047
|
-
if (waistContents & MASK_WATER2) {
|
|
1048
|
-
waterLevel = WaterLevel3.Waist;
|
|
1049
|
-
const head = state.origin.z + 22;
|
|
1050
|
-
point.z = head;
|
|
1051
|
-
const headContents = pointContents2(point);
|
|
1052
|
-
if (headContents & MASK_WATER2) {
|
|
1053
|
-
waterLevel = WaterLevel3.Under;
|
|
1054
|
-
}
|
|
1055
|
-
}
|
|
1056
|
-
return { ...state, waterLevel };
|
|
1057
|
-
};
|
|
1058
|
-
var applyPmove = (state, cmd, trace, pointContents2) => {
|
|
1059
|
-
let newState = { ...state };
|
|
1060
|
-
newState = categorizePosition2(newState, trace);
|
|
1061
|
-
newState = checkWater(newState, pointContents2);
|
|
1062
|
-
const { origin, velocity, onGround, waterLevel, viewAngles } = newState;
|
|
1063
|
-
const adjustedAngles = waterLevel >= 2 ? viewAngles : {
|
|
1064
|
-
// For ground/air movement, reduce pitch influence (rerelease/p_move.cpp:1689)
|
|
1065
|
-
x: viewAngles.x > 180 ? (viewAngles.x - 360) / 3 : viewAngles.x / 3,
|
|
1066
|
-
y: viewAngles.y,
|
|
1067
|
-
z: viewAngles.z
|
|
1068
|
-
};
|
|
1069
|
-
const { forward, right } = angleVectors(adjustedAngles);
|
|
1070
|
-
const frictionedVelocity = applyPmoveFriction({
|
|
1071
|
-
velocity,
|
|
1072
|
-
frametime: FRAMETIME,
|
|
1073
|
-
onGround,
|
|
1074
|
-
groundIsSlick: false,
|
|
1075
|
-
onLadder: false,
|
|
1076
|
-
waterlevel: waterLevel,
|
|
1077
|
-
pmFriction: 6,
|
|
1078
|
-
pmStopSpeed: 100,
|
|
1079
|
-
pmWaterFriction: 1
|
|
1080
|
-
});
|
|
1081
|
-
const wish = waterLevel >= 2 ? buildWaterWish({
|
|
1082
|
-
forward,
|
|
1083
|
-
right,
|
|
1084
|
-
cmd,
|
|
1085
|
-
maxSpeed: 320
|
|
1086
|
-
}) : buildAirGroundWish({
|
|
1087
|
-
forward,
|
|
1088
|
-
right,
|
|
1089
|
-
cmd,
|
|
1090
|
-
maxSpeed: 320
|
|
1091
|
-
});
|
|
1092
|
-
const finalVelocity = applyPmoveAccelerate({
|
|
1093
|
-
velocity: frictionedVelocity,
|
|
1094
|
-
wishdir: wish.wishdir,
|
|
1095
|
-
wishspeed: wish.wishspeed,
|
|
1096
|
-
// Water movement uses ground acceleration (10), not air acceleration (1)
|
|
1097
|
-
accel: onGround || waterLevel >= 2 ? 10 : 1,
|
|
1098
|
-
frametime: FRAMETIME
|
|
1099
|
-
});
|
|
1100
|
-
const traceResult = trace(origin, {
|
|
1101
|
-
x: origin.x + finalVelocity.x * FRAMETIME,
|
|
1102
|
-
y: origin.y + finalVelocity.y * FRAMETIME,
|
|
1103
|
-
z: origin.z + finalVelocity.z * FRAMETIME
|
|
1104
|
-
});
|
|
1105
|
-
return {
|
|
1106
|
-
...newState,
|
|
1107
|
-
origin: traceResult.endpos,
|
|
1108
|
-
velocity: finalVelocity
|
|
1109
|
-
};
|
|
1110
|
-
};
|
|
1111
|
-
var WeaponId = /* @__PURE__ */ ((WeaponId22) => {
|
|
1112
|
-
WeaponId22["Blaster"] = "blaster";
|
|
1113
|
-
WeaponId22["Shotgun"] = "shotgun";
|
|
1114
|
-
WeaponId22["SuperShotgun"] = "supershotgun";
|
|
1115
|
-
WeaponId22["Machinegun"] = "machinegun";
|
|
1116
|
-
WeaponId22["Chaingun"] = "chaingun";
|
|
1117
|
-
WeaponId22["HandGrenade"] = "grenades";
|
|
1118
|
-
WeaponId22["GrenadeLauncher"] = "grenadelauncher";
|
|
1119
|
-
WeaponId22["RocketLauncher"] = "rocketlauncher";
|
|
1120
|
-
WeaponId22["HyperBlaster"] = "hyperblaster";
|
|
1121
|
-
WeaponId22["Railgun"] = "railgun";
|
|
1122
|
-
WeaponId22["BFG10K"] = "bfg10k";
|
|
1123
|
-
WeaponId22["Grapple"] = "grapple";
|
|
1124
|
-
WeaponId22["ChainFist"] = "chainfist";
|
|
1125
|
-
WeaponId22["EtfRifle"] = "etf_rifle";
|
|
1126
|
-
WeaponId22["ProxLauncher"] = "prox_launcher";
|
|
1127
|
-
WeaponId22["IonRipper"] = "ionripper";
|
|
1128
|
-
WeaponId22["PlasmaBeam"] = "plasmabeam";
|
|
1129
|
-
WeaponId22["Phalanx"] = "phalanx";
|
|
1130
|
-
WeaponId22["Disruptor"] = "disruptor";
|
|
1131
|
-
WeaponId22["Trap"] = "trap";
|
|
1132
|
-
return WeaponId22;
|
|
1133
|
-
})(WeaponId || {});
|
|
1134
|
-
var AmmoType = /* @__PURE__ */ ((AmmoType22) => {
|
|
1135
|
-
AmmoType22[AmmoType22["Bullets"] = 0] = "Bullets";
|
|
1136
|
-
AmmoType22[AmmoType22["Shells"] = 1] = "Shells";
|
|
1137
|
-
AmmoType22[AmmoType22["Rockets"] = 2] = "Rockets";
|
|
1138
|
-
AmmoType22[AmmoType22["Grenades"] = 3] = "Grenades";
|
|
1139
|
-
AmmoType22[AmmoType22["Cells"] = 4] = "Cells";
|
|
1140
|
-
AmmoType22[AmmoType22["Slugs"] = 5] = "Slugs";
|
|
1141
|
-
AmmoType22[AmmoType22["MagSlugs"] = 6] = "MagSlugs";
|
|
1142
|
-
AmmoType22[AmmoType22["Trap"] = 7] = "Trap";
|
|
1143
|
-
AmmoType22[AmmoType22["Flechettes"] = 8] = "Flechettes";
|
|
1144
|
-
AmmoType22[AmmoType22["Tesla"] = 9] = "Tesla";
|
|
1145
|
-
AmmoType22[AmmoType22["Disruptor"] = 10] = "Disruptor";
|
|
1146
|
-
AmmoType22[AmmoType22["Prox"] = 11] = "Prox";
|
|
1147
|
-
AmmoType22[AmmoType22["Nuke"] = 12] = "Nuke";
|
|
1148
|
-
AmmoType22[AmmoType22["Rounds"] = 13] = "Rounds";
|
|
1149
|
-
return AmmoType22;
|
|
1150
|
-
})(AmmoType || {});
|
|
1151
|
-
var AMMO_TYPE_COUNT = Object.keys(AmmoType).length / 2;
|
|
1152
|
-
var AmmoItemId = /* @__PURE__ */ ((AmmoItemId22) => {
|
|
1153
|
-
AmmoItemId22["Shells"] = "ammo_shells";
|
|
1154
|
-
AmmoItemId22["Bullets"] = "ammo_bullets";
|
|
1155
|
-
AmmoItemId22["Rockets"] = "ammo_rockets";
|
|
1156
|
-
AmmoItemId22["Grenades"] = "ammo_grenades";
|
|
1157
|
-
AmmoItemId22["Cells"] = "ammo_cells";
|
|
1158
|
-
AmmoItemId22["Slugs"] = "ammo_slugs";
|
|
1159
|
-
AmmoItemId22["MagSlugs"] = "ammo_magslug";
|
|
1160
|
-
AmmoItemId22["Flechettes"] = "ammo_flechettes";
|
|
1161
|
-
AmmoItemId22["Disruptor"] = "ammo_disruptor";
|
|
1162
|
-
AmmoItemId22["Tesla"] = "ammo_tesla";
|
|
1163
|
-
AmmoItemId22["Trap"] = "ammo_trap";
|
|
1164
|
-
AmmoItemId22["Prox"] = "ammo_prox";
|
|
1165
|
-
return AmmoItemId22;
|
|
1166
|
-
})(AmmoItemId || {});
|
|
1167
|
-
var WEAPON_WHEEL_ORDER = [
|
|
1168
|
-
"blaster",
|
|
1169
|
-
"shotgun",
|
|
1170
|
-
"supershotgun",
|
|
1171
|
-
"machinegun",
|
|
1172
|
-
"chaingun",
|
|
1173
|
-
"grenadelauncher",
|
|
1174
|
-
"rocketlauncher",
|
|
1175
|
-
"grenades",
|
|
1176
|
-
"hyperblaster",
|
|
1177
|
-
"railgun",
|
|
1178
|
-
"bfg10k"
|
|
1179
|
-
/* BFG10K */
|
|
1180
|
-
];
|
|
1181
1229
|
|
|
1182
1230
|
// src/inventory/ammo.ts
|
|
1183
|
-
var AMMO_ITEM_DEFINITIONS = {
|
|
1184
|
-
[AmmoItemId.Shells]: { id: AmmoItemId.Shells, ammoType: AmmoType.Shells, quantity: 10, weaponAmmo: false },
|
|
1185
|
-
[AmmoItemId.Bullets]: { id: AmmoItemId.Bullets, ammoType: AmmoType.Bullets, quantity: 50, weaponAmmo: false },
|
|
1186
|
-
[AmmoItemId.Rockets]: { id: AmmoItemId.Rockets, ammoType: AmmoType.Rockets, quantity: 5, weaponAmmo: false },
|
|
1187
|
-
[AmmoItemId.Grenades]: { id: AmmoItemId.Grenades, ammoType: AmmoType.Grenades, quantity: 5, weaponAmmo: true },
|
|
1188
|
-
[AmmoItemId.Cells]: { id: AmmoItemId.Cells, ammoType: AmmoType.Cells, quantity: 50, weaponAmmo: false },
|
|
1189
|
-
[AmmoItemId.Slugs]: { id: AmmoItemId.Slugs, ammoType: AmmoType.Slugs, quantity: 10, weaponAmmo: false },
|
|
1190
|
-
[AmmoItemId.MagSlugs]: { id: AmmoItemId.MagSlugs, ammoType: AmmoType.MagSlugs, quantity: 10, weaponAmmo: false },
|
|
1191
|
-
[AmmoItemId.Flechettes]: { id: AmmoItemId.Flechettes, ammoType: AmmoType.Flechettes, quantity: 50, weaponAmmo: false },
|
|
1192
|
-
[AmmoItemId.Disruptor]: { id: AmmoItemId.Disruptor, ammoType: AmmoType.Disruptor, quantity: 15, weaponAmmo: false },
|
|
1193
|
-
[AmmoItemId.Tesla]: { id: AmmoItemId.Tesla, ammoType: AmmoType.Tesla, quantity: 5, weaponAmmo: false },
|
|
1194
|
-
[AmmoItemId.Trap]: { id: AmmoItemId.Trap, ammoType: AmmoType.Trap, quantity: 5, weaponAmmo: false },
|
|
1195
|
-
[AmmoItemId.Prox]: { id: AmmoItemId.Prox, ammoType: AmmoType.Prox, quantity: 5, weaponAmmo: false }
|
|
1196
|
-
};
|
|
1197
1231
|
function getAmmoItemDefinition(id) {
|
|
1198
1232
|
return AMMO_ITEM_DEFINITIONS[id];
|
|
1199
1233
|
}
|
|
@@ -1247,54 +1281,55 @@ function pickupAmmo(inventory, itemId, options = {}) {
|
|
|
1247
1281
|
const amount = options.countOverride ?? def.quantity;
|
|
1248
1282
|
return addAmmo(inventory, def.ammoType, amount);
|
|
1249
1283
|
}
|
|
1284
|
+
var AMMO_ITEM_DEFINITIONS;
|
|
1285
|
+
var init_ammo = __esm({
|
|
1286
|
+
"src/inventory/ammo.ts"() {
|
|
1287
|
+
"use strict";
|
|
1288
|
+
init_esm();
|
|
1289
|
+
AMMO_ITEM_DEFINITIONS = {
|
|
1290
|
+
[AmmoItemId.Shells]: { id: AmmoItemId.Shells, ammoType: AmmoType.Shells, quantity: 10, weaponAmmo: false },
|
|
1291
|
+
[AmmoItemId.Bullets]: { id: AmmoItemId.Bullets, ammoType: AmmoType.Bullets, quantity: 50, weaponAmmo: false },
|
|
1292
|
+
[AmmoItemId.Rockets]: { id: AmmoItemId.Rockets, ammoType: AmmoType.Rockets, quantity: 5, weaponAmmo: false },
|
|
1293
|
+
[AmmoItemId.Grenades]: { id: AmmoItemId.Grenades, ammoType: AmmoType.Grenades, quantity: 5, weaponAmmo: true },
|
|
1294
|
+
[AmmoItemId.Cells]: { id: AmmoItemId.Cells, ammoType: AmmoType.Cells, quantity: 50, weaponAmmo: false },
|
|
1295
|
+
[AmmoItemId.Slugs]: { id: AmmoItemId.Slugs, ammoType: AmmoType.Slugs, quantity: 10, weaponAmmo: false },
|
|
1296
|
+
[AmmoItemId.MagSlugs]: { id: AmmoItemId.MagSlugs, ammoType: AmmoType.MagSlugs, quantity: 10, weaponAmmo: false },
|
|
1297
|
+
[AmmoItemId.Flechettes]: { id: AmmoItemId.Flechettes, ammoType: AmmoType.Flechettes, quantity: 50, weaponAmmo: false },
|
|
1298
|
+
[AmmoItemId.Disruptor]: { id: AmmoItemId.Disruptor, ammoType: AmmoType.Disruptor, quantity: 15, weaponAmmo: false },
|
|
1299
|
+
[AmmoItemId.Tesla]: { id: AmmoItemId.Tesla, ammoType: AmmoType.Tesla, quantity: 5, weaponAmmo: false },
|
|
1300
|
+
[AmmoItemId.Trap]: { id: AmmoItemId.Trap, ammoType: AmmoType.Trap, quantity: 5, weaponAmmo: false },
|
|
1301
|
+
[AmmoItemId.Prox]: { id: AmmoItemId.Prox, ammoType: AmmoType.Prox, quantity: 5, weaponAmmo: false }
|
|
1302
|
+
};
|
|
1303
|
+
}
|
|
1304
|
+
});
|
|
1250
1305
|
|
|
1251
1306
|
// src/combat/damageFlags.ts
|
|
1252
|
-
var DamageFlags = /* @__PURE__ */ ((DamageFlags2) => {
|
|
1253
|
-
DamageFlags2[DamageFlags2["NONE"] = 0] = "NONE";
|
|
1254
|
-
DamageFlags2[DamageFlags2["RADIUS"] = 1] = "RADIUS";
|
|
1255
|
-
DamageFlags2[DamageFlags2["NO_ARMOR"] = 2] = "NO_ARMOR";
|
|
1256
|
-
DamageFlags2[DamageFlags2["ENERGY"] = 4] = "ENERGY";
|
|
1257
|
-
DamageFlags2[DamageFlags2["NO_KNOCKBACK"] = 8] = "NO_KNOCKBACK";
|
|
1258
|
-
DamageFlags2[DamageFlags2["BULLET"] = 16] = "BULLET";
|
|
1259
|
-
DamageFlags2[DamageFlags2["NO_PROTECTION"] = 32] = "NO_PROTECTION";
|
|
1260
|
-
DamageFlags2[DamageFlags2["DESTROY_ARMOR"] = 64] = "DESTROY_ARMOR";
|
|
1261
|
-
DamageFlags2[DamageFlags2["NO_REG_ARMOR"] = 128] = "NO_REG_ARMOR";
|
|
1262
|
-
DamageFlags2[DamageFlags2["NO_POWER_ARMOR"] = 256] = "NO_POWER_ARMOR";
|
|
1263
|
-
DamageFlags2[DamageFlags2["NO_INDICATOR"] = 512] = "NO_INDICATOR";
|
|
1264
|
-
DamageFlags2[DamageFlags2["NO_DAMAGE_EFFECTS"] = 1024] = "NO_DAMAGE_EFFECTS";
|
|
1265
|
-
return DamageFlags2;
|
|
1266
|
-
})(DamageFlags || {});
|
|
1267
1307
|
function hasAnyDamageFlag(flags, mask) {
|
|
1268
1308
|
return (flags & mask) !== 0;
|
|
1269
1309
|
}
|
|
1310
|
+
var DamageFlags;
|
|
1311
|
+
var init_damageFlags = __esm({
|
|
1312
|
+
"src/combat/damageFlags.ts"() {
|
|
1313
|
+
"use strict";
|
|
1314
|
+
DamageFlags = /* @__PURE__ */ ((DamageFlags2) => {
|
|
1315
|
+
DamageFlags2[DamageFlags2["NONE"] = 0] = "NONE";
|
|
1316
|
+
DamageFlags2[DamageFlags2["RADIUS"] = 1] = "RADIUS";
|
|
1317
|
+
DamageFlags2[DamageFlags2["NO_ARMOR"] = 2] = "NO_ARMOR";
|
|
1318
|
+
DamageFlags2[DamageFlags2["ENERGY"] = 4] = "ENERGY";
|
|
1319
|
+
DamageFlags2[DamageFlags2["NO_KNOCKBACK"] = 8] = "NO_KNOCKBACK";
|
|
1320
|
+
DamageFlags2[DamageFlags2["BULLET"] = 16] = "BULLET";
|
|
1321
|
+
DamageFlags2[DamageFlags2["NO_PROTECTION"] = 32] = "NO_PROTECTION";
|
|
1322
|
+
DamageFlags2[DamageFlags2["DESTROY_ARMOR"] = 64] = "DESTROY_ARMOR";
|
|
1323
|
+
DamageFlags2[DamageFlags2["NO_REG_ARMOR"] = 128] = "NO_REG_ARMOR";
|
|
1324
|
+
DamageFlags2[DamageFlags2["NO_POWER_ARMOR"] = 256] = "NO_POWER_ARMOR";
|
|
1325
|
+
DamageFlags2[DamageFlags2["NO_INDICATOR"] = 512] = "NO_INDICATOR";
|
|
1326
|
+
DamageFlags2[DamageFlags2["NO_DAMAGE_EFFECTS"] = 1024] = "NO_DAMAGE_EFFECTS";
|
|
1327
|
+
return DamageFlags2;
|
|
1328
|
+
})(DamageFlags || {});
|
|
1329
|
+
}
|
|
1330
|
+
});
|
|
1270
1331
|
|
|
1271
1332
|
// src/combat/armor.ts
|
|
1272
|
-
var ArmorType = /* @__PURE__ */ ((ArmorType2) => {
|
|
1273
|
-
ArmorType2["BODY"] = "body";
|
|
1274
|
-
ArmorType2["COMBAT"] = "combat";
|
|
1275
|
-
ArmorType2["JACKET"] = "jacket";
|
|
1276
|
-
return ArmorType2;
|
|
1277
|
-
})(ArmorType || {});
|
|
1278
|
-
var ARMOR_INFO = {
|
|
1279
|
-
["jacket" /* JACKET */]: {
|
|
1280
|
-
baseCount: 25,
|
|
1281
|
-
maxCount: 50,
|
|
1282
|
-
normalProtection: 0.3,
|
|
1283
|
-
energyProtection: 0
|
|
1284
|
-
},
|
|
1285
|
-
["combat" /* COMBAT */]: {
|
|
1286
|
-
baseCount: 50,
|
|
1287
|
-
maxCount: 100,
|
|
1288
|
-
normalProtection: 0.6,
|
|
1289
|
-
energyProtection: 0.3
|
|
1290
|
-
},
|
|
1291
|
-
["body" /* BODY */]: {
|
|
1292
|
-
baseCount: 100,
|
|
1293
|
-
maxCount: 200,
|
|
1294
|
-
normalProtection: 0.8,
|
|
1295
|
-
energyProtection: 0.6
|
|
1296
|
-
}
|
|
1297
|
-
};
|
|
1298
1333
|
function applyRegularArmor(damage, flags, state) {
|
|
1299
1334
|
if (damage <= 0 || hasAnyDamageFlag(flags, 2 /* NO_ARMOR */ | 128 /* NO_REG_ARMOR */) || !state.armorType || state.armorCount <= 0) {
|
|
1300
1335
|
return { saved: 0, remainingArmor: state.armorCount };
|
|
@@ -1358,28 +1393,42 @@ function applyPowerArmor(damage, flags, hitPoint, _hitNormal, state, options = {
|
|
|
1358
1393
|
const remainingCells = Math.max(0, state.cellCount - cellsSpent);
|
|
1359
1394
|
return { saved, remainingCells };
|
|
1360
1395
|
}
|
|
1396
|
+
var ArmorType, ARMOR_INFO;
|
|
1397
|
+
var init_armor = __esm({
|
|
1398
|
+
"src/combat/armor.ts"() {
|
|
1399
|
+
"use strict";
|
|
1400
|
+
init_esm();
|
|
1401
|
+
init_damageFlags();
|
|
1402
|
+
ArmorType = /* @__PURE__ */ ((ArmorType2) => {
|
|
1403
|
+
ArmorType2["BODY"] = "body";
|
|
1404
|
+
ArmorType2["COMBAT"] = "combat";
|
|
1405
|
+
ArmorType2["JACKET"] = "jacket";
|
|
1406
|
+
return ArmorType2;
|
|
1407
|
+
})(ArmorType || {});
|
|
1408
|
+
ARMOR_INFO = {
|
|
1409
|
+
["jacket" /* JACKET */]: {
|
|
1410
|
+
baseCount: 25,
|
|
1411
|
+
maxCount: 50,
|
|
1412
|
+
normalProtection: 0.3,
|
|
1413
|
+
energyProtection: 0
|
|
1414
|
+
},
|
|
1415
|
+
["combat" /* COMBAT */]: {
|
|
1416
|
+
baseCount: 50,
|
|
1417
|
+
maxCount: 100,
|
|
1418
|
+
normalProtection: 0.6,
|
|
1419
|
+
energyProtection: 0.3
|
|
1420
|
+
},
|
|
1421
|
+
["body" /* BODY */]: {
|
|
1422
|
+
baseCount: 100,
|
|
1423
|
+
maxCount: 200,
|
|
1424
|
+
normalProtection: 0.8,
|
|
1425
|
+
energyProtection: 0.6
|
|
1426
|
+
}
|
|
1427
|
+
};
|
|
1428
|
+
}
|
|
1429
|
+
});
|
|
1361
1430
|
|
|
1362
1431
|
// src/inventory/playerInventory.ts
|
|
1363
|
-
var KeyId = /* @__PURE__ */ ((KeyId2) => {
|
|
1364
|
-
KeyId2["Blue"] = "key_blue";
|
|
1365
|
-
KeyId2["Red"] = "key_red";
|
|
1366
|
-
KeyId2["Green"] = "key_green";
|
|
1367
|
-
KeyId2["Yellow"] = "key_yellow";
|
|
1368
|
-
KeyId2["DataCD"] = "key_data_cd";
|
|
1369
|
-
KeyId2["PowerCube"] = "key_power_cube";
|
|
1370
|
-
KeyId2["ExplosiveCharges"] = "key_explosive_charges";
|
|
1371
|
-
KeyId2["PowerCore"] = "key_power_core";
|
|
1372
|
-
KeyId2["Pyramid"] = "key_pyramid";
|
|
1373
|
-
KeyId2["DataSpinner"] = "key_data_spinner";
|
|
1374
|
-
KeyId2["Pass"] = "key_pass";
|
|
1375
|
-
KeyId2["CommanderHead"] = "key_commander_head";
|
|
1376
|
-
KeyId2["Airstrike"] = "key_airstrike";
|
|
1377
|
-
KeyId2["NukeContainer"] = "key_nuke_container";
|
|
1378
|
-
KeyId2["Nuke"] = "key_nuke";
|
|
1379
|
-
KeyId2["RedFlag"] = "key_red_flag";
|
|
1380
|
-
KeyId2["BlueFlag"] = "key_blue_flag";
|
|
1381
|
-
return KeyId2;
|
|
1382
|
-
})(KeyId || {});
|
|
1383
1432
|
function createPlayerInventory(init = {}) {
|
|
1384
1433
|
const ammoCaps = init.ammoCaps;
|
|
1385
1434
|
const inv = {
|
|
@@ -1652,8 +1701,144 @@ function deserializePlayerInventory(serialized, options = {}) {
|
|
|
1652
1701
|
items: new Set(serialized.items)
|
|
1653
1702
|
};
|
|
1654
1703
|
}
|
|
1704
|
+
var KeyId;
|
|
1705
|
+
var init_playerInventory = __esm({
|
|
1706
|
+
"src/inventory/playerInventory.ts"() {
|
|
1707
|
+
"use strict";
|
|
1708
|
+
init_ammo();
|
|
1709
|
+
init_esm();
|
|
1710
|
+
init_armor();
|
|
1711
|
+
KeyId = /* @__PURE__ */ ((KeyId2) => {
|
|
1712
|
+
KeyId2["Blue"] = "key_blue";
|
|
1713
|
+
KeyId2["Red"] = "key_red";
|
|
1714
|
+
KeyId2["Green"] = "key_green";
|
|
1715
|
+
KeyId2["Yellow"] = "key_yellow";
|
|
1716
|
+
KeyId2["DataCD"] = "key_data_cd";
|
|
1717
|
+
KeyId2["PowerCube"] = "key_power_cube";
|
|
1718
|
+
KeyId2["ExplosiveCharges"] = "key_explosive_charges";
|
|
1719
|
+
KeyId2["PowerCore"] = "key_power_core";
|
|
1720
|
+
KeyId2["Pyramid"] = "key_pyramid";
|
|
1721
|
+
KeyId2["DataSpinner"] = "key_data_spinner";
|
|
1722
|
+
KeyId2["Pass"] = "key_pass";
|
|
1723
|
+
KeyId2["CommanderHead"] = "key_commander_head";
|
|
1724
|
+
KeyId2["Airstrike"] = "key_airstrike";
|
|
1725
|
+
KeyId2["NukeContainer"] = "key_nuke_container";
|
|
1726
|
+
KeyId2["Nuke"] = "key_nuke";
|
|
1727
|
+
KeyId2["RedFlag"] = "key_red_flag";
|
|
1728
|
+
KeyId2["BlueFlag"] = "key_blue_flag";
|
|
1729
|
+
return KeyId2;
|
|
1730
|
+
})(KeyId || {});
|
|
1731
|
+
}
|
|
1732
|
+
});
|
|
1733
|
+
|
|
1734
|
+
// src/combat/weapons/state.ts
|
|
1735
|
+
function createPlayerWeaponStates() {
|
|
1736
|
+
return {
|
|
1737
|
+
states: /* @__PURE__ */ new Map()
|
|
1738
|
+
};
|
|
1739
|
+
}
|
|
1740
|
+
function getWeaponState(playerStates, weaponId) {
|
|
1741
|
+
let state = playerStates.states.get(weaponId);
|
|
1742
|
+
if (!state) {
|
|
1743
|
+
state = { lastFireTime: 0 };
|
|
1744
|
+
playerStates.states.set(weaponId, state);
|
|
1745
|
+
}
|
|
1746
|
+
return state;
|
|
1747
|
+
}
|
|
1748
|
+
var WeaponStateEnum;
|
|
1749
|
+
var init_state = __esm({
|
|
1750
|
+
"src/combat/weapons/state.ts"() {
|
|
1751
|
+
"use strict";
|
|
1752
|
+
WeaponStateEnum = /* @__PURE__ */ ((WeaponStateEnum2) => {
|
|
1753
|
+
WeaponStateEnum2[WeaponStateEnum2["WEAPON_READY"] = 0] = "WEAPON_READY";
|
|
1754
|
+
WeaponStateEnum2[WeaponStateEnum2["WEAPON_ACTIVATING"] = 1] = "WEAPON_ACTIVATING";
|
|
1755
|
+
WeaponStateEnum2[WeaponStateEnum2["WEAPON_DROPPING"] = 2] = "WEAPON_DROPPING";
|
|
1756
|
+
WeaponStateEnum2[WeaponStateEnum2["WEAPON_FIRING"] = 3] = "WEAPON_FIRING";
|
|
1757
|
+
return WeaponStateEnum2;
|
|
1758
|
+
})(WeaponStateEnum || {});
|
|
1759
|
+
}
|
|
1760
|
+
});
|
|
1761
|
+
|
|
1762
|
+
// src/combat/weapons/switching.ts
|
|
1763
|
+
var switching_exports = {};
|
|
1764
|
+
__export(switching_exports, {
|
|
1765
|
+
ChangeWeapon: () => ChangeWeapon,
|
|
1766
|
+
NoAmmoWeaponChange: () => NoAmmoWeaponChange,
|
|
1767
|
+
setInstantSwitch: () => setInstantSwitch,
|
|
1768
|
+
switchToBestWeapon: () => switchToBestWeapon
|
|
1769
|
+
});
|
|
1770
|
+
function setInstantSwitch(enabled) {
|
|
1771
|
+
instantSwitch = enabled;
|
|
1772
|
+
}
|
|
1773
|
+
function ChangeWeapon(ent, weaponId) {
|
|
1774
|
+
if (!ent.client) return;
|
|
1775
|
+
const client = ent.client;
|
|
1776
|
+
if (client.weaponstate === 2 /* WEAPON_DROPPING */) {
|
|
1777
|
+
return;
|
|
1778
|
+
}
|
|
1779
|
+
if (weaponId) {
|
|
1780
|
+
selectWeapon(client.inventory, weaponId);
|
|
1781
|
+
client.weaponstate = 1 /* WEAPON_ACTIVATING */;
|
|
1782
|
+
client.gun_frame = 0;
|
|
1783
|
+
if (instantSwitch) {
|
|
1784
|
+
client.weaponstate = 0 /* WEAPON_READY */;
|
|
1785
|
+
client.weapon_think_time = 0;
|
|
1786
|
+
return;
|
|
1787
|
+
}
|
|
1788
|
+
client.weapon_think_time = 0;
|
|
1789
|
+
}
|
|
1790
|
+
}
|
|
1791
|
+
function NoAmmoWeaponChange(ent) {
|
|
1792
|
+
if (!ent.client) return;
|
|
1793
|
+
switchToBestWeapon(ent);
|
|
1794
|
+
}
|
|
1795
|
+
function switchToBestWeapon(player) {
|
|
1796
|
+
if (!player.client) {
|
|
1797
|
+
return;
|
|
1798
|
+
}
|
|
1799
|
+
const inventory = player.client.inventory;
|
|
1800
|
+
let bestWeapon = null;
|
|
1801
|
+
if (inventory.ownedWeapons.has(WeaponId.BFG10K) && inventory.ammo.counts[AmmoType.Cells] >= 50) {
|
|
1802
|
+
bestWeapon = WeaponId.BFG10K;
|
|
1803
|
+
} else if (inventory.ownedWeapons.has(WeaponId.RocketLauncher) && inventory.ammo.counts[AmmoType.Rockets] >= 1) {
|
|
1804
|
+
bestWeapon = WeaponId.RocketLauncher;
|
|
1805
|
+
} else if (inventory.ownedWeapons.has(WeaponId.Railgun) && inventory.ammo.counts[AmmoType.Slugs] >= 1) {
|
|
1806
|
+
bestWeapon = WeaponId.Railgun;
|
|
1807
|
+
} else if (inventory.ownedWeapons.has(WeaponId.Chaingun) && inventory.ammo.counts[AmmoType.Bullets] >= 1) {
|
|
1808
|
+
bestWeapon = WeaponId.Chaingun;
|
|
1809
|
+
} else if (inventory.ownedWeapons.has(WeaponId.SuperShotgun) && inventory.ammo.counts[AmmoType.Shells] >= 2) {
|
|
1810
|
+
bestWeapon = WeaponId.SuperShotgun;
|
|
1811
|
+
} else if (inventory.ownedWeapons.has(WeaponId.Machinegun) && inventory.ammo.counts[AmmoType.Bullets] >= 1) {
|
|
1812
|
+
bestWeapon = WeaponId.Machinegun;
|
|
1813
|
+
} else if (inventory.ownedWeapons.has(WeaponId.Shotgun) && inventory.ammo.counts[AmmoType.Shells] >= 1) {
|
|
1814
|
+
bestWeapon = WeaponId.Shotgun;
|
|
1815
|
+
} else {
|
|
1816
|
+
bestWeapon = WeaponId.Blaster;
|
|
1817
|
+
}
|
|
1818
|
+
if (bestWeapon && bestWeapon !== inventory.currentWeapon) {
|
|
1819
|
+
selectWeapon(inventory, bestWeapon);
|
|
1820
|
+
player.client.weaponstate = 1 /* WEAPON_ACTIVATING */;
|
|
1821
|
+
player.client.gun_frame = 0;
|
|
1822
|
+
if (instantSwitch) {
|
|
1823
|
+
player.client.weaponstate = 0 /* WEAPON_READY */;
|
|
1824
|
+
}
|
|
1825
|
+
player.client.weapon_think_time = 0;
|
|
1826
|
+
}
|
|
1827
|
+
}
|
|
1828
|
+
var instantSwitch;
|
|
1829
|
+
var init_switching = __esm({
|
|
1830
|
+
"src/combat/weapons/switching.ts"() {
|
|
1831
|
+
"use strict";
|
|
1832
|
+
init_playerInventory();
|
|
1833
|
+
init_ammo();
|
|
1834
|
+
instantSwitch = false;
|
|
1835
|
+
}
|
|
1836
|
+
});
|
|
1655
1837
|
|
|
1656
1838
|
// src/entities/entity.ts
|
|
1839
|
+
init_esm();
|
|
1840
|
+
init_playerInventory();
|
|
1841
|
+
init_ammo();
|
|
1657
1842
|
var MoveType = /* @__PURE__ */ ((MoveType3) => {
|
|
1658
1843
|
MoveType3[MoveType3["None"] = 0] = "None";
|
|
1659
1844
|
MoveType3[MoveType3["Noclip"] = 1] = "Noclip";
|
|
@@ -2039,6 +2224,16 @@ var ENTITY_FIELD_METADATA = [
|
|
|
2039
2224
|
// Added
|
|
2040
2225
|
];
|
|
2041
2226
|
|
|
2227
|
+
// src/entities/system.ts
|
|
2228
|
+
init_esm();
|
|
2229
|
+
|
|
2230
|
+
// src/physics/movement.ts
|
|
2231
|
+
init_esm();
|
|
2232
|
+
|
|
2233
|
+
// src/ai/movement.ts
|
|
2234
|
+
init_esm();
|
|
2235
|
+
init_esm();
|
|
2236
|
+
|
|
2042
2237
|
// src/ai/constants.ts
|
|
2043
2238
|
var RANGE_MELEE = 20;
|
|
2044
2239
|
var RANGE_NEAR = 440;
|
|
@@ -2081,6 +2276,8 @@ var TraceMask = /* @__PURE__ */ ((TraceMask2) => {
|
|
|
2081
2276
|
})(TraceMask || {});
|
|
2082
2277
|
|
|
2083
2278
|
// src/ai/perception.ts
|
|
2279
|
+
init_esm();
|
|
2280
|
+
init_esm();
|
|
2084
2281
|
var RangeCategory = /* @__PURE__ */ ((RangeCategory4) => {
|
|
2085
2282
|
RangeCategory4["Melee"] = "melee";
|
|
2086
2283
|
RangeCategory4["Near"] = "near";
|
|
@@ -2141,6 +2338,7 @@ function visible(self, other, trace, options) {
|
|
|
2141
2338
|
}
|
|
2142
2339
|
|
|
2143
2340
|
// src/ai/targeting.ts
|
|
2341
|
+
init_esm();
|
|
2144
2342
|
function setIdealYawTowards(self, other) {
|
|
2145
2343
|
const delta = {
|
|
2146
2344
|
x: other.origin.x - self.origin.x,
|
|
@@ -2799,6 +2997,7 @@ function runPush(pusher, system, imports, frametime) {
|
|
|
2799
2997
|
}
|
|
2800
2998
|
|
|
2801
2999
|
// src/physics/fluid.ts
|
|
3000
|
+
init_esm();
|
|
2802
3001
|
function checkWater2(ent, system, imports) {
|
|
2803
3002
|
const origin = ent.origin;
|
|
2804
3003
|
const mins = ent.mins;
|
|
@@ -3101,6 +3300,7 @@ var ThinkScheduler = class {
|
|
|
3101
3300
|
};
|
|
3102
3301
|
|
|
3103
3302
|
// src/entities/system.ts
|
|
3303
|
+
init_esm();
|
|
3104
3304
|
function computeBounds(entity) {
|
|
3105
3305
|
return {
|
|
3106
3306
|
min: {
|
|
@@ -3233,6 +3433,9 @@ var EntitySystem = class {
|
|
|
3233
3433
|
get pointcontents() {
|
|
3234
3434
|
return this.imports.pointcontents;
|
|
3235
3435
|
}
|
|
3436
|
+
get game() {
|
|
3437
|
+
return this._game;
|
|
3438
|
+
}
|
|
3236
3439
|
get world() {
|
|
3237
3440
|
return this.pool.world;
|
|
3238
3441
|
}
|
|
@@ -3753,6 +3956,15 @@ function damageModName(mod) {
|
|
|
3753
3956
|
return `MOD_${DamageMod[mod]}`;
|
|
3754
3957
|
}
|
|
3755
3958
|
|
|
3959
|
+
// src/entities/misc.ts
|
|
3960
|
+
init_esm();
|
|
3961
|
+
|
|
3962
|
+
// src/combat/damage.ts
|
|
3963
|
+
init_esm();
|
|
3964
|
+
init_armor();
|
|
3965
|
+
init_damageFlags();
|
|
3966
|
+
init_esm();
|
|
3967
|
+
|
|
3756
3968
|
// src/imports.ts
|
|
3757
3969
|
var MulticastType = /* @__PURE__ */ ((MulticastType2) => {
|
|
3758
3970
|
MulticastType2[MulticastType2["All"] = 0] = "All";
|
|
@@ -4006,7 +4218,11 @@ function registerMiscSpawns(registry) {
|
|
|
4006
4218
|
registry.register("func_object", func_object);
|
|
4007
4219
|
}
|
|
4008
4220
|
|
|
4221
|
+
// src/entities/targets.ts
|
|
4222
|
+
init_esm();
|
|
4223
|
+
|
|
4009
4224
|
// src/entities/utils.ts
|
|
4225
|
+
init_esm();
|
|
4010
4226
|
var VEC_UP = { x: 0, y: -1, z: 0 };
|
|
4011
4227
|
var MOVEDIR_UP = { x: 0, y: 0, z: 1 };
|
|
4012
4228
|
var VEC_DOWN = { x: 0, y: -2, z: 0 };
|
|
@@ -4028,6 +4244,7 @@ function setMovedir(angles) {
|
|
|
4028
4244
|
}
|
|
4029
4245
|
|
|
4030
4246
|
// src/entities/projectiles.ts
|
|
4247
|
+
init_esm();
|
|
4031
4248
|
function createRocket(sys, owner, start, dir, damage, radiusDamage, speed, flashtype = 0) {
|
|
4032
4249
|
const rocket = sys.spawn();
|
|
4033
4250
|
rocket.classname = "rocket";
|
|
@@ -4483,6 +4700,7 @@ function useTargetSpawner(self, other, activator, context, registry) {
|
|
|
4483
4700
|
warn: context.warn,
|
|
4484
4701
|
free: context.free
|
|
4485
4702
|
};
|
|
4703
|
+
ent.monsterinfo.aiflags |= 1024 /* DoNotCount */;
|
|
4486
4704
|
spawnFunc(ent, spawnContext);
|
|
4487
4705
|
context.entities.finalizeSpawn(ent);
|
|
4488
4706
|
context.entities.linkentity(ent);
|
|
@@ -4490,6 +4708,7 @@ function useTargetSpawner(self, other, activator, context, registry) {
|
|
|
4490
4708
|
if (self.speed) {
|
|
4491
4709
|
ent.velocity = { ...self.movedir };
|
|
4492
4710
|
}
|
|
4711
|
+
ent.renderfx |= RenderFx.IrVisible;
|
|
4493
4712
|
}
|
|
4494
4713
|
var SPAWNFLAG_BLASTER_NOTRAIL = 1;
|
|
4495
4714
|
var SPAWNFLAG_BLASTER_NOEFFECTS = 2;
|
|
@@ -4875,6 +5094,7 @@ function registerTargetSpawns(registry) {
|
|
|
4875
5094
|
}
|
|
4876
5095
|
|
|
4877
5096
|
// src/entities/triggers.ts
|
|
5097
|
+
init_esm();
|
|
4878
5098
|
var FRAME_TIME_SECONDS = 1 / 40;
|
|
4879
5099
|
var THINK_INTERVAL = 0.1;
|
|
4880
5100
|
var HURT_INTERVAL = 0.1;
|
|
@@ -5427,41 +5647,699 @@ function registerTriggerSpawns(registry) {
|
|
|
5427
5647
|
registerTriggerMonsterJump(registry);
|
|
5428
5648
|
}
|
|
5429
5649
|
|
|
5430
|
-
// src/
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
|
|
5438
|
-
|
|
5439
|
-
|
|
5440
|
-
|
|
5441
|
-
|
|
5650
|
+
// src/inventory/items.ts
|
|
5651
|
+
init_ammo();
|
|
5652
|
+
init_playerInventory();
|
|
5653
|
+
|
|
5654
|
+
// src/combat/weapons/chaingun.ts
|
|
5655
|
+
init_state();
|
|
5656
|
+
init_playerInventory();
|
|
5657
|
+
|
|
5658
|
+
// src/buttons.ts
|
|
5659
|
+
var BUTTON_ATTACK = 1;
|
|
5660
|
+
|
|
5661
|
+
// src/combat/weapons/animation.ts
|
|
5662
|
+
init_playerInventory();
|
|
5663
|
+
|
|
5664
|
+
// src/combat/weapons/firing.ts
|
|
5665
|
+
init_state();
|
|
5666
|
+
init_playerInventory();
|
|
5667
|
+
init_ammo();
|
|
5668
|
+
init_esm();
|
|
5669
|
+
|
|
5670
|
+
// src/combat/weapons/projectSource.ts
|
|
5671
|
+
init_esm();
|
|
5672
|
+
var VIEW_HEIGHT = 22;
|
|
5673
|
+
function P_ProjectSource(game, ent, offset, forward, right, up) {
|
|
5674
|
+
const origin = copyVec3(ent.origin);
|
|
5675
|
+
const eye = { ...origin, z: origin.z + (ent.viewheight ?? VIEW_HEIGHT) };
|
|
5676
|
+
const f = scaleVec3(forward, offset.x);
|
|
5677
|
+
const r = scaleVec3(right, offset.y);
|
|
5678
|
+
const u = scaleVec3(up, offset.z);
|
|
5679
|
+
const point = addVec3(addVec3(addVec3(eye, f), r), u);
|
|
5680
|
+
const tr = game.trace(eye, null, null, point, ent, MASK_SOLID);
|
|
5681
|
+
if (tr.fraction < 1) {
|
|
5682
|
+
return { x: tr.endpos.x - forward.x, y: tr.endpos.y - forward.y, z: tr.endpos.z - forward.z };
|
|
5683
|
+
}
|
|
5684
|
+
return point;
|
|
5442
5685
|
}
|
|
5443
|
-
|
|
5444
|
-
|
|
5445
|
-
|
|
5446
|
-
|
|
5447
|
-
|
|
5686
|
+
|
|
5687
|
+
// src/combat/weapons/frames.ts
|
|
5688
|
+
var FRAME_SHOTGUN_ACTIVATE_LAST = 7;
|
|
5689
|
+
var FRAME_SHOTGUN_FIRE_LAST = 18;
|
|
5690
|
+
var FRAME_SHOTGUN_IDLE_LAST = 36;
|
|
5691
|
+
var FRAME_SHOTGUN_DEACTIVATE_LAST = 39;
|
|
5692
|
+
var FRAME_SSHOTGUN_ACTIVATE_LAST = 5;
|
|
5693
|
+
var FRAME_SSHOTGUN_FIRE_LAST = 28;
|
|
5694
|
+
var FRAME_SSHOTGUN_IDLE_LAST = 52;
|
|
5695
|
+
var FRAME_SSHOTGUN_DEACTIVATE_LAST = 57;
|
|
5696
|
+
var FRAME_MACHINEGUN_ACTIVATE_LAST = 3;
|
|
5697
|
+
var FRAME_MACHINEGUN_FIRE_LAST = 23;
|
|
5698
|
+
var FRAME_MACHINEGUN_IDLE_LAST = 52;
|
|
5699
|
+
var FRAME_MACHINEGUN_DEACTIVATE_LAST = 61;
|
|
5700
|
+
var FRAME_CHAINGUN_FIRE_FRAME = 5;
|
|
5701
|
+
var FRAME_CHAINGUN_FIRE_LAST = 21;
|
|
5702
|
+
var FRAME_CHAINGUN_IDLE_LAST = 52;
|
|
5703
|
+
var FRAME_CHAINGUN_DEACTIVATE_LAST = 61;
|
|
5704
|
+
var FRAME_RAILGUN_ACTIVATE_LAST = 3;
|
|
5705
|
+
var FRAME_RAILGUN_FIRE_LAST = 18;
|
|
5706
|
+
var FRAME_RAILGUN_IDLE_LAST = 51;
|
|
5707
|
+
var FRAME_RAILGUN_DEACTIVATE_LAST = 56;
|
|
5708
|
+
var FRAME_ROCKET_ACTIVATE_LAST = 3;
|
|
5709
|
+
var FRAME_ROCKET_FIRE_LAST = 12;
|
|
5710
|
+
var FRAME_ROCKET_IDLE_LAST = 34;
|
|
5711
|
+
var FRAME_ROCKET_DEACTIVATE_LAST = 38;
|
|
5712
|
+
var FRAME_HYPERBLASTER_FIRE_FRAME = 6;
|
|
5713
|
+
var FRAME_HYPERBLASTER_FIRE_LAST = 9;
|
|
5714
|
+
var FRAME_HYPERBLASTER_IDLE_LAST = 28;
|
|
5715
|
+
var FRAME_HYPERBLASTER_DEACTIVATE_LAST = 32;
|
|
5716
|
+
var FRAME_BFG_ACTIVATE_LAST = 8;
|
|
5717
|
+
var FRAME_BFG_FIRE_LAST = 32;
|
|
5718
|
+
var FRAME_BFG_IDLE_LAST = 54;
|
|
5719
|
+
var FRAME_BFG_DEACTIVATE_LAST = 58;
|
|
5720
|
+
var FRAME_GRENADELAUNCHER_ACTIVATE_LAST = 5;
|
|
5721
|
+
var FRAME_GRENADELAUNCHER_FIRE_LAST = 16;
|
|
5722
|
+
var FRAME_GRENADELAUNCHER_IDLE_LAST = 36;
|
|
5723
|
+
var FRAME_GRENADELAUNCHER_DEACTIVATE_LAST = 39;
|
|
5724
|
+
var FRAME_BLASTER_ACTIVATE_LAST = 4;
|
|
5725
|
+
var FRAME_BLASTER_FIRE_LAST = 8;
|
|
5726
|
+
var FRAME_BLASTER_IDLE_LAST = 52;
|
|
5727
|
+
var FRAME_BLASTER_DEACTIVATE_LAST = 55;
|
|
5728
|
+
|
|
5729
|
+
// src/entities/player_anim.ts
|
|
5730
|
+
var FRAME_stand01 = 0;
|
|
5731
|
+
var FRAME_stand40 = 39;
|
|
5732
|
+
var FRAME_run1 = 40;
|
|
5733
|
+
var FRAME_run6 = 45;
|
|
5734
|
+
var FRAME_attack1 = 46;
|
|
5735
|
+
var FRAME_attack8 = 53;
|
|
5736
|
+
var FRAME_pain101 = 54;
|
|
5737
|
+
var FRAME_pain104 = 57;
|
|
5738
|
+
var FRAME_pain201 = 58;
|
|
5739
|
+
var FRAME_pain204 = 61;
|
|
5740
|
+
var FRAME_pain301 = 62;
|
|
5741
|
+
var FRAME_pain304 = 65;
|
|
5742
|
+
var FRAME_death101 = 66;
|
|
5743
|
+
var FRAME_death106 = 71;
|
|
5744
|
+
var FRAME_death201 = 72;
|
|
5745
|
+
var FRAME_death206 = 77;
|
|
5746
|
+
var FRAME_death301 = 78;
|
|
5747
|
+
var FRAME_death306 = 83;
|
|
5748
|
+
var FRAME_crattak1 = 109;
|
|
5749
|
+
var FRAME_crattak9 = 117;
|
|
5750
|
+
var ANIM_BASIC = 0;
|
|
5751
|
+
var ANIM_ATTACK = 1;
|
|
5752
|
+
var ANIM_PAIN = 2;
|
|
5753
|
+
var ANIM_DEATH = 3;
|
|
5754
|
+
|
|
5755
|
+
// src/combat/weapons/firing.ts
|
|
5756
|
+
var random2 = createRandomGenerator();
|
|
5757
|
+
function applyKick(player, pitch, yaw = 0, kickOrigin = 0) {
|
|
5758
|
+
if (player.client) {
|
|
5759
|
+
player.client.kick_angles = { x: pitch, y: yaw, z: 0 };
|
|
5760
|
+
player.client.kick_origin = { x: kickOrigin, y: 0, z: 0 };
|
|
5761
|
+
}
|
|
5762
|
+
}
|
|
5763
|
+
function setPlayerAttackAnim(player) {
|
|
5764
|
+
if (!player.client) return;
|
|
5765
|
+
const ducked = (player.client.pm_flags & 2) !== 0;
|
|
5766
|
+
player.client.anim_priority = ANIM_ATTACK;
|
|
5767
|
+
if (ducked) {
|
|
5768
|
+
player.frame = FRAME_crattak1 - 1;
|
|
5769
|
+
player.client.anim_end = FRAME_crattak9;
|
|
5770
|
+
} else {
|
|
5771
|
+
player.frame = FRAME_attack1 - 1;
|
|
5772
|
+
player.client.anim_end = FRAME_attack8;
|
|
5773
|
+
}
|
|
5774
|
+
}
|
|
5775
|
+
function fireHitscan(game, player, start, forward, damage, knockback, mod) {
|
|
5776
|
+
const end = { x: start.x + forward.x * 8192, y: start.y + forward.y * 8192, z: start.z + forward.z * 8192 };
|
|
5777
|
+
const trace = game.trace(
|
|
5778
|
+
start,
|
|
5779
|
+
null,
|
|
5780
|
+
null,
|
|
5781
|
+
end,
|
|
5782
|
+
player,
|
|
5783
|
+
0
|
|
5784
|
+
);
|
|
5785
|
+
if (trace.ent && trace.ent.takedamage) {
|
|
5786
|
+
T_Damage(
|
|
5787
|
+
trace.ent,
|
|
5788
|
+
player,
|
|
5789
|
+
player,
|
|
5790
|
+
ZERO_VEC3,
|
|
5791
|
+
trace.endpos,
|
|
5792
|
+
trace.plane ? trace.plane.normal : ZERO_VEC3,
|
|
5793
|
+
damage,
|
|
5794
|
+
knockback,
|
|
5795
|
+
16 /* BULLET */,
|
|
5796
|
+
mod,
|
|
5797
|
+
game.time,
|
|
5798
|
+
game.multicast
|
|
5799
|
+
);
|
|
5800
|
+
} else {
|
|
5801
|
+
if (trace.plane) {
|
|
5802
|
+
game.multicast(trace.endpos, 1 /* Pvs */, ServerCommand.temp_entity, TempEntity.GUNSHOT, trace.endpos, trace.plane.normal);
|
|
5803
|
+
}
|
|
5804
|
+
}
|
|
5805
|
+
}
|
|
5806
|
+
function fireMultiplePellets(game, player, start, forward, right, up, count, damage, knockback, hspread, vspread, mod) {
|
|
5807
|
+
for (let i = 0; i < count; i++) {
|
|
5808
|
+
const spread = addVec3(scaleVec3(right, random2.crandom() * hspread), scaleVec3(up, random2.crandom() * vspread));
|
|
5809
|
+
const dir = addVec3(forward, spread);
|
|
5810
|
+
const end = { x: start.x + dir.x * 8192, y: start.y + dir.y * 8192, z: start.z + dir.z * 8192 };
|
|
5811
|
+
const trace = game.trace(start, null, null, end, player, 0);
|
|
5812
|
+
if (trace.ent && trace.ent.takedamage) {
|
|
5813
|
+
T_Damage(
|
|
5814
|
+
trace.ent,
|
|
5815
|
+
player,
|
|
5816
|
+
player,
|
|
5817
|
+
ZERO_VEC3,
|
|
5818
|
+
trace.endpos,
|
|
5819
|
+
trace.plane ? trace.plane.normal : ZERO_VEC3,
|
|
5820
|
+
damage,
|
|
5821
|
+
knockback,
|
|
5822
|
+
16 /* BULLET */,
|
|
5823
|
+
mod,
|
|
5824
|
+
game.time,
|
|
5825
|
+
game.multicast
|
|
5826
|
+
);
|
|
5827
|
+
} else if (trace.plane) {
|
|
5828
|
+
if (random2.frandom() > 0.9) {
|
|
5829
|
+
game.multicast(trace.endpos, 1 /* Pvs */, ServerCommand.temp_entity, TempEntity.GUNSHOT, trace.endpos, trace.plane.normal);
|
|
5830
|
+
}
|
|
5831
|
+
}
|
|
5832
|
+
}
|
|
5833
|
+
}
|
|
5834
|
+
function fireRailgun(game, player, start, forward, damage, knockback) {
|
|
5835
|
+
const originalStart = { ...start };
|
|
5836
|
+
let currentStart = { ...start };
|
|
5837
|
+
const end = { x: start.x + forward.x * 8192, y: start.y + forward.y * 8192, z: start.z + forward.z * 8192 };
|
|
5838
|
+
let ignore = player;
|
|
5839
|
+
let count = 0;
|
|
5840
|
+
let finalEnd = end;
|
|
5841
|
+
while (count < 16) {
|
|
5842
|
+
count++;
|
|
5843
|
+
const trace = game.trace(currentStart, null, null, end, ignore, 0);
|
|
5844
|
+
finalEnd = trace.endpos;
|
|
5845
|
+
if (trace.fraction >= 1) {
|
|
5846
|
+
break;
|
|
5847
|
+
}
|
|
5848
|
+
if (trace.ent && trace.ent.takedamage) {
|
|
5849
|
+
T_Damage(
|
|
5850
|
+
trace.ent,
|
|
5851
|
+
player,
|
|
5852
|
+
player,
|
|
5853
|
+
ZERO_VEC3,
|
|
5854
|
+
trace.endpos,
|
|
5855
|
+
trace.plane ? trace.plane.normal : ZERO_VEC3,
|
|
5856
|
+
damage,
|
|
5857
|
+
knockback,
|
|
5858
|
+
4 /* ENERGY */,
|
|
5859
|
+
11 /* RAILGUN */,
|
|
5860
|
+
game.time,
|
|
5861
|
+
game.multicast
|
|
5862
|
+
);
|
|
5863
|
+
}
|
|
5864
|
+
ignore = trace.ent;
|
|
5865
|
+
currentStart = trace.endpos;
|
|
5866
|
+
if (!trace.ent || trace.ent === game.entities.world) {
|
|
5867
|
+
break;
|
|
5868
|
+
}
|
|
5869
|
+
}
|
|
5870
|
+
game.multicast(originalStart, 2 /* Phs */, ServerCommand.temp_entity, TempEntity.RAILTRAIL, originalStart, finalEnd);
|
|
5871
|
+
}
|
|
5872
|
+
function fireShotgun(game, player) {
|
|
5873
|
+
if (!player.client) return;
|
|
5874
|
+
const inventory = player.client.inventory;
|
|
5875
|
+
if (inventory.ammo.counts[AmmoType.Shells] < 1) {
|
|
5876
|
+
return;
|
|
5877
|
+
}
|
|
5878
|
+
inventory.ammo.counts[AmmoType.Shells]--;
|
|
5879
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, MZ_SHOTGUN);
|
|
5880
|
+
applyKick(player, -2, 0, -2);
|
|
5881
|
+
setPlayerAttackAnim(player);
|
|
5882
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
5883
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
5884
|
+
fireMultiplePellets(game, player, source, forward, right, up, 12, 4, 1, 500, 500, 2 /* SHOTGUN */);
|
|
5885
|
+
}
|
|
5886
|
+
function fireSuperShotgun(game, player) {
|
|
5887
|
+
if (!player.client) return;
|
|
5888
|
+
const inventory = player.client.inventory;
|
|
5889
|
+
if (inventory.ammo.counts[AmmoType.Shells] < 2) {
|
|
5890
|
+
return;
|
|
5891
|
+
}
|
|
5892
|
+
inventory.ammo.counts[AmmoType.Shells] -= 2;
|
|
5893
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, MZ_SSHOTGUN);
|
|
5894
|
+
applyKick(player, -4, 0, -4);
|
|
5895
|
+
setPlayerAttackAnim(player);
|
|
5896
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
5897
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
5898
|
+
const { forward: forward1, right: right1, up: up1 } = angleVectors({ ...player.angles, y: player.angles.y - 5 });
|
|
5899
|
+
fireMultiplePellets(game, player, source, forward1, right1, up1, 10, 6, 1, 700, 700, 3 /* SSHOTGUN */);
|
|
5900
|
+
const { forward: forward2, right: right2, up: up2 } = angleVectors({ ...player.angles, y: player.angles.y + 5 });
|
|
5901
|
+
fireMultiplePellets(game, player, source, forward2, right2, up2, 10, 6, 1, 700, 700, 3 /* SSHOTGUN */);
|
|
5902
|
+
}
|
|
5903
|
+
function fireMachinegun(game, player) {
|
|
5904
|
+
if (!player.client) return;
|
|
5905
|
+
const inventory = player.client.inventory;
|
|
5906
|
+
if (inventory.ammo.counts[AmmoType.Bullets] < 1) {
|
|
5907
|
+
return;
|
|
5908
|
+
}
|
|
5909
|
+
inventory.ammo.counts[AmmoType.Bullets]--;
|
|
5910
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, MZ_MACHINEGUN);
|
|
5911
|
+
applyKick(player, -1, random2.crandom() * 0.5, 0);
|
|
5912
|
+
setPlayerAttackAnim(player);
|
|
5913
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
5914
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
5915
|
+
fireHitscan(game, player, source, forward, 8, 1, 4 /* MACHINEGUN */);
|
|
5916
|
+
}
|
|
5917
|
+
function fireChaingun(game, player) {
|
|
5918
|
+
if (!player.client) return;
|
|
5919
|
+
const inventory = player.client.inventory;
|
|
5920
|
+
const weaponState = getWeaponState(player.client.weaponStates, WeaponId.Chaingun);
|
|
5921
|
+
if (game.time - weaponState.lastFireTime > 200) {
|
|
5922
|
+
weaponState.spinupCount = 0;
|
|
5923
|
+
}
|
|
5924
|
+
const spinupCount = (weaponState.spinupCount || 0) + 1;
|
|
5925
|
+
weaponState.spinupCount = spinupCount;
|
|
5926
|
+
let shots;
|
|
5927
|
+
if (spinupCount <= 5) {
|
|
5928
|
+
shots = 1;
|
|
5929
|
+
if (spinupCount === 1) {
|
|
5930
|
+
game.sound(player, 0, "weapons/chngnu1a.wav", 1, 0, 0);
|
|
5931
|
+
}
|
|
5932
|
+
} else {
|
|
5933
|
+
if (spinupCount <= 10) {
|
|
5934
|
+
shots = 2;
|
|
5935
|
+
} else {
|
|
5936
|
+
shots = 3;
|
|
5937
|
+
}
|
|
5938
|
+
game.sound(player, 0, "weapons/chngnl1a.wav", 1, 0, 0);
|
|
5939
|
+
}
|
|
5940
|
+
if (inventory.ammo.counts[AmmoType.Bullets] < shots) {
|
|
5941
|
+
shots = inventory.ammo.counts[AmmoType.Bullets];
|
|
5942
|
+
}
|
|
5943
|
+
if (shots === 0) {
|
|
5944
|
+
return;
|
|
5945
|
+
}
|
|
5946
|
+
inventory.ammo.counts[AmmoType.Bullets] -= shots;
|
|
5947
|
+
const damage = game.deathmatch ? 6 : 8;
|
|
5948
|
+
const knockback = 1;
|
|
5949
|
+
applyKick(player, -0.5, random2.crandom() * (0.5 + shots * 0.15), 0);
|
|
5950
|
+
setPlayerAttackAnim(player);
|
|
5951
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
5952
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
5953
|
+
for (let i = 0; i < shots; i++) {
|
|
5954
|
+
const spread = addVec3(scaleVec3(right, random2.crandom() * 4), scaleVec3(up, random2.crandom() * 4));
|
|
5955
|
+
const dir = addVec3(forward, spread);
|
|
5956
|
+
fireHitscan(game, player, source, dir, damage, knockback, 5 /* CHAINGUN */);
|
|
5957
|
+
}
|
|
5958
|
+
const flash = MZ_CHAINGUN1 + shots - 1;
|
|
5959
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, flash);
|
|
5960
|
+
}
|
|
5961
|
+
function fireRailgunShot(game, player) {
|
|
5962
|
+
if (!player.client) return;
|
|
5963
|
+
const inventory = player.client.inventory;
|
|
5964
|
+
if (inventory.ammo.counts[AmmoType.Slugs] < 1) {
|
|
5965
|
+
return;
|
|
5966
|
+
}
|
|
5967
|
+
inventory.ammo.counts[AmmoType.Slugs]--;
|
|
5968
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, MZ_RAILGUN);
|
|
5969
|
+
applyKick(player, -3, 0, -3);
|
|
5970
|
+
setPlayerAttackAnim(player);
|
|
5971
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
5972
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
5973
|
+
const damage = game.deathmatch ? 100 : 125;
|
|
5974
|
+
const knockback = game.deathmatch ? 200 : 225;
|
|
5975
|
+
fireRailgun(game, player, source, forward, damage, knockback);
|
|
5976
|
+
}
|
|
5977
|
+
function fireHyperBlaster(game, player) {
|
|
5978
|
+
if (!player.client) return;
|
|
5979
|
+
const inventory = player.client.inventory;
|
|
5980
|
+
if (inventory.ammo.counts[AmmoType.Cells] < 1) {
|
|
5981
|
+
return;
|
|
5982
|
+
}
|
|
5983
|
+
inventory.ammo.counts[AmmoType.Cells]--;
|
|
5984
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, MZ_HYPERBLASTER);
|
|
5985
|
+
applyKick(player, -0.5, 0, 0);
|
|
5986
|
+
setPlayerAttackAnim(player);
|
|
5987
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
5988
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
5989
|
+
const damage = game.deathmatch ? 15 : 20;
|
|
5990
|
+
createBlasterBolt(game.entities, player, source, forward, damage, 1e3, 10 /* HYPERBLASTER */);
|
|
5991
|
+
}
|
|
5992
|
+
function fireBlaster(game, player) {
|
|
5993
|
+
if (!player.client) return;
|
|
5994
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, MZ_BLASTER);
|
|
5995
|
+
applyKick(player, -0.5, 0, 0);
|
|
5996
|
+
setPlayerAttackAnim(player);
|
|
5997
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
5998
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
5999
|
+
createBlasterBolt(game.entities, player, source, forward, 15, 1500, 1 /* BLASTER */);
|
|
6000
|
+
}
|
|
6001
|
+
function fireRocket(game, player) {
|
|
6002
|
+
if (!player.client) return;
|
|
6003
|
+
const inventory = player.client.inventory;
|
|
6004
|
+
if (inventory.ammo.counts[AmmoType.Rockets] < 1) {
|
|
6005
|
+
return;
|
|
6006
|
+
}
|
|
6007
|
+
inventory.ammo.counts[AmmoType.Rockets]--;
|
|
6008
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, MZ_ROCKET);
|
|
6009
|
+
applyKick(player, -2, 0, -2);
|
|
6010
|
+
setPlayerAttackAnim(player);
|
|
6011
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
6012
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
6013
|
+
const damage = 100 + game.random.irandom(21);
|
|
6014
|
+
const radiusDamage = 120;
|
|
6015
|
+
createRocket(game.entities, player, source, forward, damage, radiusDamage, 650);
|
|
6016
|
+
}
|
|
6017
|
+
function fireGrenadeLauncher(game, player) {
|
|
6018
|
+
if (!player.client) return;
|
|
6019
|
+
const inventory = player.client.inventory;
|
|
6020
|
+
if (inventory.ammo.counts[AmmoType.Grenades] < 1) {
|
|
6021
|
+
return;
|
|
6022
|
+
}
|
|
6023
|
+
inventory.ammo.counts[AmmoType.Grenades]--;
|
|
6024
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, MZ_GRENADE);
|
|
6025
|
+
applyKick(player, -2, 0, -2);
|
|
6026
|
+
setPlayerAttackAnim(player);
|
|
6027
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
6028
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
6029
|
+
createGrenade(game.entities, player, source, forward, 120, 600);
|
|
6030
|
+
}
|
|
6031
|
+
function fireBFG(game, player) {
|
|
6032
|
+
if (!player.client) return;
|
|
6033
|
+
const inventory = player.client.inventory;
|
|
6034
|
+
const gun_frame = player.client.gun_frame;
|
|
6035
|
+
const isPrimeFrame = gun_frame === 9 || gun_frame === 0 || gun_frame === void 0;
|
|
6036
|
+
const isFireFrame = gun_frame === 22 || gun_frame === 0 || gun_frame === void 0;
|
|
6037
|
+
if (isPrimeFrame) {
|
|
6038
|
+
if (inventory.ammo.counts[AmmoType.Cells] < 50) {
|
|
6039
|
+
return;
|
|
6040
|
+
}
|
|
6041
|
+
inventory.ammo.counts[AmmoType.Cells] -= 50;
|
|
6042
|
+
game.sound(player, 0, "weapons/bfg__f1y.wav", 1, 0, 0);
|
|
6043
|
+
}
|
|
6044
|
+
if (isFireFrame) {
|
|
6045
|
+
game.multicast(player.origin, 1 /* Pvs */, ServerCommand.muzzleflash, player.index, MZ_BFG);
|
|
6046
|
+
applyKick(player, -5, 0, -2);
|
|
6047
|
+
setPlayerAttackAnim(player);
|
|
6048
|
+
const { forward, right, up } = angleVectors(player.angles);
|
|
6049
|
+
const source = P_ProjectSource(game, player, { x: 8, y: 8, z: -8 }, forward, right, up);
|
|
6050
|
+
const damage = game.deathmatch ? 200 : 500;
|
|
6051
|
+
createBfgBall(game.entities, player, source, forward, damage, 400, 200);
|
|
6052
|
+
} else if (gun_frame === void 0 || gun_frame === 0) {
|
|
5448
6053
|
}
|
|
5449
|
-
return state;
|
|
5450
6054
|
}
|
|
5451
6055
|
|
|
5452
|
-
// src/
|
|
5453
|
-
|
|
6056
|
+
// src/combat/weapons/animation.ts
|
|
6057
|
+
function Weapon_AnimationTime(ent) {
|
|
6058
|
+
let time = 0.1;
|
|
6059
|
+
if (ent.client?.inventory.powerups.has(PowerupId.TechHaste)) {
|
|
6060
|
+
time *= 0.5;
|
|
6061
|
+
}
|
|
6062
|
+
if (ent.client?.inventory.powerups.has(PowerupId.QuadFire)) {
|
|
6063
|
+
time *= 0.25;
|
|
6064
|
+
}
|
|
6065
|
+
return time;
|
|
6066
|
+
}
|
|
6067
|
+
function Weapon_Generic(ent, FRAME_ACTIVATE_LAST, FRAME_FIRE_LAST, FRAME_IDLE_LAST, FRAME_DEACTIVATE_LAST, pause_frames, fire_frames, fire, sys) {
|
|
6068
|
+
if (!ent.client) return;
|
|
6069
|
+
const client = ent.client;
|
|
6070
|
+
const time = sys.timeSeconds;
|
|
6071
|
+
if (client.weapon_think_time && client.weapon_think_time <= time) {
|
|
6072
|
+
client.weapon_think_time = 0;
|
|
6073
|
+
}
|
|
6074
|
+
if (client.weapon_think_time && client.weapon_think_time > time) {
|
|
6075
|
+
return;
|
|
6076
|
+
}
|
|
6077
|
+
if (client.weaponstate === 1 /* WEAPON_ACTIVATING */) {
|
|
6078
|
+
if (client.gun_frame < FRAME_ACTIVATE_LAST) {
|
|
6079
|
+
client.gun_frame++;
|
|
6080
|
+
client.weapon_think_time = time + Weapon_AnimationTime(ent);
|
|
6081
|
+
return;
|
|
6082
|
+
}
|
|
6083
|
+
client.weaponstate = 0 /* WEAPON_READY */;
|
|
6084
|
+
client.gun_frame = FRAME_FIRE_LAST + 1;
|
|
6085
|
+
client.weapon_think_time = time + Weapon_AnimationTime(ent);
|
|
6086
|
+
return;
|
|
6087
|
+
}
|
|
6088
|
+
if (client.weaponstate === 2 /* WEAPON_DROPPING */) {
|
|
6089
|
+
if (client.gun_frame < FRAME_DEACTIVATE_LAST) {
|
|
6090
|
+
client.gun_frame++;
|
|
6091
|
+
client.weapon_think_time = time + Weapon_AnimationTime(ent);
|
|
6092
|
+
return;
|
|
6093
|
+
}
|
|
6094
|
+
Promise.resolve().then(() => (init_switching(), switching_exports)).then(({ ChangeWeapon: ChangeWeapon2 }) => {
|
|
6095
|
+
ChangeWeapon2(ent);
|
|
6096
|
+
});
|
|
6097
|
+
return;
|
|
6098
|
+
}
|
|
6099
|
+
if (client.weaponstate === 0 /* WEAPON_READY */) {
|
|
6100
|
+
if (client.buttons & 1) {
|
|
6101
|
+
client.weaponstate = 3 /* WEAPON_FIRING */;
|
|
6102
|
+
client.gun_frame = FRAME_ACTIVATE_LAST + 1;
|
|
6103
|
+
return;
|
|
6104
|
+
}
|
|
6105
|
+
if (client.gun_frame < FRAME_IDLE_LAST) {
|
|
6106
|
+
client.gun_frame++;
|
|
6107
|
+
client.weapon_think_time = time + Weapon_AnimationTime(ent);
|
|
6108
|
+
if (pause_frames) {
|
|
6109
|
+
for (const frame of pause_frames) {
|
|
6110
|
+
if (client.gun_frame === frame) {
|
|
6111
|
+
if (random2.frandom() < 0.5) {
|
|
6112
|
+
return;
|
|
6113
|
+
}
|
|
6114
|
+
}
|
|
6115
|
+
}
|
|
6116
|
+
}
|
|
6117
|
+
return;
|
|
6118
|
+
}
|
|
6119
|
+
client.gun_frame = FRAME_FIRE_LAST + 1;
|
|
6120
|
+
client.weapon_think_time = time + Weapon_AnimationTime(ent);
|
|
6121
|
+
return;
|
|
6122
|
+
}
|
|
6123
|
+
if (client.weaponstate === 3 /* WEAPON_FIRING */) {
|
|
6124
|
+
if (fire_frames) {
|
|
6125
|
+
for (const frame of fire_frames) {
|
|
6126
|
+
if (client.gun_frame === frame) {
|
|
6127
|
+
if (fire) fire(ent);
|
|
6128
|
+
break;
|
|
6129
|
+
}
|
|
6130
|
+
}
|
|
6131
|
+
}
|
|
6132
|
+
if (client.gun_frame < FRAME_FIRE_LAST) {
|
|
6133
|
+
client.gun_frame++;
|
|
6134
|
+
client.weapon_think_time = time + Weapon_AnimationTime(ent);
|
|
6135
|
+
return;
|
|
6136
|
+
}
|
|
6137
|
+
client.weaponstate = 0 /* WEAPON_READY */;
|
|
6138
|
+
client.gun_frame = FRAME_FIRE_LAST + 1;
|
|
6139
|
+
client.weapon_think_time = time + Weapon_AnimationTime(ent);
|
|
6140
|
+
return;
|
|
6141
|
+
}
|
|
6142
|
+
}
|
|
6143
|
+
function Weapon_Repeating(ent, FRAME_FIRE_FRAME, FRAME_FIRE_LAST, FRAME_IDLE_LAST, FRAME_PAUSE, FRAME_NOOP, fire, sys) {
|
|
6144
|
+
if (!ent.client) return;
|
|
6145
|
+
const client = ent.client;
|
|
6146
|
+
if (client.weaponstate === 3 /* WEAPON_FIRING */) {
|
|
6147
|
+
if (client.gun_frame === FRAME_FIRE_LAST || client.gun_frame === FRAME_IDLE_LAST) {
|
|
6148
|
+
client.gun_frame = FRAME_FIRE_FRAME;
|
|
6149
|
+
} else {
|
|
6150
|
+
client.gun_frame++;
|
|
6151
|
+
}
|
|
6152
|
+
if (fire) {
|
|
6153
|
+
fire(ent);
|
|
6154
|
+
}
|
|
6155
|
+
if (!(client.buttons & 1)) {
|
|
6156
|
+
client.gun_frame = FRAME_IDLE_LAST + 1;
|
|
6157
|
+
client.weaponstate = 0 /* WEAPON_READY */;
|
|
6158
|
+
}
|
|
6159
|
+
} else {
|
|
6160
|
+
Weapon_Generic(
|
|
6161
|
+
ent,
|
|
6162
|
+
FRAME_FIRE_FRAME - 1,
|
|
6163
|
+
FRAME_FIRE_LAST,
|
|
6164
|
+
FRAME_IDLE_LAST,
|
|
6165
|
+
FRAME_PAUSE,
|
|
6166
|
+
null,
|
|
6167
|
+
null,
|
|
6168
|
+
fire,
|
|
6169
|
+
sys
|
|
6170
|
+
);
|
|
6171
|
+
}
|
|
6172
|
+
}
|
|
5454
6173
|
|
|
5455
6174
|
// src/combat/weapons/chaingun.ts
|
|
5456
6175
|
function chaingunThink(player, sys) {
|
|
5457
|
-
if (!player.client) {
|
|
5458
|
-
return;
|
|
5459
|
-
}
|
|
5460
6176
|
const weaponState = getWeaponState(player.client.weaponStates, WeaponId.Chaingun);
|
|
5461
6177
|
if (!(player.client.buttons & BUTTON_ATTACK) && weaponState.spinupCount && weaponState.spinupCount > 0) {
|
|
5462
6178
|
sys.sound(player, 0, "weapons/chngnd1a.wav", 1, 0, 0);
|
|
5463
6179
|
weaponState.spinupCount = 0;
|
|
5464
6180
|
}
|
|
6181
|
+
Weapon_Repeating(
|
|
6182
|
+
player,
|
|
6183
|
+
FRAME_CHAINGUN_FIRE_FRAME,
|
|
6184
|
+
FRAME_CHAINGUN_FIRE_LAST,
|
|
6185
|
+
FRAME_CHAINGUN_IDLE_LAST,
|
|
6186
|
+
FRAME_CHAINGUN_DEACTIVATE_LAST,
|
|
6187
|
+
0,
|
|
6188
|
+
// FRAME_NOOP
|
|
6189
|
+
(ent) => fireChaingun(sys.game, ent),
|
|
6190
|
+
sys
|
|
6191
|
+
);
|
|
6192
|
+
}
|
|
6193
|
+
|
|
6194
|
+
// src/combat/weapons/shotgun.ts
|
|
6195
|
+
var SHOTGUN_PAUSE_FRAMES = [22, 28, 34];
|
|
6196
|
+
var SHOTGUN_FIRE_FRAMES = [8];
|
|
6197
|
+
function shotgunThink(player, sys) {
|
|
6198
|
+
Weapon_Generic(
|
|
6199
|
+
player,
|
|
6200
|
+
FRAME_SHOTGUN_ACTIVATE_LAST,
|
|
6201
|
+
FRAME_SHOTGUN_FIRE_LAST,
|
|
6202
|
+
FRAME_SHOTGUN_IDLE_LAST,
|
|
6203
|
+
FRAME_SHOTGUN_DEACTIVATE_LAST,
|
|
6204
|
+
SHOTGUN_PAUSE_FRAMES,
|
|
6205
|
+
SHOTGUN_FIRE_FRAMES,
|
|
6206
|
+
(ent) => fireShotgun(sys.game, ent),
|
|
6207
|
+
sys
|
|
6208
|
+
);
|
|
6209
|
+
}
|
|
6210
|
+
|
|
6211
|
+
// src/combat/weapons/supershotgun.ts
|
|
6212
|
+
var SSHOTGUN_PAUSE_FRAMES = [29, 42, 57];
|
|
6213
|
+
var SSHOTGUN_FIRE_FRAMES = [22, 28];
|
|
6214
|
+
function superShotgunThink(player, sys) {
|
|
6215
|
+
Weapon_Generic(
|
|
6216
|
+
player,
|
|
6217
|
+
FRAME_SSHOTGUN_ACTIVATE_LAST,
|
|
6218
|
+
FRAME_SSHOTGUN_FIRE_LAST,
|
|
6219
|
+
FRAME_SSHOTGUN_IDLE_LAST,
|
|
6220
|
+
FRAME_SSHOTGUN_DEACTIVATE_LAST,
|
|
6221
|
+
SSHOTGUN_PAUSE_FRAMES,
|
|
6222
|
+
SSHOTGUN_FIRE_FRAMES,
|
|
6223
|
+
(ent) => fireSuperShotgun(sys.game, ent),
|
|
6224
|
+
sys
|
|
6225
|
+
);
|
|
6226
|
+
}
|
|
6227
|
+
|
|
6228
|
+
// src/combat/weapons/machinegun.ts
|
|
6229
|
+
var MACHINEGUN_PAUSE_FRAMES = [23, 45];
|
|
6230
|
+
var MACHINEGUN_FIRE_FRAMES = [4, 5, 30, 31];
|
|
6231
|
+
function machinegunThink(player, sys) {
|
|
6232
|
+
Weapon_Generic(
|
|
6233
|
+
player,
|
|
6234
|
+
FRAME_MACHINEGUN_ACTIVATE_LAST,
|
|
6235
|
+
FRAME_MACHINEGUN_FIRE_LAST,
|
|
6236
|
+
FRAME_MACHINEGUN_IDLE_LAST,
|
|
6237
|
+
FRAME_MACHINEGUN_DEACTIVATE_LAST,
|
|
6238
|
+
MACHINEGUN_PAUSE_FRAMES,
|
|
6239
|
+
MACHINEGUN_FIRE_FRAMES,
|
|
6240
|
+
(ent) => fireMachinegun(sys.game, ent),
|
|
6241
|
+
sys
|
|
6242
|
+
);
|
|
6243
|
+
}
|
|
6244
|
+
|
|
6245
|
+
// src/combat/weapons/rocket.ts
|
|
6246
|
+
var ROCKET_PAUSE_FRAMES = [25, 33];
|
|
6247
|
+
var ROCKET_FIRE_FRAMES = [4];
|
|
6248
|
+
function rocketLauncherThink(player, sys) {
|
|
6249
|
+
Weapon_Generic(
|
|
6250
|
+
player,
|
|
6251
|
+
FRAME_ROCKET_ACTIVATE_LAST,
|
|
6252
|
+
FRAME_ROCKET_FIRE_LAST,
|
|
6253
|
+
FRAME_ROCKET_IDLE_LAST,
|
|
6254
|
+
FRAME_ROCKET_DEACTIVATE_LAST,
|
|
6255
|
+
ROCKET_PAUSE_FRAMES,
|
|
6256
|
+
ROCKET_FIRE_FRAMES,
|
|
6257
|
+
(ent) => fireRocket(sys.game, ent),
|
|
6258
|
+
sys
|
|
6259
|
+
);
|
|
6260
|
+
}
|
|
6261
|
+
|
|
6262
|
+
// src/combat/weapons/hyperblaster.ts
|
|
6263
|
+
function hyperBlasterThink(player, sys) {
|
|
6264
|
+
Weapon_Repeating(
|
|
6265
|
+
player,
|
|
6266
|
+
FRAME_HYPERBLASTER_FIRE_FRAME,
|
|
6267
|
+
FRAME_HYPERBLASTER_FIRE_LAST,
|
|
6268
|
+
FRAME_HYPERBLASTER_IDLE_LAST,
|
|
6269
|
+
FRAME_HYPERBLASTER_DEACTIVATE_LAST,
|
|
6270
|
+
0,
|
|
6271
|
+
// FRAME_NOOP
|
|
6272
|
+
(ent) => fireHyperBlaster(sys.game, ent),
|
|
6273
|
+
sys
|
|
6274
|
+
);
|
|
6275
|
+
}
|
|
6276
|
+
|
|
6277
|
+
// src/combat/weapons/railgun.ts
|
|
6278
|
+
var RAILGUN_PAUSE_FRAMES = [56];
|
|
6279
|
+
var RAILGUN_FIRE_FRAMES = [4];
|
|
6280
|
+
function railgunThink(player, sys) {
|
|
6281
|
+
Weapon_Generic(
|
|
6282
|
+
player,
|
|
6283
|
+
FRAME_RAILGUN_ACTIVATE_LAST,
|
|
6284
|
+
FRAME_RAILGUN_FIRE_LAST,
|
|
6285
|
+
FRAME_RAILGUN_IDLE_LAST,
|
|
6286
|
+
FRAME_RAILGUN_DEACTIVATE_LAST,
|
|
6287
|
+
RAILGUN_PAUSE_FRAMES,
|
|
6288
|
+
RAILGUN_FIRE_FRAMES,
|
|
6289
|
+
(ent) => fireRailgunShot(sys.game, ent),
|
|
6290
|
+
sys
|
|
6291
|
+
);
|
|
6292
|
+
}
|
|
6293
|
+
|
|
6294
|
+
// src/combat/weapons/bfg.ts
|
|
6295
|
+
var BFG_PAUSE_FRAMES = [39, 45, 50, 54];
|
|
6296
|
+
var BFG_FIRE_FRAMES = [9, 22];
|
|
6297
|
+
function bfgThink2(player, sys) {
|
|
6298
|
+
Weapon_Generic(
|
|
6299
|
+
player,
|
|
6300
|
+
FRAME_BFG_ACTIVATE_LAST,
|
|
6301
|
+
FRAME_BFG_FIRE_LAST,
|
|
6302
|
+
FRAME_BFG_IDLE_LAST,
|
|
6303
|
+
FRAME_BFG_DEACTIVATE_LAST,
|
|
6304
|
+
BFG_PAUSE_FRAMES,
|
|
6305
|
+
BFG_FIRE_FRAMES,
|
|
6306
|
+
(ent) => fireBFG(sys.game, ent),
|
|
6307
|
+
sys
|
|
6308
|
+
);
|
|
6309
|
+
}
|
|
6310
|
+
|
|
6311
|
+
// src/combat/weapons/grenadelauncher.ts
|
|
6312
|
+
var GRENADELAUNCHER_PAUSE_FRAMES = [34, 51, 59];
|
|
6313
|
+
var GRENADELAUNCHER_FIRE_FRAMES = [6];
|
|
6314
|
+
function grenadeLauncherThink(player, sys) {
|
|
6315
|
+
Weapon_Generic(
|
|
6316
|
+
player,
|
|
6317
|
+
FRAME_GRENADELAUNCHER_ACTIVATE_LAST,
|
|
6318
|
+
FRAME_GRENADELAUNCHER_FIRE_LAST,
|
|
6319
|
+
FRAME_GRENADELAUNCHER_IDLE_LAST,
|
|
6320
|
+
FRAME_GRENADELAUNCHER_DEACTIVATE_LAST,
|
|
6321
|
+
GRENADELAUNCHER_PAUSE_FRAMES,
|
|
6322
|
+
GRENADELAUNCHER_FIRE_FRAMES,
|
|
6323
|
+
(ent) => fireGrenadeLauncher(sys.game, ent),
|
|
6324
|
+
sys
|
|
6325
|
+
);
|
|
6326
|
+
}
|
|
6327
|
+
|
|
6328
|
+
// src/combat/weapons/blaster.ts
|
|
6329
|
+
var BLASTER_PAUSE_FRAMES = [19, 32];
|
|
6330
|
+
var BLASTER_FIRE_FRAMES = [5];
|
|
6331
|
+
function blasterThink(player, sys) {
|
|
6332
|
+
Weapon_Generic(
|
|
6333
|
+
player,
|
|
6334
|
+
FRAME_BLASTER_ACTIVATE_LAST,
|
|
6335
|
+
FRAME_BLASTER_FIRE_LAST,
|
|
6336
|
+
FRAME_BLASTER_IDLE_LAST,
|
|
6337
|
+
FRAME_BLASTER_DEACTIVATE_LAST,
|
|
6338
|
+
BLASTER_PAUSE_FRAMES,
|
|
6339
|
+
BLASTER_FIRE_FRAMES,
|
|
6340
|
+
(ent) => fireBlaster(sys.game, ent),
|
|
6341
|
+
sys
|
|
6342
|
+
);
|
|
5465
6343
|
}
|
|
5466
6344
|
|
|
5467
6345
|
// src/inventory/items.ts
|
|
@@ -5474,7 +6352,8 @@ var WEAPON_ITEMS = {
|
|
|
5474
6352
|
ammoType: null,
|
|
5475
6353
|
initialAmmo: 0,
|
|
5476
6354
|
pickupAmmo: 0,
|
|
5477
|
-
fireRate: 0.5
|
|
6355
|
+
fireRate: 0.5,
|
|
6356
|
+
think: blasterThink
|
|
5478
6357
|
},
|
|
5479
6358
|
"weapon_shotgun": {
|
|
5480
6359
|
type: "weapon",
|
|
@@ -5484,7 +6363,8 @@ var WEAPON_ITEMS = {
|
|
|
5484
6363
|
ammoType: AmmoType.Shells,
|
|
5485
6364
|
initialAmmo: 10,
|
|
5486
6365
|
pickupAmmo: 10,
|
|
5487
|
-
fireRate: 1
|
|
6366
|
+
fireRate: 1,
|
|
6367
|
+
think: shotgunThink
|
|
5488
6368
|
},
|
|
5489
6369
|
"weapon_supershotgun": {
|
|
5490
6370
|
type: "weapon",
|
|
@@ -5494,7 +6374,8 @@ var WEAPON_ITEMS = {
|
|
|
5494
6374
|
ammoType: AmmoType.Shells,
|
|
5495
6375
|
initialAmmo: 10,
|
|
5496
6376
|
pickupAmmo: 10,
|
|
5497
|
-
fireRate: 1
|
|
6377
|
+
fireRate: 1,
|
|
6378
|
+
think: superShotgunThink
|
|
5498
6379
|
},
|
|
5499
6380
|
"weapon_machinegun": {
|
|
5500
6381
|
type: "weapon",
|
|
@@ -5505,7 +6386,7 @@ var WEAPON_ITEMS = {
|
|
|
5505
6386
|
initialAmmo: 50,
|
|
5506
6387
|
pickupAmmo: 50,
|
|
5507
6388
|
fireRate: 0.1,
|
|
5508
|
-
think:
|
|
6389
|
+
think: machinegunThink
|
|
5509
6390
|
},
|
|
5510
6391
|
"weapon_chaingun": {
|
|
5511
6392
|
type: "weapon",
|
|
@@ -5515,7 +6396,8 @@ var WEAPON_ITEMS = {
|
|
|
5515
6396
|
ammoType: AmmoType.Bullets,
|
|
5516
6397
|
initialAmmo: 50,
|
|
5517
6398
|
pickupAmmo: 50,
|
|
5518
|
-
fireRate: 0.1
|
|
6399
|
+
fireRate: 0.1,
|
|
6400
|
+
think: chaingunThink
|
|
5519
6401
|
},
|
|
5520
6402
|
"weapon_grenades": {
|
|
5521
6403
|
type: "weapon",
|
|
@@ -5535,7 +6417,8 @@ var WEAPON_ITEMS = {
|
|
|
5535
6417
|
ammoType: AmmoType.Grenades,
|
|
5536
6418
|
initialAmmo: 10,
|
|
5537
6419
|
pickupAmmo: 10,
|
|
5538
|
-
fireRate: 1
|
|
6420
|
+
fireRate: 1,
|
|
6421
|
+
think: grenadeLauncherThink
|
|
5539
6422
|
},
|
|
5540
6423
|
"weapon_rocketlauncher": {
|
|
5541
6424
|
type: "weapon",
|
|
@@ -5545,7 +6428,8 @@ var WEAPON_ITEMS = {
|
|
|
5545
6428
|
ammoType: AmmoType.Rockets,
|
|
5546
6429
|
initialAmmo: 5,
|
|
5547
6430
|
pickupAmmo: 5,
|
|
5548
|
-
fireRate: 1
|
|
6431
|
+
fireRate: 1,
|
|
6432
|
+
think: rocketLauncherThink
|
|
5549
6433
|
},
|
|
5550
6434
|
"weapon_hyperblaster": {
|
|
5551
6435
|
type: "weapon",
|
|
@@ -5555,7 +6439,8 @@ var WEAPON_ITEMS = {
|
|
|
5555
6439
|
ammoType: AmmoType.Cells,
|
|
5556
6440
|
initialAmmo: 50,
|
|
5557
6441
|
pickupAmmo: 50,
|
|
5558
|
-
fireRate: 0.1
|
|
6442
|
+
fireRate: 0.1,
|
|
6443
|
+
think: hyperBlasterThink
|
|
5559
6444
|
},
|
|
5560
6445
|
"weapon_railgun": {
|
|
5561
6446
|
type: "weapon",
|
|
@@ -5565,7 +6450,8 @@ var WEAPON_ITEMS = {
|
|
|
5565
6450
|
ammoType: AmmoType.Slugs,
|
|
5566
6451
|
initialAmmo: 10,
|
|
5567
6452
|
pickupAmmo: 10,
|
|
5568
|
-
fireRate: 1.5
|
|
6453
|
+
fireRate: 1.5,
|
|
6454
|
+
think: railgunThink
|
|
5569
6455
|
},
|
|
5570
6456
|
"weapon_bfg": {
|
|
5571
6457
|
type: "weapon",
|
|
@@ -5575,7 +6461,8 @@ var WEAPON_ITEMS = {
|
|
|
5575
6461
|
ammoType: AmmoType.Cells,
|
|
5576
6462
|
initialAmmo: 50,
|
|
5577
6463
|
pickupAmmo: 50,
|
|
5578
|
-
fireRate: 1
|
|
6464
|
+
fireRate: 1,
|
|
6465
|
+
think: bfgThink2
|
|
5579
6466
|
},
|
|
5580
6467
|
// Rogue Weapons
|
|
5581
6468
|
"weapon_boomer": {
|
|
@@ -5630,7 +6517,6 @@ var WEAPON_ITEMS = {
|
|
|
5630
6517
|
fireRate: 0.8
|
|
5631
6518
|
// Guessing fire rate, refine if needed
|
|
5632
6519
|
}
|
|
5633
|
-
// ... add others as we implement them
|
|
5634
6520
|
};
|
|
5635
6521
|
var HEALTH_ITEMS = {
|
|
5636
6522
|
"item_health_small": {
|
|
@@ -5890,6 +6776,7 @@ function createKeyPickupEntity(game, keyItem) {
|
|
|
5890
6776
|
}
|
|
5891
6777
|
|
|
5892
6778
|
// src/entities/items/ammo.ts
|
|
6779
|
+
init_ammo();
|
|
5893
6780
|
function createAmmoPickupEntity(game, itemId) {
|
|
5894
6781
|
const def = getAmmoItemDefinition(itemId);
|
|
5895
6782
|
const respawn = (self) => {
|
|
@@ -5944,6 +6831,7 @@ function createPowerArmorPickupEntity(game, item) {
|
|
|
5944
6831
|
}
|
|
5945
6832
|
|
|
5946
6833
|
// src/entities/items.ts
|
|
6834
|
+
init_ammo();
|
|
5947
6835
|
function registerItemSpawns(game, registry) {
|
|
5948
6836
|
for (const weaponItem of Object.values(WEAPON_ITEMS)) {
|
|
5949
6837
|
registry.register(weaponItem.id, (entity) => {
|
|
@@ -5982,37 +6870,41 @@ function registerItemSpawns(game, registry) {
|
|
|
5982
6870
|
}
|
|
5983
6871
|
}
|
|
5984
6872
|
|
|
6873
|
+
// src/entities/funcs.ts
|
|
6874
|
+
init_esm();
|
|
6875
|
+
|
|
5985
6876
|
// src/entities/gibs.ts
|
|
5986
|
-
|
|
6877
|
+
init_esm();
|
|
6878
|
+
var random3 = createRandomGenerator();
|
|
5987
6879
|
var GIB_METALLIC = 1;
|
|
5988
6880
|
var GIB_DEBRIS = 2;
|
|
5989
6881
|
function spawnGib(sys, origin, damage, model, type) {
|
|
5990
6882
|
const gib = sys.spawn();
|
|
5991
6883
|
gib.classname = "gib";
|
|
5992
6884
|
gib.origin = {
|
|
5993
|
-
x: origin.x + (
|
|
5994
|
-
y: origin.y + (
|
|
5995
|
-
z: origin.z + (
|
|
6885
|
+
x: origin.x + (random3.frandom() - 0.5) * 20,
|
|
6886
|
+
y: origin.y + (random3.frandom() - 0.5) * 20,
|
|
6887
|
+
z: origin.z + (random3.frandom() - 0.5) * 20
|
|
5996
6888
|
};
|
|
5997
6889
|
gib.velocity = {
|
|
5998
|
-
x: (
|
|
5999
|
-
y: (
|
|
6000
|
-
z: 200 +
|
|
6890
|
+
x: (random3.frandom() - 0.5) * 300,
|
|
6891
|
+
y: (random3.frandom() - 0.5) * 300,
|
|
6892
|
+
z: 200 + random3.frandom() * 100
|
|
6001
6893
|
};
|
|
6002
6894
|
gib.movetype = 9 /* Bounce */;
|
|
6003
6895
|
gib.solid = 0 /* Not */;
|
|
6004
6896
|
gib.clipmask = 1;
|
|
6005
6897
|
gib.avelocity = {
|
|
6006
|
-
x:
|
|
6007
|
-
y:
|
|
6008
|
-
z:
|
|
6898
|
+
x: random3.crandom() * 600,
|
|
6899
|
+
y: random3.crandom() * 600,
|
|
6900
|
+
z: random3.crandom() * 600
|
|
6009
6901
|
};
|
|
6010
6902
|
const defaultModels = [
|
|
6011
6903
|
"models/objects/gibs/bone/tris.md2",
|
|
6012
6904
|
"models/objects/gibs/meat/tris.md2",
|
|
6013
6905
|
"models/objects/gibs/sm_meat/tris.md2"
|
|
6014
6906
|
];
|
|
6015
|
-
const modelName = model || defaultModels[Math.floor(
|
|
6907
|
+
const modelName = model || defaultModels[Math.floor(random3.frandom() * defaultModels.length)];
|
|
6016
6908
|
gib.modelindex = sys.modelIndex(modelName);
|
|
6017
6909
|
gib.mins = { x: -2, y: -2, z: -2 };
|
|
6018
6910
|
gib.maxs = { x: 2, y: 2, z: 2 };
|
|
@@ -6021,14 +6913,14 @@ function spawnGib(sys, origin, damage, model, type) {
|
|
|
6021
6913
|
gib.think = (self) => {
|
|
6022
6914
|
sys.free(self);
|
|
6023
6915
|
};
|
|
6024
|
-
sys.scheduleThink(gib, sys.timeSeconds + 10 +
|
|
6916
|
+
sys.scheduleThink(gib, sys.timeSeconds + 10 + random3.frandom() * 10);
|
|
6025
6917
|
sys.finalizeSpawn(gib);
|
|
6026
6918
|
return gib;
|
|
6027
6919
|
}
|
|
6028
6920
|
function throwGibs(sys, origin, damageOrDefs) {
|
|
6029
6921
|
if (typeof damageOrDefs === "number") {
|
|
6030
6922
|
const damage = damageOrDefs;
|
|
6031
|
-
const count = 4 + Math.floor(
|
|
6923
|
+
const count = 4 + Math.floor(random3.frandom() * 4);
|
|
6032
6924
|
for (let i = 0; i < count; i++) {
|
|
6033
6925
|
spawnGib(sys, origin, damage);
|
|
6034
6926
|
}
|
|
@@ -6875,6 +7767,9 @@ function registerLightSpawns(registry) {
|
|
|
6875
7767
|
});
|
|
6876
7768
|
}
|
|
6877
7769
|
|
|
7770
|
+
// src/entities/monsters/berserk.ts
|
|
7771
|
+
init_esm();
|
|
7772
|
+
|
|
6878
7773
|
// src/ai/monster.ts
|
|
6879
7774
|
function M_MoveFrame(self, context) {
|
|
6880
7775
|
const move = self.monsterinfo.current_move;
|
|
@@ -6918,15 +7813,15 @@ function monster_think(self, context) {
|
|
|
6918
7813
|
var MONSTER_TICK = 0.1;
|
|
6919
7814
|
var MELEE_DISTANCE = 80;
|
|
6920
7815
|
var SPAWNFLAG_BERSERK_NOJUMPING = 16;
|
|
6921
|
-
var
|
|
7816
|
+
var random4 = createRandomGenerator();
|
|
6922
7817
|
function frandom() {
|
|
6923
|
-
return
|
|
7818
|
+
return random4.frandom();
|
|
6924
7819
|
}
|
|
6925
7820
|
function brandom() {
|
|
6926
|
-
return
|
|
7821
|
+
return random4.frandom() > 0.5;
|
|
6927
7822
|
}
|
|
6928
7823
|
function irandom(min, max) {
|
|
6929
|
-
return Math.floor(
|
|
7824
|
+
return Math.floor(random4.frandom() * (max - min + 1) + min);
|
|
6930
7825
|
}
|
|
6931
7826
|
function monster_ai_stand(self, dist, context) {
|
|
6932
7827
|
ai_stand(self, MONSTER_TICK, context);
|
|
@@ -7422,6 +8317,7 @@ function registerBerserkSpawns(registry) {
|
|
|
7422
8317
|
}
|
|
7423
8318
|
|
|
7424
8319
|
// src/entities/monsters/attack.ts
|
|
8320
|
+
init_esm();
|
|
7425
8321
|
function crandom() {
|
|
7426
8322
|
return 2 * Math.random() - 1;
|
|
7427
8323
|
}
|
|
@@ -7612,6 +8508,7 @@ function monster_fire_dabeam(self, damage, secondary, update_func, context) {
|
|
|
7612
8508
|
}
|
|
7613
8509
|
|
|
7614
8510
|
// src/entities/monsters/boss2.ts
|
|
8511
|
+
init_esm();
|
|
7615
8512
|
var MONSTER_TICK2 = 0.1;
|
|
7616
8513
|
var BOSS2_ROCKET_OFFSET_1 = { x: 0, y: 30, z: -15 };
|
|
7617
8514
|
var BOSS2_ROCKET_OFFSET_2 = { x: 0, y: 15, z: 0 };
|
|
@@ -7799,9 +8696,10 @@ function registerBoss2Spawns(registry) {
|
|
|
7799
8696
|
}
|
|
7800
8697
|
|
|
7801
8698
|
// src/entities/monsters/brain.ts
|
|
8699
|
+
init_esm();
|
|
7802
8700
|
var MONSTER_TICK3 = 0.1;
|
|
7803
8701
|
var MELEE_DISTANCE2 = 80;
|
|
7804
|
-
var
|
|
8702
|
+
var random5 = Math.random;
|
|
7805
8703
|
function monster_ai_stand3(self, dist, context) {
|
|
7806
8704
|
ai_stand(self, MONSTER_TICK3, context);
|
|
7807
8705
|
}
|
|
@@ -7854,7 +8752,7 @@ function brain_swing_right(self, context) {
|
|
|
7854
8752
|
}
|
|
7855
8753
|
function brain_hit_right(self, context) {
|
|
7856
8754
|
const aim = { x: MELEE_DISTANCE2, y: self.maxs.x, z: 8 };
|
|
7857
|
-
if (monster_fire_hit(self, aim, 15 + Math.floor(
|
|
8755
|
+
if (monster_fire_hit(self, aim, 15 + Math.floor(random5() * 5), 40, context)) {
|
|
7858
8756
|
context.engine.sound?.(self, 0, "brain/melee3.wav", 1, 1, 0);
|
|
7859
8757
|
} else {
|
|
7860
8758
|
self.monsterinfo.melee_debounce_time = context.timeSeconds + 3;
|
|
@@ -7865,7 +8763,7 @@ function brain_swing_left(self, context) {
|
|
|
7865
8763
|
}
|
|
7866
8764
|
function brain_hit_left(self, context) {
|
|
7867
8765
|
const aim = { x: MELEE_DISTANCE2, y: self.mins.x, z: 8 };
|
|
7868
|
-
if (monster_fire_hit(self, aim, 15 + Math.floor(
|
|
8766
|
+
if (monster_fire_hit(self, aim, 15 + Math.floor(random5() * 5), 40, context)) {
|
|
7869
8767
|
context.engine.sound?.(self, 0, "brain/melee3.wav", 1, 1, 0);
|
|
7870
8768
|
} else {
|
|
7871
8769
|
self.monsterinfo.melee_debounce_time = context.timeSeconds + 3;
|
|
@@ -7878,7 +8776,7 @@ function brain_chest_open(self, context) {
|
|
|
7878
8776
|
}
|
|
7879
8777
|
function brain_tentacle_attack(self, context) {
|
|
7880
8778
|
const aim = { x: MELEE_DISTANCE2, y: 0, z: 8 };
|
|
7881
|
-
if (monster_fire_hit(self, aim, 10 + Math.floor(
|
|
8779
|
+
if (monster_fire_hit(self, aim, 10 + Math.floor(random5() * 5), -600, context)) {
|
|
7882
8780
|
self.count = 1;
|
|
7883
8781
|
} else {
|
|
7884
8782
|
self.monsterinfo.melee_debounce_time = context.timeSeconds + 3;
|
|
@@ -7893,7 +8791,7 @@ function brain_chest_closed(self) {
|
|
|
7893
8791
|
}
|
|
7894
8792
|
}
|
|
7895
8793
|
function brain_melee(self) {
|
|
7896
|
-
if (
|
|
8794
|
+
if (random5() <= 0.5) {
|
|
7897
8795
|
self.monsterinfo.current_move = attack1_move;
|
|
7898
8796
|
} else {
|
|
7899
8797
|
self.monsterinfo.current_move = attack2_move;
|
|
@@ -7976,7 +8874,7 @@ function brain_laserbeam(self, context) {
|
|
|
7976
8874
|
monster_fire_dabeam(self, 1, true, brain_left_eye_laser_update, context);
|
|
7977
8875
|
}
|
|
7978
8876
|
function brain_laserbeam_reattack(self) {
|
|
7979
|
-
if (
|
|
8877
|
+
if (random5() < 0.5) {
|
|
7980
8878
|
if (self.enemy && self.enemy.health > 0) {
|
|
7981
8879
|
self.frame = 0;
|
|
7982
8880
|
}
|
|
@@ -7985,7 +8883,7 @@ function brain_laserbeam_reattack(self) {
|
|
|
7985
8883
|
function brain_attack(self, context) {
|
|
7986
8884
|
const r = rangeTo(self, self.enemy);
|
|
7987
8885
|
if (r <= RANGE_NEAR) {
|
|
7988
|
-
if (
|
|
8886
|
+
if (random5() < 0.5) {
|
|
7989
8887
|
self.monsterinfo.current_move = attack3_move;
|
|
7990
8888
|
} else {
|
|
7991
8889
|
self.monsterinfo.current_move = attack4_move;
|
|
@@ -8005,7 +8903,7 @@ function brain_duck_up(self) {
|
|
|
8005
8903
|
self.monsterinfo.aiflags &= ~16;
|
|
8006
8904
|
}
|
|
8007
8905
|
function brain_dodge(self, attacker, eta) {
|
|
8008
|
-
if (
|
|
8906
|
+
if (random5() > 0.25) return;
|
|
8009
8907
|
if (!self.enemy) self.enemy = attacker;
|
|
8010
8908
|
self.monsterinfo.pausetime = self.timestamp + eta + 0.5;
|
|
8011
8909
|
self.monsterinfo.current_move = duck_move;
|
|
@@ -8261,7 +9159,7 @@ function brain_pain(self, other, kick, damage, context) {
|
|
|
8261
9159
|
return;
|
|
8262
9160
|
}
|
|
8263
9161
|
self.pain_debounce_time = self.timestamp + 3;
|
|
8264
|
-
const r =
|
|
9162
|
+
const r = random5();
|
|
8265
9163
|
if (r < 0.33) {
|
|
8266
9164
|
context.engine.sound?.(self, 0, "brain/brnpain1.wav", 1, 1, 0);
|
|
8267
9165
|
self.monsterinfo.current_move = pain1_move;
|
|
@@ -8285,7 +9183,7 @@ function brain_die(self, inflictor, attacker, damage, point, context) {
|
|
|
8285
9183
|
context.engine.sound?.(self, 0, "brain/brndeth1.wav", 1, 1, 0);
|
|
8286
9184
|
self.deadflag = 2 /* Dead */;
|
|
8287
9185
|
self.takedamage = true;
|
|
8288
|
-
if (
|
|
9186
|
+
if (random5() <= 0.5) {
|
|
8289
9187
|
self.monsterinfo.current_move = death1_move;
|
|
8290
9188
|
} else {
|
|
8291
9189
|
self.monsterinfo.current_move = death2_move;
|
|
@@ -8322,7 +9220,7 @@ function SP_monster_brain(self, context) {
|
|
|
8322
9220
|
context.entities.sound?.(s, 2, "brain/brnsght1.wav", 1, 1, 0);
|
|
8323
9221
|
};
|
|
8324
9222
|
self.monsterinfo.search = (s) => {
|
|
8325
|
-
if (
|
|
9223
|
+
if (random5() < 0.5) {
|
|
8326
9224
|
context.entities.sound?.(s, 2, "brain/brnidle2.wav", 1, 1, 0);
|
|
8327
9225
|
} else {
|
|
8328
9226
|
context.entities.sound?.(s, 2, "brain/brnsrch1.wav", 1, 1, 0);
|
|
@@ -8340,9 +9238,10 @@ function registerBrainSpawns(registry) {
|
|
|
8340
9238
|
}
|
|
8341
9239
|
|
|
8342
9240
|
// src/entities/monsters/chick.ts
|
|
9241
|
+
init_esm();
|
|
8343
9242
|
var MONSTER_TICK4 = 0.1;
|
|
8344
9243
|
var MELEE_DISTANCE3 = 80;
|
|
8345
|
-
var
|
|
9244
|
+
var random6 = Math.random;
|
|
8346
9245
|
function monster_ai_stand4(self, dist, context) {
|
|
8347
9246
|
ai_stand(self, MONSTER_TICK4, context);
|
|
8348
9247
|
}
|
|
@@ -8390,12 +9289,12 @@ function chick_run(self) {
|
|
|
8390
9289
|
function chick_fidget(self) {
|
|
8391
9290
|
if (self.monsterinfo.aiflags & 4) return;
|
|
8392
9291
|
if (self.enemy) return;
|
|
8393
|
-
if (
|
|
9292
|
+
if (random6() <= 0.3) {
|
|
8394
9293
|
self.monsterinfo.current_move = fidget_move;
|
|
8395
9294
|
}
|
|
8396
9295
|
}
|
|
8397
9296
|
function ChickMoan(self, context) {
|
|
8398
|
-
if (
|
|
9297
|
+
if (random6() < 0.5) {
|
|
8399
9298
|
context.engine.sound?.(self, 2, "chick/chkidle1.wav", 1, 0, 0);
|
|
8400
9299
|
} else {
|
|
8401
9300
|
context.engine.sound?.(self, 2, "chick/chkidle2.wav", 1, 0, 0);
|
|
@@ -8404,7 +9303,7 @@ function ChickMoan(self, context) {
|
|
|
8404
9303
|
function chick_slash(self, context) {
|
|
8405
9304
|
const aim = { x: MELEE_DISTANCE3, y: self.mins.x, z: 10 };
|
|
8406
9305
|
context.engine.sound?.(self, 0, "chick/chkatck3.wav", 1, 1, 0);
|
|
8407
|
-
monster_fire_hit(self, aim, 10 + Math.floor(
|
|
9306
|
+
monster_fire_hit(self, aim, 10 + Math.floor(random6() * 6), 100, context);
|
|
8408
9307
|
}
|
|
8409
9308
|
function chick_rocket(self, context) {
|
|
8410
9309
|
const { forward, right } = angleVectors(self.angles);
|
|
@@ -8425,7 +9324,7 @@ function chick_rocket(self, context) {
|
|
|
8425
9324
|
}
|
|
8426
9325
|
let dir = subtractVec3(target, finalStart);
|
|
8427
9326
|
if (!blindfire && self.enemy) {
|
|
8428
|
-
if (
|
|
9327
|
+
if (random6() < 0.33 || finalStart.z < self.enemy.absmin.z) {
|
|
8429
9328
|
const tempDir = { ...dir, z: dir.z + self.enemy.viewheight };
|
|
8430
9329
|
dir = tempDir;
|
|
8431
9330
|
} else {
|
|
@@ -8460,7 +9359,7 @@ function chick_rerocket(self) {
|
|
|
8460
9359
|
return;
|
|
8461
9360
|
}
|
|
8462
9361
|
if (self.enemy && self.enemy.health > 0) {
|
|
8463
|
-
if (
|
|
9362
|
+
if (random6() <= 0.6) {
|
|
8464
9363
|
self.monsterinfo.current_move = attack1_move2;
|
|
8465
9364
|
return;
|
|
8466
9365
|
}
|
|
@@ -8469,7 +9368,7 @@ function chick_rerocket(self) {
|
|
|
8469
9368
|
}
|
|
8470
9369
|
function chick_reslash(self) {
|
|
8471
9370
|
if (self.enemy && self.enemy.health > 0) {
|
|
8472
|
-
if (
|
|
9371
|
+
if (random6() <= 0.9) {
|
|
8473
9372
|
self.monsterinfo.current_move = slash_move;
|
|
8474
9373
|
return;
|
|
8475
9374
|
}
|
|
@@ -8547,7 +9446,7 @@ function chick_pain(self, other, kick, damage, context) {
|
|
|
8547
9446
|
}
|
|
8548
9447
|
if (self.timestamp < (self.pain_debounce_time || 0)) return;
|
|
8549
9448
|
self.pain_debounce_time = self.timestamp + 3;
|
|
8550
|
-
const r =
|
|
9449
|
+
const r = random6();
|
|
8551
9450
|
if (r < 0.33) context.engine.sound?.(self, 0, "chick/chkpain1.wav", 1, 1, 0);
|
|
8552
9451
|
else if (r < 0.66) context.engine.sound?.(self, 0, "chick/chkpain2.wav", 1, 1, 0);
|
|
8553
9452
|
else context.engine.sound?.(self, 0, "chick/chkpain3.wav", 1, 1, 0);
|
|
@@ -8576,7 +9475,7 @@ function chick_die(self, inflictor, attacker, damage, point, context) {
|
|
|
8576
9475
|
if (self.deadflag === 2 /* Dead */) return;
|
|
8577
9476
|
self.deadflag = 2 /* Dead */;
|
|
8578
9477
|
self.takedamage = true;
|
|
8579
|
-
if (
|
|
9478
|
+
if (random6() <= 0.5) {
|
|
8580
9479
|
self.monsterinfo.current_move = death1_move2;
|
|
8581
9480
|
context.engine.sound?.(self, 0, "chick/chkdeth1.wav", 1, 1, 0);
|
|
8582
9481
|
} else {
|
|
@@ -8696,7 +9595,7 @@ function registerChickSpawns(registry) {
|
|
|
8696
9595
|
var MONSTER_TICK5 = 0.1;
|
|
8697
9596
|
var MELEE_DISTANCE4 = 80;
|
|
8698
9597
|
var FLIPPER_RUN_SPEED = 24;
|
|
8699
|
-
var
|
|
9598
|
+
var random7 = Math.random;
|
|
8700
9599
|
function monster_ai_stand5(self, dist, context) {
|
|
8701
9600
|
ai_stand(self, MONSTER_TICK5, context);
|
|
8702
9601
|
}
|
|
@@ -8813,7 +9712,7 @@ function flipper_pain(self, other, kick, damage, context) {
|
|
|
8813
9712
|
return;
|
|
8814
9713
|
}
|
|
8815
9714
|
self.pain_debounce_time = self.timestamp + 3;
|
|
8816
|
-
if (
|
|
9715
|
+
if (random7() < 0.5) {
|
|
8817
9716
|
context.engine.sound?.(self, 0, "flipper/flppain1.wav", 1, 1, 0);
|
|
8818
9717
|
self.monsterinfo.current_move = pain1_move3;
|
|
8819
9718
|
} else {
|
|
@@ -8921,6 +9820,7 @@ function registerFlipperSpawns(registry) {
|
|
|
8921
9820
|
}
|
|
8922
9821
|
|
|
8923
9822
|
// src/entities/monsters/floater.ts
|
|
9823
|
+
init_esm();
|
|
8924
9824
|
var MONSTER_TICK6 = 0.1;
|
|
8925
9825
|
function monster_ai_stand6(self, dist, context) {
|
|
8926
9826
|
ai_stand(self, MONSTER_TICK6, context);
|
|
@@ -9078,6 +9978,7 @@ function registerFloaterSpawns(registry) {
|
|
|
9078
9978
|
}
|
|
9079
9979
|
|
|
9080
9980
|
// src/entities/monsters/flyer.ts
|
|
9981
|
+
init_esm();
|
|
9081
9982
|
var MONSTER_TICK7 = 0.1;
|
|
9082
9983
|
function monster_ai_stand7(self, dist, context) {
|
|
9083
9984
|
ai_stand(self, MONSTER_TICK7, context);
|
|
@@ -9256,6 +10157,7 @@ function registerFlyerSpawns(registry) {
|
|
|
9256
10157
|
}
|
|
9257
10158
|
|
|
9258
10159
|
// src/entities/monsters/gladiator.ts
|
|
10160
|
+
init_esm();
|
|
9259
10161
|
var MONSTER_TICK8 = 0.1;
|
|
9260
10162
|
function monster_ai_stand8(self, dist, context) {
|
|
9261
10163
|
ai_stand(self, MONSTER_TICK8, context);
|
|
@@ -9455,6 +10357,7 @@ function registerGladiatorSpawns(registry) {
|
|
|
9455
10357
|
}
|
|
9456
10358
|
|
|
9457
10359
|
// src/entities/monsters/gunner.ts
|
|
10360
|
+
init_esm();
|
|
9458
10361
|
var MONSTER_TICK9 = 0.1;
|
|
9459
10362
|
function monster_ai_stand9(self, dist, context) {
|
|
9460
10363
|
ai_stand(self, MONSTER_TICK9, context);
|
|
@@ -9877,6 +10780,7 @@ function registerGunnerSpawns(registry) {
|
|
|
9877
10780
|
}
|
|
9878
10781
|
|
|
9879
10782
|
// src/entities/monsters/hover.ts
|
|
10783
|
+
init_esm();
|
|
9880
10784
|
var MONSTER_TICK10 = 0.1;
|
|
9881
10785
|
function monster_ai_stand10(self, dist, context) {
|
|
9882
10786
|
ai_stand(self, MONSTER_TICK10, context);
|
|
@@ -10034,6 +10938,7 @@ function registerHoverSpawns(registry) {
|
|
|
10034
10938
|
}
|
|
10035
10939
|
|
|
10036
10940
|
// src/entities/monsters/icarus.ts
|
|
10941
|
+
init_esm();
|
|
10037
10942
|
var MONSTER_TICK11 = 0.1;
|
|
10038
10943
|
function monster_ai_stand11(self, dist, context) {
|
|
10039
10944
|
ai_stand(self, MONSTER_TICK11, context);
|
|
@@ -10191,6 +11096,7 @@ function registerIcarusSpawns(registry) {
|
|
|
10191
11096
|
}
|
|
10192
11097
|
|
|
10193
11098
|
// src/entities/monsters/infantry.ts
|
|
11099
|
+
init_esm();
|
|
10194
11100
|
var MONSTER_TICK12 = 0.1;
|
|
10195
11101
|
function monster_ai_stand12(self, dist, context) {
|
|
10196
11102
|
ai_stand(self, MONSTER_TICK12, context);
|
|
@@ -10391,6 +11297,7 @@ function registerInfantrySpawns(registry) {
|
|
|
10391
11297
|
}
|
|
10392
11298
|
|
|
10393
11299
|
// src/entities/monsters/makron.ts
|
|
11300
|
+
init_esm();
|
|
10394
11301
|
var MONSTER_TICK13 = 0.1;
|
|
10395
11302
|
var MAKRON_BFG_OFFSET = { x: 30, y: 28, z: 24 };
|
|
10396
11303
|
var MAKRON_BLASTER_OFFSET_1 = { x: 26, y: 16, z: 24 };
|
|
@@ -10636,6 +11543,7 @@ function registerMakronSpawns(registry) {
|
|
|
10636
11543
|
}
|
|
10637
11544
|
|
|
10638
11545
|
// src/entities/monsters/jorg.ts
|
|
11546
|
+
init_esm();
|
|
10639
11547
|
var MONSTER_TICK14 = 0.1;
|
|
10640
11548
|
var JORG_MACHINEGUN_R1_OFFSET = { x: 40, y: -20, z: 20 };
|
|
10641
11549
|
var JORG_MACHINEGUN_L1_OFFSET = { x: 40, y: 20, z: 20 };
|
|
@@ -10859,7 +11767,7 @@ var SPAWNFLAG_INSANE_STAND_GROUND = 16;
|
|
|
10859
11767
|
var SPAWNFLAG_INSANE_ALWAYS_STAND = 32;
|
|
10860
11768
|
var SPAWNFLAG_INSANE_QUIET = 64;
|
|
10861
11769
|
var FRAME_stand1 = 0;
|
|
10862
|
-
var
|
|
11770
|
+
var FRAME_stand402 = 39;
|
|
10863
11771
|
var FRAME_stand41 = 40;
|
|
10864
11772
|
var FRAME_stand59 = 58;
|
|
10865
11773
|
var FRAME_stand60 = 59;
|
|
@@ -11121,7 +12029,7 @@ var frames_uptodown = [
|
|
|
11121
12029
|
];
|
|
11122
12030
|
insane_move_uptodown = {
|
|
11123
12031
|
firstframe: FRAME_stand1,
|
|
11124
|
-
lastframe:
|
|
12032
|
+
lastframe: FRAME_stand402,
|
|
11125
12033
|
frames: frames_uptodown,
|
|
11126
12034
|
endfunc: insane_onground
|
|
11127
12035
|
};
|
|
@@ -11486,7 +12394,7 @@ function SP_misc_insane(self, context) {
|
|
|
11486
12394
|
return;
|
|
11487
12395
|
}
|
|
11488
12396
|
const frame = self2.frame;
|
|
11489
|
-
if (frame >= FRAME_crawl1 && frame <= FRAME_crawl9 || frame >= FRAME_stand100 && frame <= FRAME_stand160 || frame >= FRAME_stand1 && frame <=
|
|
12397
|
+
if (frame >= FRAME_crawl1 && frame <= FRAME_crawl9 || frame >= FRAME_stand100 && frame <= FRAME_stand160 || frame >= FRAME_stand1 && frame <= FRAME_stand402) {
|
|
11490
12398
|
self2.monsterinfo.current_move = insane_move_crawl_pain;
|
|
11491
12399
|
} else {
|
|
11492
12400
|
self2.monsterinfo.current_move = insane_move_stand_pain;
|
|
@@ -11545,6 +12453,8 @@ function registerInsaneSpawns(registry) {
|
|
|
11545
12453
|
}
|
|
11546
12454
|
|
|
11547
12455
|
// src/entities/monsters/actor.ts
|
|
12456
|
+
init_esm();
|
|
12457
|
+
init_esm();
|
|
11548
12458
|
var MONSTER_TICK16 = 0.1;
|
|
11549
12459
|
var MZ2_ACTOR_MACHINEGUN_1 = 0;
|
|
11550
12460
|
var actor_names = [
|
|
@@ -11563,19 +12473,19 @@ var FRAME_walk01 = 40;
|
|
|
11563
12473
|
var FRAME_walk08 = 47;
|
|
11564
12474
|
var FRAME_run02 = 48;
|
|
11565
12475
|
var FRAME_run07 = 53;
|
|
11566
|
-
var
|
|
12476
|
+
var FRAME_pain1012 = 54;
|
|
11567
12477
|
var FRAME_pain103 = 56;
|
|
11568
|
-
var
|
|
12478
|
+
var FRAME_pain2012 = 57;
|
|
11569
12479
|
var FRAME_pain203 = 59;
|
|
11570
|
-
var
|
|
12480
|
+
var FRAME_pain3012 = 60;
|
|
11571
12481
|
var FRAME_pain303 = 62;
|
|
11572
12482
|
var FRAME_flip01 = 63;
|
|
11573
12483
|
var FRAME_flip14 = 76;
|
|
11574
12484
|
var FRAME_taunt01 = 77;
|
|
11575
12485
|
var FRAME_taunt17 = 93;
|
|
11576
|
-
var
|
|
12486
|
+
var FRAME_death1012 = 94;
|
|
11577
12487
|
var FRAME_death107 = 100;
|
|
11578
|
-
var
|
|
12488
|
+
var FRAME_death2012 = 101;
|
|
11579
12489
|
var FRAME_death213 = 113;
|
|
11580
12490
|
var FRAME_attak01 = 114;
|
|
11581
12491
|
var FRAME_attak04 = 117;
|
|
@@ -11825,7 +12735,7 @@ var frames_pain1 = [
|
|
|
11825
12735
|
m2(ai_move, 1)
|
|
11826
12736
|
];
|
|
11827
12737
|
actor_move_pain1 = {
|
|
11828
|
-
firstframe:
|
|
12738
|
+
firstframe: FRAME_pain1012,
|
|
11829
12739
|
lastframe: FRAME_pain103,
|
|
11830
12740
|
frames: frames_pain1,
|
|
11831
12741
|
endfunc: actor_run
|
|
@@ -11836,7 +12746,7 @@ var frames_pain2 = [
|
|
|
11836
12746
|
m2(ai_move)
|
|
11837
12747
|
];
|
|
11838
12748
|
actor_move_pain2 = {
|
|
11839
|
-
firstframe:
|
|
12749
|
+
firstframe: FRAME_pain2012,
|
|
11840
12750
|
lastframe: FRAME_pain203,
|
|
11841
12751
|
frames: frames_pain2,
|
|
11842
12752
|
endfunc: actor_run
|
|
@@ -11847,7 +12757,7 @@ var frames_pain3 = [
|
|
|
11847
12757
|
m2(ai_move, 0)
|
|
11848
12758
|
];
|
|
11849
12759
|
actor_move_pain3 = {
|
|
11850
|
-
firstframe:
|
|
12760
|
+
firstframe: FRAME_pain3012,
|
|
11851
12761
|
lastframe: FRAME_pain303,
|
|
11852
12762
|
frames: frames_pain3,
|
|
11853
12763
|
endfunc: actor_run
|
|
@@ -11909,7 +12819,7 @@ var frames_death1 = [
|
|
|
11909
12819
|
m2(ai_move, 1)
|
|
11910
12820
|
];
|
|
11911
12821
|
actor_move_death1 = {
|
|
11912
|
-
firstframe:
|
|
12822
|
+
firstframe: FRAME_death1012,
|
|
11913
12823
|
lastframe: FRAME_death107,
|
|
11914
12824
|
frames: frames_death1,
|
|
11915
12825
|
endfunc: actor_dead
|
|
@@ -11930,7 +12840,7 @@ var frames_death2 = [
|
|
|
11930
12840
|
m2(ai_move)
|
|
11931
12841
|
];
|
|
11932
12842
|
actor_move_death2 = {
|
|
11933
|
-
firstframe:
|
|
12843
|
+
firstframe: FRAME_death2012,
|
|
11934
12844
|
lastframe: FRAME_death213,
|
|
11935
12845
|
frames: frames_death2,
|
|
11936
12846
|
endfunc: actor_dead
|
|
@@ -12085,6 +12995,8 @@ function registerActorSpawns(registry) {
|
|
|
12085
12995
|
}
|
|
12086
12996
|
|
|
12087
12997
|
// src/entities/monsters/medic.ts
|
|
12998
|
+
init_esm();
|
|
12999
|
+
init_esm();
|
|
12088
13000
|
var MONSTER_TICK17 = 0.1;
|
|
12089
13001
|
function monster_ai_stand15(self, dist, context) {
|
|
12090
13002
|
if (self.classname === "monster_medic") {
|
|
@@ -12461,8 +13373,9 @@ function registerMedicSpawns(registry) {
|
|
|
12461
13373
|
}
|
|
12462
13374
|
|
|
12463
13375
|
// src/entities/monsters/mutant.ts
|
|
13376
|
+
init_esm();
|
|
12464
13377
|
var MONSTER_TICK18 = 0.1;
|
|
12465
|
-
var
|
|
13378
|
+
var random8 = () => Math.random();
|
|
12466
13379
|
function monster_ai_stand16(self, dist, context) {
|
|
12467
13380
|
ai_stand(self, MONSTER_TICK18, context);
|
|
12468
13381
|
}
|
|
@@ -12575,11 +13488,11 @@ function mutant_check_attack(self, context) {
|
|
|
12575
13488
|
if (self.enemy && self.enemy.health > 0) {
|
|
12576
13489
|
const diff = subtractVec3(self.enemy.origin, self.origin);
|
|
12577
13490
|
const dist = lengthVec3(diff);
|
|
12578
|
-
if (dist < 128 &&
|
|
13491
|
+
if (dist < 128 && random8() < 0.5) {
|
|
12579
13492
|
self.monsterinfo.current_move = attack_move7;
|
|
12580
13493
|
return true;
|
|
12581
13494
|
}
|
|
12582
|
-
if (dist >= 128 && dist < 512 &&
|
|
13495
|
+
if (dist >= 128 && dist < 512 && random8() < 0.3) {
|
|
12583
13496
|
self.monsterinfo.current_move = jump_move2;
|
|
12584
13497
|
return true;
|
|
12585
13498
|
}
|
|
@@ -12592,10 +13505,10 @@ function mutant_pain_func(self, other, kick, damage, context) {
|
|
|
12592
13505
|
}
|
|
12593
13506
|
if (self.timestamp < (self.pain_finished_time || 0)) return;
|
|
12594
13507
|
self.pain_finished_time = self.timestamp + 3;
|
|
12595
|
-
if (
|
|
13508
|
+
if (random8() < 0.5) {
|
|
12596
13509
|
context.engine.sound?.(self, 0, "mutant/mutpain1.wav", 1, 1, 0);
|
|
12597
13510
|
self.monsterinfo.current_move = pain1_move6;
|
|
12598
|
-
} else if (
|
|
13511
|
+
} else if (random8() < 0.5) {
|
|
12599
13512
|
context.engine.sound?.(self, 0, "mutant/mutpain2.wav", 1, 1, 0);
|
|
12600
13513
|
self.monsterinfo.current_move = pain2_move6;
|
|
12601
13514
|
} else {
|
|
@@ -12850,8 +13763,9 @@ function registerMutantSpawns(registry) {
|
|
|
12850
13763
|
}
|
|
12851
13764
|
|
|
12852
13765
|
// src/entities/monsters/parasite.ts
|
|
13766
|
+
init_esm();
|
|
12853
13767
|
var MONSTER_TICK19 = 0.1;
|
|
12854
|
-
var
|
|
13768
|
+
var random9 = () => Math.random();
|
|
12855
13769
|
function monster_ai_stand17(self, dist, context) {
|
|
12856
13770
|
ai_stand(self, MONSTER_TICK19, context);
|
|
12857
13771
|
}
|
|
@@ -12896,7 +13810,7 @@ function parasite_do_fidget(self) {
|
|
|
12896
13810
|
self.monsterinfo.current_move = fidget_move3;
|
|
12897
13811
|
}
|
|
12898
13812
|
function parasite_refidget(self) {
|
|
12899
|
-
if (
|
|
13813
|
+
if (random9() <= 0.8) {
|
|
12900
13814
|
self.monsterinfo.current_move = fidget_move3;
|
|
12901
13815
|
} else {
|
|
12902
13816
|
self.monsterinfo.current_move = end_fidget_move;
|
|
@@ -13009,7 +13923,7 @@ function parasite_pain_func(self, other, kick, damage, context) {
|
|
|
13009
13923
|
}
|
|
13010
13924
|
if (self.timestamp < (self.pain_finished_time || 0)) return;
|
|
13011
13925
|
self.pain_finished_time = self.timestamp + 3;
|
|
13012
|
-
if (
|
|
13926
|
+
if (random9() < 0.5) {
|
|
13013
13927
|
context.engine.sound?.(self, 0, "parasite/parpain1.wav", 1, 1, 0);
|
|
13014
13928
|
} else {
|
|
13015
13929
|
context.engine.sound?.(self, 0, "parasite/parpain2.wav", 1, 1, 0);
|
|
@@ -13246,6 +14160,7 @@ function registerParasiteSpawns(registry) {
|
|
|
13246
14160
|
}
|
|
13247
14161
|
|
|
13248
14162
|
// src/entities/monsters/soldier.ts
|
|
14163
|
+
init_esm();
|
|
13249
14164
|
var MONSTER_TICK20 = 0.1;
|
|
13250
14165
|
var SOLDIER_LIGHT = 1;
|
|
13251
14166
|
var SOLDIER_SSG = 2;
|
|
@@ -13584,6 +14499,7 @@ function registerMonsterSpawns(registry) {
|
|
|
13584
14499
|
}
|
|
13585
14500
|
|
|
13586
14501
|
// src/entities/monsters/supertank.ts
|
|
14502
|
+
init_esm();
|
|
13587
14503
|
var MONSTER_TICK21 = 0.1;
|
|
13588
14504
|
var SUPERTANK_MACHINEGUN_OFFSET = { x: 30, y: 30, z: 40 };
|
|
13589
14505
|
var SUPERTANK_ROCKET_OFFSET = { x: 30, y: -30, z: 40 };
|
|
@@ -13808,6 +14724,7 @@ function registerSupertankSpawns(registry) {
|
|
|
13808
14724
|
}
|
|
13809
14725
|
|
|
13810
14726
|
// src/entities/monsters/tank.ts
|
|
14727
|
+
init_esm();
|
|
13811
14728
|
var MONSTER_TICK22 = 0.1;
|
|
13812
14729
|
function M_AdjustBlindfireTarget(self, start, target, right, context) {
|
|
13813
14730
|
const tr = context.trace(start, target, ZERO_VEC3, ZERO_VEC3, self, MASK_SHOT);
|
|
@@ -14178,6 +15095,7 @@ function registerTankCommanderSpawns(registry) {
|
|
|
14178
15095
|
}
|
|
14179
15096
|
|
|
14180
15097
|
// src/entities/monsters/turret.ts
|
|
15098
|
+
init_esm();
|
|
14181
15099
|
var MONSTER_TICK23 = 0.1;
|
|
14182
15100
|
function monster_ai_stand21(self, dist, context) {
|
|
14183
15101
|
ai_stand(self, MONSTER_TICK23, context);
|
|
@@ -14329,8 +15247,9 @@ function registerTurretSpawns(registry) {
|
|
|
14329
15247
|
}
|
|
14330
15248
|
|
|
14331
15249
|
// src/entities/monsters/gekk.ts
|
|
15250
|
+
init_esm();
|
|
14332
15251
|
var MONSTER_TICK24 = 0.1;
|
|
14333
|
-
var
|
|
15252
|
+
var random10 = () => Math.random();
|
|
14334
15253
|
var frandom2 = () => Math.random();
|
|
14335
15254
|
var irandom2 = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
|
|
14336
15255
|
function monster_ai_stand22(self, dist, context) {
|
|
@@ -14839,7 +15758,7 @@ function gekk_pain(self, other, kick, damage, context) {
|
|
|
14839
15758
|
}
|
|
14840
15759
|
self.monsterinfo.current_move = gekk_move_pain;
|
|
14841
15760
|
} else {
|
|
14842
|
-
if (
|
|
15761
|
+
if (random10() > 0.5) self.monsterinfo.current_move = gekk_move_pain1;
|
|
14843
15762
|
else self.monsterinfo.current_move = gekk_move_pain2;
|
|
14844
15763
|
}
|
|
14845
15764
|
}
|
|
@@ -14971,8 +15890,9 @@ function registerGekkSpawns(registry) {
|
|
|
14971
15890
|
}
|
|
14972
15891
|
|
|
14973
15892
|
// src/entities/monsters/fixbot.ts
|
|
15893
|
+
init_esm();
|
|
14974
15894
|
var MONSTER_TICK25 = 0.1;
|
|
14975
|
-
var
|
|
15895
|
+
var random11 = () => Math.random();
|
|
14976
15896
|
var frandom3 = () => Math.random();
|
|
14977
15897
|
function monster_ai_walk21(self, dist, context) {
|
|
14978
15898
|
ai_walk(self, dist, MONSTER_TICK25, context);
|
|
@@ -15035,7 +15955,7 @@ function fixbot_search(self, context) {
|
|
|
15035
15955
|
fixbot_run(self);
|
|
15036
15956
|
fixbot_set_fly_parameters(self, true, false);
|
|
15037
15957
|
} else {
|
|
15038
|
-
if (
|
|
15958
|
+
if (random11() < 0.1) {
|
|
15039
15959
|
context.engine.sound?.(self, 0, "flyer/flysght1.wav", 1, 1, 0);
|
|
15040
15960
|
}
|
|
15041
15961
|
}
|
|
@@ -15694,6 +16614,9 @@ var LevelClock = class {
|
|
|
15694
16614
|
}
|
|
15695
16615
|
};
|
|
15696
16616
|
|
|
16617
|
+
// src/save/save.ts
|
|
16618
|
+
init_esm();
|
|
16619
|
+
|
|
15697
16620
|
// src/checksum.ts
|
|
15698
16621
|
var FNV_OFFSET_BASIS = 2166136261;
|
|
15699
16622
|
var FNV_PRIME = 16777619;
|
|
@@ -16156,6 +17079,7 @@ function applySaveFile(save, targets) {
|
|
|
16156
17079
|
}
|
|
16157
17080
|
|
|
16158
17081
|
// src/save/rerelease.ts
|
|
17082
|
+
init_esm();
|
|
16159
17083
|
function ensureObject2(value, label) {
|
|
16160
17084
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
16161
17085
|
throw new Error(`${label} must be an object`);
|
|
@@ -16568,6 +17492,9 @@ _SaveStorage.DEFAULT_STORE = "saves";
|
|
|
16568
17492
|
_SaveStorage.QUICK_SLOT = "quicksave";
|
|
16569
17493
|
var SaveStorage = _SaveStorage;
|
|
16570
17494
|
|
|
17495
|
+
// src/index.ts
|
|
17496
|
+
init_esm();
|
|
17497
|
+
|
|
16571
17498
|
// src/ai/noise.ts
|
|
16572
17499
|
var PNOISE_SELF = 0;
|
|
16573
17500
|
var PNOISE_WEAPON = 1;
|
|
@@ -16593,8 +17520,13 @@ function PlayerNoise(who, where, type, context) {
|
|
|
16593
17520
|
}
|
|
16594
17521
|
}
|
|
16595
17522
|
|
|
17523
|
+
// src/entities/player.ts
|
|
17524
|
+
init_playerInventory();
|
|
17525
|
+
|
|
16596
17526
|
// src/combat/obituary.ts
|
|
16597
|
-
|
|
17527
|
+
init_esm();
|
|
17528
|
+
init_esm();
|
|
17529
|
+
var random12 = createRandomGenerator();
|
|
16598
17530
|
var PRINT_MEDIUM = 1;
|
|
16599
17531
|
function getGender(ent) {
|
|
16600
17532
|
return "male";
|
|
@@ -16735,30 +17667,6 @@ function ClientObituary(self, inflictor, attacker, mod, sys) {
|
|
|
16735
17667
|
}
|
|
16736
17668
|
}
|
|
16737
17669
|
|
|
16738
|
-
// src/entities/player_anim.ts
|
|
16739
|
-
var FRAME_stand01 = 0;
|
|
16740
|
-
var FRAME_stand402 = 39;
|
|
16741
|
-
var FRAME_run1 = 40;
|
|
16742
|
-
var FRAME_run6 = 45;
|
|
16743
|
-
var FRAME_pain1012 = 54;
|
|
16744
|
-
var FRAME_pain104 = 57;
|
|
16745
|
-
var FRAME_pain2012 = 58;
|
|
16746
|
-
var FRAME_pain204 = 61;
|
|
16747
|
-
var FRAME_pain3012 = 62;
|
|
16748
|
-
var FRAME_pain304 = 65;
|
|
16749
|
-
var FRAME_death1012 = 66;
|
|
16750
|
-
var FRAME_death106 = 71;
|
|
16751
|
-
var FRAME_death2012 = 72;
|
|
16752
|
-
var FRAME_death206 = 77;
|
|
16753
|
-
var FRAME_death301 = 78;
|
|
16754
|
-
var FRAME_death306 = 83;
|
|
16755
|
-
var ANIM_BASIC = 0;
|
|
16756
|
-
var ANIM_PAIN = 2;
|
|
16757
|
-
var ANIM_DEATH = 3;
|
|
16758
|
-
|
|
16759
|
-
// src/combat/weapons/firing.ts
|
|
16760
|
-
var random12 = createRandomGenerator();
|
|
16761
|
-
|
|
16762
17670
|
// src/entities/player.ts
|
|
16763
17671
|
function P_PlayerThink(ent, sys) {
|
|
16764
17672
|
if (!ent.client) return;
|
|
@@ -16777,9 +17685,9 @@ function P_PlayerThink(ent, sys) {
|
|
|
16777
17685
|
animChanged = true;
|
|
16778
17686
|
}
|
|
16779
17687
|
} else {
|
|
16780
|
-
if (ent.frame >= FRAME_run1 && ent.frame <= FRAME_run6 || client.anim_priority === ANIM_BASIC && client.anim_end !==
|
|
17688
|
+
if (ent.frame >= FRAME_run1 && ent.frame <= FRAME_run6 || client.anim_priority === ANIM_BASIC && client.anim_end !== FRAME_stand40 || client.anim_priority === void 0) {
|
|
16781
17689
|
ent.frame = FRAME_stand01;
|
|
16782
|
-
client.anim_end =
|
|
17690
|
+
client.anim_end = FRAME_stand40;
|
|
16783
17691
|
client.anim_priority = ANIM_BASIC;
|
|
16784
17692
|
animChanged = true;
|
|
16785
17693
|
}
|
|
@@ -16798,7 +17706,7 @@ function P_PlayerThink(ent, sys) {
|
|
|
16798
17706
|
} else if (client.anim_end === ent.frame) {
|
|
16799
17707
|
if (client.anim_priority === ANIM_BASIC) {
|
|
16800
17708
|
if (ent.frame === FRAME_run6) ent.frame = FRAME_run1;
|
|
16801
|
-
else if (ent.frame ===
|
|
17709
|
+
else if (ent.frame === FRAME_stand40) ent.frame = FRAME_stand01;
|
|
16802
17710
|
} else {
|
|
16803
17711
|
if (client.anim_priority !== ANIM_DEATH) {
|
|
16804
17712
|
client.anim_priority = ANIM_BASIC;
|
|
@@ -16814,15 +17722,15 @@ function player_pain(self, damage) {
|
|
|
16814
17722
|
return;
|
|
16815
17723
|
}
|
|
16816
17724
|
self.client.anim_priority = ANIM_PAIN;
|
|
16817
|
-
const r =
|
|
17725
|
+
const r = random2.frandom();
|
|
16818
17726
|
if (r < 0.33) {
|
|
16819
|
-
self.frame =
|
|
17727
|
+
self.frame = FRAME_pain101;
|
|
16820
17728
|
self.client.anim_end = FRAME_pain104;
|
|
16821
17729
|
} else if (r < 0.66) {
|
|
16822
|
-
self.frame =
|
|
17730
|
+
self.frame = FRAME_pain201;
|
|
16823
17731
|
self.client.anim_end = FRAME_pain204;
|
|
16824
17732
|
} else {
|
|
16825
|
-
self.frame =
|
|
17733
|
+
self.frame = FRAME_pain301;
|
|
16826
17734
|
self.client.anim_end = FRAME_pain304;
|
|
16827
17735
|
}
|
|
16828
17736
|
}
|
|
@@ -16837,12 +17745,12 @@ function player_die(self, inflictor, attacker, damage, point, mod, sys) {
|
|
|
16837
17745
|
}
|
|
16838
17746
|
if (self.client) {
|
|
16839
17747
|
self.client.anim_priority = ANIM_DEATH;
|
|
16840
|
-
const r =
|
|
17748
|
+
const r = random2.frandom();
|
|
16841
17749
|
if (r < 0.33) {
|
|
16842
|
-
self.frame =
|
|
17750
|
+
self.frame = FRAME_death101;
|
|
16843
17751
|
self.client.anim_end = FRAME_death106;
|
|
16844
17752
|
} else if (r < 0.66) {
|
|
16845
|
-
self.frame =
|
|
17753
|
+
self.frame = FRAME_death201;
|
|
16846
17754
|
self.client.anim_end = FRAME_death206;
|
|
16847
17755
|
} else {
|
|
16848
17756
|
self.frame = FRAME_death301;
|
|
@@ -16890,6 +17798,8 @@ function player_think(self, sys) {
|
|
|
16890
17798
|
}
|
|
16891
17799
|
|
|
16892
17800
|
// src/entities/playerStats.ts
|
|
17801
|
+
init_esm();
|
|
17802
|
+
init_playerInventory();
|
|
16893
17803
|
var POWERUP_TIMERS = [
|
|
16894
17804
|
{ id: PowerupId.QuadDamage, priority: 1 },
|
|
16895
17805
|
{ id: PowerupId.Invulnerability, priority: 2 },
|
|
@@ -16955,7 +17865,11 @@ function populatePlayerStats(player, timeSeconds) {
|
|
|
16955
17865
|
return statArray;
|
|
16956
17866
|
}
|
|
16957
17867
|
|
|
17868
|
+
// src/index.ts
|
|
17869
|
+
init_esm();
|
|
17870
|
+
|
|
16958
17871
|
// src/combat/specialDamage.ts
|
|
17872
|
+
init_esm();
|
|
16959
17873
|
var ZERO2 = { x: 0, y: 0, z: 0 };
|
|
16960
17874
|
var EnvironmentalFlags = /* @__PURE__ */ ((EnvironmentalFlags2) => {
|
|
16961
17875
|
EnvironmentalFlags2[EnvironmentalFlags2["IN_WATER"] = 1] = "IN_WATER";
|
|
@@ -17276,6 +18190,13 @@ function createGame(imports, engine, options) {
|
|
|
17276
18190
|
configstring
|
|
17277
18191
|
};
|
|
17278
18192
|
const entities = new EntitySystem(engine, systemImports, gravity, void 0, void 0, deathmatch);
|
|
18193
|
+
entities._game = {
|
|
18194
|
+
// Lazy proxy or partial implementation of GameExports needed by EntitySystem consumers (like weapons)
|
|
18195
|
+
// This is circular, so we must be careful.
|
|
18196
|
+
// We will assign the full gameExports object later?
|
|
18197
|
+
// No, gameExports is const defined below.
|
|
18198
|
+
// We can use a getter or assign properties later.
|
|
18199
|
+
};
|
|
17279
18200
|
frameLoop.addStage("prep", (context) => {
|
|
17280
18201
|
levelClock.tick(context);
|
|
17281
18202
|
entities.beginFrame(levelClock.current.timeSeconds);
|
|
@@ -17562,6 +18483,7 @@ function createGame(imports, engine, options) {
|
|
|
17562
18483
|
};
|
|
17563
18484
|
const spawnRegistry = createDefaultSpawnRegistry(gameExports);
|
|
17564
18485
|
entities.setSpawnRegistry(spawnRegistry);
|
|
18486
|
+
entities._game = gameExports;
|
|
17565
18487
|
return gameExports;
|
|
17566
18488
|
}
|
|
17567
18489
|
export {
|