From 2bb8bd00cf085eefffef6d142e3794b842c9affe Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Wed, 25 Mar 2020 22:35:05 +0100 Subject: [PATCH] Moved Death and Pain methods into CBaseEntity. --- src/gs-entbase/server/baseentity.cpp | 12 ++ src/gs-entbase/server/basemonster.cpp | 53 ++++-- src/gs-entbase/server/basephysics.cpp | 6 +- src/gs-entbase/server/cycler.cpp | 4 +- src/gs-entbase/server/func_breakable.cpp | 14 +- src/gs-entbase/server/func_button.cpp | 10 +- src/gs-entbase/server/func_door_rotating.cpp | 2 +- src/gs-entbase/server/func_guntarget.cpp | 4 +- src/server/cstrike/client.c | 4 +- src/server/cstrike/damage.c | 4 +- src/server/cstrike/hostage_entity.cpp | 8 +- src/server/cstrike/spawn.c | 4 +- src/server/defs.h | 2 - src/server/hunger/progs.src | 35 +++- src/server/poke646/client.c | 4 +- src/server/rewolf/client.c | 4 +- src/server/scihunt/client.c | 4 +- src/server/scihunt/input.c | 2 +- src/server/scihunt/monster_scientist.cpp | 8 +- src/server/tfc/spawn.c | 4 +- src/server/valve/client.c | 4 +- src/server/valve/damage.c | 11 +- src/server/valve/monster_alien_controller.cpp | 2 + src/server/valve/monster_alien_grunt.cpp | 9 +- src/server/valve/monster_alien_slave.cpp | 2 + src/server/valve/monster_apache.cpp | 2 + src/server/valve/monster_babycrab.cpp | 9 +- src/server/valve/monster_barnacle.cpp | 9 +- src/server/valve/monster_barney.cpp | 8 +- src/server/valve/monster_barney_dead.cpp | 19 +-- src/server/valve/monster_bigmomma.cpp | 9 +- src/server/valve/monster_bloater.cpp | 2 + src/server/valve/monster_bullchicken.cpp | 9 +- src/server/valve/monster_cockroach.cpp | 9 +- src/server/valve/monster_flyer_flock.cpp | 9 +- src/server/valve/monster_gargantua.cpp | 9 +- src/server/valve/monster_gman.cpp | 3 +- src/server/valve/monster_headcrab.cpp | 9 +- src/server/valve/monster_hevsuit_dead.cpp | 15 -- src/server/valve/monster_hgrunt_dead.cpp | 15 -- src/server/valve/monster_houndeye.cpp | 9 +- src/server/valve/monster_human_assassin.cpp | 2 + src/server/valve/monster_human_grunt.cpp | 2 + src/server/valve/monster_ichthyosaur.cpp | 9 +- src/server/valve/monster_leech.cpp | 9 +- src/server/valve/monster_miniturret.cpp | 9 +- src/server/valve/monster_nihilanth.cpp | 9 +- src/server/valve/monster_osprey.cpp | 4 +- src/server/valve/monster_rat.cpp | 19 +-- src/server/valve/monster_scientist.cpp | 24 +-- src/server/valve/monster_scientist_dead.cpp | 15 -- src/server/valve/monster_sentry.cpp | 2 + .../valve/monster_sitting_scientist.cpp | 8 +- src/server/valve/monster_tentacle.cpp | 9 +- src/server/valve/monster_turret.cpp | 2 + src/server/valve/monster_zombie.cpp | 158 ++++++++++++------ src/shared/cstrike/player.cpp | 2 +- src/shared/gearbox/player.cpp | 2 +- src/shared/gearbox/w_penguin.c | 9 +- src/shared/hunger/player.cpp | 2 +- src/shared/rewolf/player.cpp | 2 +- src/shared/scihunt/player.cpp | 2 +- src/shared/valve/player.cpp | 2 +- src/shared/valve/w_snark.c | 6 +- src/shared/valve/w_tripmine.c | 47 +++--- 65 files changed, 355 insertions(+), 361 deletions(-) diff --git a/src/gs-entbase/server/baseentity.cpp b/src/gs-entbase/server/baseentity.cpp index bf25a722..dfbde098 100644 --- a/src/gs-entbase/server/baseentity.cpp +++ b/src/gs-entbase/server/baseentity.cpp @@ -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) { diff --git a/src/gs-entbase/server/basemonster.cpp b/src/gs-entbase/server/basemonster.cpp index 02b07495..8a1d721d 100644 --- a/src/gs-entbase/server/basemonster.cpp +++ b/src/gs-entbase/server/basemonster.cpp @@ -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); } diff --git a/src/gs-entbase/server/basephysics.cpp b/src/gs-entbase/server/basephysics.cpp index 0590ffa4..73878ce5 100644 --- a/src/gs-entbase/server/basephysics.cpp +++ b/src/gs-entbase/server/basephysics.cpp @@ -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 diff --git a/src/gs-entbase/server/cycler.cpp b/src/gs-entbase/server/cycler.cpp index 27ce37e6..727f92c7 100644 --- a/src/gs-entbase/server/cycler.cpp +++ b/src/gs-entbase/server/cycler.cpp @@ -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; diff --git a/src/gs-entbase/server/func_breakable.cpp b/src/gs-entbase/server/func_breakable.cpp index 4ee61619..0d8af486 100755 --- a/src/gs-entbase/server/func_breakable.cpp +++ b/src/gs-entbase/server/func_breakable.cpp @@ -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) diff --git a/src/gs-entbase/server/func_button.cpp b/src/gs-entbase/server/func_button.cpp index 4f41ee8c..d8b1bc00 100644 --- a/src/gs-entbase/server/func_button.cpp +++ b/src/gs-entbase/server/func_button.cpp @@ -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(); } diff --git a/src/gs-entbase/server/func_door_rotating.cpp b/src/gs-entbase/server/func_door_rotating.cpp index 9b8fa157..cf23bc44 100644 --- a/src/gs-entbase/server/func_door_rotating.cpp +++ b/src/gs-entbase/server/func_door_rotating.cpp @@ -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; diff --git a/src/gs-entbase/server/func_guntarget.cpp b/src/gs-entbase/server/func_guntarget.cpp index 879f2997..ed871c57 100644 --- a/src/gs-entbase/server/func_guntarget.cpp +++ b/src/gs-entbase/server/func_guntarget.cpp @@ -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(); diff --git a/src/server/cstrike/client.c b/src/server/cstrike/client.c index 11c9fc77..a7fb160e 100644 --- a/src/server/cstrike/client.c +++ b/src/server/cstrike/client.c @@ -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; diff --git a/src/server/cstrike/damage.c b/src/server/cstrike/damage.c index 5b8f3660..315828bd 100644 --- a/src/server/cstrike/damage.c +++ b/src/server/cstrike/damage.c @@ -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; diff --git a/src/server/cstrike/hostage_entity.cpp b/src/server/cstrike/hostage_entity.cpp index 78cc4b33..efcfe509 100644 --- a/src/server/cstrike/hostage_entity.cpp +++ b/src/server/cstrike/hostage_entity.cpp @@ -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; diff --git a/src/server/cstrike/spawn.c b/src/server/cstrike/spawn.c index 267909ed..67727552 100644 --- a/src/server/cstrike/spawn.c +++ b/src/server/cstrike/spawn.c @@ -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 diff --git a/src/server/defs.h b/src/server/defs.h index 090b6438..db19f889 100644 --- a/src/server/defs.h +++ b/src/server/defs.h @@ -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; diff --git a/src/server/hunger/progs.src b/src/server/hunger/progs.src index 768b4ca0..c20c6afd 100755 --- a/src/server/hunger/progs.src +++ b/src/server/hunger/progs.src @@ -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 diff --git a/src/server/poke646/client.c b/src/server/poke646/client.c index f2c03d1a..47244b67 100644 --- a/src/server/poke646/client.c +++ b/src/server/poke646/client.c @@ -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)); diff --git a/src/server/rewolf/client.c b/src/server/rewolf/client.c index 90cd5fc2..8cdcd433 100644 --- a/src/server/rewolf/client.c +++ b/src/server/rewolf/client.c @@ -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)); diff --git a/src/server/scihunt/client.c b/src/server/scihunt/client.c index 3d164b54..aa02a3a2 100644 --- a/src/server/scihunt/client.c +++ b/src/server/scihunt/client.c @@ -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)); diff --git a/src/server/scihunt/input.c b/src/server/scihunt/input.c index 64df962f..a44e762d 100644 --- a/src/server/scihunt/input.c +++ b/src/server/scihunt/input.c @@ -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"); } diff --git a/src/server/scihunt/monster_scientist.cpp b/src/server/scihunt/monster_scientist.cpp index e1a2d1b4..4b532c6b 100644 --- a/src/server/scihunt/monster_scientist.cpp +++ b/src/server/scihunt/monster_scientist.cpp @@ -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)); diff --git a/src/server/tfc/spawn.c b/src/server/tfc/spawn.c index b4a04f0d..b2df3d32 100644 --- a/src/server/tfc/spawn.c +++ b/src/server/tfc/spawn.c @@ -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)); diff --git a/src/server/valve/client.c b/src/server/valve/client.c index 318737d4..df57a975 100644 --- a/src/server/valve/client.c +++ b/src/server/valve/client.c @@ -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)); diff --git a/src/server/valve/damage.c b/src/server/valve/damage.c index a9757fe9..ef4019b8 100644 --- a/src/server/valve/damage.c +++ b/src/server/valve/damage.c @@ -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 */ diff --git a/src/server/valve/monster_alien_controller.cpp b/src/server/valve/monster_alien_controller.cpp index 68a55dc1..152f2a75 100644 --- a/src/server/valve/monster_alien_controller.cpp +++ b/src/server/valve/monster_alien_controller.cpp @@ -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(); } diff --git a/src/server/valve/monster_alien_grunt.cpp b/src/server/valve/monster_alien_grunt.cpp index 4c1e619f..f9341027 100644 --- a/src/server/valve/monster_alien_grunt.cpp +++ b/src/server/valve/monster_alien_grunt.cpp @@ -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(); } diff --git a/src/server/valve/monster_alien_slave.cpp b/src/server/valve/monster_alien_slave.cpp index 258481ee..5e0a40d2 100644 --- a/src/server/valve/monster_alien_slave.cpp +++ b/src/server/valve/monster_alien_slave.cpp @@ -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(); } diff --git a/src/server/valve/monster_apache.cpp b/src/server/valve/monster_apache.cpp index 7d6a3a44..48075c48 100644 --- a/src/server/valve/monster_apache.cpp +++ b/src/server/valve/monster_apache.cpp @@ -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(); } diff --git a/src/server/valve/monster_babycrab.cpp b/src/server/valve/monster_babycrab.cpp index 65f9861c..d03687c4 100644 --- a/src/server/valve/monster_babycrab.cpp +++ b/src/server/valve/monster_babycrab.cpp @@ -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(); } diff --git a/src/server/valve/monster_barnacle.cpp b/src/server/valve/monster_barnacle.cpp index 9175db47..11b54a63 100644 --- a/src/server/valve/monster_barnacle.cpp +++ b/src/server/valve/monster_barnacle.cpp @@ -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(); } diff --git a/src/server/valve/monster_barney.cpp b/src/server/valve/monster_barney.cpp index 4176fe30..85577237 100644 --- a/src/server/valve/monster_barney.cpp +++ b/src/server/valve/monster_barney.cpp @@ -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)); diff --git a/src/server/valve/monster_barney_dead.cpp b/src/server/valve/monster_barney_dead.cpp index 411e4736..13781a8f 100644 --- a/src/server/valve/monster_barney_dead.cpp +++ b/src/server/valve/monster_barney_dead.cpp @@ -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(); diff --git a/src/server/valve/monster_bigmomma.cpp b/src/server/valve/monster_bigmomma.cpp index 74410273..fac39bea 100644 --- a/src/server/valve/monster_bigmomma.cpp +++ b/src/server/valve/monster_bigmomma.cpp @@ -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(); } diff --git a/src/server/valve/monster_bloater.cpp b/src/server/valve/monster_bloater.cpp index 629127c0..0c2d4338 100644 --- a/src/server/valve/monster_bloater.cpp +++ b/src/server/valve/monster_bloater.cpp @@ -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(); } diff --git a/src/server/valve/monster_bullchicken.cpp b/src/server/valve/monster_bullchicken.cpp index 0274ce72..eb5243d1 100644 --- a/src/server/valve/monster_bullchicken.cpp +++ b/src/server/valve/monster_bullchicken.cpp @@ -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(); } diff --git a/src/server/valve/monster_cockroach.cpp b/src/server/valve/monster_cockroach.cpp index 46c4e701..5ffc3b17 100644 --- a/src/server/valve/monster_cockroach.cpp +++ b/src/server/valve/monster_cockroach.cpp @@ -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(); } diff --git a/src/server/valve/monster_flyer_flock.cpp b/src/server/valve/monster_flyer_flock.cpp index d284189c..4b30de23 100644 --- a/src/server/valve/monster_flyer_flock.cpp +++ b/src/server/valve/monster_flyer_flock.cpp @@ -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(); } diff --git a/src/server/valve/monster_gargantua.cpp b/src/server/valve/monster_gargantua.cpp index c375ec8a..f0f8d06d 100644 --- a/src/server/valve/monster_gargantua.cpp +++ b/src/server/valve/monster_gargantua.cpp @@ -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(); } diff --git a/src/server/valve/monster_gman.cpp b/src/server/valve/monster_gman.cpp index ea6dc305..f54b9a66 100644 --- a/src/server/valve/monster_gman.cpp +++ b/src/server/valve/monster_gman.cpp @@ -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(); } diff --git a/src/server/valve/monster_headcrab.cpp b/src/server/valve/monster_headcrab.cpp index f1ce2f20..f3d0b8da 100644 --- a/src/server/valve/monster_headcrab.cpp +++ b/src/server/valve/monster_headcrab.cpp @@ -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(); } diff --git a/src/server/valve/monster_hevsuit_dead.cpp b/src/server/valve/monster_hevsuit_dead.cpp index 42be931a..385e3b19 100644 --- a/src/server/valve/monster_hevsuit_dead.cpp +++ b/src/server/valve/monster_hevsuit_dead.cpp @@ -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, ""); diff --git a/src/server/valve/monster_hgrunt_dead.cpp b/src/server/valve/monster_hgrunt_dead.cpp index 68a86c60..31dd4344 100644 --- a/src/server/valve/monster_hgrunt_dead.cpp +++ b/src/server/valve/monster_hgrunt_dead.cpp @@ -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, ""); diff --git a/src/server/valve/monster_houndeye.cpp b/src/server/valve/monster_houndeye.cpp index a841fb49..844b9d65 100644 --- a/src/server/valve/monster_houndeye.cpp +++ b/src/server/valve/monster_houndeye.cpp @@ -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(); } diff --git a/src/server/valve/monster_human_assassin.cpp b/src/server/valve/monster_human_assassin.cpp index 6c1001dc..94daf57c 100644 --- a/src/server/valve/monster_human_assassin.cpp +++ b/src/server/valve/monster_human_assassin.cpp @@ -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(); } diff --git a/src/server/valve/monster_human_grunt.cpp b/src/server/valve/monster_human_grunt.cpp index 67db955f..12169720 100644 --- a/src/server/valve/monster_human_grunt.cpp +++ b/src/server/valve/monster_human_grunt.cpp @@ -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(); } diff --git a/src/server/valve/monster_ichthyosaur.cpp b/src/server/valve/monster_ichthyosaur.cpp index 8bb8da1c..d112b8f0 100644 --- a/src/server/valve/monster_ichthyosaur.cpp +++ b/src/server/valve/monster_ichthyosaur.cpp @@ -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(); } diff --git a/src/server/valve/monster_leech.cpp b/src/server/valve/monster_leech.cpp index 059da0ef..4c0e415a 100644 --- a/src/server/valve/monster_leech.cpp +++ b/src/server/valve/monster_leech.cpp @@ -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(); } diff --git a/src/server/valve/monster_miniturret.cpp b/src/server/valve/monster_miniturret.cpp index 98691a80..4091bf3a 100644 --- a/src/server/valve/monster_miniturret.cpp +++ b/src/server/valve/monster_miniturret.cpp @@ -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(); } diff --git a/src/server/valve/monster_nihilanth.cpp b/src/server/valve/monster_nihilanth.cpp index cee5120a..3daf2c70 100644 --- a/src/server/valve/monster_nihilanth.cpp +++ b/src/server/valve/monster_nihilanth.cpp @@ -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(); } diff --git a/src/server/valve/monster_osprey.cpp b/src/server/valve/monster_osprey.cpp index d639d1fc..8e3613fc 100644 --- a/src/server/valve/monster_osprey.cpp +++ b/src/server/valve/monster_osprey.cpp @@ -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(); } diff --git a/src/server/valve/monster_rat.cpp b/src/server/valve/monster_rat.cpp index 8a57f2c7..1c5a248f 100644 --- a/src/server/valve/monster_rat.cpp +++ b/src/server/valve/monster_rat.cpp @@ -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(); } diff --git a/src/server/valve/monster_scientist.cpp b/src/server/valve/monster_scientist.cpp index 75974180..682a9e89 100644 --- a/src/server/valve/monster_scientist.cpp +++ b/src/server/valve/monster_scientist.cpp @@ -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; diff --git a/src/server/valve/monster_scientist_dead.cpp b/src/server/valve/monster_scientist_dead.cpp index e504be68..d16a629c 100644 --- a/src/server/valve/monster_scientist_dead.cpp +++ b/src/server/valve/monster_scientist_dead.cpp @@ -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, ""); diff --git a/src/server/valve/monster_sentry.cpp b/src/server/valve/monster_sentry.cpp index 007e2ee1..dae13ce1 100644 --- a/src/server/valve/monster_sentry.cpp +++ b/src/server/valve/monster_sentry.cpp @@ -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(); } diff --git a/src/server/valve/monster_sitting_scientist.cpp b/src/server/valve/monster_sitting_scientist.cpp index 5f66bbcc..413e8a65 100644 --- a/src/server/valve/monster_sitting_scientist.cpp +++ b/src/server/valve/monster_sitting_scientist.cpp @@ -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(); diff --git a/src/server/valve/monster_tentacle.cpp b/src/server/valve/monster_tentacle.cpp index 142243ca..e5e0764f 100644 --- a/src/server/valve/monster_tentacle.cpp +++ b/src/server/valve/monster_tentacle.cpp @@ -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(); } diff --git a/src/server/valve/monster_turret.cpp b/src/server/valve/monster_turret.cpp index 52e0eaf9..d36a39dc 100644 --- a/src/server/valve/monster_turret.cpp +++ b/src/server/valve/monster_turret.cpp @@ -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(); } diff --git a/src/server/valve/monster_zombie.cpp b/src/server/valve/monster_zombie.cpp index bc351998..00894f68 100644 --- a/src/server/valve/monster_zombie.cpp +++ b/src/server/valve/monster_zombie.cpp @@ -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(); } diff --git a/src/shared/cstrike/player.cpp b/src/shared/cstrike/player.cpp index ca95ba08..ab2b3164 100644 --- a/src/shared/cstrike/player.cpp +++ b/src/shared/cstrike/player.cpp @@ -15,7 +15,7 @@ */ int input_sequence; -class player +class player:CBaseEntity { float health; float armor; diff --git a/src/shared/gearbox/player.cpp b/src/shared/gearbox/player.cpp index 9e298baf..72dbc960 100644 --- a/src/shared/gearbox/player.cpp +++ b/src/shared/gearbox/player.cpp @@ -15,7 +15,7 @@ */ int input_sequence; -class player +class player:CBaseEntity { float health; float armor; diff --git a/src/shared/gearbox/w_penguin.c b/src/shared/gearbox/w_penguin.c index c04d4584..c31640bb 100644 --- a/src/shared/gearbox/w_penguin.c +++ b/src/shared/gearbox/w_penguin.c @@ -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); } diff --git a/src/shared/hunger/player.cpp b/src/shared/hunger/player.cpp index 6e3bf473..84dc1503 100644 --- a/src/shared/hunger/player.cpp +++ b/src/shared/hunger/player.cpp @@ -15,7 +15,7 @@ */ int input_sequence; -class player +class player:CBaseEntity { float health; float armor; diff --git a/src/shared/rewolf/player.cpp b/src/shared/rewolf/player.cpp index 99c549a3..b249f24f 100644 --- a/src/shared/rewolf/player.cpp +++ b/src/shared/rewolf/player.cpp @@ -15,7 +15,7 @@ */ int input_sequence; -class player +class player:CBaseEntity { float health; float armor; diff --git a/src/shared/scihunt/player.cpp b/src/shared/scihunt/player.cpp index 85f3212c..e110e5df 100644 --- a/src/shared/scihunt/player.cpp +++ b/src/shared/scihunt/player.cpp @@ -15,7 +15,7 @@ */ int input_sequence; -class player +class player:CBaseEntity { float health; float armor; diff --git a/src/shared/valve/player.cpp b/src/shared/valve/player.cpp index 656325fb..4a646e97 100644 --- a/src/shared/valve/player.cpp +++ b/src/shared/valve/player.cpp @@ -15,7 +15,7 @@ */ noref int input_sequence; -class player +class player:CBaseEntity { float health; float armor; diff --git a/src/shared/valve/w_snark.c b/src/shared/valve/w_snark.c index 5ca46a45..34c3a536 100644 --- a/src/shared/valve/w_snark.c +++ b/src/shared/valve/w_snark.c @@ -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 diff --git a/src/shared/valve/w_tripmine.c b/src/shared/valve/w_tripmine.c index 8acc356d..d4c72117 100644 --- a/src/shared/valve/w_tripmine.c +++ b/src/shared/valve/w_tripmine.c @@ -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