Valve: Make most weapons use sound shader definition scripts.

This commit is contained in:
Marco Cawthorne 2020-04-02 23:39:27 +02:00
parent 4f44d96be9
commit 2ceb72c9e4
13 changed files with 232 additions and 110 deletions

View file

@ -181,7 +181,7 @@ void Decals_Init(void)
if (i == max) {
nextdecal.owner = g_decals;
} else {
nextdecal = nextdecal.owner;
nextdecal = (decal)nextdecal.owner;
}
}
}

View file

@ -30,12 +30,12 @@ enum
void
w_crowbar_precache(void)
{
precache_sound("weapons/cbar_miss1.wav");
precache_sound("weapons/cbar_hit1.wav");
precache_sound("weapons/cbar_hit2.wav");
precache_sound("weapons/cbar_hitbod1.wav");
precache_sound("weapons/cbar_hitbod2.wav");
precache_sound("weapons/cbar_hitbod3.wav");
#ifdef SSQC
Sound_Precache("weapon_crowbar.hit");
Sound_Precache("weapon_crowbar.miss");
Sound_Precache("weapon_crowbar.hitbody");
#endif
precache_model("models/v_crowbar.mdl");
precache_model("models/w_crowbar.mdl");
precache_model("models/p_crowbar.mdl");
@ -83,7 +83,6 @@ void
w_crowbar_primary(void)
{
int anim = 0;
int r;
vector src;
player pl = (player)self;
@ -103,7 +102,7 @@ w_crowbar_primary(void)
pl.w_idle_next = 2.5f;
#ifdef CSQC
r = (float)input_sequence % 3;
int r = (float)input_sequence % 3;
switch (r) {
case 0:
anim = trace_fraction >= 1 ? CBAR_ATTACK1MISS:CBAR_ATTACK1HIT;
@ -122,7 +121,7 @@ w_crowbar_primary(void)
Animation_PlayerTopTemp(ANIM_CR_SHOOTCROWBAR, 0.42f);
}
sound(pl, CHAN_WEAPON, "weapons/cbar_miss1.wav", 1, ATTN_NORM);
Sound_Play(self, CHAN_WEAPON, "weapon_crowbar.miss");
if (trace_fraction >= 1.0) {
return;
@ -142,25 +141,9 @@ w_crowbar_primary(void)
return;
}
r = (float)input_sequence % 3;
switch (r) {
case 0:
sound(pl, 8, "weapons/cbar_hitbod1.wav", 1, ATTN_NORM);
break;
case 1:
sound(pl, 8, "weapons/cbar_hitbod2.wav", 1, ATTN_NORM);
break;
default:
sound(pl, 8, "weapons/cbar_hitbod3.wav", 1, ATTN_NORM);
break;
}
Sound_Play(self, CHAN_WEAPON, "weapon_crowbar.hitbody");
} else {
r = (float)input_sequence % 2;
if (r == 1) {
sound(pl, 8, "weapons/cbar_hit1.wav", 1, ATTN_NORM);
} else {
sound(pl, 8, "weapons/cbar_hit2.wav", 1, ATTN_NORM);
}
Sound_Play(self, CHAN_WEAPON, "weapon_crowbar.hit");
}
#endif
}

View file

@ -30,10 +30,13 @@ enum
void
w_glock_precache(void)
{
#ifdef SSQC
Sound_Precache("weapon_glock.fire");
#endif
precache_model("models/v_9mmhandgun.mdl");
precache_model("models/w_9mmhandgun.mdl");
precache_model("models/p_9mmhandgun.mdl");
precache_sound("weapons/pl_gun3.wav");
}
void
@ -132,7 +135,7 @@ w_glock_primary(void)
#else
pl.glock_mag--;
TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 8, [0.01,0,01], WEAPON_GLOCK);
sound(pl, CHAN_WEAPON, "weapons/pl_gun3.wav", 1.0f, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_glock.fire");
if (self.flags & FL_CROUCHING)
Animation_PlayerTopTemp(ANIM_SHOOT1HAND, 0.45f);
@ -177,7 +180,7 @@ w_glock_secondary(void)
#else
pl.glock_mag--;
TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 8, [0.1,0.1], WEAPON_GLOCK);
sound(pl, CHAN_WEAPON, "weapons/pl_gun3.wav", 1.0f, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_glock.fire");
if (self.flags & FL_CROUCHING)
Animation_PlayerTopTemp(ANIM_SHOOT1HAND, 0.45f);

View file

@ -28,9 +28,10 @@ enum
void w_handgrenade_precache(void)
{
precache_sound("weapons/grenade_hit1.wav");
precache_sound("weapons/grenade_hit2.wav");
precache_sound("weapons/grenade_hit3.wav");
#ifdef SSQC
Sound_Precache("weapon_handgrenade.bounce");
#endif
precache_model("models/v_grenade.mdl");
precache_model("models/w_grenade.mdl");
precache_model("models/p_grenade.mdl");
@ -83,10 +84,9 @@ void w_handgrenade_throw(void)
{
if (other.takedamage == DAMAGE_YES) {
Damage_Apply(other, self.owner, 15, WEAPON_HANDGRENADE, DMG_BLUNT);
} else {
Sound_Play(other, CHAN_BODY, "weapon_handgrenade.bounce");
}
int r = floor(random(1,4));
string sample = sprintf("weapons/grenade_hit%i.wav", r);
sound( self, CHAN_BODY, sample, 1, ATTN_NORM );
self.frame = 0;
}

View file

@ -32,17 +32,11 @@ w_hornetgun_precache(void)
precache_model("models/p_hgun.mdl");
precache_model("models/hornet.mdl");
precache_sound("agrunt/ag_fire1.wav");
precache_sound("agrunt/ag_fire2.wav");
precache_sound("agrunt/ag_fire3.wav");
precache_sound("hornet/ag_buzz1.wav");
precache_sound("hornet/ag_buzz2.wav");
precache_sound("hornet/ag_buzz3.wav");
precache_sound("hornet/ag_hornethit1.wav");
precache_sound("hornet/ag_hornethit2.wav");
precache_sound("hornet/ag_hornethit3.wav");
#ifdef SSQC
Sound_Precache("weapon_hornetgun.fire");
Sound_Precache("weapon_hornetgun.buzz");
Sound_Precache("weapon_hornetgun.hit");
#endif
}
int
@ -102,15 +96,12 @@ void
w_hornetgun_shoothornet(void)
{
static void Hornet_Touch(void) {
string snd;
int r = floor(random(1,4));
if (other.takedamage == DAMAGE_YES) {
Damage_Apply(other, self.owner, 10, WEAPON_HORNETGUN, DMG_GENERIC);
snd = sprintf("hornet/ag_hornethit%i.wav", r);
Sound_Play(other, CHAN_VOICE, "weapon_hornetgun.hit");
} else {
snd = sprintf("hornet/ag_buzz%i.wav", r);
Sound_Play(self, CHAN_VOICE, "weapon_hornetgun.buzz");
}
sound(self, CHAN_BODY, snd, 1, ATTN_NORM);
remove(self);
}
@ -199,8 +190,8 @@ w_hornetgun_primary(void)
#ifdef SSQC
w_hornetgun_shoothornet();
Weapons_PlaySound(pl, CHAN_WEAPON, sprintf("agrunt/ag_fire%d.wav", floor(random(1,4))), 1, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_hornetgun.fire");
pl.ammo_hornet--;
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_hornet, __NULL__);
#else

View file

@ -32,13 +32,15 @@ enum {
void
w_mp5_precache(void)
{
#ifdef SSQC
Sound_Precache("weapon_mp5.shoot");
Sound_Precache("weapon_mp5.gl");
#endif
precache_model("models/v_9mmar.mdl");
precache_model("models/w_9mmar.mdl");
precache_model("models/p_9mmar.mdl");
precache_model("models/grenade.mdl");
precache_sound("weapons/hks1.wav");
precache_sound("weapons/hks2.wav");
precache_sound("weapons/glauncher.wav");
}
int
@ -141,11 +143,7 @@ w_mp5_primary(void)
TraceAttack_FireBullets(1, Weapons_GetCameraPos(), 8, [0.05,0.05], WEAPON_MP5);
}
if (random() < 0.5) {
sound(pl, CHAN_WEAPON, "weapons/hks1.wav", 1.0f, ATTN_NORM);
} else {
sound(pl, CHAN_WEAPON, "weapons/hks2.wav", 1.0f, ATTN_NORM);
}
Sound_Play(pl, CHAN_WEAPON, "weapon_mp5.shoot");
pl.mp5_mag--;
#endif
@ -202,7 +200,7 @@ w_mp5_secondary(void)
gren.solid = SOLID_BBOX;
setsize(gren, [0,0,0], [0,0,0]);
gren.touch = Grenade_ExplodeTouch;
sound(pl, CHAN_WEAPON, "weapons/glauncher.wav", 1.0f, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_mp5.gl");
pl.ammo_m203_grenade--;
#endif

View file

@ -33,9 +33,10 @@ w_python_precache(void)
precache_model("models/w_357.mdl");
precache_model("models/p_357.mdl");
precache_sound("weapons/357_shot1.wav");
precache_sound("weapons/357_shot2.wav");
precache_sound("weapons/357_reload1.wav");
#ifdef SSQC
Sound_Precache("weapon_357.shoot");
Sound_Precache("weapon_357.reload");
#endif
}
int
@ -136,12 +137,7 @@ w_python_primary(void)
#else
pl.python_mag--;
TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 40, [0.008, 0.008], WEAPON_PYTHON);
if (random() < 0.5) {
sound(pl, CHAN_WEAPON, "weapons/357_shot1.wav", 1, ATTN_NORM);
} else {
sound(pl, CHAN_WEAPON, "weapons/357_shot2.wav", 1, ATTN_NORM);
}
Sound_Play(pl, CHAN_WEAPON, "weapon_357.shoot");
#endif
pl.w_attack_next = 0.75f;
@ -201,7 +197,7 @@ w_python_reload(void)
#ifdef CSQC
Weapons_ViewAnimation(PYTHON_RELOAD);
#else
sound(pl, CHAN_WEAPON, "weapons/357_reload1.wav", 1, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_357.reload");
Weapons_ReloadWeapon(pl, player::python_mag, player::ammo_357, 6);
#endif

View file

@ -30,12 +30,14 @@ enum
void w_rpg_precache(void)
{
#ifdef SSQC
Sound_Precache("weapon_rpg.shoot");
#endif
precache_model("models/v_rpg.mdl");
precache_model("models/w_rpg.mdl");
precache_model("models/p_rpg.mdl");
precache_model("models/rpgrocket.mdl");
precache_model("sprites/laserdot.spr");
precache_sound("weapons/rocketfire1.wav");
}
void w_rpg_updateammo(player pl)
@ -154,7 +156,7 @@ void w_rpg_primary(void)
}
setsize(rocket, [0,0,0], [0,0,0]);
sound(self, CHAN_WEAPON, "weapons/rocketfire1.wav", 1, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_rpg.shoot");
pl.rpg_mag--;
#endif

View file

@ -51,11 +51,9 @@ string w_satchel_deathmsg(void)
}
void w_satchel_precache(void)
{
precache_sound("weapons/g_bounce1.wav");
precache_sound("weapons/g_bounce2.wav");
precache_sound("weapons/g_bounce3.wav");
precache_sound("weapons/g_bounce4.wav");
precache_sound("weapons/g_bounce5.wav");
#ifdef SSQC
Sound_Precache("weapon_satchel.bounce");
#endif
precache_model("models/w_satchel.mdl");
precache_model("models/v_satchel.mdl");
precache_model("models/v_satchel_radio.mdl");
@ -96,9 +94,8 @@ void s_satchel_drop(entity master, vector src, vector vel)
{
static void s_satchel_touch(void)
{
int r = floor(random(1,6));
string sample = sprintf("weapons/g_bounce%i.wav", r);
sound(self, CHAN_BODY, sample, 1, ATTN_NORM);
if (other == world)
Sound_Play(self, CHAN_BODY, "weapon_satchel.bounce");
}
entity satch;
satch = spawn();

View file

@ -38,13 +38,16 @@ enum
void w_shotgun_precache(void)
{
#ifdef SSQC
Sound_Precache("weapon_shotgun.single");
Sound_Precache("weapon_shotgun.double");
Sound_Precache("weapon_shotgun.reload");
Sound_Precache("weapon_shotgun.cock");
#endif
precache_model("models/v_shotgun.mdl");
precache_model("models/w_shotgun.mdl");
precache_model("models/p_shotgun.mdl");
precache_sound("weapons/sbarrel1.wav");
precache_sound("weapons/dbarrel1.wav");
precache_sound("weapons/reload3.wav");
precache_sound("weapons/scock1.wav");
}
void w_shotgun_updateammo(player pl)
{
@ -122,7 +125,7 @@ void w_shotgun_primary(void)
} else {
TraceAttack_FireBullets(4, pl.origin + pl.view_ofs, 5, [0.08716,0.04362], WEAPON_SHOTGUN);
}
Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/sbarrel1.wav", 1, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_shotgun.single");
pl.shotgun_mag--;
#else
View_SetMuzzleflash(MUZZLE_WEIRD);
@ -163,7 +166,7 @@ void w_shotgun_secondary(void)
} else {
TraceAttack_FireBullets(8, pl.origin + pl.view_ofs, 5, [0.17365,0.04362], WEAPON_SHOTGUN);
}
Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/dbarrel1.wav", 1, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_shotgun.double");
pl.shotgun_mag -= 2;
Weapons_UpdateAmmo(pl, pl.shotgun_mag, pl.ammo_buckshot, __NULL__);
#else
@ -240,7 +243,7 @@ void w_shotgun_release(void)
pl.shotgun_mag++;
pl.ammo_buckshot--;
Weapons_UpdateAmmo(pl, pl.shotgun_mag, pl.ammo_buckshot, pl.a_ammo3);
sound(pl, CHAN_WEAPON, "weapons/reload3.wav", 1.0, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_shotgun.reload");
if (pl.ammo_buckshot <= 0 || pl.shotgun_mag >= 8) {
pl.a_ammo3 = SHOTTY_RELOAD_END;
}
@ -249,7 +252,7 @@ void w_shotgun_release(void)
} else if (pl.a_ammo3 == SHOTTY_RELOAD_END) {
Weapons_ViewAnimation(SHOTGUN_PUMP);
#ifdef SSQC
sound(pl, CHAN_WEAPON, "weapons/scock1.wav", 1.0, ATTN_NORM);
Sound_Play(pl, CHAN_WEAPON, "weapon_shotgun.cock");
#endif
pl.a_ammo3 = SHOTTY_IDLE;
pl.w_idle_next = 10.0f;

View file

@ -66,7 +66,7 @@ monster_snark::customphysics(void)
if (self.aiment && self.weapon <= 0.0) {
self.weapon = 0.5f + random();
sound(self, CHAN_VOICE, sprintf("squeek/sqk_hunt%d.wav",floor(random(1,4))), 1.0, ATTN_NORM);
Sound_Play(self, CHAN_VOICE, "weapon_snark.hunt");
input_buttons = 2;
Damage_Apply(self, world, 1, 0, DMG_GENERIC);
@ -74,8 +74,7 @@ monster_snark::customphysics(void)
traceline(self.origin, self.origin + (v_forward * 128), 0, self);
if (trace_ent.takedamage == DAMAGE_YES) {
float pit = 100 + random(0,10);
sound(self, CHAN_BODY, "squeek/sqk_deploy1.wav", 1.0, ATTN_NORM, pit);
Sound_Play(self, CHAN_BODY, "weapon_snark.deploy");
Damage_Apply(trace_ent, self.goalentity, 10, WEAPON_SNARK, DMG_GENERIC);
Effect_CreateBlood(self.origin + [0,0,16], [1,0,0]);
}
@ -92,8 +91,8 @@ void
monster_snark::Death(int i)
{
Effect_CreateBlood(self.origin + [0,0,16], [203,183,15] / 255);
sound(self, CHAN_VOICE, "squeek/sqk_die1.wav", 1.0, ATTN_NORM);
sound(self, CHAN_BODY, "squeek/sqk_blast1.wav", 1.0, ATTN_NORM);
Sound_Play(self, CHAN_VOICE, "weapon_snark.die");
Sound_Play(self, CHAN_BODY, "weapon_snark.blast");
self.customphysics = __NULL__;
remove(self);
}
@ -238,13 +237,14 @@ void w_snark_precache(void)
{
precache_model("models/w_squeak.mdl");
precache_model("models/p_squeak.mdl");
precache_model("models/v_squeak.mdl");
precache_sound("squeek/sqk_deploy1.wav");
precache_sound("squeek/sqk_die1.wav");
precache_sound("squeek/sqk_blast1.wav");
precache_sound("squeek/sqk_hunt1.wav");
precache_sound("squeek/sqk_hunt2.wav");
precache_sound("squeek/sqk_hunt3.wav");
precache_model("models/v_squeak.mdl");
#ifdef SSQC
Sound_Precache("weapon_snark.deploy");
Sound_Precache("weapon_snark.die");
Sound_Precache("weapon_snark.blast");
Sound_Precache("weapon_snark.hunt");
#endif
}
void w_snark_updateammo(player pl)
{

View file

@ -77,7 +77,7 @@ monster_tripmine::Ready(void)
Pain = Trip;
takedamage = DAMAGE_YES;
armor = trace_plane_dist;
sound(this, CHAN_WEAPON, "weapons/mine_activate.wav", 1.0f, ATTN_NORM);
Sound_Play(this, CHAN_WEAPON, "weapon_tripmine.activate");
}
if (trace_plane_dist != armor) {
@ -136,9 +136,12 @@ void w_tripmine_precache(void)
{
precache_model("models/v_tripmine.mdl");
precache_model("models/p_tripmine.mdl");
precache_sound("weapons/mine_deploy.wav");
precache_sound("weapons/mine_charge.wav");
precache_sound("weapons/mine_activate.wav");
#ifdef SSQC
Sound_Precache("weapon_tripmine.deploy");
Sound_Precache("weapon_tripmine.charge");
Sound_Precache("weapon_tripmine.activate");
#endif
}
void w_tripmine_updateammo(player pl)
{
@ -253,8 +256,9 @@ void w_tripmine_primary(void)
vector ang = vectoangles( trace_plane_normal );
monster_tripmine mine = spawn(monster_tripmine, real_owner: self, angles: ang);
setorigin(mine, trace_endpos - (v_forward * 8));
sound(self, CHAN_WEAPON, "weapons/mine_deploy.wav", 1.0f, ATTN_NORM);
sound(mine, CHAN_WEAPON, "weapons/mine_charge.wav", 1.0f, ATTN_NORM);
Sound_Play(self, CHAN_WEAPON, "weapon_tripmine.deploy");
Sound_Play(mine, CHAN_WEAPON, "weapon_tripmine.charge");
#endif
pl.a_ammo3 = 1;

View file

@ -0,0 +1,145 @@
weapon_357.shoot
{
sample weapons/357_shot1.wav
sample weapons/357_shot2.wav
}
weapon_357.reload
{
sample weapons/357_reload1.wav
}
weapon_crowbar.hit
{
sample weapons/cbar_hit1.wav
sample weapons/cbar_hit2.wav
}
weapon_crowbar.hitbody
{
sample weapons/cbar_hitbod1.wav
sample weapons/cbar_hitbod2.wav
sample weapons/cbar_hitbod3.wav
}
weapon_crowbar.miss
{
sample weapons/cbar_miss1.wav
}
weapon_glock.fire
{
sample weapons/pl_gun3.wav
}
weapon_handgrenade.bounce
{
sample squeek/grenade_hit1.wav
sample squeek/grenade_hit2.wav
sample squeek/grenade_hit3.wav
}
weapon_hornetgun.fire
{
sample agrunt/ag_fire1.wav
sample agrunt/ag_fire2.wav
sample agrunt/ag_fire3.wav
}
weapon_hornetgun.buzz
{
sample hornet/ag_buzz1.wav
sample hornet/ag_buzz2.wav
sample hornet/ag_buzz3.wav
}
weapon_hornetgun.hit
{
sample hornet/ag_hornethit1.wav
sample hornet/ag_hornethit2.wav
sample hornet/ag_hornethit3.wav
}
weapon_mp5.shoot
{
sample weapons/hks1.wav
sample weapons/hks2.wav
}
weapon_mp5.gl
{
sample weapons/glauncher.wav
}
weapon_satchel.bounce
{
sample weapons/g_bounce1.wav
sample weapons/g_bounce2.wav
sample weapons/g_bounce3.wav
sample weapons/g_bounce4.wav
sample weapons/g_bounce5.wav
}
weapon_tripmine.deploy
{
sample weapons/mine_deploy.wav
}
weapon_tripmine.charge
{
sample weapons/mine_charge.wav
}
weapon_tripmine.activate
{
sample weapons/mine_activate.wav
}
weapon_rpg.shoot
{
sample weapons/rocketfire1.wav
}
weapon_shotgun.single
{
sample weapons/sbarrel1.wav
}
weapon_shotgun.double
{
sample weapons/dbarrel1.wav
}
weapon_shotgun.reload
{
sample weapons/reload3.wav
}
weapon_shotgun.cock
{
sample weapons/scock1.wav
}
weapon_snark.deploy
{
pitch_min 1.0
pitch_max 1.1
sample squeek/sqk_deploy1.wav
}
weapon_snark.die
{
sample squeek/sqk_die1.wav
}
weapon_snark.blast
{
sample squeek/sqk_blast1.wav
}
weapon_snark.hunt
{
sample squeek/sqk_hunt1.wav
sample squeek/sqk_hunt2.wav
sample squeek/sqk_hunt3.wav
}