quake2ts 0.0.175 → 0.0.176

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/package.json +1 -1
  2. package/packages/client/dist/browser/index.global.js +3 -3
  3. package/packages/client/dist/browser/index.global.js.map +1 -1
  4. package/packages/client/dist/cjs/index.cjs.map +1 -1
  5. package/packages/client/dist/esm/index.js.map +1 -1
  6. package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
  7. package/packages/engine/dist/browser/index.global.js +8 -8
  8. package/packages/engine/dist/browser/index.global.js.map +1 -1
  9. package/packages/engine/dist/cjs/index.cjs +64 -3
  10. package/packages/engine/dist/cjs/index.cjs.map +1 -1
  11. package/packages/engine/dist/esm/index.js +64 -3
  12. package/packages/engine/dist/esm/index.js.map +1 -1
  13. package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
  14. package/packages/engine/dist/types/assets/bsp.d.ts +18 -0
  15. package/packages/engine/dist/types/assets/bsp.d.ts.map +1 -1
  16. package/packages/engine/dist/types/render/bsp/geometry.d.ts +4 -1
  17. package/packages/engine/dist/types/render/bsp/geometry.d.ts.map +1 -1
  18. package/packages/game/dist/browser/index.global.js +2 -2
  19. package/packages/game/dist/browser/index.global.js.map +1 -1
  20. package/packages/game/dist/cjs/index.cjs +77 -35
  21. package/packages/game/dist/cjs/index.cjs.map +1 -1
  22. package/packages/game/dist/esm/index.js +77 -35
  23. package/packages/game/dist/esm/index.js.map +1 -1
  24. package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
  25. package/packages/game/dist/types/combat/damage.d.ts +2 -2
  26. package/packages/game/dist/types/combat/damage.d.ts.map +1 -1
  27. package/packages/game/dist/types/combat/specialDamage.d.ts.map +1 -1
  28. package/packages/game/dist/types/combat/weapons/firing.d.ts.map +1 -1
  29. package/packages/game/dist/types/entities/monsters/attack.d.ts.map +1 -1
  30. package/packages/game/dist/types/entities/monsters/berserk.d.ts.map +1 -1
  31. package/packages/game/dist/types/entities/monsters/mutant.d.ts.map +1 -1
  32. package/packages/game/dist/types/entities/monsters/parasite.d.ts.map +1 -1
  33. package/packages/game/dist/types/entities/projectiles/rocket.d.ts.map +1 -1
  34. package/packages/game/dist/types/entities/projectiles.d.ts.map +1 -1
  35. package/packages/game/dist/types/inventory/playerInventory.d.ts +3 -1
  36. package/packages/game/dist/types/inventory/playerInventory.d.ts.map +1 -1
@@ -1201,7 +1201,8 @@ function pickupArmor(inventory, item, time) {
1201
1201
  }
1202
1202
  return false;
1203
1203
  }
1204
- function pickupPowerup(inventory, item, time) {
1204
+ function pickupPowerup(client, item, time) {
1205
+ const inventory = client.inventory;
1205
1206
  let powerupId = null;
1206
1207
  let icon = "";
1207
1208
  switch (item.id) {
@@ -1225,13 +1226,19 @@ function pickupPowerup(inventory, item, time) {
1225
1226
  powerupId = "enviro_suit" /* EnviroSuit */;
1226
1227
  icon = "p_envirosuit";
1227
1228
  break;
1229
+ case "item_double":
1230
+ powerupId = "double_damage" /* DoubleDamage */;
1231
+ icon = "p_double";
1232
+ break;
1228
1233
  }
1229
1234
  if (powerupId) {
1230
1235
  const expiresAt = inventory.powerups.get(powerupId);
1231
- if (expiresAt && expiresAt > time) {
1232
- inventory.powerups.set(powerupId, expiresAt + item.timer);
1233
- } else {
1234
- inventory.powerups.set(powerupId, time + item.timer);
1236
+ const newExpiresAt = expiresAt && expiresAt > time ? expiresAt + item.timer * 1e3 : time + item.timer * 1e3;
1237
+ inventory.powerups.set(powerupId, newExpiresAt);
1238
+ if (powerupId === "quad" /* QuadDamage */) {
1239
+ client.quad_time = newExpiresAt / 1e3;
1240
+ } else if (powerupId === "double_damage" /* DoubleDamage */) {
1241
+ client.double_time = newExpiresAt / 1e3;
1235
1242
  }
1236
1243
  setPickup(inventory, icon, time);
1237
1244
  return true;
@@ -4226,7 +4233,7 @@ function createPowerupPickupEntity(game, powerupItem) {
4226
4233
  if (!other || !other.client) {
4227
4234
  return;
4228
4235
  }
4229
- if (pickupPowerup(other.client.inventory, powerupItem, game.time * 1e3)) {
4236
+ if (pickupPowerup(other.client, powerupItem, game.time * 1e3)) {
4230
4237
  game.sound?.(other, 0, "items/pkup.wav", 1, 1, 0);
4231
4238
  game.centerprintf?.(other, `You got the ${powerupItem.name}`);
4232
4239
  self.solid = 0 /* Not */;
@@ -4728,6 +4735,23 @@ var EntityDamageFlags = /* @__PURE__ */ ((EntityDamageFlags2) => {
4728
4735
  EntityDamageFlags2[EntityDamageFlags2["NO_DAMAGE_EFFECTS"] = 8] = "NO_DAMAGE_EFFECTS";
4729
4736
  return EntityDamageFlags2;
4730
4737
  })(EntityDamageFlags || {});
4738
+ function getDamageModifier(attacker, time) {
4739
+ if (!attacker) {
4740
+ return 1;
4741
+ }
4742
+ const client = attacker.client;
4743
+ if (!client) {
4744
+ return 1;
4745
+ }
4746
+ let modifier = 1;
4747
+ if (client.quad_time && client.quad_time > time) {
4748
+ modifier *= 4;
4749
+ }
4750
+ if (client.double_time && client.double_time > time) {
4751
+ modifier *= 2;
4752
+ }
4753
+ return modifier;
4754
+ }
4731
4755
  function applyKnockback(targ, attacker, dir, knockback, dflags) {
4732
4756
  const hasNoKnockback = hasAnyDamageFlag(dflags, 8 /* NO_KNOCKBACK */) || ((targ.flags ?? 0) & 4 /* NO_KNOCKBACK */) !== 0;
4733
4757
  if (hasNoKnockback || knockback === 0) {
@@ -4770,22 +4794,25 @@ function targetCenter(ent) {
4770
4794
  }
4771
4795
  return ent.origin;
4772
4796
  }
4773
- function T_Damage(targ, inflictor, attacker, dir, point, normal, damage, knockback, dflags, mod, multicast) {
4774
- if (!targ.takedamage || damage <= 0) {
4797
+ function T_Damage(targ, inflictor, attacker, dir, point, normal, damage, knockback, dflags, mod, time, multicast) {
4798
+ if (!targ.takedamage) {
4775
4799
  return null;
4776
4800
  }
4777
- const protectedByGod = !hasAnyDamageFlag(dflags, 32 /* NO_PROTECTION */) && ((targ.flags ?? 0) & 1 /* GODMODE */) !== 0;
4801
+ const modifier = getDamageModifier(attacker, time);
4802
+ const modifiedDamage = damage * modifier;
4803
+ const modifiedKnockback = knockback * modifier;
4804
+ const protectedByGod = !hasAnyDamageFlag(dflags, 32 /* NO_PROTECTION */) && ((targ.flags ?? 0) & 1 /* GODMODE */) !== 0 && modifiedDamage > 0;
4778
4805
  if (protectedByGod) {
4779
4806
  return {
4780
4807
  take: 0,
4781
4808
  psave: 0,
4782
- asave: damage,
4809
+ asave: modifiedDamage,
4783
4810
  knocked: { x: 0, y: 0, z: 0 },
4784
4811
  killed: false
4785
4812
  };
4786
4813
  }
4787
- const knocked = applyKnockback(targ, attacker, dir, knockback, dflags);
4788
- const [take, psave, asave, remainingCells, remainingArmor] = applyProtection(targ, point, normal, damage, dflags);
4814
+ const knocked = applyKnockback(targ, attacker, dir, modifiedKnockback, dflags);
4815
+ const [take, psave, asave, remainingCells, remainingArmor] = applyProtection(targ, point, normal, modifiedDamage, dflags);
4789
4816
  if (targ.powerArmor && remainingCells !== void 0) {
4790
4817
  targ.powerArmor.cellCount = remainingCells;
4791
4818
  }
@@ -4814,7 +4841,7 @@ function T_Damage(targ, inflictor, attacker, dir, point, normal, damage, knockba
4814
4841
  }
4815
4842
  return { take: actualTake, psave, asave, knocked, killed, remainingCells, remainingArmor };
4816
4843
  }
4817
- function T_RadiusDamage(entities, inflictor, attacker, damage, ignore, radius, dflags, mod, options = {}, multicast) {
4844
+ function T_RadiusDamage(entities, inflictor, attacker, damage, ignore, radius, dflags, mod, time, options = {}, multicast) {
4818
4845
  const hits = [];
4819
4846
  const inflictorCenter = targetCenter(inflictor);
4820
4847
  const canDamage = options.canDamage ?? (() => true);
@@ -4834,7 +4861,7 @@ function T_RadiusDamage(entities, inflictor, attacker, damage, ignore, radius, d
4834
4861
  }
4835
4862
  const adjustedDamage = ent === attacker ? points * 0.5 : points;
4836
4863
  const dir = normalizeVec3(subtractVec3(ent.origin, inflictorCenter));
4837
- const result = T_Damage(ent, inflictor, attacker, dir, entCenter, dir, adjustedDamage, adjustedDamage, dflags | 1 /* RADIUS */, mod, multicast);
4864
+ const result = T_Damage(ent, inflictor, attacker, dir, entCenter, dir, adjustedDamage, adjustedDamage, dflags | 1 /* RADIUS */, mod, time, multicast);
4838
4865
  hits.push({ target: ent, result, appliedDamage: adjustedDamage });
4839
4866
  }
4840
4867
  return hits;
@@ -5183,6 +5210,7 @@ function fire_hit(self, aim, damage, kick, context) {
5183
5210
  kick,
5184
5211
  0 /* NONE */,
5185
5212
  0 /* UNKNOWN */,
5213
+ context.timeSeconds,
5186
5214
  context.multicast.bind(context)
5187
5215
  );
5188
5216
  return true;
@@ -5265,7 +5293,7 @@ function berserk_attack_slam(self, context) {
5265
5293
  const points = Math.max(1, damage * amount * amount);
5266
5294
  const k = kick * amount * amount;
5267
5295
  const dir = normalizeVec3(subtractVec3(ent.origin, tr.endpos));
5268
- T_Damage(ent, self, self, dir, ent.origin, dir, points, k, 1 /* RADIUS */, 0 /* UNKNOWN */, context.multicast.bind(context));
5296
+ T_Damage(ent, self, self, dir, ent.origin, dir, points, k, 1 /* RADIUS */, 0 /* UNKNOWN */, context.timeSeconds, context.multicast.bind(context));
5269
5297
  if (ent.client) {
5270
5298
  const currentVel = { ...ent.velocity };
5271
5299
  currentVel.z = Math.max(270, currentVel.z);
@@ -5542,11 +5570,12 @@ function createRocket(sys, owner, start, dir, damage, radiusDamage, speed, flash
5542
5570
  0,
5543
5571
  0 /* NONE */,
5544
5572
  8 /* ROCKET */,
5573
+ sys.timeSeconds,
5545
5574
  sys.multicast.bind(sys)
5546
5575
  );
5547
5576
  }
5548
5577
  const entities = sys.findByRadius(self.origin, 120);
5549
- T_RadiusDamage(entities, self, self.owner, radiusDamage, self.owner, 120, 0 /* NONE */, 9 /* R_SPLASH */, {}, sys.multicast.bind(sys));
5578
+ T_RadiusDamage(entities, self, self.owner, radiusDamage, self.owner, 120, 0 /* NONE */, 9 /* R_SPLASH */, sys.timeSeconds, {}, sys.multicast.bind(sys));
5550
5579
  sys.multicast(self.origin, 2 /* Phs */, ServerCommand.temp_entity, TempEntity.ROCKET_EXPLOSION, self.origin);
5551
5580
  sys.free(self);
5552
5581
  };
@@ -5566,7 +5595,7 @@ function createGrenade(sys, owner, start, dir, damage, speed) {
5566
5595
  grenade.maxs = { x: 4, y: 4, z: 4 };
5567
5596
  const explode = (self) => {
5568
5597
  const entities = sys.findByRadius(self.origin, 120);
5569
- T_RadiusDamage(entities, self, self.owner, damage, self.owner, 120, 0 /* NONE */, 6 /* GRENADE */, {}, sys.multicast.bind(sys));
5598
+ T_RadiusDamage(entities, self, self.owner, damage, self.owner, 120, 0 /* NONE */, 6 /* GRENADE */, sys.timeSeconds, {}, sys.multicast.bind(sys));
5570
5599
  sys.multicast(self.origin, 2 /* Phs */, ServerCommand.temp_entity, TempEntity.GRENADE_EXPLOSION, self.origin);
5571
5600
  sys.free(self);
5572
5601
  };
@@ -5612,6 +5641,7 @@ function createBlasterBolt(sys, owner, start, dir, damage, speed, mod) {
5612
5641
  // Kick
5613
5642
  0 /* NONE */,
5614
5643
  mod,
5644
+ sys.timeSeconds,
5615
5645
  sys.multicast.bind(sys)
5616
5646
  );
5617
5647
  } else {
@@ -5666,6 +5696,7 @@ function fireBfgPiercingLaser(sys, bfg, target, damage) {
5666
5696
  // kick
5667
5697
  4 /* ENERGY */,
5668
5698
  12 /* BFG_LASER */,
5699
+ sys.timeSeconds,
5669
5700
  sys.multicast.bind(sys)
5670
5701
  );
5671
5702
  }
@@ -5751,6 +5782,7 @@ function bfgExplode(self, sys) {
5751
5782
  0,
5752
5783
  4 /* ENERGY */,
5753
5784
  14 /* BFG_EFFECT */,
5785
+ sys.timeSeconds,
5754
5786
  sys.multicast.bind(sys)
5755
5787
  );
5756
5788
  }
@@ -5794,6 +5826,7 @@ function createBfgBall(sys, owner, start, dir, damage, speed, damageRadius) {
5794
5826
  0,
5795
5827
  4 /* ENERGY */,
5796
5828
  13 /* BFG_BLAST */,
5829
+ sys.timeSeconds,
5797
5830
  sys.multicast.bind(sys)
5798
5831
  );
5799
5832
  }
@@ -5807,6 +5840,7 @@ function createBfgBall(sys, owner, start, dir, damage, speed, damageRadius) {
5807
5840
  100,
5808
5841
  4 /* ENERGY */,
5809
5842
  13 /* BFG_BLAST */,
5843
+ sys.timeSeconds,
5810
5844
  {},
5811
5845
  sys.multicast.bind(sys)
5812
5846
  );
@@ -5864,7 +5898,8 @@ function monster_fire_bullet_v2(self, start, dir, damage, kick, hspread, vspread
5864
5898
  damage,
5865
5899
  kick,
5866
5900
  16 /* BULLET */ | 2 /* NO_ARMOR */,
5867
- mod
5901
+ mod,
5902
+ context.timeSeconds
5868
5903
  );
5869
5904
  }
5870
5905
  var monster_fire_bullet = monster_fire_bullet_v2;
@@ -5900,7 +5935,8 @@ function monster_fire_railgun(self, start, aim, damage, kick, flashtype, context
5900
5935
  damage,
5901
5936
  kick,
5902
5937
  4 /* ENERGY */ | 2 /* NO_ARMOR */,
5903
- 11 /* RAILGUN */
5938
+ 11 /* RAILGUN */,
5939
+ context.timeSeconds
5904
5940
  );
5905
5941
  }
5906
5942
  }
@@ -5924,7 +5960,8 @@ function monster_fire_hit(self, aim, damage, kick, context) {
5924
5960
  damage,
5925
5961
  kick,
5926
5962
  0,
5927
- 0 /* UNKNOWN */
5963
+ 0 /* UNKNOWN */,
5964
+ context.timeSeconds
5928
5965
  );
5929
5966
  return true;
5930
5967
  }
@@ -5938,7 +5975,7 @@ function dabeam_update(self, context) {
5938
5975
  const end = addVec3(start, scaleVec3(self.movedir, 2048));
5939
5976
  const tr = context.trace(start, end, ZERO_VEC3, ZERO_VEC3, self, CONTENTS_SOLID | CONTENTS_MONSTER | CONTENTS_PLAYER | CONTENTS_DEADMONSTER);
5940
5977
  if (self.dmg > 0 && tr.ent && tr.ent.takedamage && tr.ent !== self.owner) {
5941
- T_Damage(tr.ent, self, self.owner, self.movedir, tr.endpos, ZERO_VEC3, self.dmg, 0, 4 /* ENERGY */, 31 /* TARGET_LASER */);
5978
+ T_Damage(tr.ent, self, self.owner, self.movedir, tr.endpos, ZERO_VEC3, self.dmg, 0, 4 /* ENERGY */, 31 /* TARGET_LASER */, context.timeSeconds);
5942
5979
  }
5943
5980
  if (tr.ent && tr.ent.solid === 3 /* Bsp */) {
5944
5981
  context.multicast(tr.endpos, 1 /* Pvs */, ServerCommand.temp_entity, TempEntity.LASER_SPARKS, 10, tr.endpos, tr.plane?.normal || ZERO_VEC3, self.skin);
@@ -6291,7 +6328,7 @@ function brain_tounge_attack(self, context) {
6291
6328
  context.engine.sound?.(self, 0, "brain/brnatck3.wav", 1, 1, 0);
6292
6329
  context.multicast(self.origin, 1 /* Pvs */, ServerCommand.temp_entity, TempEntity.PARASITE_ATTACK, self, start, end);
6293
6330
  const dir = subtractVec3(start, end);
6294
- T_Damage(self.enemy, self, self, dir, self.enemy.origin, ZERO_VEC3, 5, 0, 0, 37 /* BRAINTENTACLE */);
6331
+ T_Damage(self.enemy, self, self, dir, self.enemy.origin, ZERO_VEC3, 5, 0, 0, 37 /* BRAINTENTACLE */, context.timeSeconds);
6295
6332
  self.origin = { ...self.origin, z: self.origin.z + 1 };
6296
6333
  const forward = angleVectors(self.angles).forward;
6297
6334
  self.enemy.velocity = scaleVec3(forward, -1200);
@@ -7522,7 +7559,8 @@ function flyer_slash(self, context) {
7522
7559
  damage,
7523
7560
  5,
7524
7561
  2 /* NO_ARMOR */,
7525
- 0 /* UNKNOWN */
7562
+ 0 /* UNKNOWN */,
7563
+ context.timeSeconds
7526
7564
  );
7527
7565
  }
7528
7566
  }
@@ -7702,7 +7740,7 @@ function gladiator_melee(self, context) {
7702
7740
  z: self.origin.z + (self.viewheight || 0)
7703
7741
  };
7704
7742
  const dir = normalizeVec3(subtractVec3(self.enemy.origin, start));
7705
- T_Damage(self.enemy, self, self, dir, self.origin, { x: 0, y: 0, z: 0 }, 20, 10, 0, 0 /* UNKNOWN */);
7743
+ T_Damage(self.enemy, self, self, dir, self.origin, { x: 0, y: 0, z: 0 }, 20, 10, 0, 0 /* UNKNOWN */, context.timeSeconds);
7706
7744
  }
7707
7745
  function gladiator_fire_railgun(self, context) {
7708
7746
  if (!self.enemy) return;
@@ -9227,7 +9265,8 @@ function mutant_swing(self, damage, context) {
9227
9265
  damage,
9228
9266
  0,
9229
9267
  0,
9230
- 0 /* UNKNOWN */
9268
+ 0 /* UNKNOWN */,
9269
+ context.timeSeconds
9231
9270
  );
9232
9271
  }
9233
9272
  function mutant_hit_right(self, context) {
@@ -9264,7 +9303,8 @@ function mutant_jump_touch(self, other, plane, surf) {
9264
9303
  50,
9265
9304
  0,
9266
9305
  0,
9267
- 0 /* UNKNOWN */
9306
+ 0 /* UNKNOWN */,
9307
+ 0
9268
9308
  );
9269
9309
  }
9270
9310
  if (!other || !other.takedamage && other.solid !== 0 /* Not */) {
@@ -9699,7 +9739,8 @@ function parasite_drain_attack(self, context) {
9699
9739
  damage,
9700
9740
  0,
9701
9741
  8 /* NO_KNOCKBACK */,
9702
- 0 /* UNKNOWN */
9742
+ 0 /* UNKNOWN */,
9743
+ context.timeSeconds
9703
9744
  );
9704
9745
  if (self.health < self.max_health) {
9705
9746
  self.health += damage;
@@ -12360,8 +12401,8 @@ var EnvironmentalFlags = /* @__PURE__ */ ((EnvironmentalFlags2) => {
12360
12401
  EnvironmentalFlags2[EnvironmentalFlags2["IMMUNE_SLIME"] = 4] = "IMMUNE_SLIME";
12361
12402
  return EnvironmentalFlags2;
12362
12403
  })(EnvironmentalFlags || {});
12363
- function applyDamageEvent(target, amount, mod) {
12364
- return T_Damage(target, null, null, ZERO2, target.origin, ZERO2, amount, 0, 2 /* NO_ARMOR */, mod);
12404
+ function applyDamageEvent(target, amount, mod, time) {
12405
+ return T_Damage(target, null, null, ZERO2, target.origin, ZERO2, amount, 0, 2 /* NO_ARMOR */, mod, time);
12365
12406
  }
12366
12407
  function applyEnvironmentalDamage(target, nowMs) {
12367
12408
  const events = [];
@@ -12376,7 +12417,7 @@ function applyEnvironmentalDamage(target, nowMs) {
12376
12417
  if (target.airFinished < nowMs && target.painDebounceTime <= nowMs) {
12377
12418
  const elapsedSeconds = Math.floor((nowMs - target.airFinished) / 1e3);
12378
12419
  const amount = Math.min(15, 2 + 2 * elapsedSeconds);
12379
- const result = applyDamageEvent(target, amount, 17 /* WATER */);
12420
+ const result = applyDamageEvent(target, amount, 17 /* WATER */, nowMs / 1e3);
12380
12421
  target.painDebounceTime = nowMs + 1e3;
12381
12422
  events.push({ mod: 17 /* WATER */, amount, result });
12382
12423
  }
@@ -12390,12 +12431,12 @@ function applyEnvironmentalDamage(target, nowMs) {
12390
12431
  if (target.damageDebounceTime <= nowMs) {
12391
12432
  if ((target.watertype & CONTENTS_LAVA) !== 0 && (flags & 2 /* IMMUNE_LAVA */) === 0) {
12392
12433
  const amount = 10 * target.waterlevel;
12393
- const result = applyDamageEvent(target, amount, 19 /* LAVA */);
12434
+ const result = applyDamageEvent(target, amount, 19 /* LAVA */, nowMs / 1e3);
12394
12435
  target.damageDebounceTime = nowMs + 100;
12395
12436
  events.push({ mod: 19 /* LAVA */, amount, result });
12396
12437
  } else if ((target.watertype & CONTENTS_SLIME) !== 0 && (flags & 4 /* IMMUNE_SLIME */) === 0) {
12397
12438
  const amount = 4 * target.waterlevel;
12398
- const result = applyDamageEvent(target, amount, 18 /* SLIME */);
12439
+ const result = applyDamageEvent(target, amount, 18 /* SLIME */, nowMs / 1e3);
12399
12440
  target.damageDebounceTime = nowMs + 100;
12400
12441
  events.push({ mod: 18 /* SLIME */, amount, result });
12401
12442
  }
@@ -12463,7 +12504,8 @@ function applyFallingDamage(target, context) {
12463
12504
  result.damage,
12464
12505
  0,
12465
12506
  2 /* NO_ARMOR */,
12466
- 23 /* FALLING */
12507
+ 23 /* FALLING */,
12508
+ 0
12467
12509
  );
12468
12510
  }
12469
12511
  return result;
@@ -12473,7 +12515,7 @@ function applyCrushDamage(crusher, target, options = {}) {
12473
12515
  const gibDamage = options.gibDamage ?? 100;
12474
12516
  const baseDamage = options.baseDamage ?? crusher.dmg ?? 10;
12475
12517
  const amount = !target.isMonster && !target.isClient ? nonLivingDamage : target.health < 1 ? gibDamage : baseDamage;
12476
- const result = T_Damage(target, crusher, crusher, ZERO2, target.origin, ZERO2, amount, 1, 0 /* NONE */, 20 /* CRUSH */);
12518
+ const result = T_Damage(target, crusher, crusher, ZERO2, target.origin, ZERO2, amount, 1, 0 /* NONE */, 20 /* CRUSH */, 0);
12477
12519
  return { amount, result };
12478
12520
  }
12479
12521
  function absoluteBounds(ent) {
@@ -12503,7 +12545,7 @@ function killBox(teleporter, targets, options = {}) {
12503
12545
  if (!boxesIntersect(teleBounds, absoluteBounds(target))) {
12504
12546
  continue;
12505
12547
  }
12506
- const result = T_Damage(target, teleporter, teleporter, ZERO2, target.origin, ZERO2, 1e5, 0, 32 /* NO_PROTECTION */, mod);
12548
+ const result = T_Damage(target, teleporter, teleporter, ZERO2, target.origin, ZERO2, 1e5, 0, 32 /* NO_PROTECTION */, mod, 0);
12507
12549
  events.push({ target, result });
12508
12550
  if (!result || !result.killed || target.health > 0) {
12509
12551
  cleared = false;