2 void generator_precache()
4 precache_model("models/onslaught/generator.md3");
5 precache_model("models/onslaught/generator_dead.md3");
6 precache_sound("onslaught/generator_underattack.wav");
8 precache_model("models/onslaught/generator_dmg1.md3");
9 precache_model("models/onslaught/generator_dmg2.md3");
10 precache_model("models/onslaught/generator_dmg3.md3");
11 precache_model("models/onslaught/generator_dmg4.md3");
12 precache_model("models/onslaught/generator_dmg5.md3");
13 precache_model("models/onslaught/generator_dmg6.md3");
14 precache_model("models/onslaught/generator_dmg7.md3");
15 precache_model("models/onslaught/generator_dmg8.md3");
16 precache_model("models/onslaught/generator_dmg9.md3");
17 precache_model("models/onslaught/generator_dead.md3");
20 void generator_draw() { } // TODO
23 void generator_damage(float hp)
26 setmodel(self, "models/onslaught/generator_dead.md3");
27 else if(hp < self.max_health * 0.10)
28 setmodel(self, "models/onslaught/generator_dmg9.md3");
29 else if(hp < self.max_health * 0.20)
30 setmodel(self, "models/onslaught/generator_dmg8.md3");
31 else if(hp < self.max_health * 0.30)
32 setmodel(self, "models/onslaught/generator_dmg7.md3");
33 else if(hp < self.max_health * 0.40)
34 setmodel(self, "models/onslaught/generator_dmg6.md3");
35 else if(hp < self.max_health * 0.50)
36 setmodel(self, "models/onslaught/generator_dmg5.md3");
37 else if(hp < self.max_health * 0.60)
38 setmodel(self, "models/onslaught/generator_dmg4.md3");
39 else if(hp < self.max_health * 0.70)
40 setmodel(self, "models/onslaught/generator_dmg3.md3");
41 else if(hp < self.max_health * 0.80)
42 setmodel(self, "models/onslaught/generator_dmg2.md3");
43 else if(hp < self.max_health * 0.90)
44 setmodel(self, "models/onslaught/generator_dmg1.md3");
46 setsize(self, GENERATOR_MIN, GENERATOR_MAX);
49 void generator_construct()
51 self.netname = "Generator";
53 setorigin(self, self.origin);
54 setmodel(self, "models/onslaught/generator.md3");
55 setsize(self, GENERATOR_MIN, GENERATOR_MAX);
57 self.move_movetype = MOVETYPE_NOCLIP;
58 self.solid = SOLID_BBOX;
59 self.movetype = MOVETYPE_NOCLIP;
60 self.move_origin = self.origin;
61 self.move_time = time;
62 self.drawmask = MASK_NORMAL;
64 self.draw = generator_draw;
68 void generator_changeteam()
72 case NUM_TEAM_1: // Red
74 self.glowmod = '2 0 0';
75 self.teamradar_color = '1 0 0';
78 case NUM_TEAM_2: // Blue
80 self.glowmod = '0 0 2';
81 self.teamradar_color = '0 0 1';
84 case NUM_TEAM_3: // Yellow
86 self.glowmod = '1 1 0';
87 self.teamradar_color = '1 1 0';
90 case NUM_TEAM_4: // Pink
92 self.glowmod = '1 0 1';
93 self.teamradar_color = '1 0 1';
99 self.colormap = 1024 + (self.team - 1) * 17;
109 self.origin_x = ReadCoord();
110 self.origin_y = ReadCoord();
111 self.origin_z = ReadCoord();
112 setorigin(self, self.origin);
114 self.health = ReadByte();
115 self.max_health = ReadByte();
117 generator_precache();
118 generator_construct();
119 self.colormap = 1024;
120 self.glowmod = '1 1 0';
127 if(_tmp != self.team)
130 generator_changeteam();
135 if(_tmp != self.health)
136 generator_damage(_tmp);
138 //if(_tmp == 0 && self.health != 0)
147 float generator_send(entity to, float sf)
149 WriteByte(MSG_ENTITY, ENT_CLIENT_GENERATOR);
150 WriteByte(MSG_ENTITY, sf);
153 WriteCoord(MSG_ENTITY, self.origin_x);
154 WriteCoord(MSG_ENTITY, self.origin_y);
155 WriteCoord(MSG_ENTITY, self.origin_z);
157 WriteByte(MSG_ENTITY, self.health);
158 WriteByte(MSG_ENTITY, self.max_health);
163 WriteByte(MSG_ENTITY, self.team);
166 WriteByte(MSG_ENTITY, 0);
168 WriteByte(MSG_ENTITY, ceil((self.health / self.max_health) * 255));
174 void generator_link(void() spawnproc)
176 Net_LinkEntity(self, TRUE, 0, generator_send);
177 self.think = spawnproc;
178 self.nextthink = time;