Valve: Document more monster sounds etc.

This commit is contained in:
Marco Cawthorne 2020-03-26 17:17:44 +01:00
parent 7d330eb8cd
commit ad713d2f7e
24 changed files with 570 additions and 334 deletions

View file

@ -133,4 +133,6 @@ Sentences_GetSamples(string msg)
return g_sentences[i].m_strSamples;
}
}
return "";
}

View file

@ -364,7 +364,6 @@ HUD_DrawLogo(void)
}
/* weapon/ammo pickup notifications */
void
HUD_DrawNotify(void)
{

View file

@ -11,14 +11,14 @@
../../shared/materials.h
../../shared/events.h
../../shared/entities.h
defs.h
particles.h
../valve/defs.h
../valve/particles.h
../defs.h
../../vgui/include.src
../util.c
init.c
../valve/init.c
../fade.c
../sprite.cpp
@ -64,24 +64,24 @@ init.c
../../shared/valve/weapons.c
../../shared/valve/weapon_common.c
player.c
entities.c
../valve/player.c
../valve/entities.c
../entities.c
cmds.c
game_event.c
../valve/cmds.c
../valve/game_event.c
../events.c
view.c
../valve/view.c
../view.c
../damage.c
../obituary.c
../chat.c
../vgui.cpp
hud.c
hud_weaponselect.c
scoreboard.c
../valve/hud.c
../valve/hud_weaponselect.c
../valve/scoreboard.c
input.c
../valve/input.c
../entry.c
#endlist

View file

@ -26,7 +26,6 @@
../valve/monster_alien_controller.cpp
../valve/monster_alien_grunt.cpp
../valve/monster_alien_slave.cpp
../valve/monster_babycrab.cpp
../valve/monster_barnacle.cpp
../valve/monster_barney.cpp
../valve/monster_barney_dead.cpp
@ -38,6 +37,7 @@
../valve/monster_gargantua.cpp
../valve/monster_gman.cpp
../valve/monster_headcrab.cpp
../valve/monster_babycrab.cpp
../valve/monster_hevsuit_dead.cpp
../valve/monster_houndeye.cpp
../valve/monster_human_grunt.cpp

View file

@ -26,7 +26,6 @@
../valve/monster_alien_controller.cpp
../valve/monster_alien_grunt.cpp
../valve/monster_alien_slave.cpp
../valve/monster_babycrab.cpp
../valve/monster_barnacle.cpp
../valve/monster_barney.cpp
../valve/monster_barney_dead.cpp
@ -38,6 +37,7 @@
../valve/monster_gargantua.cpp
../valve/monster_gman.cpp
../valve/monster_headcrab.cpp
../valve/monster_babycrab.cpp
../valve/monster_hevsuit_dead.cpp
../valve/monster_houndeye.cpp
../valve/monster_human_grunt.cpp

View file

@ -28,7 +28,6 @@
../valve/monster_alien_controller.cpp
../valve/monster_alien_grunt.cpp
../valve/monster_alien_slave.cpp
../valve/monster_babycrab.cpp
../valve/monster_barnacle.cpp
../valve/monster_barney.cpp
../valve/monster_barney_dead.cpp
@ -40,6 +39,7 @@
../valve/monster_gargantua.cpp
../valve/monster_gman.cpp
../valve/monster_headcrab.cpp
../valve/monster_babycrab.cpp
../valve/monster_hevsuit_dead.cpp
../valve/monster_houndeye.cpp
../valve/monster_human_grunt.cpp

View file

@ -53,6 +53,8 @@ enum {
SLV_JABBER
};
/* chat & idle sounds are handled via sentences.txt */
string slv_snddie[] = {
"aslave/slv_die1.wav",
"aslave/slv_die2.wav"
@ -133,6 +135,7 @@ monster_alien_slave::monster_alien_slave(void)
netname = "Alien Slave";
model = "models/islave.mdl";
base_health = Skill_GetValue("islave_health");
base_mins = [-16,-16,0];
base_maxs = [16,16,72];
CBaseMonster::CBaseMonster();

View file

@ -21,24 +21,74 @@ Barnacle
*/
enum {
BARN_IDLE,
BARN_IDLE2,
BARN_IDLE3,
BARN_FLINCH,
BARN_ATTACK,
BARN_CHEW,
BARN_DEATH
BCL_IDLE,
BCL_IDLE2,
BCL_IDLE3,
BCL_FLINCH,
BCL_ATTACK,
BCL_CHEW,
BCL_DIE
};
/* bcl_alert2 is played when the barnacle is pulling up an ent
* bcl_bite3 is played when an entity is in it's mouth, bcl_tongue1 unused?
*/
string bcl_sndchew[] = {
"barnacle/bcl_chew1.wav",
"barnacle/bcl_chew2.wav",
"barnacle/bcl_chew3.wav"
};
string bcl_snddie[] = {
"barnacle/bcl_die1.wav",
"barnacle/bcl_die3.wav"
};
class monster_barnacle:CBaseMonster
{
void() monster_barnacle;
virtual void(int) Death;
virtual void(void) Respawn;
};
void
monster_barnacle::Death(int iHitBody)
{
/* if we're already dead (corpse) don't change animations */
if (style != MONSTER_DEAD) {
frame = BCL_DIE;
/* the sound */
int rand = floor(random(0,bcl_snddie.length));
Sound(bcl_snddie[rand]);
}
/* set the functional differences */
CBaseMonster::Death(iHitBody);
}
void
monster_barnacle::Respawn(void)
{
CBaseMonster::Respawn();
frame = BCL_IDLE;
}
void monster_barnacle::monster_barnacle(void)
{
for (int i = 0; i < bcl_sndchew.length; i++) {
precache_sound(bcl_sndchew[i]);
}
for (int i = 0; i < bcl_snddie.length; i++) {
precache_sound(bcl_snddie[i]);
}
netname = "Barnacle";
model = "models/barnacle.mdl";
base_health = Skill_GetValue("barnacle_health");
base_mins = [-16,-16,-36];
base_maxs = [16,16,0];
CBaseMonster::CBaseMonster();

View file

@ -68,20 +68,12 @@ string barney_sndpain[] = {
"barney/ba_pain1.wav"
};
string barney_sndscream[] = {
"barney/ba_pain1.wav",
"barney/ba_pain1.wav",
"barney/ba_pain1.wav"
};
class monster_barney:CBaseNPC
{
vector m_vecLastUserPos;
entity m_eUser;
entity m_eRescuer;
float m_flScaredTime;
float m_flScreamTime;
float m_flPainTime;
float m_flChangePath;
float m_flTraceTime;
@ -95,9 +87,7 @@ class monster_barney:CBaseNPC
virtual void(int) Pain;
virtual void(int) Death;
virtual void() Physics;
virtual void() Scream;
virtual void() WarnOthers;
virtual void() IdleChat;
};
void monster_barney::WarnOthers(void)
@ -108,33 +98,10 @@ void monster_barney::WarnOthers(void)
sci.m_iFlags |= BARNF_SEEN;
sci.m_eUser = world;
sci.m_eRescuer = world;
sci.m_flScaredTime = time + 2.5f;
sci.Scream();
}
}
}
void monster_barney::Scream(void)
{
if (m_flScreamTime > time) {
return;
}
int rand = floor(random(0,barney_sndscream.length));
Speak(barney_sndscream[rand]);
m_flScreamTime = time + 5.0f;
}
void monster_barney::IdleChat(void)
{
if (m_flScreamTime > time) {
return;
}
Sentence(m_talkPlayerIdle);
m_flScreamTime = time + 5.0f + random(0,20);
}
void monster_barney::Physics(void)
{
float spvel;
@ -210,7 +177,6 @@ void monster_barney::Physics(void)
}
} else if (m_iFlags & BARNF_FEAR) {
m_iFlags |= BARNF_SEEN;
Scream();
maxspeed = 240;
input_movevalues = [maxspeed, 0, 0];
@ -246,7 +212,7 @@ void monster_barney::Physics(void)
m_flChangePath = time + floor(random(2,10));
}
} else {
IdleChat();
//Sentence(m_talkPlayerIdle);
}
if (m_flPainTime > time) {
@ -272,9 +238,6 @@ void monster_barney::Physics(void)
Footsteps_Update();
if (!(flags & FL_ONGROUND) && velocity[2] < -100) {
if (!(m_iFlags & BARNF_FALLING)) {
Speak(barney_sndscream[0]);
}
m_iFlags |= BARNF_FALLING;
} else {
m_iFlags -= (flags & BARNF_FALLING);
@ -403,9 +366,6 @@ void monster_barney::monster_barney(void)
for (int i = 0; i < barney_snddie.length; i++) {
precache_sound(barney_snddie[i]);
}
for (int i = 0; i < barney_sndscream.length; i++) {
precache_sound(barney_sndscream[i]);
}
m_talkAnswer = "!BA_ANSWER";
m_talkAsk = "";
@ -414,7 +374,7 @@ void monster_barney::monster_barney(void)
m_talkIdle = "";
m_talkSmelling = "!BA_SMELL";
m_talkStare = "!BA_STARE";
m_talkSurvived = "!BA_ANSWER";
m_talkSurvived = "!BA_WOUND";
m_talkWounded = "!BA_WOUND";
m_talkPlayerAsk = "!BA_QUESTION";

View file

@ -29,6 +29,9 @@ void monster_bigmomma::monster_bigmomma(void)
{
netname = "Gonarch";
model = "models/big_mom.mdl";
/* health is based on factor, for it's not killable until last stage
* base_health = Skill_GetValue("bigmomma_health");
*/
base_mins = [-95,-95,0];
base_maxs = [95,95,190];
CBaseMonster::CBaseMonster();

View file

@ -47,15 +47,129 @@ enum {
BULL_FALL
};
/* the growls are used in combination with the bite sounds
* for close range attacks
*/
string bull_sndattack[] = {
"bullchicken/bc_attackgrowl1.wav",
"bullchicken/bc_attackgrowl2.wav",
"bullchicken/bc_attackgrowl3.wav"
};
string bull_sndattackbite[] = {
"bullchicken/bc_bite1.wav",
"bullchicken/bc_bite2.wav",
"bullchicken/bc_bite3.wav"
};
string bull_sndattackshoot[] = {
"bullchicken/bc_attack1.wav",
"bullchicken/bc_attack2.wav",
"bullchicken/bc_attack3.wav"
};
string bull_snddie[] = {
"bullchicken/bc_die1.wav",
"bullchicken/bc_die2.wav",
"bullchicken/bc_die3.wav"
};
string bull_sndidle[] = {
"bullchicken/bc_idle1.wav",
"bullchicken/bc_idle2.wav",
"bullchicken/bc_idle3.wav",
"bullchicken/bc_idle4.wav",
"bullchicken/bc_idle5.wav"
};
string bull_sndpain[] = {
"bullchicken/bc_pain1.wav",
"bullchicken/bc_pain2.wav",
"bullchicken/bc_pain3.wav",
"bullchicken/bc_pain4.wav"
};
class monster_bullchicken:CBaseMonster
{
float m_flPainTime;
void() monster_bullchicken;
virtual void(int) Death;
virtual void(int) Pain;
virtual void(void) Respawn;
};
void
monster_bullchicken::Pain(int iHitBody)
{
CBaseMonster::Pain(iHitBody);
if (m_flPainTime > time) {
return;
}
if (random() < 0.25f) {
return;
}
int rand = floor(random(0,bull_sndpain.length));
Sound(bull_sndpain[rand]);
frame = (random() < 0.5) ? BULL_FLINCH : BULL_FLINCH2;
m_flPainTime = time + 0.25f;
}
void
monster_bullchicken::Death(int iHitBody)
{
/* if we're already dead (corpse) don't change animations */
if (style != MONSTER_DEAD) {
/* two different animations */
frame = (random() < 0.5) ? BULL_DIE : BULL_DIE2;
/* the sound */
int rand = floor(random(0,bull_snddie.length));
Sound(bull_snddie[rand]);
}
/* set the functional differences */
CBaseMonster::Death(iHitBody);
}
void
monster_bullchicken::Respawn(void)
{
CBaseMonster::Respawn();
frame = BULL_IDLE;
}
void monster_bullchicken::monster_bullchicken(void)
{
for (int i = 0; i <bull_sndattack.length; i++) {
precache_sound(bull_sndattack[i]);
}
for (int i = 0; i <bull_sndattackbite.length; i++) {
precache_sound(bull_sndattackbite[i]);
}
for (int i = 0; i <bull_sndattackshoot.length; i++) {
precache_sound(bull_sndattackshoot[i]);
}
for (int i = 0; i < bull_snddie.length; i++) {
precache_sound(bull_snddie[i]);
}
for (int i = 0; i < bull_sndidle.length; i++) {
precache_sound(bull_sndidle[i]);
}
for (int i = 0; i < bull_sndpain.length; i++) {
precache_sound(bull_sndpain[i]);
}
netname = "Bullsquid";
model = "models/bullsquid.mdl";
base_health = Skill_GetValue("bullsquid_health");
base_mins = [-32,-32,0];
base_maxs = [32,32,64];
CBaseMonster::CBaseMonster();

View file

@ -23,8 +23,29 @@ Cockroach
class monster_cockroach:CBaseMonster
{
void() monster_cockroach;
virtual void(int) Death;
};
void
monster_cockroach::Death(int iHitBody)
{
/* if we're already dead (corpse) don't change animations */
if (style != MONSTER_DEAD) {
/* the sound */
if (random() < 0.5) {
Sound("roach/rch_die.wav");
} else {
Sound("roach/rch_smash.wav");
}
}
/* make sure we gib this thing */
health = -100;
/* set the functional differences */
CBaseMonster::Death(iHitBody);
}
void monster_cockroach::monster_cockroach(void)
{
netname = "Cockroach";

View file

@ -45,6 +45,7 @@ class monster_gman:CBaseMonster
void monster_gman::Respawn(void)
{
/* he can't die, he's the G-Man! */
CBaseMonster::Respawn();
frame = GMAN_IDLE;
takedamage = DAMAGE_NO;

View file

@ -21,41 +21,45 @@ Headcrab
*/
enum {
HCBA_IDLE1,
HCBA_IDLE2,
HCBA_IDLE3,
HCBA_WALK,
HCBA_RUN,
HCBA_ANGRY,
HCBA_FLINCH,
HCBA_DEATH,
HCBA_180_LEFT,
HCBA_180_RIGHT,
HCBA_JUMP,
HCBA_JUMP_VARIATION1,
HCBA_JUMP_VARIATION2,
HCBA_YAW_ADJUSTMENT,
HCBA_HEADCRABBED1,
HCBA_HEADCRABBED2,
HCBA_HEADIDLE,
HCBA_CRASHIDLE,
HCBA_CRASH,
HCBA_STRUGGLEIDLE,
HCBA_STRUGGLE
HC_IDLE1,
HC_IDLE2,
HC_IDLE3,
HC_WALK,
HC_RUN,
HC_ANGRY,
HC_FLINCH,
HC_DIE,
HC_180_LEFT,
HC_180_RIGHT,
HC_JUMP,
HC_JUMP_VARIATION1,
HC_JUMP_VARIATION2,
HC_YAW_ADJUSTMENT,
HC_HEADCRABBED1,
HC_HEADCRABBED2,
HC_HEADIDLE,
HC_CRASHIDLE,
HC_CRASH,
HC_STRUGGLEIDLE,
HC_STRUGGLE
};
string hcb_sndattack[] = {
/* these attack sounds are actually the cry when it jumps
* hc_headbite is when the crab actually hits an ent
*/
string hc_sndattack[] = {
"headcrab/hc_attack1.wav",
"headcrab/hc_attack2.wav",
"headcrab/hc_attack3.wav"
};
string hcb_snddie[] = {
string hc_snddie[] = {
"headcrab/hc_die1.wav",
"headcrab/hc_die2.wav"
};
string hcb_sndidle[] = {
string hc_sndidle[] = {
"headcrab/hc_idle1.wav",
"headcrab/hc_idle2.wav",
"headcrab/hc_idle3.wav",
@ -63,13 +67,13 @@ string hcb_sndidle[] = {
"headcrab/hc_idle5.wav"
};
string hcb_sndpain[] = {
string hc_sndpain[] = {
"headcrab/hc_pain1.wav",
"headcrab/hc_pain2.wav",
"headcrab/hc_pain3.wav"
};
string hcb_sndsee[] = {
string hc_sndsee[] = {
"headcrab/hc_alert1.wav",
"headcrab/hc_alert2.wav"
};
@ -100,9 +104,9 @@ monster_headcrab::Pain(int iHitBody)
return;
}
int rand = floor(random(0,hcb_sndpain.length));
Sound(hcb_sndpain[rand]);
frame = HCBA_FLINCH;
int rand = floor(random(0,hc_sndpain.length));
Sound(hc_sndpain[rand]);
frame = HC_FLINCH;
m_flPainTime = time + 0.25f;
}
@ -111,11 +115,11 @@ monster_headcrab::Death(int iHitBody)
{
/* if we're already dead (corpse) don't change animations */
if (style != MONSTER_DEAD) {
frame = HCBA_DEATH;
frame = HC_DIE;
/* the sound */
int rand = floor(random(0,hcb_sndpain.length));
Sound(hcb_sndpain[rand]);
int rand = floor(random(0,hc_snddie.length));
Sound(hc_snddie[rand]);
}
/* set the functional differences */
@ -135,34 +139,34 @@ monster_headcrab::IdleNoise(void)
}
m_flIdleTime = time + 2.0f + random(0,5);
int rand = floor(random(0, hcb_sndidle.length));
Sound(hcb_sndidle[rand]);
int rand = floor(random(0, hc_sndidle.length));
Sound(hc_sndidle[rand]);
}
void
monster_headcrab::Respawn(void)
{
CBaseMonster::Respawn();
frame = HCBA_IDLE1;
frame = HC_IDLE1;
}
void
monster_headcrab::monster_headcrab(void)
{
for (int i = 0; i < hcb_sndattack.length; i++) {
precache_sound(hcb_sndattack[i]);
for (int i = 0; i < hc_sndattack.length; i++) {
precache_sound(hc_sndattack[i]);
}
for (int i = 0; i < hcb_snddie.length; i++) {
precache_sound(hcb_snddie[i]);
for (int i = 0; i < hc_snddie.length; i++) {
precache_sound(hc_snddie[i]);
}
for (int i = 0; i < hcb_sndidle.length; i++) {
precache_sound(hcb_sndidle[i]);
for (int i = 0; i < hc_sndidle.length; i++) {
precache_sound(hc_sndidle[i]);
}
for (int i = 0; i < hcb_sndpain.length; i++) {
precache_sound(hcb_sndpain[i]);
for (int i = 0; i < hc_sndpain.length; i++) {
precache_sound(hc_sndpain[i]);
}
for (int i = 0; i < hcb_sndsee.length; i++) {
precache_sound(hcb_sndsee[i]);
for (int i = 0; i < hc_sndsee.length; i++) {
precache_sound(hc_sndsee[i]);
}
netname = "Headcrab";
model = "models/headcrab.mdl";

View file

@ -132,8 +132,8 @@ monster_houndeye::Death(int iHitBody)
frame = HE_DIE + floor(random(0, 4));
/* the sound */
int rand = floor(random(0,he_sndpain.length));
Sound(he_sndpain[rand]);
int rand = floor(random(0,he_snddie.length));
Sound(he_snddie[rand]);
}
/* set the functional differences */
@ -185,6 +185,7 @@ monster_houndeye::monster_houndeye(void)
netname = "Houndeye";
model = "models/houndeye.mdl";
base_health = Skill_GetValue("houndeye_health");
base_mins = [-16,-16,0];
base_maxs = [16,16,36];
CBaseMonster::CBaseMonster();

View file

@ -55,8 +55,18 @@ monster_human_assassin::Death(int iHitBody)
{
/* if we're already dead (corpse) don't change animations */
if (style != MONSTER_DEAD) {
/* headshots == different animation */
/* this animation may not have been used, but it looks cool */
if (iHitBody == BODY_HEAD) {
if (random() < 0.5) {
frame = HAS_DIERUN;
} else {
frame = HAS_DIEBACK;
}
} else {
frame = HAS_DIE + floor(random(0, 3));
}
}
/* set the functional differences */
CBaseMonster::Death(iHitBody);
@ -74,6 +84,7 @@ monster_human_assassin::monster_human_assassin(void)
{
netname = "Assassin";
model = "models/hassassin.mdl";
base_health = Skill_GetValue("hassassin_health");
base_mins = [-16,-16,0];
base_maxs = [16,16,72];
CBaseMonster::CBaseMonster();

View file

@ -21,98 +21,100 @@ HECU - Human Grunt
*/
enum {
HECU_WALK,
HECU_RUN,
HECU_VICTORYDANCE,
HECU_COWER,
HECU_FLINCH,
HECU_LEFTLEGFLINCH,
HECU_RIGHTLEGFLINCH,
HECU_RIGHTARMFLINCH,
HECU_LEFTARMFLINCH,
HECU_LAUNCHNADE,
HECU_THROWNADE,
HECU_IDLE1,
HECU_IDLE2,
HECU_COMBATIDLE,
HECU_FRONTKICK,
HECU_CROUCHIDLE,
HECU_CROUCHWAIT,
HECU_CROUCHSHOOTMP5,
HECU_STANDSHOOTMP5,
HECU_RELOADMP5,
HECU_CROUCHSHOOTSG,
HECU_STANDSHOOTSG,
HECU_RELOADSG,
HECU_SIGNALADV,
HECU_SIGNALFLANK,
HECU_SIGNALRETREAT,
HECU_DROPNADE,
HECU_LIMPWALK,
HECU_LIMPRUN,
HECU_TURNLEFT,
HECU_TURNRIGHT,
HECU_STRAFELEFT,
HECU_STRAFERIGHT,
HECU_DIEBACK,
HECU_DIEFORWARD,
HECU_DIE,
HECU_DIEBACK2,
HECU_DIEHS,
HECU_DIEGUT,
HECU_BARNACLE1,
HECU_BARNACLE2,
HECU_BARNACLE3,
HECU_BARNACLE4,
HECU_DEADSTOMACH,
HECU_DEADSTOMACH2,
HECU_DEADSIDE,
HECU_DEADSITTING,
HECU_REPELJUMP,
HECU_REPEL,
HECU_REPELSHOOT,
HECU_REPELLAND,
HECU_REPELDIE,
HECU_DRAGHOLEIDLE,
HECU_DRAGHOLE,
HECU_BUSTWALL,
HECU_HOPRAIL,
HECU_CONVERSE1,
HECU_CONVERSE2,
HECU_STARTLELEFT,
HECU_STRRTLERIGHT,
HECU_DIVE,
HECU_DEFUSE,
HECU_CORNER1,
HECU_CORNER2,
HECU_STONETOSS,
HECU_CLIFFDIE,
HECU_DIVESIDEIDLE,
HECU_DIVESIDE,
HECU_DIVEKNEELIDLE,
HECU_DIVEKNEEL,
HECU_WMBUTTON,
HECU_WM,
HECU_WMJUMP,
HECU_BUSTWINDOW,
HECU_DRAGLEFT,
HECU_DRAGRIGHT,
HECU_TRACKWAVE,
HECU_TRACKDIVE,
HECU_FLYBACK,
HECU_IMPALED,
HECU_JUMPTRACKS,
HECU_THROWPIPE,
HECU_PLUNGER
GR_WALK,
GR_RUN,
GR_VICTORYDANCE,
GR_COWER,
GR_FLINCH,
GR_LEFTLEGFLINCH,
GR_RIGHTLEGFLINCH,
GR_RIGHTARMFLINCH,
GR_LEFTARMFLINCH,
GR_LAUNCHNADE,
GR_THROWNADE,
GR_IDLE1,
GR_IDLE2,
GR_COMBATIDLE,
GR_FRONTKICK,
GR_CROUCHIDLE,
GR_CROUCHWAIT,
GR_CROUCHSHOOTMP5,
GR_STANDSHOOTMP5,
GR_RELOADMP5,
GR_CROUCHSHOOTSG,
GR_STANDSHOOTSG,
GR_RELOADSG,
GR_SIGNALADV,
GR_SIGNALFLANK,
GR_SIGNALRETREAT,
GR_DROPNADE,
GR_LIMPWALK,
GR_LIMPRUN,
GR_TURNLEFT,
GR_TURNRIGHT,
GR_STRAFELEFT,
GR_STRAFERIGHT,
GR_DIEBACK,
GR_DIEFORWARD,
GR_DIE,
GR_DIEBACK2,
GR_DIEHS,
GR_DIEGUT,
GR_BARNACLE1,
GR_BARNACLE2,
GR_BARNACLE3,
GR_BARNACLE4,
GR_DEADSTOMACH,
GR_DEADSTOMACH2,
GR_DEADSIDE,
GR_DEADSITTING,
GR_REPELJUMP,
GR_REPEL,
GR_REPELSHOOT,
GR_REPELLAND,
GR_REPELDIE,
GR_DRAGHOLEIDLE,
GR_DRAGHOLE,
GR_BUSTWALL,
GR_HOPRAIL,
GR_CONVERSE1,
GR_CONVERSE2,
GR_STARTLELEFT,
GR_STRRTLERIGHT,
GR_DIVE,
GR_DEFUSE,
GR_CORNER1,
GR_CORNER2,
GR_STONETOSS,
GR_CLIFFDIE,
GR_DIVESIDEIDLE,
GR_DIVESIDE,
GR_DIVEKNEELIDLE,
GR_DIVEKNEEL,
GR_WMBUTTON,
GR_WM,
GR_WMJUMP,
GR_BUSTWINDOW,
GR_DRAGLEFT,
GR_DRAGRIGHT,
GR_TRACKWAVE,
GR_TRACKDIVE,
GR_FLYBACK,
GR_IMPALED,
GR_JUMPTRACKS,
GR_THROWPIPE,
GR_PLUNGER
};
string hecu_snddie[] = {
/* chat & idle sounds are handled via sentences.txt */
string gr_snddie[] = {
"hgrunt/gr_die1.wav",
"hgrunt/gr_die2.wav",
"hgrunt/gr_die3.wav"
};
string hecu_sndpain[] = {
string gr_sndpain[] = {
"hgrunt/gr_pain1.wav",
"hgrunt/gr_pain2.wav",
"hgrunt/gr_pain3.wav",
@ -129,6 +131,7 @@ void monster_human_grunt::monster_human_grunt(void)
{
netname = "Grunt";
model = "models/hgrunt.mdl";
base_health = Skill_GetValue("hgrunt_health");
base_mins = [-16,-16,0];
base_maxs = [16,16,72];
CBaseMonster::CBaseMonster();

View file

@ -53,6 +53,7 @@ void monster_nihilanth::monster_nihilanth(void)
{
netname = "Nihilanth";
model = "models/nihilanth.mdl";
base_health = Skill_GetValue("nihilanth_health");
base_mins = [-192,-192,-32];
base_maxs = [192,192,384];
CBaseMonster::CBaseMonster();

View file

@ -89,6 +89,10 @@ string sci_snddie[] = {
"scientist/sci_die4.wav"
};
/* chat and idle sounds are handled via sentences.txt
* this should be deleted and redone at some point
*/
string sci_sndchitchat[] = {
"scientist/absolutely.wav",
"scientist/absolutelynot.wav",

View file

@ -20,15 +20,69 @@ Sentry Gun
*/
enum {
SENT_IDLE,
SENT_FIRE,
SENT_SPIN,
SENT_DEPLOY,
SENT_RETIRE,
SENT_DIE
};
/* seems to use tu_ping for it's active idle state
* tu_alert for it's deploy sound?
*/
string sent_snddie[] = {
"turret/tu_die1.wav",
"turret/tu_die2.wav",
"turret/tu_die3.wav"
};
class monster_sentry:CBaseMonster
{
void() monster_sentry;
virtual void(int) Death;
virtual void(void) Respawn;
};
void
monster_sentry::Death(int iHitBody)
{
/* if we're already dead (corpse) don't change animations */
if (style != MONSTER_DEAD) {
frame = SENT_DIE;
/* the sound */
int rand = floor(random(0,sent_snddie.length));
Sound(sent_snddie[rand]);
}
/* set the functional differences */
CBaseMonster::Death(iHitBody);
}
void
monster_sentry::Respawn(void)
{
CBaseMonster::Respawn();
frame = SENT_IDLE;
iBleeds = FALSE;
}
void monster_sentry::monster_sentry(void)
{
for (int i = 0; i < con_sndattack.length; i++) {
precache_sound(con_sndattack[i]);
}
netname = "Sentry";
model = "models/sentry.mdl";
base_health = Skill_GetValue("sentry_health");
base_mins = [-16,-16,0];
base_maxs = [16,16,72];
CBaseMonster::CBaseMonster();

View file

@ -21,73 +21,73 @@ Tentacle
*/
enum {
TENT_IDLEPIT,
TENT_RISE,
TENT_TOFLOOR1,
TENT_IDLE,
TENT_PISSED,
TENT_SMALLRISE,
TENT_WAVE,
TENT_STRIKE,
TENT_TAP,
TENT_ROTATE,
TENT_REAR,
TENT_REARIDLE,
TENT_TOLEV1,
TENT_IDELLEV1,
TENT_FIDGETLEV1,
TENT_SNAPLEV1,
TENT_STRIKELEV1,
TENT_TAPLEV1,
TENT_ROTATELEV1,
TENT_REARLEV1,
TENT_REARIDELLEV1,
TENT_TOLEV2,
TENT_IDLELEV2,
TENT_FIDGETLEV2,
TENT_SNAPLEV2,
TENT_SWINGLEV2,
TENT_TUTLEV2,
TENT_STRIKELEV2,
TENT_TAPLEV2,
TENT_ROTATELEV2,
TENT_REARLEV2,
TENT_FREAKDIE,
TENT_REARIDLE2,
TENT_TOLEV3,
TENT_IDLELEV3,
TENT_FIDGETLEV3,
TENT_SIDELEV3,
TENT_SWIPELEV3,
TENT_STRIKELEV3,
TENT_TAPLEV3,
TENT_ROTATELEV3,
TENT_REARLEV3,
TENT_REARIDLELEV3,
TENT_DOORLEV1,
TENT_ENGINELEV3,
TENT_ENGINEIDLE,
TENT_ENGINESWAY,
TENT_ENGINESWAT,
TENT_ENGINEBOB,
TENT_ENGINEDEATH,
TENT_ENGINEDEATH2,
TENT_ENGINEDEATH3,
TENT_GRABIDLE,
TENT_GRAB
TE_IDLEPIT,
TE_RISE,
TE_TOFLOOR1,
TE_IDLE,
TE_PISSED,
TE_SMALLRISE,
TE_WAVE,
TE_STRIKE,
TE_TAP,
TE_ROTATE,
TE_REAR,
TE_REARIDLE,
TE_TOLEV1,
TE_IDELLEV1,
TE_FIDGETLEV1,
TE_SNAPLEV1,
TE_STRIKELEV1,
TE_TAPLEV1,
TE_ROTATELEV1,
TE_REARLEV1,
TE_REARIDELLEV1,
TE_TOLEV2,
TE_IDLELEV2,
TE_FIDGETLEV2,
TE_SNAPLEV2,
TE_SWINGLEV2,
TE_TUTLEV2,
TE_STRIKELEV2,
TE_TAPLEV2,
TE_ROTATELEV2,
TE_REARLEV2,
TE_FREAKDIE,
TE_REARIDLE2,
TE_TOLEV3,
TE_IDLELEV3,
TE_FIDGETLEV3,
TE_SIDELEV3,
TE_SWIPELEV3,
TE_STRIKELEV3,
TE_TAPLEV3,
TE_ROTATELEV3,
TE_REARLEV3,
TE_REARIDLELEV3,
TE_DOORLEV1,
TE_ENGINELEV3,
TE_ENGINEIDLE,
TE_ENGINESWAY,
TE_ENGINESWAT,
TE_ENGINEBOB,
TE_ENGINEDEATH,
TE_ENGINEDEATH2,
TE_ENGINEDEATH3,
TE_GRABIDLE,
TE_GRAB
};
string tent_sndattack[] = {
string te_sndattack[] = {
"tentacle/te_strike1.wav",
"tentacle/te_strike2.wav"
};
string tent_snddeath[] = {
string te_snddeath[] = {
"tentacle/te_death2.wav"
};
/* includes some cut sounds, might be interesting */
string tent_sndidle[] = {
string te_sndidle[] = {
"tentacle/te_roar1.wav",
"tentacle/te_roar2.wav",
"tentacle/te_search1.wav",
@ -97,7 +97,7 @@ string tent_sndidle[] = {
};
/* cut sounds, listing here because why not */
string tent_sndsee[] = {
string te_sndsee[] = {
"tentacle/te_alert1.wav",
"tentacle/te_alert2.wav"
};
@ -123,19 +123,21 @@ monster_tentacle::IdleNoise(void)
if (m_flIdleTime > time) {
return;
}
/* timing needs to adjusted as sounds conflict */
m_flIdleTime = time + 2.0f + random(0,5);
int rand = floor(random(0, tent_sndidle.length));
Sound(tent_sndidle[rand]);
int rand = floor(random(0, te_sndidle.length));
Sound(te_sndidle[rand]);
}
void
monster_tentacle::Respawn(void)
{
CBaseMonster::Respawn();
/* not entirely true, takes damage then retreats and reheals */
takedamage = DAMAGE_NO;
iBleeds = FALSE;
frame = TENT_IDLEPIT;
frame = TE_IDLE;
}
void

View file

@ -21,81 +21,81 @@ Zombie
*/
enum {
ZOMA_IDLE,
ZOMA_TURNLEFT,
ZOMA_TURNRIGHT,
ZOMA_FLINCHSM,
ZOMA_FLINCH,
ZOMA_FLINCHBIG,
ZOMA_RISE,
ZOMA_FALLING,
ZOMA_ATTACK1,
ZOMA_ATTACK2,
ZOMA_WALK,
ZOMA_FLINCHLA,
ZOMA_FLINCHRA,
ZOMA_FLINCHLEFT,
ZOMA_FLINCHRIGHT,
ZOMA_DIEHS,
ZOMA_DIEHS2,
ZOMA_DIE,
ZOMA_DIEBACK,
ZOMA_DIEFORWARD,
ZOMA_PAUSE,
ZOMA_WALLBUST,
ZOMA_WALLKICK,
ZOMA_WINDOWBUST,
ZOMA_SODA,
ZOMA_SLIDEIDLE,
ZOMA_SLIDE,
ZOMA_VENTIDLE,
ZOMA_VENT,
ZOMA_DEADIDLE,
ZOMA_DEAD,
ZOMA_FREAKDIE,
ZOMA_FREAK,
ZOMA_EATTABLE,
ZOMA_EAT,
ZOMA_EATSTAND,
ZOMA_DOORIP,
ZOMA_PULLSCI,
ZOMA_EAT2,
ZOMA_EAT2STAND,
ZOMA_VENT2IDLE,
ZOMA_VENT2,
ZOMA_HAUL,
ZOMA_RISESNACK
ZO_IDLE,
ZO_TURNLEFT,
ZO_TURNRIGHT,
ZO_FLINCHSM,
ZO_FLINCH,
ZO_FLINCHBIG,
ZO_RISE,
ZO_FALLING,
ZO_ATTACK1,
ZO_ATTACK2,
ZO_WALK,
ZO_FLINCHLA,
ZO_FLINCHRA,
ZO_FLINCHLEFT,
ZO_FLINCHRIGHT,
ZO_DIEHS,
ZO_DIEHS2,
ZO_DIE,
ZO_DIE2,
ZO_DIE3,
ZO_PAUSE,
ZO_WALLBUST,
ZO_WALLKICK,
ZO_WINDOWBUST,
ZO_SODA,
ZO_SLIDEIDLE,
ZO_SLIDE,
ZO_VENTIDLE,
ZO_VENT,
ZO_DEADIDLE,
ZO_DEAD,
ZO_FREAKDIE,
ZO_FREAK,
ZO_EATTABLE,
ZO_EAT,
ZO_EATSTAND,
ZO_DOORIP,
ZO_PULLSCI,
ZO_EAT2,
ZO_EAT2STAND,
ZO_VENT2IDLE,
ZO_VENT2,
ZO_HAUL,
ZO_RISESNACK
};
string zom_sndattack[] = {
string zo_sndattack[] = {
"zombie/zo_attack1.wav",
"zombie/zo_attack2.wav"
};
string zom_sndclaw[] = {
string zo_sndclaw[] = {
"zombie/claw_strike1.wav",
"zombie/claw_strike2.wav",
"zombie/claw_strike3.wav"
};
string zom_sndclawmiss[] = {
string zo_sndclawmiss[] = {
"zombie/claw_miss1.wav",
"zombie/claw_miss2.wav"
};
string zom_sndidle[] = {
string zo_sndidle[] = {
"zombie/zo_idle1.wav",
"zombie/zo_idle2.wav",
"zombie/zo_idle3.wav",
"zombie/zo_idle4.wav"
};
string zom_sndpain[] = {
string zo_sndpain[] = {
"zombie/zo_pain1.wav",
"zombie/zo_pain2.wav"
};
string zom_sndsee[] = {
string zo_sndsee[] = {
"zombie/zo_alert10.wav",
"zombie/zo_alert20.wav",
"zombie/zo_alert30.wav"
@ -127,9 +127,9 @@ monster_zombie::Pain(int iHitBody)
return;
}
int rand = floor(random(0,zom_sndpain.length));
Sound(zom_sndpain[rand]);
frame = ZOMA_FLINCH + floor(random(0, 2));
int rand = floor(random(0,zo_sndpain.length));
Sound(zo_sndpain[rand]);
frame = ZO_FLINCH + floor(random(0, 2));
m_flPainTime = time + 0.25f;
}
@ -141,17 +141,17 @@ monster_zombie::Death(int iHitBody)
/* headshots == different animation */
if (iHitBody == BODY_HEAD) {
if (random() < 0.5) {
frame = ZOMA_DIEHS;
frame = ZO_DIEHS;
} else {
frame = ZOMA_DIEHS2;
frame = ZO_DIEHS2;
}
} else {
frame = ZOMA_DIE + floor(random(0, 3));
frame = ZO_DIE + floor(random(0, 3));
}
/* the sound */
int rand = floor(random(0,zom_sndpain.length));
Sound(zom_sndpain[rand]);
int rand = floor(random(0,zo_sndpain.length));
Sound(zo_sndpain[rand]);
}
/* set the functional differences */
@ -171,42 +171,42 @@ monster_zombie::IdleNoise(void)
}
m_flIdleTime = time + 2.0f + random(0,5);
int rand = floor(random(0, zom_sndidle.length));
Sound(zom_sndidle[rand]);
int rand = floor(random(0, zo_sndidle.length));
Sound(zo_sndidle[rand]);
}
void
monster_zombie::Respawn(void)
{
CBaseMonster::Respawn();
frame = ZOMA_IDLE;
frame = ZO_IDLE;
}
void
monster_zombie::monster_zombie(void)
{
for (int i = 0; i < zom_sndattack.length; i++) {
precache_sound(zom_sndattack[i]);
for (int i = 0; i < zo_sndattack.length; i++) {
precache_sound(zo_sndattack[i]);
}
for (int i = 0; i < zom_sndclaw.length; i++) {
precache_sound(zom_sndclaw[i]);
for (int i = 0; i < zo_sndclaw.length; i++) {
precache_sound(zo_sndclaw[i]);
}
for (int i = 0; i < zom_sndclawmiss.length; i++) {
precache_sound(zom_sndclawmiss[i]);
for (int i = 0; i < zo_sndclawmiss.length; i++) {
precache_sound(zo_sndclawmiss[i]);
}
for (int i = 0; i < zom_sndidle.length; i++) {
precache_sound(zom_sndidle[i]);
for (int i = 0; i < zo_sndidle.length; i++) {
precache_sound(zo_sndidle[i]);
}
for (int i = 0; i < zom_sndpain.length; i++) {
precache_sound(zom_sndpain[i]);
for (int i = 0; i < zo_sndpain.length; i++) {
precache_sound(zo_sndpain[i]);
}
for (int i = 0; i < zom_sndsee.length; i++) {
precache_sound(zom_sndsee[i]);
for (int i = 0; i < zo_sndsee.length; i++) {
precache_sound(zo_sndsee[i]);
}
netname = "Zombie";
model = "models/zombie.mdl";
base_health = 50;
base_health = Skill_GetValue("zombie_health");
base_mins = [-16,-16,0];
base_maxs = [16,16,72];
CBaseMonster::CBaseMonster();

View file

@ -25,7 +25,6 @@ defs.h
../valve/monster_alien_controller.cpp
../valve/monster_alien_grunt.cpp
../valve/monster_alien_slave.cpp
../valve/monster_babycrab.cpp
../valve/monster_barnacle.cpp
../valve/monster_barney.cpp
../valve/monster_barney_dead.cpp
@ -37,6 +36,7 @@ defs.h
../valve/monster_gargantua.cpp
../valve/monster_gman.cpp
../valve/monster_headcrab.cpp
../valve/monster_babycrab.cpp
../valve/monster_hevsuit_dead.cpp
../valve/monster_houndeye.cpp
../valve/monster_human_grunt.cpp

View file

@ -41,6 +41,9 @@ class player:CBaseEntity
vector view_ofs;
float weapontime;
/* any mods that use hooks */
entity hook;
/* Weapon specific */
int usp45_mag;
int glock18_mag;