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.
- package/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +11 -11
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +22 -12
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +22 -12
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/net/connection.d.ts +1 -0
- package/packages/client/dist/types/net/connection.d.ts.map +1 -1
- package/packages/engine/dist/browser/index.global.js +16 -16
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs +33 -35
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js +33 -35
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/audio/constants.d.ts +1 -23
- package/packages/engine/dist/types/audio/constants.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 +65 -19
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +65 -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/actor.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/arachnid.d.ts.map +1 -1
- package/packages/game/dist/types/entities/system.d.ts +1 -0
- package/packages/game/dist/types/entities/system.d.ts.map +1 -1
- package/packages/game/dist/types/index.d.ts +2 -0
- package/packages/game/dist/types/index.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 +53 -0
- package/packages/shared/dist/cjs/index.cjs.map +1 -1
- package/packages/shared/dist/esm/index.js +42 -0
- package/packages/shared/dist/esm/index.js.map +1 -1
- package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/shared/dist/types/audio/constants.d.ts +24 -0
- package/packages/shared/dist/types/audio/constants.d.ts.map +1 -0
- package/packages/shared/dist/types/index.d.ts +1 -0
- package/packages/shared/dist/types/index.d.ts.map +1 -1
- 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
|
|
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,
|
|
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 =
|
|
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 (
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
},
|