quake2ts 0.0.185 → 0.0.187
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/cgame/dist/index.d.mts +3 -0
- package/packages/cgame/dist/index.d.ts +3 -0
- package/packages/cgame/dist/index.js +32 -0
- package/packages/cgame/dist/index.mjs +7 -0
- package/packages/client/dist/browser/index.global.js +5 -5
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +6 -0
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +6 -0
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/browser/index.global.js +1 -1
- 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/game/dist/browser/index.global.js +2 -2
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +95 -19
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +95 -19
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/entities/monsters/medic.d.ts +1 -0
- package/packages/game/dist/types/entities/monsters/medic.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 +3 -0
- package/packages/shared/dist/cjs/index.cjs.map +1 -1
- package/packages/shared/dist/esm/index.js +3 -0
- package/packages/shared/dist/esm/index.js.map +1 -1
- package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/shared/dist/types/pmove/config.d.ts +5 -0
- package/packages/shared/dist/types/pmove/config.d.ts.map +1 -0
- package/packages/shared/dist/types/protocol/configstrings.d.ts +3 -0
- package/packages/shared/dist/types/protocol/configstrings.d.ts.map +1 -1
- package/packages/shared/dist/types/protocol/layout.d.ts +9 -0
- package/packages/shared/dist/types/protocol/layout.d.ts.map +1 -0
- package/packages/shared/dist/types/protocol/stats.d.ts +28 -0
- package/packages/shared/dist/types/protocol/stats.d.ts.map +1 -0
- package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
|
@@ -623,6 +623,9 @@ var ConfigStringIndex = ((ConfigStringIndex2) => {
|
|
|
623
623
|
ConfigStringIndex2[ConfigStringIndex2["SkyAxis"] = 3] = "SkyAxis";
|
|
624
624
|
ConfigStringIndex2[ConfigStringIndex2["SkyRotate"] = 4] = "SkyRotate";
|
|
625
625
|
ConfigStringIndex2[ConfigStringIndex2["StatusBar"] = 5] = "StatusBar";
|
|
626
|
+
ConfigStringIndex2[ConfigStringIndex2["CONFIG_N64_PHYSICS"] = 56] = "CONFIG_N64_PHYSICS";
|
|
627
|
+
ConfigStringIndex2[ConfigStringIndex2["CONFIG_CTF_TEAMS"] = 57] = "CONFIG_CTF_TEAMS";
|
|
628
|
+
ConfigStringIndex2[ConfigStringIndex2["CONFIG_COOP_RESPAWN_STRING"] = 58] = "CONFIG_COOP_RESPAWN_STRING";
|
|
626
629
|
ConfigStringIndex2[ConfigStringIndex2["AirAccel"] = 59] = "AirAccel";
|
|
627
630
|
ConfigStringIndex2[ConfigStringIndex2["MaxClients"] = 60] = "MaxClients";
|
|
628
631
|
ConfigStringIndex2[ConfigStringIndex2["MapChecksum"] = 61] = "MapChecksum";
|
|
@@ -9180,9 +9183,11 @@ function registerMakronSpawns(registry) {
|
|
|
9180
9183
|
// src/entities/monsters/medic.ts
|
|
9181
9184
|
var MONSTER_TICK15 = 0.1;
|
|
9182
9185
|
function monster_ai_stand15(self, dist, context) {
|
|
9183
|
-
if (
|
|
9184
|
-
self
|
|
9185
|
-
|
|
9186
|
+
if (self.classname === "monster_medic") {
|
|
9187
|
+
if (medic_find_dead(self, context)) {
|
|
9188
|
+
self.monsterinfo.current_move = run_move13;
|
|
9189
|
+
return;
|
|
9190
|
+
}
|
|
9186
9191
|
}
|
|
9187
9192
|
ai_stand(self, MONSTER_TICK15, context);
|
|
9188
9193
|
}
|
|
@@ -9190,8 +9195,12 @@ function monster_ai_walk15(self, dist, context) {
|
|
|
9190
9195
|
ai_walk(self, dist, MONSTER_TICK15, context);
|
|
9191
9196
|
}
|
|
9192
9197
|
function monster_ai_run14(self, dist, context) {
|
|
9193
|
-
if (
|
|
9194
|
-
self
|
|
9198
|
+
if (self.classname === "monster_medic") {
|
|
9199
|
+
if (medic_find_dead(self, context)) {
|
|
9200
|
+
self.monsterinfo.current_move = run_move13;
|
|
9201
|
+
} else {
|
|
9202
|
+
ai_run(self, dist, MONSTER_TICK15, context);
|
|
9203
|
+
}
|
|
9195
9204
|
} else {
|
|
9196
9205
|
ai_run(self, dist, MONSTER_TICK15, context);
|
|
9197
9206
|
}
|
|
@@ -9207,6 +9216,7 @@ var walk_move13;
|
|
|
9207
9216
|
var run_move13;
|
|
9208
9217
|
var attack_hyper_move;
|
|
9209
9218
|
var attack_cable_move;
|
|
9219
|
+
var spawn_move;
|
|
9210
9220
|
var pain_move8;
|
|
9211
9221
|
var death_move12;
|
|
9212
9222
|
function medic_stand(self) {
|
|
@@ -9216,11 +9226,13 @@ function medic_walk(self) {
|
|
|
9216
9226
|
self.monsterinfo.current_move = walk_move13;
|
|
9217
9227
|
}
|
|
9218
9228
|
function medic_run(self) {
|
|
9219
|
-
if (self.
|
|
9220
|
-
|
|
9221
|
-
|
|
9222
|
-
|
|
9223
|
-
|
|
9229
|
+
if (self.classname === "monster_medic") {
|
|
9230
|
+
if (self.enemy && self.enemy.deadflag === 2 /* Dead */) {
|
|
9231
|
+
const dist = rangeTo(self, self.enemy);
|
|
9232
|
+
if (dist < 80) {
|
|
9233
|
+
self.monsterinfo.current_move = attack_cable_move;
|
|
9234
|
+
return;
|
|
9235
|
+
}
|
|
9224
9236
|
}
|
|
9225
9237
|
}
|
|
9226
9238
|
if (self.enemy && self.enemy.health > 0) {
|
|
@@ -9230,10 +9242,16 @@ function medic_run(self) {
|
|
|
9230
9242
|
}
|
|
9231
9243
|
}
|
|
9232
9244
|
function medic_attack(self) {
|
|
9233
|
-
if (self.enemy && self.enemy.deadflag === 2 /* Dead */) {
|
|
9245
|
+
if (self.classname === "monster_medic" && self.enemy && self.enemy.deadflag === 2 /* Dead */) {
|
|
9234
9246
|
self.monsterinfo.current_move = attack_cable_move;
|
|
9235
9247
|
return;
|
|
9236
9248
|
}
|
|
9249
|
+
if (self.classname === "monster_medic_commander") {
|
|
9250
|
+
if (Math.random() < 0.2) {
|
|
9251
|
+
self.monsterinfo.current_move = spawn_move;
|
|
9252
|
+
return;
|
|
9253
|
+
}
|
|
9254
|
+
}
|
|
9237
9255
|
self.monsterinfo.current_move = attack_hyper_move;
|
|
9238
9256
|
}
|
|
9239
9257
|
function medic_fire_blaster(self, context) {
|
|
@@ -9272,7 +9290,6 @@ function medic_cable_attack(self, context) {
|
|
|
9272
9290
|
te: TempEntity.MEDIC_CABLE_ATTACK,
|
|
9273
9291
|
entId: self.index,
|
|
9274
9292
|
targetId: self.enemy.index,
|
|
9275
|
-
// Assuming targetId for the beam target
|
|
9276
9293
|
start,
|
|
9277
9294
|
end
|
|
9278
9295
|
});
|
|
@@ -9300,14 +9317,13 @@ function medic_hook_retract(self, context) {
|
|
|
9300
9317
|
if (ent.monsterinfo && ent.monsterinfo.stand) {
|
|
9301
9318
|
ent.monsterinfo.stand(ent, context);
|
|
9302
9319
|
}
|
|
9320
|
+
ent.bad_medic = self;
|
|
9303
9321
|
} else {
|
|
9304
9322
|
const spawnContext = {
|
|
9305
9323
|
entities: context,
|
|
9306
9324
|
keyValues: { classname: ent.classname },
|
|
9307
|
-
// Minimal keyvalues
|
|
9308
9325
|
warn: (msg) => {
|
|
9309
9326
|
},
|
|
9310
|
-
// Suppress warnings
|
|
9311
9327
|
free: (e) => context.free(e)
|
|
9312
9328
|
};
|
|
9313
9329
|
const origin = { ...ent.origin };
|
|
@@ -9355,6 +9371,44 @@ function medic_find_dead(self, context) {
|
|
|
9355
9371
|
}
|
|
9356
9372
|
return false;
|
|
9357
9373
|
}
|
|
9374
|
+
function medic_call_reinforcements(self, context) {
|
|
9375
|
+
const r = Math.random();
|
|
9376
|
+
let chosenClass = "monster_soldier_light";
|
|
9377
|
+
if (r > 0.8) {
|
|
9378
|
+
chosenClass = "monster_soldier_ssg";
|
|
9379
|
+
} else if (r > 0.5) {
|
|
9380
|
+
chosenClass = "monster_soldier";
|
|
9381
|
+
}
|
|
9382
|
+
const spawnFunc = context.getSpawnFunction(chosenClass);
|
|
9383
|
+
if (spawnFunc) {
|
|
9384
|
+
const vectors = angleVectors(self.angles);
|
|
9385
|
+
const forwardDist = scaleVec3(vectors.forward, 64);
|
|
9386
|
+
const spawnOrigin = addVec3(self.origin, forwardDist);
|
|
9387
|
+
const adjustedOrigin = { ...spawnOrigin, z: spawnOrigin.z + 8 };
|
|
9388
|
+
const tr = context.trace(self.origin, { x: -16, y: -16, z: -24 }, { x: 16, y: 16, z: 32 }, adjustedOrigin, self, CONTENTS_SOLID | CONTENTS_MONSTER | CONTENTS_DEADMONSTER);
|
|
9389
|
+
if (tr.fraction < 1 || tr.startsolid || tr.allsolid) {
|
|
9390
|
+
return;
|
|
9391
|
+
}
|
|
9392
|
+
const ent = context.spawn();
|
|
9393
|
+
ent.origin = adjustedOrigin;
|
|
9394
|
+
ent.angles = { ...self.angles };
|
|
9395
|
+
const spawnContext = {
|
|
9396
|
+
entities: context,
|
|
9397
|
+
keyValues: { classname: chosenClass },
|
|
9398
|
+
warn: () => {
|
|
9399
|
+
},
|
|
9400
|
+
free: (e) => context.free(e)
|
|
9401
|
+
};
|
|
9402
|
+
spawnFunc(ent, spawnContext);
|
|
9403
|
+
ent.enemy = self.enemy;
|
|
9404
|
+
context.multicast(adjustedOrigin, 1 /* Pvs */, ServerCommand.muzzleflash, {
|
|
9405
|
+
entId: ent.index,
|
|
9406
|
+
flash_number: 0
|
|
9407
|
+
// generic flash
|
|
9408
|
+
});
|
|
9409
|
+
context.engine.sound?.(self, 0, "medic/medatck2.wav", 1, 1, 0);
|
|
9410
|
+
}
|
|
9411
|
+
}
|
|
9358
9412
|
function medic_die(self) {
|
|
9359
9413
|
self.monsterinfo.current_move = death_move12;
|
|
9360
9414
|
}
|
|
@@ -9416,8 +9470,6 @@ var attack_cable_frames = [
|
|
|
9416
9470
|
];
|
|
9417
9471
|
attack_cable_move = {
|
|
9418
9472
|
firstframe: 106,
|
|
9419
|
-
// FRAME_attack42 (starts at 0+30+40+20+16 = 106) ... wait, check original counts.
|
|
9420
|
-
// stand=30, walk=40, run=20, hyper=16. 30+40+20+16 = 106. Correct.
|
|
9421
9473
|
lastframe: 114,
|
|
9422
9474
|
frames: attack_cable_frames,
|
|
9423
9475
|
endfunc: medic_run
|
|
@@ -9432,13 +9484,25 @@ pain_move8 = {
|
|
|
9432
9484
|
frames: pain_frames8,
|
|
9433
9485
|
endfunc: medic_run
|
|
9434
9486
|
};
|
|
9435
|
-
var
|
|
9487
|
+
var spawn_frames = Array.from({ length: 23 }, (_, i) => ({
|
|
9488
|
+
ai: monster_ai_move15,
|
|
9489
|
+
dist: 0,
|
|
9490
|
+
think: i === 11 ? medic_call_reinforcements : null
|
|
9491
|
+
// Trigger halfway
|
|
9492
|
+
}));
|
|
9493
|
+
spawn_move = {
|
|
9494
|
+
firstframe: 122,
|
|
9495
|
+
lastframe: 144,
|
|
9496
|
+
frames: spawn_frames,
|
|
9497
|
+
endfunc: medic_run
|
|
9498
|
+
};
|
|
9499
|
+
var death_frames12 = Array.from({ length: 30 }, () => ({
|
|
9436
9500
|
ai: monster_ai_move15,
|
|
9437
9501
|
dist: 0
|
|
9438
9502
|
}));
|
|
9439
9503
|
death_move12 = {
|
|
9440
|
-
firstframe:
|
|
9441
|
-
lastframe:
|
|
9504
|
+
firstframe: 161,
|
|
9505
|
+
lastframe: 190,
|
|
9442
9506
|
frames: death_frames12,
|
|
9443
9507
|
endfunc: medic_dead
|
|
9444
9508
|
};
|
|
@@ -9456,6 +9520,10 @@ function SP_monster_medic(self, context) {
|
|
|
9456
9520
|
self.pain = (self2, other, kick, damage) => {
|
|
9457
9521
|
if (self2.health < self2.max_health / 2) {
|
|
9458
9522
|
self2.monsterinfo.current_move = pain_move8;
|
|
9523
|
+
if (Math.random() < 0.5) {
|
|
9524
|
+
const sound = self2.classname === "monster_medic_commander" ? "medic/medpain2.wav" : "medic/medpain1.wav";
|
|
9525
|
+
context.entities.sound?.(self2, 0, sound, 1, 1, 0);
|
|
9526
|
+
}
|
|
9459
9527
|
}
|
|
9460
9528
|
};
|
|
9461
9529
|
self.die = (self2, inflictor, attacker, damage, point) => {
|
|
@@ -9476,8 +9544,16 @@ function SP_monster_medic(self, context) {
|
|
|
9476
9544
|
medic_stand(self);
|
|
9477
9545
|
self.nextthink = self.timestamp + MONSTER_TICK15;
|
|
9478
9546
|
}
|
|
9547
|
+
function SP_monster_medic_commander(self, context) {
|
|
9548
|
+
SP_monster_medic(self, context);
|
|
9549
|
+
self.classname = "monster_medic_commander";
|
|
9550
|
+
self.health = 600;
|
|
9551
|
+
self.max_health = 600;
|
|
9552
|
+
self.skin = 1;
|
|
9553
|
+
}
|
|
9479
9554
|
function registerMedicSpawns(registry) {
|
|
9480
9555
|
registry.register("monster_medic", SP_monster_medic);
|
|
9556
|
+
registry.register("monster_medic_commander", SP_monster_medic_commander);
|
|
9481
9557
|
}
|
|
9482
9558
|
|
|
9483
9559
|
// src/entities/monsters/mutant.ts
|