]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/server/vehicles/vehicles.qc
eof fixes for all qc, qh, c filesd
[divverent/nexuiz.git] / data / qcsrc / server / vehicles / vehicles.qc
1 void vehicle_stdproc_enter()
2 {
3     self.owner = other;
4
5     msg_entity = other;
6     WriteByte (MSG_ONE, SVC_SETVIEWPORT);
7     WriteEntity( MSG_ONE, self.vehicle_viewport);
8
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
13
14     //setattachment(other,self,"");
15     self.nextthink = 0;
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;
28
29
30 }
31
32 void vehicle_stdproc_exit(float eject)
33 {
34     self.velocity = '0 0 0';
35
36     msg_entity = self.owner;
37     WriteByte (MSG_ONE, SVC_SETVIEWPORT);
38     WriteEntity( MSG_ONE, self.owner);
39
40     //setattachment(self.owner,world,"");
41     //self.think = spiderbot_think;
42     //self.nextthink = time;
43
44     self.owner.takedamage     = DAMAGE_AIM;
45     self.owner.solid          = SOLID_SLIDEBOX;
46     self.owner.alpha          = 1;
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;
52         self.colormap = 1024;
53         self.tur_head.colormap = 1024;
54         self.vehicle_hudmodel.viewmodelforclient   = self;
55         //self.tur_head.nodrawtoclient = self;
56
57         if(eject)
58         {
59             makevectors(self.angles);
60             setorigin(self.owner,self.origin + v_forward * 100);
61             self.owner.velocity = (v_up + v_forward * 0.25) * 750;
62         }
63         else
64         setorigin(self.owner,self.origin - v_forward * 200);
65
66     self.owner = world;
67 }
68
69 void vehicle_stdproc_regen()
70 {
71     float smax,hmax;
72
73     smax = CCVAR("_shield");
74     hmax = CCVAR("_health");
75
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)
80     {
81         self.vehicle_shield = min(self.vehicle_shield + CCVAR("_shield_regen") / server_fps,smax);
82
83         if(self.owner)
84             self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
85     }
86
87     if(self.vehicle_flags & VHF_HEALTHREGEN)
88     if(self.dmg_time + CCVAR("_health_regen_dmgpause") < time)
89     if(self.vehicle_health < hmax)
90     {
91         self.vehicle_health = min(self.vehicle_health + CCVAR("_health_regen") / server_fps,hmax);
92
93         if(self.owner)
94             self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
95     }
96 }
97
98 void shieldhit_think()
99 {
100     self.alpha = self.alpha - 0.125;
101     if not(self.alpha <= 0)
102     {
103         self.nextthink = time;
104     }
105     else
106     {
107         setmodel(self,"");
108         self.alpha = -1;
109     }
110     //self.think = SUB_Remove;
111 }
112
113 void vehicle_stdproc_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
114 {
115
116     float ddmg_take;
117
118     self.dmg_time = time;
119
120     if((self.vehicle_flags & VHF_HASSHIELD) && (self.vehicle_shield > 0))
121     {
122         if not (self.tur_head.enemy)
123             self.tur_head.enemy = spawn();
124
125         entity sh;
126
127         sh = self.tur_head.enemy;
128         sh.colormod = '1 1 1';
129         sh.alpha = 0.5;
130         sh.scale  = (128 / vlen(self.maxs - self.mins))*2;
131         //sh.scale = 1.25;
132
133         sh.effects = EF_LOWPRECISION;
134         sh.angles = vectoangles(normalize(hitloc - self.origin)) - self.angles;
135
136         setmodel(sh,"models/vhshield.md3");
137         setattachment(sh,self,"");
138         sh.think = shieldhit_think;
139         sh.nextthink = time;
140
141
142         self.vehicle_shield -= damage;
143         if(self.vehicle_shield < 0)
144         {
145             sh.colormod = '10 0 -1';
146             ddmg_take = fabs(self.vehicle_shield);
147             self.vehicle_shield = 0;
148
149             self.vehicle_health -= ddmg_take;
150         }
151     }
152     else
153         self.vehicle_health -= damage;
154
155
156     if(self.owner)
157     {
158         self.owner.vehicle_health = self.vehicle_health / CCVAR("_health");
159
160         if(self.vehicle_flags & VHF_HASSHIELD)
161             self.owner.vehicle_shield = self.vehicle_shield / cvar(strcat(self.cvar_basename,"_shield"));
162
163     }
164
165     if(self.vehicle_health <= 0)
166     {
167         if(self.owner)
168             self.vehicle_exit(VHEF_EJECT);
169
170         self.vehicle_die();
171     }
172
173
174 }
175
176 void bugmenot()
177 {
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;
183 }