]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/generator.qc
Merge branch 'master' into Mario/ons_updates
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / generator.qc
index 5a8e923daf6a97e55165482667a732b86d14b3b3..13aa35ab53bbf46c42405d003dc70c81e7a9ec82 100644 (file)
-#ifdef CSQC
-float generator_precached;
-
-void generator_precache()
-{
-       if(generator_precached)
-               return; // already precached
-               
-       precache_model("models/onslaught/generator.md3");
-       precache_model("models/onslaught/generator_dead.md3");
-       precache_model("models/onslaught/generator_dmg1.md3");
-       precache_model("models/onslaught/generator_dmg2.md3");
-       precache_model("models/onslaught/generator_dmg3.md3");
-       precache_model("models/onslaught/generator_dmg4.md3");
-       precache_model("models/onslaught/generator_dmg5.md3");
-       precache_model("models/onslaught/generator_dmg6.md3");
-       precache_model("models/onslaught/generator_dmg7.md3");
-       precache_model("models/onslaught/generator_dmg8.md3");
-       precache_model("models/onslaught/generator_dmg9.md3");
-       precache_model("models/onslaught/generator_dead.md3");
-       
-       generator_precached = TRUE;
-}
-
-void generator_draw() { } // TODO
-
-.float max_health;
-void generator_damage(float hp)
-{
-       if(hp <= 0)
-               setmodel(self, "models/onslaught/generator_dead.md3");
-       else if(hp < self.max_health * 0.10)
-               setmodel(self, "models/onslaught/generator_dmg9.md3");
-       else if(hp < self.max_health * 0.20)
-               setmodel(self, "models/onslaught/generator_dmg8.md3");
-       else if(hp < self.max_health * 0.30)
-               setmodel(self, "models/onslaught/generator_dmg7.md3");
-       else if(hp < self.max_health * 0.40)
-               setmodel(self, "models/onslaught/generator_dmg6.md3");
-       else if(hp < self.max_health * 0.50)
-               setmodel(self, "models/onslaught/generator_dmg5.md3");
-       else if(hp < self.max_health * 0.60)
-               setmodel(self, "models/onslaught/generator_dmg4.md3");
-       else if(hp < self.max_health * 0.70)
-               setmodel(self, "models/onslaught/generator_dmg3.md3");
-       else if(hp < self.max_health * 0.80)
-               setmodel(self, "models/onslaught/generator_dmg2.md3");
-       else if(hp < self.max_health * 0.90)
-               setmodel(self, "models/onslaught/generator_dmg1.md3");
-       else if(hp <= self.max_health)
-               setmodel(self, "models/onslaught/generator.md3");
-               
-       setsize(self, GENERATOR_MIN, GENERATOR_MAX);
-}
-
-void 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.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                       = generator_draw;
-}
-
-.vector glowmod;
-void generator_changeteam()
-{
-       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;
-}
-
-void ent_generator()
+float generator_send(entity to, float sf)
 {
-       float sf;
-       sf = ReadByte();
-
+       WriteByte(MSG_ENTITY, ENT_CLIENT_GENERATOR);
+       WriteByte(MSG_ENTITY, sf);
        if(sf & GSF_SETUP)
        {
-               self.origin_x = ReadCoord();
-               self.origin_y = ReadCoord();
-               self.origin_z = ReadCoord();
-               setorigin(self, self.origin);
-               
-               self.health = ReadByte();
-               self.max_health = ReadByte();
-               
-               generator_precache();
-               generator_construct();
-               self.colormap = 1024;
-               self.glowmod = '1 1 0'; 
+               WriteCoord(MSG_ENTITY, self.origin_x);
+               WriteCoord(MSG_ENTITY, self.origin_y);
+               WriteCoord(MSG_ENTITY, self.origin_z);
+
+               WriteByte(MSG_ENTITY, self.health);
+               WriteByte(MSG_ENTITY, self.max_health);
+               WriteByte(MSG_ENTITY, self.count);
+               WriteByte(MSG_ENTITY, self.team);
        }
 
        if(sf & GSF_STATUS)
        {
-               float _tmp;
-               _tmp = ReadByte();
-               if(_tmp != self.team)
-               {                       
-                       self.team = _tmp;                               
-                       generator_changeteam();
-               }
-               
-               _tmp = ReadByte();
-               
-               if(_tmp != self.health)
-                       generator_damage(_tmp);
-               
-               //if(_tmp == 0 && self.health != 0)
-                       //generator_die();
+               WriteByte(MSG_ENTITY, self.team);
 
-               self.health = _tmp;
+               if(self.health <= 0)
+                       WriteByte(MSG_ENTITY, 0);
+               else
+                       WriteByte(MSG_ENTITY, ceil((self.health / self.max_health) * 255));
        }
-}
-#endif // CSQC
 
-#ifdef SVQC
-float generator_send(entity to, float sf)
-{
-       WriteByte(MSG_ENTITY, ENT_CLIENT_GENERATOR);    
-       WriteByte(MSG_ENTITY, sf);
-       if(sf & GSF_SETUP)
-       {
-           WriteCoord(MSG_ENTITY, self.origin_x);
-           WriteCoord(MSG_ENTITY, self.origin_y);
-           WriteCoord(MSG_ENTITY, self.origin_z);
-               
-               WriteByte(MSG_ENTITY, self.health);
-               WriteByte(MSG_ENTITY, self.max_health);
-    }
-    
-    if(sf & GSF_STATUS)
-    {
-               WriteByte(MSG_ENTITY, self.team);
-       
-        if(self.health <= 0)
-            WriteByte(MSG_ENTITY, 0);
-        else
-            WriteByte(MSG_ENTITY, ceil((self.health / self.max_health) * 255));
-    }
-    
        return TRUE;
 }
 
 void generator_link(void() spawnproc)
 {
-    Net_LinkEntity(self, TRUE, 0, generator_send);
-    self.think      = spawnproc;
-    self.nextthink  = time;
+       Net_LinkEntity(self, TRUE, 0, generator_send);
+       self.think              = spawnproc;
+       self.nextthink  = time;
 }
-#endif // SVQC