† Wolfgang H. Franke
[counter]

jjaf.de » kingpin

client-side-modifications

weapon-sounds

The following email says it all:

"jjaf.de" <kingpin@kingpin.jjaf.de>
<trig_71@btinternet.com>
Top class weapon sounds not conforming
Mon, 13 Aug 2001 12:26:07 +0200

Hi,

i tried your file http://www.btinternet.com/~trig_71/Downloads/pak6.pak (Top class weapon sounds) but found out that it crashes the system sometimes (but too often too be ignored).

A look into it revealed that not all files are the required format "PCM; 22.050 Hz; 16 Bit; Mono". I will try to fix that and give you a new version of it.

Kun afablaj salutoj

http://jjaf.de/kingpin/

download

Updated versions are welcomed to come back.

Install by putting one of these in your …\main\-directory naming it Pak1.pak or a higher number up to 9 if you happen to already have such a file.

health-sounds

Did you notice that players make different pain-sounds, depending on their remaining health? Probably not but original kingpin code includes a function that selects pain-sounds depending on health.

By replacing these files with others one can increase the contrast of the ough! and ouch!.

The following code-excerpts from the files voice_punk.c and voice_bitch.c tells us which sound-files to change, it's in the 4th field of the array.

The sound format of the replaced files should be the same to avoid trouble. In original this is: Microsoft Windows .wav; PCM 22.050 Hz; 16 bit; mono. The volume should be looked at too. In original the volume is at maximum so if you are creating a replacement normally you would increase the volume to the max. You can use GoldWave for this, it has a built-in function for this. If you consider using voice-anouncement like 10! 7! 5! 2! Killed him! Flamedeath! resp. 10! 7! 5! 2! Killed her! Flamedeath! as a replacement have a look at links about voice.

void bitch_pain (edict_t *self, edict_t *other, float kick, int damage, int mdx_part, int mdx_subobject)
 if (skill->value >= 3)
  return; // no pain anims in nightmare

 if (self->health < 25)
  Voice_Specific (self, other, female_specific, 4);
 else if (self->health < 50)
  Voice_Specific (self, other, female_specific, 3);
 else if (self->health < 75)
  Voice_Specific (self, other, female_specific, 2);
 else
  Voice_Specific (self, other, female_specific, 1);

 // Ridah, randomly don't play an animation, since it' leaves them WAY open to be killed
 if (skill->value > 0 && rand()%2)
  return;
// JOSEPH 29-MAY-99
voice_table_t female_specific[] =
{
 // pain
 {NULL, "", "", "actors/female/pain1.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 {NULL, "", "", "actors/female/pain2.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 {NULL, "", "", "actors/female/pain3.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 {NULL, "", "", "actors/female/pain4.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 // death
 {NULL, "", "", "actors/female/death1.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 {NULL, "", "", "actors/female/death2.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 // fire death
 {NULL, "", "", "actors/female/f_flamedeath1.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 {NULL, "", "", "actors/female/f_flamedeath2.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 {NULL, "", "", "actors/female/f_flamedeath2.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
};
// END JOSEPH

Analogous theres the code for male players:

// JOSEPH 29-MAY-99
voice_table_t male_specific[] =
{
 // pain
 {NULL, "", "", "actors/male/pain100_1.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 {NULL, "", "", "actors/male/pain100_2.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 {NULL, "", "", "actors/male/pain75_1.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 {NULL, "", "", "actors/male/pain75_2.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 {NULL, "", "", "actors/male/pain50_1.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 {NULL, "", "", "actors/male/pain50_2.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 {NULL, "", "", "actors/male/pain25_1.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 {NULL, "", "", "actors/male/pain25_2.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 // death
 {NULL, "", "", "actors/male/death1.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 {NULL, "", "", "actors/male/death2.wav", 0, {0,0,0,0,0},0,0, TT_NEGATIVE},
 // fire death
 {NULL, "", "", "actors/male/flamedeath1.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 {NULL, "", "", "actors/male/flamedeath2.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
 {NULL, "", "", "actors/male/flamedeath3.wav", 0, {0,0,0,0,0},0,0, TT_NONE},
};
// END JOSEPH

download

Updated versions are welcomed to come back.

Install by putting one of these in your …\main\-directory naming it Pak1.pak or a higher number up to 9 if you happen to already have such a file.

team-skins

The following code-excerpt from the function void ClientUserinfoChanged (edict_t *ent, char *userinfo) tells us what skins to change. Team 1 refers to Dragons, Team 2 to Nikki's Boyz.

static char *valid_skinsets[][2][2][2] =
// ordering here is {"LEGS", "BODY"}
{
 { // Bitch
  {{"056","057"}, {"056","058"}}, // Team 1
  {{"033","032"}, {"031","031"}} // Team 2
 },
 { // Thug
  {{"057","056"}, {"058","091"}},
  {{"031","031"}, {"032","035"}}
 },
 { // Runt
  {{"058","056"}, {"057","056"}},
  {{"031","030"}, {"032","031"}}
 }
};

download

Updated versions are welcomed to come back.

Install by putting one of these in your …\main\-directory naming it Pak1.pak or a higher number up to 9 if you happen to already have such a file.

references