]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/server/vehicles/vehicles.qc
documented joints
[divverent/nexuiz.git] / data / qcsrc / server / vehicles / vehicles.qc
1 void vehicle_stdproc_enter()
2 {
3 }
4
5 void vehicle_stdproc_exit(float eject)
6 {
7 }
8
9 void vehicle_stdproc_regen()
10 {
11     float smax,hmax;
12
13     smax = CCVAR("_shield");
14     hmax = CCVAR("_health");
15
16     if(self.vehicle_flags & VHF_HASSHIELD)
17     if(self.vehicle_flags & VHF_SHIELDREGEN)
18     if(self.vehicle_shield < smax)
19     if(self.dmg_time + CCVAR("_shield_regen_dmgpause") < time)
20     {
21         self.vehicle_shield = min(self.vehicle_shield + CCVAR("_shield_regen") / server_fps,smax);
22
23         if(self.owner)
24             self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
25     }
26
27     if(self.vehicle_flags & VHF_HEALTHREGEN)
28     if(self.dmg_time + CCVAR("_health_regen_dmgpause") < time)
29     if(self.vehicle_health < hmax)
30     {
31         self.vehicle_health = min(self.vehicle_health + CCVAR("_health_regen") / server_fps,hmax);
32
33         if(self.owner)
34             self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
35     }
36 }
37
38 void shieldhit_think()
39 {
40     self.alpha = self.alpha - 0.125;
41     if not(self.alpha <= 0)
42     {
43         self.nextthink = time;
44     }
45     else
46     {
47         setmodel(self,"");
48         self.alpha = -1;
49     }
50     //self.think = SUB_Remove;
51 }
52
53 void vehicle_stdproc_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
54 {
55
56     float ddmg_take;
57
58     self.dmg_time = time;
59
60     if((self.vehicle_flags & VHF_HASSHIELD) && (self.vehicle_shield > 0))
61     {
62         if not (self.tur_head.enemy)
63             self.tur_head.enemy = spawn();
64
65         entity sh;
66
67         sh = self.tur_head.enemy;
68         sh.colormod = '1 1 1';
69         sh.alpha = 0.5;
70         sh.scale  = (128 / vlen(self.maxs - self.mins))*2;
71         //sh.scale = 1.25;
72
73         sh.effects = EF_LOWPRECISION;
74         sh.angles = vectoangles(normalize(hitloc - self.origin)) - self.angles;
75
76         setmodel(sh,"models/vhshield.md3");
77         setattachment(sh,self,"");
78         sh.think = shieldhit_think;
79         sh.nextthink = time;
80
81
82         self.vehicle_shield -= damage;
83         if(self.vehicle_shield < 0)
84         {
85             sh.colormod = '10 0 -1';
86             ddmg_take = fabs(self.vehicle_shield);
87             self.vehicle_shield = 0;
88
89             self.vehicle_health -= ddmg_take;
90         }
91     }
92     else
93         self.vehicle_health -= damage;
94
95
96     if(self.owner)
97     {
98         self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
99
100         if(self.vehicle_flags & VHF_HASSHIELD)
101             self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
102
103     }
104
105     if(self.vehicle_health <= 0)
106     {
107         if(self.owner)
108             self.vehicle_exit(VHEF_EJECT);
109
110         self.vehicle_die();
111     }
112
113
114 }
115
116 void bugmenot()
117 {
118     self.vehicle_exit       = self.vehicle_exit;
119     self.vehicle_enter      = self.vehicle_exit;
120     self.vehicle_die        = self.vehicle_exit;
121     self.vehicle_spawn      = self.vehicle_exit;
122     self.vehicle_message    = self.vehicle_exit;
123 }