From 7a7d2ac932dc4fd051e6f26f206f04c9f4f70f7e Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 22 Apr 2013 23:11:18 +1000 Subject: [PATCH] Remove all scale modifiers (networking scale changes is too broken) --- monsters.cfg | 2 - qcsrc/client/monsters.qc | 15 ------- qcsrc/server/autocvars.qh | 2 - qcsrc/server/monsters/lib/defs.qh | 3 +- qcsrc/server/monsters/lib/monsters.qc | 52 +++-------------------- qcsrc/server/monsters/monster/shalrath.qc | 1 - 6 files changed, 8 insertions(+), 67 deletions(-) diff --git a/monsters.cfg b/monsters.cfg index adbf4dc8f..41585805c 100644 --- a/monsters.cfg +++ b/monsters.cfg @@ -12,8 +12,6 @@ set g_monsters_teams 1 set g_monster_spawnshieldtime 2 "Monsters will not take damage for this amount of seconds" set g_monsters_typefrag 1 set g_monsters_healthbars 1 "Show health bars above monsters" -set g_monsters_giants_only 0 -set g_monsters_nogiants 1 set g_monsters_target_range 2000 set g_monsters_respawn 1 "Enable monster respawning" set g_monsters_respawn_delay 20 "Monsters respawn in this amount of seconds" diff --git a/qcsrc/client/monsters.qc b/qcsrc/client/monsters.qc index 39ef4e8a1..0e213b540 100644 --- a/qcsrc/client/monsters.qc +++ b/qcsrc/client/monsters.qc @@ -283,7 +283,6 @@ void ent_monster() self.angles_x = ReadAngle(); self.angles_y = ReadAngle(); - self.scale = ReadByte(); self.skin = ReadByte(); monster_precache(self.monsterid); @@ -292,20 +291,6 @@ void ent_monster() self.glowmod = '0 1 1'; } - if(sf & MSF_SIZE) - { - self.scale = ReadByte(); - self.mins_x = ReadCoord(); - self.mins_y = ReadCoord(); - self.mins_z = ReadCoord(); - - self.maxs_x = ReadCoord(); - self.maxs_y = ReadCoord(); - self.maxs_z = ReadCoord(); - - setsize(self, self.mins, self.maxs); - } - if(sf & MSF_ANG) { self.move_angles_x = ReadShort(); diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 977f6221f..5237ebe9b 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -1251,7 +1251,6 @@ float autocvar_g_monsters; float autocvar_g_monsters_think_delay; float autocvar_g_monsters_max; float autocvar_g_monsters_max_perplayer; -float autocvar_g_monsters_giants_only; float autocvar_g_monsters_target_range; float autocvar_g_monsters_typefrag; float autocvar_g_monsters_owners; @@ -1264,7 +1263,6 @@ float autocvar_g_monsters_teams; float autocvar_g_monsters_healthbars; float autocvar_g_monsters_respawn_delay; float autocvar_g_monsters_respawn; -float autocvar_g_monsters_nogiants; float autocvar_g_monsters_skill_easy; float autocvar_g_monsters_skill_normal; float autocvar_g_monsters_skill_hard; diff --git a/qcsrc/server/monsters/lib/defs.qh b/qcsrc/server/monsters/lib/defs.qh index 8ebea2ebe..f6f03ddc2 100644 --- a/qcsrc/server/monsters/lib/defs.qh +++ b/qcsrc/server/monsters/lib/defs.qh @@ -27,8 +27,7 @@ const float MONSTERFLAG_NORESPAWN = 2; const float MONSTERFLAG_MINIBOSS = 64; // monster spawns as mini-boss (also has a chance of naturally becoming one) const float MONSTERFLAG_NOWANDER = 128; // disable wandering around (currently unused) const float MONSTERFLAG_APPEAR = 256; // delay spawn until triggered -const float MONSTERFLAG_GIANT = 512; // experimental giant monsters feature -const float MONSTERFLAG_SPAWNED = 1024; // flag for spawned monsters +const float MONSTERFLAG_SPAWNED = 512; // flag for spawned monsters .float msound_delay; // restricts some monster sounds .string msound_idle; diff --git a/qcsrc/server/monsters/lib/monsters.qc b/qcsrc/server/monsters/lib/monsters.qc index 1ad2861cd..b477095f3 100644 --- a/qcsrc/server/monsters/lib/monsters.qc +++ b/qcsrc/server/monsters/lib/monsters.qc @@ -190,7 +190,7 @@ void monster_setupsounds(string mon) void monster_melee (entity targ, float damg, float er, float deathtype, float dostop) { - float bigdmg, dot, rdmg = damg * random(); + float dot, rdmg = damg * random(); if (self.health <= 0) return; @@ -208,10 +208,8 @@ void monster_melee (entity targ, float damg, float er, float deathtype, float do makevectors (self.angles); dot = normalize (targ.origin - self.origin) * v_forward; - bigdmg = rdmg * self.scale; - if(dot > er) - Damage(targ, self, self, bigdmg * monster_skill, deathtype, targ.origin, normalize(targ.origin - self.origin)); + Damage(targ, self, self, rdmg * monster_skill, deathtype, targ.origin, normalize(targ.origin - self.origin)); } void Monster_CheckDropCvars (string mon) @@ -239,30 +237,17 @@ void Monster_CheckDropCvars (string mon) Monster_DropItem("armor", "medium"); } -void ScaleMonster (float scle, vector min_s, vector max_s) -{ - // this should prevent monster from falling through floor when scale changes - self.scale = scle; - setsize(self, min_s * scle, max_s * scle); - setorigin(self, self.origin + ('0 0 30' * scle)); - self.SendFlags |= MSF_SIZE | MSF_MOVE; -} - void Monster_CheckMinibossFlag () { if(MUTATOR_CALLHOOK(MonsterCheckBossFlag)) return; - if(self.spawnflags & MONSTERFLAG_GIANT) - return; // 1 size modifier at a time - float chance = random() * 100; // g_monsters_miniboss_chance cvar or spawnflags 64 causes a monster to be a miniboss if ((self.spawnflags & MONSTERFLAG_MINIBOSS) || (chance < autocvar_g_monsters_miniboss_chance)) { self.health += autocvar_g_monsters_miniboss_healthboost; - ScaleMonster(1.5, self.mins, self.maxs); self.flags |= MONSTERFLAG_MINIBOSS; if not(self.weapon) self.weapon = WEP_NEX; @@ -375,7 +360,7 @@ float GenericCheckAttack () return FALSE; if(self.attack_melee) - if(vlen(self.enemy.origin - self.origin) <= 100 * self.scale) + if(vlen(self.enemy.origin - self.origin) <= 100) { monster_sound(self.msound_attack_melee, 0, FALSE); // no delay for attack sounds self.attack_melee(); // don't wait for nextthink - too slow @@ -625,7 +610,7 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_ if(self.flags & FL_ONGROUND) movelib_jump_simple(100); - if(vlen(self.origin - self.moveto) > 64 * self.scale) + if(vlen(self.origin - self.moveto) > 64) { if(self.flags & FL_FLY || self.flags & FL_SWIM) movelib_move_simple(v_forward, ((self.enemy) ? runspeed : walkspeed), 0.6); @@ -736,22 +721,8 @@ float monster_send(entity to, float sf) WriteAngle(MSG_ENTITY, self.angles_x); WriteAngle(MSG_ENTITY, self.angles_y); - WriteByte(MSG_ENTITY, self.scale); WriteByte(MSG_ENTITY, self.skin); } - - if(sf & MSF_SIZE) - { - WriteByte(MSG_ENTITY, self.scale); - - WriteCoord(MSG_ENTITY, self.mins_x); - WriteCoord(MSG_ENTITY, self.mins_y); - WriteCoord(MSG_ENTITY, self.mins_z); - - WriteCoord(MSG_ENTITY, self.maxs_x); - WriteCoord(MSG_ENTITY, self.maxs_y); - WriteCoord(MSG_ENTITY, self.maxs_z); - } if(sf & MSF_ANG) { @@ -933,7 +904,7 @@ void monster_hook_spawn() { if not(self.monster_respawned) Monster_CheckMinibossFlag(); - + self.max_health = self.health; self.pain_finished = self.nextthink; self.anim_start_time = time; @@ -986,15 +957,6 @@ float monster_initialize(string net_name, float mon_id, if(self.netname == "") self.netname = ((net_name == "") ? self.classname : net_name); - if(autocvar_g_monsters_giants_only) - self.spawnflags |= MONSTERFLAG_GIANT; - - if not(self.scale) - self.scale = 1; - - if(self.spawnflags & MONSTERFLAG_GIANT && !autocvar_g_monsters_nogiants) - self.scale = 5; - if(self.team && !teamplay) self.team = 0; @@ -1004,8 +966,7 @@ float monster_initialize(string net_name, float mon_id, if not(self.monster_respawned) monsters_total += 1; - ScaleMonster(self.scale, min_s, max_s); - + setsize(self, min_s, max_s); self.takedamage = DAMAGE_AIM; self.bot_attack = TRUE; self.iscreature = TRUE; @@ -1018,6 +979,7 @@ float monster_initialize(string net_name, float mon_id, self.touch = MonsterTouch; self.use = monster_use; self.solid = SOLID_BBOX; + self.scale = 1; self.movetype = MOVETYPE_WALK; self.delay = -1; // used in attack delay code monsters_spawned += 1; diff --git a/qcsrc/server/monsters/monster/shalrath.qc b/qcsrc/server/monsters/monster/shalrath.qc index 02097c010..137104187 100644 --- a/qcsrc/server/monsters/monster/shalrath.qc +++ b/qcsrc/server/monsters/monster/shalrath.qc @@ -85,7 +85,6 @@ void shalrath_think () shalrath_heal(); if(self.enemy) - if not(self.spawnflags & MONSTERFLAG_GIANT) // giants are too big to hold a shield if(self.health < self.max_health) if(time >= self.lastshielded) if(random() < 0.5) -- 2.39.2