precache_model(ZOMBIE_MODEL);
break;
}
- case MONSTER_OGRE:
+ case MONSTER_BRUTE:
{
- precache_model(OGRE_MODEL);
+ precache_model(BRUTE_MODEL);
break;
}
- case MONSTER_DEMON:
+ case MONSTER_ANIMUS:
{
- precache_model(DEMON_MODEL);
+ precache_model(ANIMUS_MODEL);
break;
}
case MONSTER_SHAMBLER:
precache_model(SHAMBLER_MODEL);
break;
}
- case MONSTER_KNIGHT:
- {
- precache_model(KNIGHT_MODEL);
- break;
- }
- case MONSTER_MARINE:
+ case MONSTER_BRUISER:
{
- precache_model(SOLDIER_MODEL);
- precache_sound("weapons/shotgun_fire.wav");
- precache_sound("weapons/uzi_fire.wav");
- precache_sound("weapons/laser_fire.wav");
- precache_sound("weapons/reload.wav");
- precache_model("models/weapons/v_seeker.md3");
+ precache_model(BRUISER_MODEL);
break;
}
- case MONSTER_SCRAG:
+ case MONSTER_WYVERN:
{
- precache_model(WIZARD_MODEL);
+ precache_model(WYVERN_MODEL);
break;
}
- case MONSTER_DOG:
+ case MONSTER_CERBERUS:
{
- precache_model(DOG_MODEL);
+ precache_model(CERBERUS_MODEL);
break;
}
- case MONSTER_TARBABY:
+ case MONSTER_SLIME:
{
- precache_model(TARBABY_MODEL);
+ precache_model(SLIME_MODEL);
precache_sound("weapons/rocket_impact.wav");
break;
}
- case MONSTER_HELLKNIGHT:
+ case MONSTER_KNIGHT:
{
- precache_model(HELLKNIGHT_MODEL);
+ precache_model(KNIGHT_MODEL);
break;
}
- case MONSTER_FISH:
+ case MONSTER_STINGRAY:
{
- precache_model(FISH_MODEL);
+ precache_model(STINGRAY_MODEL);
break;
}
case MONSTER_MAGE:
{
- precache_model(SHALRATH_MODEL);
+ precache_model(MAGE_MODEL);
break;
}
case MONSTER_SPIDER:
break;
}
- }
+ }
+
monster_precached[_mid] = TRUE;
}
void Monsters_Precache()
{
float i;
- for(i = MONSTER_FIRST; i <= MONSTER_LAST; ++i)
+ for(i = MONSTER_FIRST + 1; i < MONSTER_LAST; ++i)
monster_precache(i);
}
mid2info_max = ZOMBIE_MAX;
break;
}
- case MONSTER_OGRE:
+ case MONSTER_BRUTE:
{
- mid2info_model = OGRE_MODEL;
- mid2info_name = "Ogre";
- mid2info_min = OGRE_MIN;
- mid2info_max = OGRE_MAX;
+ mid2info_model = BRUTE_MODEL;
+ mid2info_name = "Brute";
+ mid2info_min = BRUTE_MIN;
+ mid2info_max = BRUTE_MAX;
break;
}
- case MONSTER_DEMON:
+ case MONSTER_ANIMUS:
{
- mid2info_model = DEMON_MODEL;
- mid2info_name = "Fiend";
- mid2info_min = DEMON_MIN;
- mid2info_max = DEMON_MAX;
+ mid2info_model = ANIMUS_MODEL;
+ mid2info_name = "Animus";
+ mid2info_min = ANIMUS_MIN;
+ mid2info_max = ANIMUS_MAX;
+ if(self) self.scale = 1.3;
break;
}
case MONSTER_SHAMBLER:
mid2info_name = "Shambler";
mid2info_min = SHAMBLER_MIN;
mid2info_max = SHAMBLER_MAX;
+ if(self) self.scale = 1.3;
break;
}
- case MONSTER_KNIGHT:
+ case MONSTER_BRUISER:
{
- mid2info_model = KNIGHT_MODEL;
- mid2info_name = "Knight";
- mid2info_min = KNIGHT_MIN;
- mid2info_max = KNIGHT_MAX;
- break;
- }
- case MONSTER_MARINE:
- {
- mid2info_model = SOLDIER_MODEL;
- mid2info_name = "Marine";
- mid2info_min = SOLDIER_MIN;
- mid2info_max = SOLDIER_MAX;
+ mid2info_model = BRUISER_MODEL;
+ mid2info_name = "Bruiser";
+ mid2info_min = BRUISER_MIN;
+ mid2info_max = BRUISER_MAX;
+ if(self) self.scale = 1.3;
break;
}
- case MONSTER_SCRAG:
+ case MONSTER_WYVERN:
{
- mid2info_model = WIZARD_MODEL;
- mid2info_name = "Scrag";
- mid2info_min = WIZARD_MIN;
- mid2info_max = WIZARD_MAX;
+ mid2info_model = WYVERN_MODEL;
+ mid2info_name = "Wyvern";
+ mid2info_min = WYVERN_MIN;
+ mid2info_max = WYVERN_MAX;
+ if(self) self.scale = 1.3;
break;
}
- case MONSTER_DOG:
+ case MONSTER_CERBERUS:
{
- mid2info_model = DOG_MODEL;
+ mid2info_model = CERBERUS_MODEL;
mid2info_name = "Cerberus";
- mid2info_min = DOG_MIN;
- mid2info_max = DOG_MAX;
+ mid2info_min = CERBERUS_MIN;
+ mid2info_max = CERBERUS_MAX;
break;
}
- case MONSTER_TARBABY:
+ case MONSTER_SLIME:
{
- mid2info_model = TARBABY_MODEL;
- mid2info_name = "Spawn";
- mid2info_min = TARBABY_MIN;
- mid2info_max = TARBABY_MAX;
+ mid2info_model = SLIME_MODEL;
+ mid2info_name = "Slime";
+ mid2info_min = SLIME_MIN;
+ mid2info_max = SLIME_MAX;
break;
}
- case MONSTER_HELLKNIGHT:
+ case MONSTER_KNIGHT:
{
- mid2info_model = HELLKNIGHT_MODEL;
- mid2info_name = "Hell-Knight";
- mid2info_min = HELLKNIGHT_MIN;
- mid2info_max = HELLKNIGHT_MAX;
+ mid2info_model = KNIGHT_MODEL;
+ mid2info_name = "Knight";
+ mid2info_min = KNIGHT_MIN;
+ mid2info_max = KNIGHT_MAX;
+ if(self) self.scale = 1.3;
break;
}
- case MONSTER_FISH:
+ case MONSTER_STINGRAY:
{
- mid2info_model = FISH_MODEL;
- mid2info_name = "Rotfish";
- mid2info_min = FISH_MIN;
- mid2info_max = FISH_MAX;
+ mid2info_model = STINGRAY_MODEL;
+ mid2info_name = "Stingray";
+ mid2info_min = STINGRAY_MIN;
+ mid2info_max = STINGRAY_MAX;
+ if(self) self.scale = 1.3;
break;
}
case MONSTER_MAGE:
{
- mid2info_model = SHALRATH_MODEL;
+ mid2info_model = MAGE_MODEL;
mid2info_name = "Mage";
- mid2info_min = SHALRATH_MIN;
- mid2info_max = SHALRATH_MAX;
+ mid2info_min = MAGE_MIN;
+ mid2info_max = MAGE_MAX;
break;
}
case MONSTER_SPIDER:
.vector glowmod;
void monster_changeteam()
-{
- switch(self.team - 1)
- {
- case NUM_TEAM_1: // Red
- {
- self.glowmod = '2 0 0';
- self.teamradar_color = '1 0 0';
- break;
- }
- case NUM_TEAM_2: // Blue
- {
- self.glowmod = '0 0 2';
- self.teamradar_color = '0 0 1';
- break;
- }
- case NUM_TEAM_3: // Yellow
- {
- self.glowmod = '1 1 0';
- self.teamradar_color = '1 1 0';
- break;
- }
- case NUM_TEAM_4: // Pink
- {
- self.glowmod = '1 0 1';
- self.teamradar_color = '1 0 1';
- break;
- }
- }
+{
+ self.glowmod = Team_ColorRGB(self.team - 1);
+ self.teamradar_color = Team_ColorRGB(self.team - 1);
if(self.team)
self.colormap = 1024 + (self.team - 1) * 17;
+ else
+ self.colormap = 1024;
}
void monster_die()
void monster_draw()
{
- float dt;
+ float dt;
- dt = time - self.move_time;
- self.move_time = time;
- if(dt <= 0)
- return;
+ dt = time - self.move_time;
+ self.move_time = time;
+ if(dt <= 0)
+ return;
- fixedmakevectors(self.angles);
- //movelib_groundalign4point(300, 100, 0.25, 45);
- setorigin(self, self.origin + self.velocity * dt);
- self.angles_y = self.move_angles_y;
+ fixedmakevectors(self.angles);
+ //movelib_groundalign4point(50, 25, 0.25, 45);
+ setorigin(self, self.origin + self.velocity * dt);
+ self.angles_y = self.move_angles_y;
}
void monster_construct()
sf = ReadByte();
if(sf & MSF_SETUP)
- {
+ {
self.monsterid = ReadByte();
self.origin_x = ReadCoord();
self.angles_x = ReadAngle();
self.angles_y = ReadAngle();
- self.scale = ReadByte();
self.skin = ReadByte();
+ self.team = ReadByte();
monster_precache(self.monsterid);
monster_construct();
- self.colormap = 1024;
- 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);
+ monster_changeteam();
}
if(sf & MSF_ANG)
self.move_velocity = self.velocity;
self.move_origin = self.origin;
}
-
+
if(sf & MSF_ANIM)
{
self.frame1time = ReadCoord();
}
_tmp = ReadByte();
+ if(_tmp == 4) // respawning
+ setmodel(self, "null");
- if(_tmp == 0 && self.health != 0)
- monster_die();
-
- self.health = _tmp;
- }
-}
-
-void td_generator_precache()
-{
- precache_model("models/onslaught/generator.md3");
- precache_model("models/onslaught/generator_dead.md3");
- precache_sound("onslaught/generator_underattack.wav");
-}
-
-void td_generator_die()
-{
- setmodel(self, "models/onslaught/generator_dead.md3");
- pointparticles(particleeffectnum("explosion_medium"), self.origin, '0 0 0', 1);
-}
-
-void td_generator_draw() { } // TODO
-
-void td_generator_construct()
-{
- self.netname = "Generator";
-
- setorigin(self, self.origin);
- setmodel(self, "models/onslaught/generator.md3");
- setsize(self, GENERATOR_MIN, GENERATOR_MAX);
-
- self.move_movetype = MOVETYPE_NOCLIP;
- self.health = 255;
- self.solid = SOLID_BBOX;
- self.movetype = MOVETYPE_NOCLIP;
- self.move_origin = self.origin;
- self.move_time = time;
- self.drawmask = MASK_NORMAL;
- self.alpha = 1;
- self.draw = td_generator_draw;
-}
-
-void ent_td_generator()
-{
- float sf;
- sf = ReadByte();
-
- if(sf & MSF_SETUP)
- {
- self.origin_x = ReadCoord();
- self.origin_y = ReadCoord();
- self.origin_z = ReadCoord();
- setorigin(self, self.origin);
-
- td_generator_precache();
- td_generator_construct();
- self.colormap = 1024;
- self.glowmod = '1 1 0';
- }
-
- if(sf & MSF_STATUS)
- {
- float _tmp = ReadByte();
+ _tmp = ReadByte();
if(_tmp == 0 && self.health != 0)
- td_generator_die();
+ monster_die();
self.health = _tmp;
}
}
-