quake2ts 0.0.289 → 0.0.291

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 (44) hide show
  1. package/package.json +1 -1
  2. package/packages/client/dist/browser/index.global.js +11 -11
  3. package/packages/client/dist/browser/index.global.js.map +1 -1
  4. package/packages/client/dist/cjs/index.cjs +22 -12
  5. package/packages/client/dist/cjs/index.cjs.map +1 -1
  6. package/packages/client/dist/esm/index.js +22 -12
  7. package/packages/client/dist/esm/index.js.map +1 -1
  8. package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
  9. package/packages/client/dist/types/net/connection.d.ts +1 -0
  10. package/packages/client/dist/types/net/connection.d.ts.map +1 -1
  11. package/packages/engine/dist/browser/index.global.js +16 -16
  12. package/packages/engine/dist/browser/index.global.js.map +1 -1
  13. package/packages/engine/dist/cjs/index.cjs +33 -35
  14. package/packages/engine/dist/cjs/index.cjs.map +1 -1
  15. package/packages/engine/dist/esm/index.js +33 -35
  16. package/packages/engine/dist/esm/index.js.map +1 -1
  17. package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
  18. package/packages/engine/dist/types/audio/constants.d.ts +1 -23
  19. package/packages/engine/dist/types/audio/constants.d.ts.map +1 -1
  20. package/packages/game/dist/browser/index.global.js +3 -3
  21. package/packages/game/dist/browser/index.global.js.map +1 -1
  22. package/packages/game/dist/cjs/index.cjs +65 -19
  23. package/packages/game/dist/cjs/index.cjs.map +1 -1
  24. package/packages/game/dist/esm/index.js +65 -19
  25. package/packages/game/dist/esm/index.js.map +1 -1
  26. package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
  27. package/packages/game/dist/types/entities/monsters/actor.d.ts.map +1 -1
  28. package/packages/game/dist/types/entities/monsters/arachnid.d.ts.map +1 -1
  29. package/packages/game/dist/types/entities/system.d.ts +1 -0
  30. package/packages/game/dist/types/entities/system.d.ts.map +1 -1
  31. package/packages/game/dist/types/index.d.ts +2 -0
  32. package/packages/game/dist/types/index.d.ts.map +1 -1
  33. package/packages/shared/dist/browser/index.global.js +1 -1
  34. package/packages/shared/dist/browser/index.global.js.map +1 -1
  35. package/packages/shared/dist/cjs/index.cjs +53 -0
  36. package/packages/shared/dist/cjs/index.cjs.map +1 -1
  37. package/packages/shared/dist/esm/index.js +42 -0
  38. package/packages/shared/dist/esm/index.js.map +1 -1
  39. package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
  40. package/packages/shared/dist/types/audio/constants.d.ts +24 -0
  41. package/packages/shared/dist/types/audio/constants.d.ts.map +1 -0
  42. package/packages/shared/dist/types/index.d.ts +1 -0
  43. package/packages/shared/dist/types/index.d.ts.map +1 -1
  44. package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
@@ -434,7 +434,7 @@ function G_SetPowerupStat(stats, powerupId, val) {
434
434
  if (safeVal < 0) safeVal = 0;
435
435
  setCompressedInteger(stats, 41, index, safeVal, NUM_BITS_FOR_POWERUP);
436
436
  }
437
- var __defProp2, __export2, ZERO_VEC3, STOP_EPSILON, DEG_TO_RAD, PITCH, YAW, ROLL, DEG2RAD_FACTOR, RAD2DEG_FACTOR, ANORMS, 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, BinaryWriter, _NetChan, WeaponId, AmmoType, AMMO_TYPE_COUNT, AmmoItemId, WEAPON_WHEEL_ORDER;
437
+ var __defProp2, __export2, ZERO_VEC3, STOP_EPSILON, DEG_TO_RAD, PITCH, YAW, ROLL, DEG2RAD_FACTOR, RAD2DEG_FACTOR, ANORMS, 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, BinaryWriter, _NetChan, WeaponId, AmmoType, AMMO_TYPE_COUNT, AmmoItemId, WEAPON_WHEEL_ORDER, SoundChannel, ATTN_NORM, ATTN_IDLE;
438
438
  var init_esm = __esm({
439
439
  "../shared/dist/esm/index.js"() {
440
440
  "use strict";
@@ -1715,6 +1715,22 @@ var init_esm = __esm({
1715
1715
  "bfg10k"
1716
1716
  /* BFG10K */
1717
1717
  ];
1718
+ SoundChannel = /* @__PURE__ */ ((SoundChannel2) => {
1719
+ SoundChannel2[SoundChannel2["Auto"] = 0] = "Auto";
1720
+ SoundChannel2[SoundChannel2["Weapon"] = 1] = "Weapon";
1721
+ SoundChannel2[SoundChannel2["Voice"] = 2] = "Voice";
1722
+ SoundChannel2[SoundChannel2["Item"] = 3] = "Item";
1723
+ SoundChannel2[SoundChannel2["Body"] = 4] = "Body";
1724
+ SoundChannel2[SoundChannel2["Aux"] = 5] = "Aux";
1725
+ SoundChannel2[SoundChannel2["Footstep"] = 6] = "Footstep";
1726
+ SoundChannel2[SoundChannel2["Aux3"] = 7] = "Aux3";
1727
+ SoundChannel2[SoundChannel2["NoPhsAdd"] = 8] = "NoPhsAdd";
1728
+ SoundChannel2[SoundChannel2["Reliable"] = 16] = "Reliable";
1729
+ SoundChannel2[SoundChannel2["ForcePos"] = 32] = "ForcePos";
1730
+ return SoundChannel2;
1731
+ })(SoundChannel || {});
1732
+ ATTN_NORM = 1;
1733
+ ATTN_IDLE = 2;
1718
1734
  }
1719
1735
  });
1720
1736
 
@@ -3972,6 +3988,9 @@ var EntitySystem = class {
3972
3988
  sound(entity, channel, sound, volume, attenuation, timeofs) {
3973
3989
  this.engine.sound?.(entity, channel, sound, volume, attenuation, timeofs);
3974
3990
  }
3991
+ soundIndex(sound) {
3992
+ return this.engine.soundIndex?.(sound) || 0;
3993
+ }
3975
3994
  modelIndex(model) {
3976
3995
  return this.engine.modelIndex?.(model) || 0;
3977
3996
  }
@@ -5130,7 +5149,7 @@ function createBfgBall(sys, owner, start, dir, damage, speed, damageRadius) {
5130
5149
 
5131
5150
  // src/entities/targets.ts
5132
5151
  var ATTN_NONE = 0;
5133
- var ATTN_NORM = 1;
5152
+ var ATTN_NORM2 = 1;
5134
5153
  var SPEAKER_SPAWNFLAGS = {
5135
5154
  LoopedOn: 1 << 0,
5136
5155
  LoopedOff: 1 << 1,
@@ -5222,7 +5241,7 @@ function useTargetBlaster(self, other, activator, context) {
5222
5241
  bolt.effects = 0;
5223
5242
  }
5224
5243
  }
5225
- context.entities.sound(self, 2, "weapons/laser2.wav", 1, ATTN_NORM, 0);
5244
+ context.entities.sound(self, 2, "weapons/laser2.wav", 1, ATTN_NORM2, 0);
5226
5245
  }
5227
5246
  var SPAWNFLAG_EARTHQUAKE_SILENT = 1;
5228
5247
  var SPAWNFLAG_EARTHQUAKE_TOGGLE = 2;
@@ -5447,7 +5466,7 @@ function registerTargetSpawns(registry) {
5447
5466
  if (attenuation) {
5448
5467
  entity.attenuation = Number.parseFloat(attenuation);
5449
5468
  } else {
5450
- entity.attenuation = ATTN_NORM;
5469
+ entity.attenuation = ATTN_NORM2;
5451
5470
  }
5452
5471
  if (context.keyValues.volume) {
5453
5472
  entity.volume = Number.parseFloat(context.keyValues.volume);
@@ -12958,6 +12977,12 @@ var actor_names = [
12958
12977
  "Titus",
12959
12978
  "Bitterman"
12960
12979
  ];
12980
+ var sound_pain1 = "player/male/pain100.wav";
12981
+ var sound_pain2 = "player/male/pain75.wav";
12982
+ var sound_pain3 = "player/male/pain50.wav";
12983
+ var sound_die1 = "player/male/death1.wav";
12984
+ var sound_die2 = "player/male/death2.wav";
12985
+ var sound_gib = "misc/udeath.wav";
12961
12986
  var FRAME_stand101 = 0;
12962
12987
  var FRAME_stand140 = 39;
12963
12988
  var FRAME_walk01 = 40;
@@ -13032,6 +13057,11 @@ function actor_pain(self, other, kick, damage) {
13032
13057
  if (context.timeSeconds < self.pain_debounce_time)
13033
13058
  return;
13034
13059
  self.pain_debounce_time = context.timeSeconds + 3;
13060
+ const n = Math.floor(Math.random() * 3);
13061
+ let sound = sound_pain1;
13062
+ if (n === 1) sound = sound_pain2;
13063
+ if (n === 2) sound = sound_pain3;
13064
+ context.sound(self, SoundChannel.Voice, sound, 1, ATTN_NORM, 0);
13035
13065
  const random13 = Math.random();
13036
13066
  if (other && other.client && random13 < 0.4) {
13037
13067
  const v = subtractVec3(other.origin, self.origin);
@@ -13046,7 +13076,6 @@ function actor_pain(self, other, kick, damage) {
13046
13076
  `);
13047
13077
  return;
13048
13078
  }
13049
- const n = Math.floor(Math.random() * 3);
13050
13079
  if (n === 0)
13051
13080
  self.monsterinfo.current_move = actor_move_pain1;
13052
13081
  else if (n === 1)
@@ -13095,15 +13124,19 @@ function actor_die(self, inflictor, attacker, damage, point, mod) {
13095
13124
  const context = self.monsterinfo.context;
13096
13125
  if (!context) return;
13097
13126
  if (self.health <= -80) {
13127
+ context.sound(self, SoundChannel.Voice, sound_gib, 1, ATTN_NORM, 0);
13098
13128
  throwGibs(context, self.origin, damage);
13099
13129
  self.deadflag = 2 /* Dead */;
13100
13130
  return;
13101
13131
  }
13102
13132
  if (self.deadflag === 2 /* Dead */)
13103
13133
  return;
13134
+ const n = Math.floor(Math.random() * 2);
13135
+ const sound = n === 0 ? sound_die1 : sound_die2;
13136
+ context.sound(self, SoundChannel.Voice, sound, 1, ATTN_NORM, 0);
13104
13137
  self.deadflag = 2 /* Dead */;
13105
13138
  self.takedamage = true;
13106
- if (Math.random() < 0.5)
13139
+ if (n === 0)
13107
13140
  self.monsterinfo.current_move = actor_move_death1;
13108
13141
  else
13109
13142
  self.monsterinfo.current_move = actor_move_death2;
@@ -13371,6 +13404,13 @@ function SP_misc_actor(self, context) {
13371
13404
  self.mass = 200;
13372
13405
  self.pain = actor_pain;
13373
13406
  self.die = actor_die;
13407
+ context.entities.soundIndex(sound_pain1);
13408
+ context.entities.soundIndex(sound_pain2);
13409
+ context.entities.soundIndex(sound_pain3);
13410
+ context.entities.soundIndex(sound_die1);
13411
+ context.entities.soundIndex(sound_die2);
13412
+ context.entities.soundIndex(sound_gib);
13413
+ context.entities.soundIndex("player/male/jump1.wav");
13374
13414
  self.monsterinfo = {
13375
13415
  ...self.monsterinfo,
13376
13416
  // Preserve default properties like last_sighting, trail_time, pausetime
@@ -13421,7 +13461,7 @@ function target_actor_touch(self, other, plane, surf) {
13421
13461
  if (other.groundentity) {
13422
13462
  other.groundentity = null;
13423
13463
  v.z = self.movedir.z;
13424
- context.sound(other, 2, "player/male/jump1.wav", 1, 1, 0);
13464
+ context.sound(other, SoundChannel.Voice, "player/male/jump1.wav", 1, ATTN_NORM, 0);
13425
13465
  }
13426
13466
  }
13427
13467
  if (self.spawnflags & SPAWNFLAG_TARGET_ACTOR_SHOOT) {
@@ -16742,11 +16782,6 @@ var FRAME_rails_up16 = 113;
16742
16782
  var MODEL_SCALE = 1;
16743
16783
  var MELEE_DISTANCE5 = 64;
16744
16784
  var MONSTER_TICK27 = 0.1;
16745
- var CHAN_WEAPON = 1;
16746
- var CHAN_VOICE = 2;
16747
- var CHAN_BODY = 4;
16748
- var ATTN_NORM2 = 1;
16749
- var ATTN_IDLE = 2;
16750
16785
  var MZ2_ARACHNID_RAIL1 = 20;
16751
16786
  var MZ2_ARACHNID_RAIL2 = 21;
16752
16787
  var MZ2_ARACHNID_RAIL_UP1 = 22;
@@ -16798,7 +16833,7 @@ function arachnid_stand(self, context) {
16798
16833
  M_SetAnimation3(self, arachnid_move_stand, context);
16799
16834
  }
16800
16835
  function arachnid_footstep(self, context) {
16801
- context.engine.sound?.(self, CHAN_BODY, sound_step, 0.5, ATTN_IDLE, 0);
16836
+ context.engine.sound?.(self, SoundChannel.Body, sound_step, 0.5, ATTN_IDLE, 0);
16802
16837
  }
16803
16838
  var arachnid_frames_walk = [
16804
16839
  { ai: monster_ai_walk22, dist: 8, think: arachnid_footstep },
@@ -16877,7 +16912,7 @@ function arachnid_pain(self, other, kick, damage, context) {
16877
16912
  return;
16878
16913
  }
16879
16914
  self.pain_debounce_time = context.timeSeconds + 3;
16880
- context.engine.sound?.(self, CHAN_VOICE, sound_pain, 1, ATTN_NORM2, 0);
16915
+ context.engine.sound?.(self, SoundChannel.Voice, sound_pain, 1, ATTN_NORM, 0);
16881
16916
  if (!M_ShouldReactToPain(self)) {
16882
16917
  return;
16883
16918
  }
@@ -16891,7 +16926,7 @@ function arachnid_charge_rail(self, context) {
16891
16926
  if (!self.enemy || !self.enemy.inUse) {
16892
16927
  return;
16893
16928
  }
16894
- context.engine.sound?.(self, CHAN_WEAPON, sound_charge, 1, ATTN_NORM2, 0);
16929
+ context.engine.sound?.(self, SoundChannel.Weapon, sound_charge, 1, ATTN_NORM, 0);
16895
16930
  self.pos1 = { ...self.enemy.origin };
16896
16931
  self.pos1 = { ...self.pos1, z: self.pos1.z + self.enemy.viewheight };
16897
16932
  }
@@ -16962,7 +16997,7 @@ var arachnid_attack_up1 = {
16962
16997
  endfunc: arachnid_run
16963
16998
  };
16964
16999
  function arachnid_melee_charge(self, context) {
16965
- context.engine.sound?.(self, CHAN_WEAPON, sound_melee, 1, ATTN_NORM2, 0);
17000
+ context.engine.sound?.(self, SoundChannel.Weapon, sound_melee, 1, ATTN_NORM, 0);
16966
17001
  }
16967
17002
  function arachnid_melee_hit(self, context) {
16968
17003
  if (!monster_fire_hit(self, { x: MELEE_DISTANCE5, y: 0, z: 0 }, 15, 50, context)) {
@@ -17039,7 +17074,7 @@ var arachnid_move_death = {
17039
17074
  };
17040
17075
  function arachnid_die(self, inflictor, attacker, damage, point, mod, context) {
17041
17076
  if (M_CheckGib(self, context)) {
17042
- context.engine.sound?.(self, CHAN_VOICE, "misc/udeath.wav", 1, ATTN_NORM2, 0);
17077
+ context.engine.sound?.(self, SoundChannel.Voice, "misc/udeath.wav", 1, ATTN_NORM, 0);
17043
17078
  throwGibs(context, self.origin, damage);
17044
17079
  self.deadflag = 2 /* Dead */;
17045
17080
  return;
@@ -17047,7 +17082,7 @@ function arachnid_die(self, inflictor, attacker, damage, point, mod, context) {
17047
17082
  if (self.deadflag === 2 /* Dead */) {
17048
17083
  return;
17049
17084
  }
17050
- context.engine.sound?.(self, CHAN_VOICE, sound_death, 1, ATTN_NORM2, 0);
17085
+ context.engine.sound?.(self, SoundChannel.Voice, sound_death, 1, ATTN_NORM, 0);
17051
17086
  self.deadflag = 2 /* Dead */;
17052
17087
  self.takedamage = true;
17053
17088
  M_SetAnimation3(self, arachnid_move_death, context);
@@ -17065,6 +17100,14 @@ function SP_monster_arachnid(self, context) {
17065
17100
  sound_pain = "arachnid/pain.wav";
17066
17101
  sound_death = "arachnid/death.wav";
17067
17102
  sound_sight = "arachnid/sight.wav";
17103
+ context.soundIndex(sound_step);
17104
+ context.soundIndex(sound_charge);
17105
+ context.soundIndex(sound_melee);
17106
+ context.soundIndex(sound_melee_hit);
17107
+ context.soundIndex(sound_pain);
17108
+ context.soundIndex(sound_death);
17109
+ context.soundIndex(sound_sight);
17110
+ context.soundIndex("misc/udeath.wav");
17068
17111
  self.model = "models/monsters/arachnid/tris.md2";
17069
17112
  self.mins = { x: -48, y: -48, z: -20 };
17070
17113
  self.maxs = { x: 48, y: 48, z: 48 };
@@ -17081,7 +17124,7 @@ function SP_monster_arachnid(self, context) {
17081
17124
  walk: arachnid_walk,
17082
17125
  run: arachnid_run,
17083
17126
  attack: arachnid_attack,
17084
- sight: (e, o) => context.engine.sound?.(e, CHAN_VOICE, sound_sight, 1, ATTN_NORM2, 0),
17127
+ sight: (e, o) => context.engine.sound?.(e, SoundChannel.Voice, sound_sight, 1, ATTN_NORM, 0),
17085
17128
  scale: MODEL_SCALE,
17086
17129
  aiflags: self.monsterinfo?.aiflags || 0
17087
17130
  };
@@ -19354,6 +19397,9 @@ function createGame(imports, engine, options) {
19354
19397
  sound(entity, channel, sound, volume, attenuation, timeofs) {
19355
19398
  entities.sound(entity, channel, sound, volume, attenuation, timeofs);
19356
19399
  },
19400
+ soundIndex(sound) {
19401
+ return entities.soundIndex(sound);
19402
+ },
19357
19403
  centerprintf(entity, message) {
19358
19404
  engine.centerprintf?.(entity, message);
19359
19405
  },