1 void vehicle_stdproc_enter()
6 WriteByte (MSG_ONE, SVC_SETVIEWPORT);
7 WriteEntity( MSG_ONE, self.vehicle_viewport);
9 WriteByte (MSG_ONE, SVC_SETVIEWANGLES);
10 WriteAngle(MSG_ONE, self.vehicle_viewport.angles_x + self.angles_x); // tilt
11 WriteAngle(MSG_ONE, self.vehicle_viewport.angles_y + self.angles_y); // yaw
12 WriteAngle(MSG_ONE, self.vehicle_viewport.angles_z + self.angles_z); // flip
14 //setattachment(other,self,"");
16 self.owner.takedamage = DAMAGE_NO;
17 self.owner.solid = SOLID_NOT;
18 self.owner.alpha = -1;
19 //self.owner.PlayerPhysplug = spiderbot_pplug;
20 self.owner.vehicle = self;
21 self.owner.event_damage = SUB_Null;
22 self.owner.vehicle_health = (self.health / cvar("g_vehicle_spiderbot_health"));
23 self.owner.hud = HUD_SPIDEBOT;
24 self.colormap = self.owner.colormap;
25 self.tur_head.colormap = self.owner.colormap;
26 self.vehicle_hudmodel.viewmodelforclient = self.owner;
27 //self.tur_head.nodrawtoclient = self.owner;
32 void vehicle_stdproc_exit(float eject)
34 self.velocity = '0 0 0';
36 msg_entity = self.owner;
37 WriteByte (MSG_ONE, SVC_SETVIEWPORT);
38 WriteEntity( MSG_ONE, self.owner);
40 //setattachment(self.owner,world,"");
41 //self.think = spiderbot_think;
42 //self.nextthink = time;
44 self.owner.takedamage = DAMAGE_AIM;
45 self.owner.solid = SOLID_SLIDEBOX;
47 self.owner.PlayerPhysplug = SUB_Null;
48 self.owner.vehicle = world;
49 self.owner.view_ofs = PL_VIEW_OFS;
50 self.owner.hud = HUD_NORMAL;
51 self.owner.event_damage = PlayerDamage;
53 self.tur_head.colormap = 1024;
54 self.vehicle_hudmodel.viewmodelforclient = self;
55 //self.tur_head.nodrawtoclient = self;
59 makevectors(self.angles);
60 setorigin(self.owner,self.origin + v_forward * 100);
61 self.owner.velocity = (v_up + v_forward * 0.25) * 750;
64 setorigin(self.owner,self.origin - v_forward * 200);
69 void vehicle_stdproc_regen()
73 smax = CCVAR("_shield");
74 hmax = CCVAR("_health");
76 if(self.vehicle_flags & VHF_HASSHIELD)
77 if(self.vehicle_flags & VHF_SHIELDREGEN)
78 if(self.vehicle_shield < smax)
79 if(self.dmg_time + CCVAR("_shield_regen_dmgpause") < time)
81 self.vehicle_shield = min(self.vehicle_shield + CCVAR("_shield_regen") / server_fps,smax);
84 self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
87 if(self.vehicle_flags & VHF_HEALTHREGEN)
88 if(self.dmg_time + CCVAR("_health_regen_dmgpause") < time)
89 if(self.vehicle_health < hmax)
91 self.vehicle_health = min(self.vehicle_health + CCVAR("_health_regen") / server_fps,hmax);
94 self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
98 void shieldhit_think()
100 self.alpha = self.alpha - 0.125;
101 if not(self.alpha <= 0)
103 self.nextthink = time;
110 //self.think = SUB_Remove;
113 void vehicle_stdproc_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
118 self.dmg_time = time;
120 if((self.vehicle_flags & VHF_HASSHIELD) && (self.vehicle_shield > 0))
122 if not (self.tur_head.enemy)
123 self.tur_head.enemy = spawn();
127 sh = self.tur_head.enemy;
128 sh.colormod = '1 1 1';
130 sh.scale = (128 / vlen(self.maxs - self.mins))*2;
133 sh.effects = EF_LOWPRECISION;
134 sh.angles = vectoangles(normalize(hitloc - self.origin)) - self.angles;
136 setmodel(sh,"models/vhshield.md3");
137 setattachment(sh,self,"");
138 sh.think = shieldhit_think;
142 self.vehicle_shield -= damage;
143 if(self.vehicle_shield < 0)
145 sh.colormod = '10 0 -1';
146 ddmg_take = fabs(self.vehicle_shield);
147 self.vehicle_shield = 0;
149 self.vehicle_health -= ddmg_take;
153 self.vehicle_health -= damage;
158 self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
160 if(self.vehicle_flags & VHF_HASSHIELD)
161 self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
165 if(self.vehicle_health <= 0)
168 self.vehicle_exit(VHEF_EJECT);
178 self.vehicle_exit = self.vehicle_exit;
179 self.vehicle_enter = self.vehicle_exit;
180 self.vehicle_die = self.vehicle_exit;
181 self.vehicle_spawn = self.vehicle_exit;
182 self.vehicle_message = self.vehicle_exit;