Moved Death and Pain methods into CBaseEntity.
This commit is contained in:
parent
b70b0cd6f9
commit
2bb8bd00cf
65 changed files with 355 additions and 361 deletions
|
@ -72,6 +72,8 @@ class CBaseEntity
|
|||
virtual void() RendermodeUpdate;
|
||||
virtual void() ParentUpdate;
|
||||
virtual float(entity, float) SendEntity;
|
||||
virtual void(int iHitBody) Pain;
|
||||
virtual void(int iHitBody) Death;
|
||||
};
|
||||
|
||||
/* Make sure StartFrame calls this */
|
||||
|
@ -128,6 +130,16 @@ float CBaseEntity::SendEntity(entity ePEnt, float fChanged)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void CBaseEntity::Pain(int body)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CBaseEntity::Death(int body)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/* Make sure StartFrame calls this */
|
||||
void CBaseEntity::ParentUpdate(void)
|
||||
{
|
||||
|
|
|
@ -14,12 +14,23 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
enum {
|
||||
MONSTER_IDLE,
|
||||
MONSTER_WALK,
|
||||
MONSTER_RUN,
|
||||
MONSTER_DEAD
|
||||
};
|
||||
|
||||
class CBaseMonster:CBaseEntity
|
||||
{
|
||||
int body;
|
||||
int oldnet_body;
|
||||
vector oldnet_velocity;
|
||||
float m_flPitch;
|
||||
int m_iFlags;
|
||||
vector base_mins;
|
||||
vector base_maxs;
|
||||
int base_health;
|
||||
|
||||
void() CBaseMonster;
|
||||
|
||||
|
@ -27,9 +38,10 @@ class CBaseMonster:CBaseEntity
|
|||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void() PlayerUse;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
virtual void() Physics;
|
||||
virtual void() IdleNoise;
|
||||
virtual void() Gib;
|
||||
virtual void(string) Speak;
|
||||
virtual float(entity, float) SendEntity;
|
||||
|
@ -93,6 +105,11 @@ void CBaseMonster::Gib(void)
|
|||
Hide();
|
||||
}
|
||||
|
||||
void CBaseMonster::IdleNoise(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CBaseMonster::Physics(void)
|
||||
{
|
||||
input_movevalues = [0,0,0];
|
||||
|
@ -105,6 +122,8 @@ void CBaseMonster::Physics(void)
|
|||
|
||||
runstandardplayerphysics(this);
|
||||
movetype = MOVETYPE_NONE;
|
||||
|
||||
IdleNoise();
|
||||
}
|
||||
|
||||
void CBaseMonster::touch(void)
|
||||
|
@ -157,21 +176,27 @@ void CBaseMonster::ParentUpdate(void)
|
|||
oldnet_body = body;
|
||||
}
|
||||
|
||||
void CBaseMonster::vPain(int iHitBody)
|
||||
void CBaseMonster::Pain(int iHitBody)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CBaseMonster::vDeath(int iHitBody)
|
||||
void CBaseMonster::Death(int iHitBody)
|
||||
{
|
||||
customphysics = __NULL__;
|
||||
m_iFlags = 0x0;
|
||||
|
||||
if (health < -50) {
|
||||
Gib();
|
||||
return;
|
||||
}
|
||||
|
||||
/* make sure we're not causing any more obituaries */
|
||||
flags &= ~FL_MONSTER;
|
||||
|
||||
/* gibbing action */
|
||||
movetype = MOVETYPE_NONE;
|
||||
solid = SOLID_CORPSE;
|
||||
style = MONSTER_DEAD;
|
||||
}
|
||||
|
||||
void CBaseMonster::Hide(void)
|
||||
|
@ -184,22 +209,26 @@ void CBaseMonster::Hide(void)
|
|||
|
||||
void CBaseMonster::Respawn(void)
|
||||
{
|
||||
flags |= FL_MONSTER;
|
||||
setorigin(this, m_oldOrigin);
|
||||
v_angle[0] = Math_FixDelta(m_oldAngle[0]);
|
||||
v_angle[1] = Math_FixDelta(m_oldAngle[1]);
|
||||
v_angle[2] = Math_FixDelta(m_oldAngle[2]);
|
||||
angles = v_angle;
|
||||
solid = SOLID_SLIDEBOX;
|
||||
movetype = MOVETYPE_NONE;
|
||||
setmodel(this, m_oldModel);
|
||||
setsize(this, VEC_HULL_MIN + [0,0,36], VEC_HULL_MAX + [0,0,36]);
|
||||
movetype = MOVETYPE_WALK;
|
||||
takedamage = DAMAGE_YES;
|
||||
iBleeds = TRUE;
|
||||
customphysics = Physics;
|
||||
health = 100;
|
||||
velocity = [0,0,0];
|
||||
m_iFlags = 0x0;
|
||||
SendFlags = 0xff;
|
||||
style = MONSTER_IDLE;
|
||||
health = base_health;
|
||||
setmodel(this, m_oldModel);
|
||||
setsize(this, base_mins, base_maxs);
|
||||
setorigin(this, m_oldOrigin);
|
||||
}
|
||||
|
||||
void CBaseMonster::CBaseMonster(void)
|
||||
{
|
||||
CBaseEntity::CBaseEntity();
|
||||
precache_model(m_oldModel);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ class CBasePhysics:CBaseEntity
|
|||
virtual void() Respawn;
|
||||
virtual void() touch;
|
||||
virtual void() TouchThink;
|
||||
virtual void(entity, int, int) vPain;
|
||||
virtual void(int) Pain;
|
||||
};
|
||||
|
||||
void CBasePhysics::TouchThink(void)
|
||||
|
@ -63,11 +63,11 @@ void CBasePhysics::touch(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
void CBasePhysics::vPain(entity eAttacker, int iType, int iDamage)
|
||||
void CBasePhysics::Pain(int body)
|
||||
{
|
||||
#ifdef GS_BULLET_PHYSICS
|
||||
makevectors(vectoangles(origin - trace_endpos));
|
||||
physics_addforce(this, v_forward * iDamage, trace_endpos);
|
||||
physics_addforce(this, v_forward * 20, trace_endpos);
|
||||
health = 100000;
|
||||
physics_enable(this, TRUE);
|
||||
#endif
|
||||
|
|
|
@ -30,10 +30,10 @@ class cycler:CBaseTrigger
|
|||
{
|
||||
void() cycler;
|
||||
virtual void() Respawn;
|
||||
virtual void(entity, int, int) vPain;
|
||||
virtual void(int) Pain;
|
||||
};
|
||||
|
||||
void cycler::vPain(entity attacker, int type, int damage)
|
||||
void cycler::Pain(int body)
|
||||
{
|
||||
if (frame >= modelframecount(modelindex)) {
|
||||
frame = 0;
|
||||
|
|
|
@ -85,11 +85,11 @@ class func_breakable:CBaseTrigger
|
|||
virtual void() Trigger;
|
||||
virtual void() PlayerTouch;
|
||||
/*virtual void() PressureDeath;*/
|
||||
virtual void(entity eAttacker, int iType, int iDamage) vPain;
|
||||
virtual void(entity eAttacker, int iType, int iDamage) vDeath;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
};
|
||||
|
||||
void func_breakable::vPain (entity attacker, int type, int damage)
|
||||
void func_breakable::Pain (int body)
|
||||
{
|
||||
if (spawnflags & SF_TRIGGER) {
|
||||
return;
|
||||
|
@ -139,13 +139,13 @@ void func_breakable::Explode(void)
|
|||
CBaseEntity::Hide();
|
||||
}
|
||||
|
||||
void func_breakable::vDeath (entity attacker, int type, int damage)
|
||||
void func_breakable::Death(int body)
|
||||
{
|
||||
if (m_iMaterial == BREAKMT_GLASS_UNBREAKABLE) {
|
||||
return;
|
||||
}
|
||||
health = 0;
|
||||
eActivator = attacker;
|
||||
eActivator = g_eAttacker;
|
||||
|
||||
/* This may seem totally absurd. That's because it is. It's very
|
||||
* unreliable but exploding breakables in close proximity it WILL cause
|
||||
|
@ -165,12 +165,12 @@ void func_breakable::vDeath (entity attacker, int type, int damage)
|
|||
|
||||
void func_breakable::Trigger(void)
|
||||
{
|
||||
func_breakable::vDeath(world, 0, 0);
|
||||
func_breakable::Death(0);
|
||||
}
|
||||
|
||||
/*void func_breakable::PressureDeath(void)
|
||||
{
|
||||
func_breakable::vDeath(m_pressAttacker, m_pressType, m_pressDamage);
|
||||
func_breakable::Death(m_pressAttacker, m_pressType, m_pressDamage);
|
||||
}*/
|
||||
|
||||
void func_breakable::PlayerTouch(void)
|
||||
|
|
|
@ -68,11 +68,11 @@ class func_button:CBaseTrigger
|
|||
virtual void() Blocked;
|
||||
virtual void() Trigger;
|
||||
virtual void() Use;
|
||||
virtual void(entity eAttacker, int iType, int iDamage) vPain;
|
||||
virtual void(entity eAttacker, int iType, int iDamage) vDeath;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
|
||||
virtual void() SetMovementDirection;
|
||||
virtual void(vector vdest, void() func) MoveToDestination;
|
||||
virtual void(vector, void()) MoveToDestination;
|
||||
virtual void() MoveToDestination_End;
|
||||
};
|
||||
|
||||
|
@ -254,12 +254,12 @@ void func_button::Use(void)
|
|||
Trigger();
|
||||
}
|
||||
|
||||
void func_button::vPain (entity attacker, int type, int damage)
|
||||
void func_button::Pain (int body)
|
||||
{
|
||||
Trigger();
|
||||
}
|
||||
|
||||
void func_button::vDeath (entity attacker, int type, int damage)
|
||||
void func_button::Death (int body)
|
||||
{
|
||||
Trigger();
|
||||
}
|
||||
|
|
|
@ -306,7 +306,7 @@ void func_door_rotating::Respawn(void)
|
|||
#ifdef GS_BULLET_PHYSICS
|
||||
takedamage = DAMAGE_YES;
|
||||
health = 100;
|
||||
vDeath = func_door_rotating::Unhinge;
|
||||
Death = func_door_rotating::Unhinge;
|
||||
#endif
|
||||
|
||||
solid = SOLID_BSP;
|
||||
|
|
|
@ -38,7 +38,7 @@ class func_guntarget:CBaseTrigger
|
|||
virtual void() Move;
|
||||
virtual void() Stop;
|
||||
virtual void() Trigger;
|
||||
virtual void(int) vDeath;
|
||||
virtual void(int) Death;
|
||||
virtual int() GetValue;
|
||||
};
|
||||
|
||||
|
@ -103,7 +103,7 @@ void func_guntarget::NextPath(void)
|
|||
}
|
||||
}
|
||||
|
||||
void func_guntarget::vDeath(int iHitBody)
|
||||
void func_guntarget::Death(int iHitBody)
|
||||
{
|
||||
entity a;
|
||||
Stop();
|
||||
|
|
|
@ -141,8 +141,8 @@ void Game_PutClientInServer(void)
|
|||
self.solid = SOLID_SLIDEBOX;
|
||||
self.movetype = MOVETYPE_WALK;
|
||||
self.flags = FL_CLIENT;
|
||||
self.vPain = Player_Pain;
|
||||
self.vDeath = Player_Death;
|
||||
self.Pain = Player_Pain;
|
||||
self.Death = Player_Death;
|
||||
self.iBleeds = TRUE;
|
||||
self.pvsflags = PVSF_IGNOREPVS;
|
||||
self.fSlotGrenade = 0;
|
||||
|
|
|
@ -191,9 +191,9 @@ void Damage_Apply(entity eTarget, entity eAttacker, float iDamage, vector vHitPo
|
|||
|
||||
if (self.health <= 0) {
|
||||
self.health = 0;
|
||||
self.vDeath(trace_surface_id);
|
||||
self.Death(trace_surface_id);
|
||||
} else {
|
||||
self.vPain(trace_surface_id);
|
||||
self.Pain(trace_surface_id);
|
||||
}
|
||||
|
||||
self = eOld;
|
||||
|
|
|
@ -87,8 +87,8 @@ class hostage_entity:CBaseEntity
|
|||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void() PlayerUse;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
virtual void() Physics;
|
||||
};
|
||||
|
||||
|
@ -198,13 +198,13 @@ void hostage_entity::PlayerUse(void)
|
|||
}
|
||||
}
|
||||
|
||||
void hostage_entity::vPain(int iHitBody)
|
||||
void hostage_entity::Pain(int iHitBody)
|
||||
{
|
||||
frame = HOSA_FLINCH + floor(random(0, 5));
|
||||
//m_iScared = TRUE;
|
||||
}
|
||||
|
||||
void hostage_entity::vDeath(int iHitBody)
|
||||
void hostage_entity::Death(int iHitBody)
|
||||
{
|
||||
solid = SOLID_NOT;
|
||||
takedamage = DAMAGE_NO;
|
||||
|
|
|
@ -91,8 +91,8 @@ void Spawn_RespawnClient(float fTeam)
|
|||
self.solid = SOLID_SLIDEBOX;
|
||||
self.movetype = MOVETYPE_WALK;
|
||||
self.flags = FL_CLIENT;
|
||||
self.vPain = Player_Pain;
|
||||
self.vDeath = Player_Death;
|
||||
self.Pain = Player_Pain;
|
||||
self.Death = Player_Death;
|
||||
self.iBleeds = TRUE;
|
||||
self.fSlotC4Bomb = 0; // Clear the C4
|
||||
self.viewzoom = 1.0; // Clear scopes
|
||||
|
|
|
@ -37,8 +37,6 @@ entity g_eAttacker;
|
|||
/* Generic entity fields */
|
||||
.void() PlayerUse;
|
||||
.int iBleeds;
|
||||
.void(int iHitBody) vPain;
|
||||
.void(int iHitBody) vDeath;
|
||||
.entity eUser;
|
||||
.float material;
|
||||
.float armor;
|
||||
|
|
|
@ -19,9 +19,42 @@
|
|||
../logging.c
|
||||
../nodes.c
|
||||
../../gs-entbase/server.src
|
||||
|
||||
../valve/monster_apache.cpp
|
||||
../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
|
||||
../valve/monster_bigmomma.cpp
|
||||
../valve/monster_bloater.cpp
|
||||
../valve/monster_bullchicken.cpp
|
||||
../valve/monster_cockroach.cpp
|
||||
../valve/monster_flyer_flock.cpp
|
||||
../valve/monster_gargantua.cpp
|
||||
../valve/monster_gman.cpp
|
||||
../valve/monster_headcrab.cpp
|
||||
../valve/monster_hevsuit_dead.cpp
|
||||
../valve/monster_houndeye.cpp
|
||||
../valve/monster_human_grunt.cpp
|
||||
../valve/monster_hgrunt_dead.cpp
|
||||
../valve/monster_human_assassin.cpp
|
||||
../valve/monster_ichthyosaur.cpp
|
||||
../valve/monster_leech.cpp
|
||||
../valve/monster_miniturret.cpp
|
||||
../valve/monster_nihilanth.cpp
|
||||
../valve/monster_osprey.cpp
|
||||
../valve/monster_rat.cpp
|
||||
../valve/monster_scientist.cpp
|
||||
../valve/monster_scientist_dead.cpp
|
||||
../valve/monster_sitting_scientist.cpp
|
||||
../valve/monster_scientist.cpp
|
||||
../valve/monster_sentry.cpp
|
||||
../valve/monster_tentacle.cpp
|
||||
../valve/monster_turret.cpp
|
||||
../valve/monster_zombie.cpp
|
||||
|
||||
../../shared/decals.c
|
||||
../../shared/effects.c
|
||||
../../shared/spraylogo.cpp
|
||||
|
|
|
@ -238,8 +238,8 @@ Game_PutClientInServer(void)
|
|||
pl.SendFlags = UPDATE_ALL;
|
||||
|
||||
pl.customphysics = Empty;
|
||||
pl.vPain = Player_Pain;
|
||||
pl.vDeath = Player_Death;
|
||||
pl.Pain = Player_Pain;
|
||||
pl.Death = Player_Death;
|
||||
pl.iBleeds = TRUE;
|
||||
forceinfokey(pl, "*spec", "0");
|
||||
forceinfokey(self, "*deaths", ftos(self.deaths));
|
||||
|
|
|
@ -238,8 +238,8 @@ Game_PutClientInServer(void)
|
|||
pl.SendFlags = UPDATE_ALL;
|
||||
|
||||
pl.customphysics = Empty;
|
||||
pl.vPain = Player_Pain;
|
||||
pl.vDeath = Player_Death;
|
||||
pl.Pain = Player_Pain;
|
||||
pl.Death = Player_Death;
|
||||
pl.iBleeds = TRUE;
|
||||
forceinfokey(pl, "*spec", "0");
|
||||
forceinfokey(self, "*deaths", ftos(self.deaths));
|
||||
|
|
|
@ -195,8 +195,8 @@ void Game_PutClientInServer(void)
|
|||
pl.SendFlags = UPDATE_ALL;
|
||||
|
||||
pl.customphysics = Empty;
|
||||
pl.vPain = Player_Pain;
|
||||
pl.vDeath = Player_Death;
|
||||
pl.Pain = Player_Pain;
|
||||
pl.Death = Player_Death;
|
||||
pl.iBleeds = TRUE;
|
||||
forceinfokey(pl, "*spec", "0");
|
||||
forceinfokey(self, "*deaths", ftos(self.deaths));
|
||||
|
|
|
@ -59,7 +59,7 @@ void Game_Input(void)
|
|||
// Respawn all the entities
|
||||
for (entity a = world; (a = find(a, classname, "func_breakable"));) {
|
||||
func_breakable caw = (func_breakable)a;
|
||||
caw.vDeath(world, 0, 0);
|
||||
caw.Death(0);
|
||||
}
|
||||
bprint(PRINT_HIGH, "BREAK EVERYTHING!\n");
|
||||
}
|
||||
|
|
|
@ -317,8 +317,8 @@ class monster_scientist:CBaseMonster
|
|||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void() PlayerUse;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
virtual void() Physics;
|
||||
virtual void() Scream;
|
||||
virtual void() WarnOthers;
|
||||
|
@ -548,7 +548,7 @@ void monster_scientist::PlayerUse(void)
|
|||
}
|
||||
}
|
||||
|
||||
void monster_scientist::vPain(int iHitBody)
|
||||
void monster_scientist::Pain(int iHitBody)
|
||||
{
|
||||
|
||||
WarnOthers();
|
||||
|
@ -570,7 +570,7 @@ void monster_scientist::vPain(int iHitBody)
|
|||
m_flPainTime = time + 0.25f;
|
||||
}
|
||||
|
||||
void monster_scientist::vDeath(int iHitBody)
|
||||
void monster_scientist::Death(int iHitBody)
|
||||
{
|
||||
int r;
|
||||
r = floor(random(0,sci_snddie.length));
|
||||
|
|
|
@ -83,8 +83,8 @@ CSEv_TeamJoin_f(float f)
|
|||
pl.armor = pl.activeweapon = pl.g_items = 0;
|
||||
|
||||
pl.customphysics = Empty;
|
||||
pl.vPain = Player_Pain;
|
||||
pl.vDeath = Player_Death;
|
||||
pl.Pain = Player_Pain;
|
||||
pl.Death = Player_Death;
|
||||
pl.iBleeds = TRUE;
|
||||
forceinfokey(pl, "*spec", "0");
|
||||
forceinfokey(self, "*deaths", ftos(self.deaths));
|
||||
|
|
|
@ -311,8 +311,8 @@ Game_PutClientInServer(void)
|
|||
pl.SendFlags = UPDATE_ALL;
|
||||
|
||||
pl.customphysics = Empty;
|
||||
pl.vPain = Player_Pain;
|
||||
pl.vDeath = Player_Death;
|
||||
pl.Pain = Player_Pain;
|
||||
pl.Death = Player_Death;
|
||||
pl.iBleeds = TRUE;
|
||||
forceinfokey(pl, "*spec", "0");
|
||||
forceinfokey(self, "*deaths", ftos(self.deaths));
|
||||
|
|
|
@ -88,19 +88,16 @@ Damage_Apply(entity t, entity c, float dmg, int w, int type)
|
|||
/* set this global in case we need it later */
|
||||
g_eAttacker = c;
|
||||
|
||||
entity eOld = self;
|
||||
self = t;
|
||||
CBaseEntity s = (CBaseEntity)t;
|
||||
|
||||
if (self.health <= 0) {
|
||||
if (s.health <= 0) {
|
||||
if (t.flags & FL_MONSTER || t.flags & FL_CLIENT) {
|
||||
Damage_Obituary(c, t, w, 0);
|
||||
}
|
||||
self.vDeath(trace_surface_id);
|
||||
s.Death(trace_surface_id);
|
||||
} else {
|
||||
self.vPain(trace_surface_id);
|
||||
s.Pain(trace_surface_id);
|
||||
}
|
||||
|
||||
self = eOld;
|
||||
}
|
||||
|
||||
/* physical check of whether or not we can trace important parts of an ent */
|
||||
|
|
|
@ -29,5 +29,7 @@ void monster_alien_controller::monster_alien_controller(void)
|
|||
{
|
||||
netname = "Alien Controller";
|
||||
model = "models/controller.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Alien Grunt
|
|||
class monster_alien_grunt:CBaseMonster
|
||||
{
|
||||
void() monster_alien_grunt;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_alien_grunt::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-32,-32,0], [32,32,64]);
|
||||
}
|
||||
|
||||
void monster_alien_grunt::monster_alien_grunt(void)
|
||||
{
|
||||
netname = "Alien Grunt";
|
||||
model = "models/agrunt.mdl";
|
||||
base_mins = [-32,-32,0];
|
||||
base_maxs = [32,32,64];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -29,5 +29,7 @@ void monster_alien_slave::monster_alien_slave(void)
|
|||
{
|
||||
netname = "Alien Slave";
|
||||
model = "models/islave.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -39,5 +39,7 @@ void monster_apache::monster_apache(void)
|
|||
{
|
||||
netname = "Apache";
|
||||
model = "models/apache.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Baby Headcrab
|
|||
class monster_babycrab:CBaseMonster
|
||||
{
|
||||
void() monster_babycrab;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_babycrab::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-16,-16,0], [16,16,36]);
|
||||
}
|
||||
|
||||
void monster_babycrab::monster_babycrab(void)
|
||||
{
|
||||
netname = "Baby Headcrab";
|
||||
model = "models/baby_headcrab.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,36];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Barnacle
|
|||
class monster_barnacle:CBaseMonster
|
||||
{
|
||||
void() monster_barnacle;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_barnacle::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-16,-16,-36], [16,16,0]);
|
||||
}
|
||||
|
||||
void monster_barnacle::monster_barnacle(void)
|
||||
{
|
||||
netname = "Barnacle";
|
||||
model = "models/barnacle.mdl";
|
||||
base_mins = [-16,-16,-36];
|
||||
base_maxs = [16,16,0];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -134,8 +134,8 @@ class monster_barney:CBaseMonster
|
|||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void() PlayerUse;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
virtual void() Physics;
|
||||
virtual void() Scream;
|
||||
virtual void() WarnOthers;
|
||||
|
@ -361,7 +361,7 @@ void monster_barney::PlayerUse(void)
|
|||
}
|
||||
}
|
||||
|
||||
void monster_barney::vPain(int iHitBody)
|
||||
void monster_barney::Pain(int iHitBody)
|
||||
{
|
||||
|
||||
WarnOthers();
|
||||
|
@ -383,7 +383,7 @@ void monster_barney::vPain(int iHitBody)
|
|||
m_flPainTime = time + 0.25f;
|
||||
}
|
||||
|
||||
void monster_barney::vDeath(int iHitBody)
|
||||
void monster_barney::Death(int iHitBody)
|
||||
{
|
||||
int r;
|
||||
r = floor(random(0,barney_snddie.length));
|
||||
|
|
|
@ -27,8 +27,6 @@ class monster_barney_dead:CBaseEntity
|
|||
|
||||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void() Gib;
|
||||
};
|
||||
|
||||
|
@ -39,19 +37,6 @@ void monster_barney_dead::Gib(void)
|
|||
Hide();
|
||||
}
|
||||
|
||||
void monster_barney_dead::vPain(int iHitBody)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void monster_barney_dead::vDeath(int iHitBody)
|
||||
{
|
||||
if (health < -50) {
|
||||
Gib();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void monster_barney_dead::Hide(void)
|
||||
{
|
||||
setmodel(this, "");
|
||||
|
@ -81,7 +66,7 @@ void monster_barney_dead::Respawn(void)
|
|||
void monster_barney_dead::monster_barney_dead(void)
|
||||
{
|
||||
model = "models/barney.mdl";
|
||||
|
||||
|
||||
for (int i = 1; i < (tokenize(__fullspawndata)-1); i += 2) {
|
||||
switch (argv(i)) {
|
||||
case "pose":
|
||||
|
@ -90,7 +75,7 @@ void monster_barney_dead::monster_barney_dead(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
CBaseEntity::CBaseEntity();
|
||||
precache_model(m_oldModel);
|
||||
Respawn();
|
||||
|
|
|
@ -23,18 +23,13 @@ Gonarch
|
|||
class monster_bigmomma:CBaseMonster
|
||||
{
|
||||
void() monster_bigmomma;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_bigmomma::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-95,-95,0], [95,95,190]);
|
||||
}
|
||||
|
||||
void monster_bigmomma::monster_bigmomma(void)
|
||||
{
|
||||
netname = "Gonarch";
|
||||
model = "models/big_mom.mdl";
|
||||
base_mins = [-95,-95,0];
|
||||
base_maxs = [95,95,190];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -29,5 +29,7 @@ void monster_bloater::monster_bloater(void)
|
|||
{
|
||||
netname = "Floater";
|
||||
model = "models/floater.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Bullsquid
|
|||
class monster_bullchicken:CBaseMonster
|
||||
{
|
||||
void() monster_bullchicken;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_bullchicken::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-32,-32,0], [32,32,64]);
|
||||
}
|
||||
|
||||
void monster_bullchicken::monster_bullchicken(void)
|
||||
{
|
||||
netname = "Bullsquid";
|
||||
model = "models/bullsquid.mdl";
|
||||
base_mins = [-32,-32,0];
|
||||
base_maxs = [32,32,64];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Cockroach
|
|||
class monster_cockroach:CBaseMonster
|
||||
{
|
||||
void() monster_cockroach;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_cockroach::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-1,-1,0], [1,1,1]);
|
||||
}
|
||||
|
||||
void monster_cockroach::monster_cockroach(void)
|
||||
{
|
||||
netname = "Cockroach";
|
||||
model = "models/roach.mdl";
|
||||
base_mins = [-1,-1,0];
|
||||
base_maxs = [1,1,1];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Boid
|
|||
class monster_flyer_flock:CBaseMonster
|
||||
{
|
||||
void() monster_flyer_flock;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_flyer_flock::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-16,-16,0], [16,16,16]);
|
||||
}
|
||||
|
||||
void monster_flyer_flock::monster_flyer_flock(void)
|
||||
{
|
||||
netname = "Boid";
|
||||
model = "models/aflock.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,16];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Gargantua
|
|||
class monster_gargantua:CBaseMonster
|
||||
{
|
||||
void() monster_gargantua;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_gargantua::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-32,-32,0], [32,32,128]);
|
||||
}
|
||||
|
||||
void monster_gargantua::monster_gargantua(void)
|
||||
{
|
||||
netname = "Gargantua";
|
||||
model = "models/garg.mdl";
|
||||
base_mins = [-32,-32,0];
|
||||
base_maxs = [32,32,128];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -29,7 +29,6 @@ class monster_gman:CBaseMonster
|
|||
void monster_gman::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
movetype = MOVETYPE_NONE;
|
||||
takedamage = DAMAGE_NO;
|
||||
iBleeds = FALSE;
|
||||
}
|
||||
|
@ -38,5 +37,7 @@ void monster_gman::monster_gman(void)
|
|||
{
|
||||
netname = "G-Man";
|
||||
model = "models/gman.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Headcrab
|
|||
class monster_headcrab:CBaseMonster
|
||||
{
|
||||
void() monster_headcrab;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_headcrab::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-16,-16,0], [16,16,36]);
|
||||
}
|
||||
|
||||
void monster_headcrab::monster_headcrab(void)
|
||||
{
|
||||
netname = "Headcrab";
|
||||
model = "models/headcrab.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,36];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -27,8 +27,6 @@ class monster_hevsuit_dead:CBaseMonster
|
|||
|
||||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void() Gib;
|
||||
};
|
||||
|
||||
|
@ -39,19 +37,6 @@ void monster_hevsuit_dead::Gib(void)
|
|||
Hide();
|
||||
}
|
||||
|
||||
void monster_hevsuit_dead::vPain(int iHitBody)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void monster_hevsuit_dead::vDeath(int iHitBody)
|
||||
{
|
||||
if (health < -50) {
|
||||
Gib();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void monster_hevsuit_dead::Hide(void)
|
||||
{
|
||||
setmodel(this, "");
|
||||
|
|
|
@ -27,8 +27,6 @@ class monster_hgrunt_dead:CBaseMonster
|
|||
|
||||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void() Gib;
|
||||
};
|
||||
|
||||
|
@ -39,19 +37,6 @@ void monster_hgrunt_dead::Gib(void)
|
|||
Hide();
|
||||
}
|
||||
|
||||
void monster_hgrunt_dead::vPain(int iHitBody)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void monster_hgrunt_dead::vDeath(int iHitBody)
|
||||
{
|
||||
if (health < -50) {
|
||||
Gib();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void monster_hgrunt_dead::Hide(void)
|
||||
{
|
||||
setmodel(this, "");
|
||||
|
|
|
@ -23,18 +23,13 @@ Houndeye
|
|||
class monster_houndeye:CBaseMonster
|
||||
{
|
||||
void() monster_houndeye;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_houndeye::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-16,-16,0], [16,16,36]);
|
||||
}
|
||||
|
||||
void monster_houndeye::monster_houndeye(void)
|
||||
{
|
||||
netname = "Houndeye";
|
||||
model = "models/houndeye.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,36];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -29,5 +29,7 @@ void monster_human_assassin::monster_human_assassin(void)
|
|||
{
|
||||
netname = "Assassin";
|
||||
model = "models/hassassin.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -29,5 +29,7 @@ void monster_human_grunt::monster_human_grunt(void)
|
|||
{
|
||||
netname = "Grunt";
|
||||
model = "models/hgrunt.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Ichthyosaur
|
|||
class monster_ichthyosaur:CBaseMonster
|
||||
{
|
||||
void() monster_ichthyosaur;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_ichthyosaur::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-32,-32,0], [32,32,64]);
|
||||
}
|
||||
|
||||
void monster_ichthyosaur::monster_ichthyosaur(void)
|
||||
{
|
||||
netname = "Ichthyosaur";
|
||||
model = "models/icky.mdl";
|
||||
base_mins = [-32,-32,0];
|
||||
base_maxs = [32,32,64];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Leech
|
|||
class monster_leech:CBaseMonster
|
||||
{
|
||||
void() monster_leech;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_leech::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-6,-6,0], [6,6,6]);
|
||||
}
|
||||
|
||||
void monster_leech::monster_leech(void)
|
||||
{
|
||||
netname = "Leech";
|
||||
model = "models/leech.mdl";
|
||||
base_mins = [-6,-6,0];
|
||||
base_maxs = [6,6,6];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Automatic Turret (small)
|
|||
class monster_miniturret:CBaseMonster
|
||||
{
|
||||
void() monster_miniturret;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_miniturret::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-16,-16,-32], [16,16,32]);
|
||||
}
|
||||
|
||||
void monster_miniturret::monster_miniturret(void)
|
||||
{
|
||||
netname = "Mini-Turret";
|
||||
model = "models/miniturret.mdl";
|
||||
base_mins = [-16,-16,-32];
|
||||
base_maxs = [16,16,32];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -23,18 +23,13 @@ Nihilanth
|
|||
class monster_nihilanth:CBaseMonster
|
||||
{
|
||||
void() monster_nihilanth;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_nihilanth::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-192,-192,-32], [192,192,384]);
|
||||
}
|
||||
|
||||
void monster_nihilanth::monster_nihilanth(void)
|
||||
{
|
||||
netname = "Nihilanth";
|
||||
model = "models/nihilanth.mdl";
|
||||
base_mins = [-192,-192,-32];
|
||||
base_maxs = [192,192,384];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -29,15 +29,15 @@ class monster_osprey:CBaseMonster
|
|||
void monster_osprey::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
movetype = MOVETYPE_NONE;
|
||||
takedamage = DAMAGE_NO;
|
||||
iBleeds = FALSE;
|
||||
setsize(this, [-480,-480,-112], [480,480,24]);
|
||||
}
|
||||
|
||||
void monster_osprey::monster_osprey(void)
|
||||
{
|
||||
netname = "Osprey";
|
||||
model = "models/osprey.mdl";
|
||||
base_mins = [-480,-480,-112];
|
||||
base_maxs = [480,480,24];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -20,25 +20,16 @@ Rat
|
|||
|
||||
*/
|
||||
|
||||
class monster_rat:CBaseEntity
|
||||
class monster_rat:CBaseMonster
|
||||
{
|
||||
void() monster_rat;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_rat::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-6,-6,-0], [6,6,6]);
|
||||
}
|
||||
|
||||
void monster_rat::monster_rat(void)
|
||||
{
|
||||
netname = "Rat";
|
||||
CBaseEntity::CBaseEntity();
|
||||
precache_model("models/bigrat.mdl");
|
||||
solid = SOLID_SLIDEBOX;
|
||||
movetype = MOVETYPE_WALK;
|
||||
setmodel(this, "models/bigrat.mdl");
|
||||
setorigin(this, origin);
|
||||
model = "models/bigrat.mdl";
|
||||
base_mins = [-6,-6,-0];
|
||||
base_maxs = [6,6,6];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -21,10 +21,10 @@ Scientist
|
|||
*/
|
||||
|
||||
enum {
|
||||
SCI_IDLE,
|
||||
SCI_WALK,
|
||||
SCI_RUN,
|
||||
SCI_DEAD
|
||||
MONSTER_IDLE,
|
||||
MONSTER_WALK,
|
||||
MONSTER_RUN,
|
||||
MONSTER_DEAD
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -320,8 +320,8 @@ class monster_scientist:CBaseMonster
|
|||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void() PlayerUse;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
virtual void() Physics;
|
||||
virtual void() Scream;
|
||||
virtual void() WarnOthers;
|
||||
|
@ -371,7 +371,7 @@ void monster_scientist::Physics(void)
|
|||
input_impulse = 0;
|
||||
input_buttons = 0;
|
||||
|
||||
if (style != SCI_DEAD) {
|
||||
if (style != MONSTER_DEAD) {
|
||||
if (!(m_iFlags & SCIF_SEEN)) {
|
||||
for (entity b = world; (b = find(b, ::classname, "player"));) {
|
||||
/* Find players in a 256 unit radius */
|
||||
|
@ -551,7 +551,7 @@ void monster_scientist::PlayerUse(void)
|
|||
}
|
||||
}
|
||||
|
||||
void monster_scientist::vPain(int iHitBody)
|
||||
void monster_scientist::Pain(int iHitBody)
|
||||
{
|
||||
|
||||
WarnOthers();
|
||||
|
@ -573,7 +573,7 @@ void monster_scientist::vPain(int iHitBody)
|
|||
m_flPainTime = time + 0.25f;
|
||||
}
|
||||
|
||||
void monster_scientist::vDeath(int iHitBody)
|
||||
void monster_scientist::Death(int iHitBody)
|
||||
{
|
||||
int r;
|
||||
r = floor(random(0,sci_snddie.length));
|
||||
|
@ -598,9 +598,9 @@ void monster_scientist::vDeath(int iHitBody)
|
|||
solid = SOLID_CORPSE;
|
||||
//takedamage = DAMAGE_NO;
|
||||
|
||||
if (style != SCI_DEAD) {
|
||||
if (style != MONSTER_DEAD) {
|
||||
frame = SCIA_DIE_SIMPLE + floor(random(0, 6));
|
||||
style = SCI_DEAD;
|
||||
style = MONSTER_DEAD;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -629,7 +629,7 @@ void monster_scientist::Respawn(void)
|
|||
m_eUser = world;
|
||||
takedamage = DAMAGE_YES;
|
||||
iBleeds = TRUE;
|
||||
style = SCI_IDLE;
|
||||
style = MONSTER_IDLE;
|
||||
customphysics = Physics;
|
||||
frame = SCIA_IDLE1;
|
||||
SendFlags |= NPC_FRAME;
|
||||
|
|
|
@ -37,8 +37,6 @@ class monster_scientist_dead:CBaseMonster
|
|||
|
||||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void() Gib;
|
||||
};
|
||||
|
||||
|
@ -49,19 +47,6 @@ void monster_scientist_dead::Gib(void)
|
|||
Hide();
|
||||
}
|
||||
|
||||
void monster_scientist_dead::vPain(int iHitBody)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void monster_scientist_dead::vDeath(int iHitBody)
|
||||
{
|
||||
if (health < -50) {
|
||||
Gib();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void monster_scientist_dead::Hide(void)
|
||||
{
|
||||
setmodel(this, "");
|
||||
|
|
|
@ -29,5 +29,7 @@ void monster_sentry::monster_sentry(void)
|
|||
{
|
||||
netname = "Sentry";
|
||||
model = "models/sentry.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -37,8 +37,8 @@ class monster_sitting_scientist:CBaseMonster
|
|||
|
||||
virtual void() Hide;
|
||||
virtual void() Respawn;
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
virtual void() Gib;
|
||||
};
|
||||
|
||||
|
@ -49,12 +49,12 @@ void monster_sitting_scientist::Gib(void)
|
|||
Hide();
|
||||
}
|
||||
|
||||
void monster_sitting_scientist::vPain(int iHitBody)
|
||||
void monster_sitting_scientist::Pain(int iHitBody)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void monster_sitting_scientist::vDeath(int iHitBody)
|
||||
void monster_sitting_scientist::Death(int iHitBody)
|
||||
{
|
||||
if (health < -50) {
|
||||
Gib();
|
||||
|
|
|
@ -23,18 +23,13 @@ Tentacle
|
|||
class monster_tentacle:CBaseMonster
|
||||
{
|
||||
void() monster_tentacle;
|
||||
virtual void() Respawn;
|
||||
};
|
||||
|
||||
void monster_tentacle::Respawn(void)
|
||||
{
|
||||
CBaseMonster::Respawn();
|
||||
setsize(this, [-32,-32,0], [32,32,64]);
|
||||
}
|
||||
|
||||
void monster_tentacle::monster_tentacle(void)
|
||||
{
|
||||
netname = "Tentacle";
|
||||
model = "models/tentacle2.mdl";
|
||||
base_mins = [-32,-32,0];
|
||||
base_maxs = [32,32,64];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -29,5 +29,7 @@ void monster_turret::monster_turret(void)
|
|||
{
|
||||
netname = "Turret";
|
||||
model = "models/turret.mdl";
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -67,31 +67,58 @@ enum {
|
|||
ZOMA_RISESNACK
|
||||
};
|
||||
|
||||
enum {
|
||||
ZOMB_IDLE,
|
||||
ZOMB_WALK,
|
||||
ZOMB_DEAD
|
||||
string zom_sndattack[] = {
|
||||
"zombie/zo_attack1.wav",
|
||||
"zombie/zo_attack2.wav"
|
||||
};
|
||||
|
||||
string zom_sndclaw[] = {
|
||||
"zombie/claw_strike1.wav",
|
||||
"zombie/claw_strike2.wav",
|
||||
"zombie/claw_strike3.wav"
|
||||
};
|
||||
|
||||
string zom_sndclawmiss[] = {
|
||||
"zombie/claw_miss1.wav",
|
||||
"zombie/claw_miss2.wav"
|
||||
};
|
||||
|
||||
string zom_sndidle[] = {
|
||||
"zombie/zo_idle1.wav",
|
||||
"zombie/zo_idle2.wav",
|
||||
"zombie/zo_idle3.wav",
|
||||
"zombie/zo_idle4.wav"
|
||||
};
|
||||
|
||||
string zom_sndpain[] = {
|
||||
"zombie/zo_pain1.wav",
|
||||
"zombie/zo_pain2.wav"
|
||||
};
|
||||
|
||||
string zom_sndsee[] = {
|
||||
"zombie/zo_alert10.wav",
|
||||
"zombie/zo_alert20.wav",
|
||||
"zombie/zo_alert30.wav"
|
||||
};
|
||||
|
||||
class monster_zombie:CBaseMonster
|
||||
{
|
||||
float m_flScaredTime;
|
||||
float m_flScreamTime;
|
||||
float m_flIdleTime;
|
||||
float m_flPainTime;
|
||||
float m_flChangePath;
|
||||
float m_flTraceTime;
|
||||
float m_flPitch;
|
||||
int m_iFlags;
|
||||
|
||||
void() monster_zombie;
|
||||
|
||||
virtual void(int) vPain;
|
||||
virtual void(int) vDeath;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
virtual void(void) IdleNoise;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
void monster_zombie::vPain(int iHitBody)
|
||||
void
|
||||
monster_zombie::Pain(int iHitBody)
|
||||
{
|
||||
CBaseMonster::Pain(iHitBody);
|
||||
|
||||
if (m_flPainTime > time) {
|
||||
return;
|
||||
}
|
||||
|
@ -100,64 +127,87 @@ void monster_zombie::vPain(int iHitBody)
|
|||
return;
|
||||
}
|
||||
|
||||
int rand = floor(random(0,sci_sndpain.length));
|
||||
Speak(sci_sndpain[rand]);
|
||||
int rand = floor(random(0,zom_sndpain.length));
|
||||
Speak(zom_sndpain[rand]);
|
||||
frame = ZOMA_FLINCH + floor(random(0, 2));
|
||||
m_flPainTime = time + 0.25f;
|
||||
}
|
||||
|
||||
void monster_zombie::vDeath(int iHitBody)
|
||||
void
|
||||
monster_zombie::Death(int iHitBody)
|
||||
{
|
||||
think = Respawn;
|
||||
nextthink = time + 10.0f;
|
||||
/* if we're already dead (corpse) don't change animations */
|
||||
if (style != MONSTER_DEAD) {
|
||||
/* headshots == different animation */
|
||||
if (iHitBody == BODY_HEAD) {
|
||||
if (random() < 0.5) {
|
||||
frame = ZOMA_DIEHS;
|
||||
} else {
|
||||
frame = ZOMA_DIEHS2;
|
||||
}
|
||||
} else {
|
||||
frame = ZOMA_DIE + floor(random(0, 3));
|
||||
}
|
||||
|
||||
SendFlags |= NPC_FRAME;
|
||||
m_iFlags = 0x0;
|
||||
/* the sound */
|
||||
int rand = floor(random(0,zom_sndpain.length));
|
||||
Speak(zom_sndpain[rand]);
|
||||
}
|
||||
|
||||
if (health < -50) {
|
||||
Gib();
|
||||
/* set the functional differences */
|
||||
CBaseMonster::Death(iHitBody);
|
||||
}
|
||||
|
||||
void
|
||||
monster_zombie::IdleNoise(void)
|
||||
{
|
||||
/* don't make noise if we're dead (corpse) */
|
||||
if (style == MONSTER_DEAD) {
|
||||
return;
|
||||
}
|
||||
|
||||
flags &= ~FL_MONSTER;
|
||||
movetype = MOVETYPE_NONE;
|
||||
solid = SOLID_CORPSE;
|
||||
|
||||
if (style != ZOMB_DEAD) {
|
||||
frame = ZOMA_DIE + floor(random(0, 3));
|
||||
style = ZOMB_DEAD;
|
||||
if (m_flIdleTime > time) {
|
||||
return;
|
||||
}
|
||||
m_flIdleTime = time + 2.0f + random(0,5);
|
||||
|
||||
int rand = floor(random(0, zom_sndidle.length));
|
||||
Speak(zom_sndidle[rand]);
|
||||
}
|
||||
|
||||
void monster_zombie::Respawn(void)
|
||||
void
|
||||
monster_zombie::Respawn(void)
|
||||
{
|
||||
v_angle[0] = Math_FixDelta(m_oldAngle[0]);
|
||||
v_angle[1] = Math_FixDelta(m_oldAngle[1]);
|
||||
v_angle[2] = Math_FixDelta(m_oldAngle[2]);
|
||||
|
||||
setorigin(this, m_oldOrigin);
|
||||
angles = v_angle;
|
||||
solid = SOLID_SLIDEBOX;
|
||||
movetype = MOVETYPE_WALK;
|
||||
setmodel(this, m_oldModel);
|
||||
setsize(this, VEC_HULL_MIN + [0,0,36], VEC_HULL_MAX + [0,0,36]);
|
||||
takedamage = DAMAGE_YES;
|
||||
iBleeds = TRUE;
|
||||
customphysics = Physics;
|
||||
CBaseMonster::Respawn();
|
||||
frame = ZOMA_IDLE;
|
||||
SendFlags |= NPC_FRAME;
|
||||
health = 50;
|
||||
velocity = [0,0,0];
|
||||
m_iFlags = 0x0;
|
||||
SendFlags = 0xff;
|
||||
style = ZOMB_IDLE;
|
||||
netname = "Zombie";
|
||||
}
|
||||
|
||||
void monster_zombie::monster_zombie(void)
|
||||
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 < zom_sndclaw.length; i++) {
|
||||
precache_sound(zom_sndclaw[i]);
|
||||
}
|
||||
for (int i = 0; i < zom_sndclawmiss.length; i++) {
|
||||
precache_sound(zom_sndclawmiss[i]);
|
||||
}
|
||||
for (int i = 0; i < zom_sndidle.length; i++) {
|
||||
precache_sound(zom_sndidle[i]);
|
||||
}
|
||||
for (int i = 0; i < zom_sndpain.length; i++) {
|
||||
precache_sound(zom_sndpain[i]);
|
||||
}
|
||||
for (int i = 0; i < zom_sndsee.length; i++) {
|
||||
precache_sound(zom_sndsee[i]);
|
||||
}
|
||||
|
||||
netname = "Zombie";
|
||||
model = "models/zombie.mdl";
|
||||
CBaseEntity::CBaseEntity();
|
||||
precache_model(m_oldModel);
|
||||
Respawn();
|
||||
base_health = 50;
|
||||
base_mins = [-16,-16,0];
|
||||
base_maxs = [16,16,72];
|
||||
CBaseMonster::CBaseMonster();
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
|
||||
int input_sequence;
|
||||
class player
|
||||
class player:CBaseEntity
|
||||
{
|
||||
float health;
|
||||
float armor;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
|
||||
int input_sequence;
|
||||
class player
|
||||
class player:CBaseEntity
|
||||
{
|
||||
float health;
|
||||
float armor;
|
||||
|
|
|
@ -130,8 +130,7 @@ void
|
|||
penguin_die(int i)
|
||||
{
|
||||
/* clear this first to avoid infinite recursion */
|
||||
self.customphysics = __NULL__;
|
||||
self.vDeath = __NULL__;
|
||||
self.health = 0;
|
||||
|
||||
/* now we can explodededededed */
|
||||
Effect_CreateExplosion(self.origin);
|
||||
|
@ -155,7 +154,7 @@ penguin_pain(int i)
|
|||
void
|
||||
w_penguin_deploy(void)
|
||||
{
|
||||
entity pingu = spawn();
|
||||
CBaseEntity pingu = spawn(CBaseEntity);
|
||||
pingu.owner = self;
|
||||
pingu.goalentity = self;
|
||||
pingu.netname = "Penguin";
|
||||
|
@ -169,10 +168,10 @@ w_penguin_deploy(void)
|
|||
pingu.customphysics = penguin_ai;
|
||||
pingu.angles = self.angles;
|
||||
pingu.health = 20;
|
||||
pingu.vPain = penguin_pain;
|
||||
pingu.Pain = penguin_pain;
|
||||
pingu.takedamage = DAMAGE_YES;
|
||||
pingu.aiment = __NULL__;
|
||||
pingu.vDeath = penguin_die;
|
||||
pingu.Death = penguin_die;
|
||||
pingu.weapon = 3.0f;
|
||||
penguin_squeak(pingu);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
|
||||
int input_sequence;
|
||||
class player
|
||||
class player:CBaseEntity
|
||||
{
|
||||
float health;
|
||||
float armor;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
|
||||
int input_sequence;
|
||||
class player
|
||||
class player:CBaseEntity
|
||||
{
|
||||
float health;
|
||||
float armor;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
|
||||
int input_sequence;
|
||||
class player
|
||||
class player:CBaseEntity
|
||||
{
|
||||
float health;
|
||||
float armor;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
|
||||
noref int input_sequence;
|
||||
class player
|
||||
class player:CBaseEntity
|
||||
{
|
||||
float health;
|
||||
float armor;
|
||||
|
|
|
@ -115,7 +115,7 @@ void w_snark_deploy(void)
|
|||
remove(self);
|
||||
}
|
||||
static void snark_pain(int i) { }
|
||||
entity snark = spawn();
|
||||
CBaseEntity snark = spawn(CBaseEntity);
|
||||
snark.owner = self;
|
||||
snark.goalentity = self;
|
||||
snark.netname = "Snark";
|
||||
|
@ -129,10 +129,10 @@ void w_snark_deploy(void)
|
|||
snark.customphysics = snark_ai;
|
||||
snark.angles = self.angles;
|
||||
snark.health = 20;
|
||||
snark.vPain = snark_pain;
|
||||
snark.Pain = snark_pain;
|
||||
snark.takedamage = DAMAGE_YES;
|
||||
snark.aiment = __NULL__;
|
||||
snark.vDeath = snark_die;
|
||||
snark.Death = snark_die;
|
||||
snark.weapon = 1.0f;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -82,41 +82,44 @@ void w_tripmine_holster(void)
|
|||
#ifdef SSQC
|
||||
void w_tripmine_trip(int walkthrough)
|
||||
{
|
||||
CBaseEntity mine = (CBaseEntity)self;
|
||||
|
||||
if (!walkthrough) {
|
||||
self.real_owner = g_eAttacker;
|
||||
mine.real_owner = g_eAttacker;
|
||||
}
|
||||
|
||||
/* This is to prevent infinite loops in Damage_Radius */
|
||||
self.vDeath =
|
||||
self.vPain = __NULL__;
|
||||
self.takedamage = DAMAGE_NO;
|
||||
mine.Death =
|
||||
mine.Pain = __NULL__;
|
||||
mine.takedamage = DAMAGE_NO;
|
||||
|
||||
Effect_CreateExplosion(self.origin);
|
||||
Damage_Radius(self.origin, self.real_owner, 150, 150 * 2.5f, TRUE, WEAPON_TRIPMINE);
|
||||
sound(self, CHAN_WEAPON, sprintf( "weapons/explode%d.wav", floor( random() * 2 ) + 3 ), 1, ATTN_NORM);
|
||||
remove(self);
|
||||
Effect_CreateExplosion(mine.origin);
|
||||
Damage_Radius(mine.origin, mine.real_owner, 150, 150 * 2.5f, TRUE, WEAPON_TRIPMINE);
|
||||
sound(mine, CHAN_WEAPON, sprintf( "weapons/explode%d.wav", floor( random() * 2 ) + 3 ), 1, ATTN_NORM);
|
||||
remove(mine);
|
||||
}
|
||||
void w_tripmine_ready(void)
|
||||
{
|
||||
makevectors(self.angles);
|
||||
traceline(self.origin, self.origin + v_forward * 2048, FALSE, self);
|
||||
CBaseEntity mine = (CBaseEntity)self;
|
||||
makevectors(mine.angles);
|
||||
traceline(mine.origin, mine.origin + v_forward * 2048, FALSE, mine);
|
||||
|
||||
if (!self.health) {
|
||||
self.SendFlags = 1;
|
||||
self.health = 1;
|
||||
self.vDeath =
|
||||
self.vPain = w_tripmine_trip;
|
||||
self.takedamage = DAMAGE_YES;
|
||||
self.solid = SOLID_BBOX;
|
||||
setsize(self, [-8,-8,-8], [8,8,8]);
|
||||
self.armor = trace_plane_dist;
|
||||
sound(self, CHAN_WEAPON, "weapons/mine_activate.wav", 1, ATTN_NORM);
|
||||
if (!mine.health) {
|
||||
mine.SendFlags = 1;
|
||||
mine.health = 1;
|
||||
mine.Death =
|
||||
mine.Pain = w_tripmine_trip;
|
||||
mine.takedamage = DAMAGE_YES;
|
||||
mine.solid = SOLID_BBOX;
|
||||
setsize(mine, [-8,-8,-8], [8,8,8]);
|
||||
mine.armor = trace_plane_dist;
|
||||
sound(mine, CHAN_WEAPON, "weapons/mine_activate.wav", 1, ATTN_NORM);
|
||||
}
|
||||
|
||||
if (trace_plane_dist != self.armor) {
|
||||
if (trace_plane_dist != mine.armor) {
|
||||
w_tripmine_trip(1);
|
||||
}
|
||||
self.nextthink = time;
|
||||
mine.nextthink = time;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue