Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
bumblebee.qc File Reference
Include dependency graph for bumblebee.qc:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void bumblebee_blowup (entity this)
void bumblebee_dead_touch (entity this, entity toucher)
void bumblebee_diethink (entity this)
void bumblebee_exit (entity this, int eject)
bool bumblebee_gunner_enter (entity this, entity player)
void bumblebee_gunner_exit (entity this, int _exitflag)
vector bumblebee_gunner_findgoodexit (vector prefer_spot, entity gunner, entity player)
bool bumblebee_gunner_frame (entity this, float dt)
void bumblebee_land (entity this)
bool bumblebee_pilot_frame (entity this, float dt)
void bumblebee_regen (entity this, float dt)
void bumblebee_touch (entity this, entity toucher)
void CSQC_BUMBLE_GUN_HUD ()
 spawnfunc (vehicle_bumblebee)
bool vehicles_valid_pilot (entity this, entity toucher)

Variables

bool autocvar_g_vehicle_bumblebee = true
float autocvar_g_vehicle_bumblebee_blowup_coredamage = 500
float autocvar_g_vehicle_bumblebee_blowup_edgedamage = 100
float autocvar_g_vehicle_bumblebee_blowup_forceintensity = 600
float autocvar_g_vehicle_bumblebee_blowup_radius = 500
vector autocvar_g_vehicle_bumblebee_bouncepain = '1 100 200'
float autocvar_g_vehicle_bumblebee_cannon_ammo = 100
float autocvar_g_vehicle_bumblebee_cannon_ammo_regen = 100
float autocvar_g_vehicle_bumblebee_cannon_ammo_regen_pause = 1
float autocvar_g_vehicle_bumblebee_cannon_lock = 1
float autocvar_g_vehicle_bumblebee_cannon_pitchlimit_down = 60
float autocvar_g_vehicle_bumblebee_cannon_pitchlimit_up = 60
float autocvar_g_vehicle_bumblebee_cannon_turnlimit_in = 20
float autocvar_g_vehicle_bumblebee_cannon_turnlimit_out = 80
float autocvar_g_vehicle_bumblebee_cannon_turnspeed = 260
float autocvar_g_vehicle_bumblebee_energy = 500
float autocvar_g_vehicle_bumblebee_energy_regen = 50
float autocvar_g_vehicle_bumblebee_energy_regen_pause = 1
float autocvar_g_vehicle_bumblebee_friction = 0.5
float autocvar_g_vehicle_bumblebee_healgun_amax = 100
float autocvar_g_vehicle_bumblebee_healgun_aps = 75
float autocvar_g_vehicle_bumblebee_healgun_hmax = 100
float autocvar_g_vehicle_bumblebee_healgun_hps = 150
float autocvar_g_vehicle_bumblebee_healgun_locktime = 2.5
float autocvar_g_vehicle_bumblebee_healgun_sps = 100
float autocvar_g_vehicle_bumblebee_health = 1000
float autocvar_g_vehicle_bumblebee_health_regen = 65
float autocvar_g_vehicle_bumblebee_health_regen_pause = 10
float autocvar_g_vehicle_bumblebee_pitchlimit = 60
float autocvar_g_vehicle_bumblebee_pitchspeed = 60
bool autocvar_g_vehicle_bumblebee_raygun = false
float autocvar_g_vehicle_bumblebee_raygun_aps = 100
float autocvar_g_vehicle_bumblebee_raygun_dps = 250
float autocvar_g_vehicle_bumblebee_raygun_fps = 100
float autocvar_g_vehicle_bumblebee_raygun_pitchlimit_down = 20
float autocvar_g_vehicle_bumblebee_raygun_pitchlimit_up = 5
float autocvar_g_vehicle_bumblebee_raygun_range = 2048
float autocvar_g_vehicle_bumblebee_raygun_turnlimit_sides = 35
float autocvar_g_vehicle_bumblebee_raygun_turnspeed = 180
float autocvar_g_vehicle_bumblebee_respawntime = 60
float autocvar_g_vehicle_bumblebee_shield = 400
float autocvar_g_vehicle_bumblebee_shield_regen = 150
float autocvar_g_vehicle_bumblebee_shield_regen_pause = 0.75
float autocvar_g_vehicle_bumblebee_speed_down = 350
float autocvar_g_vehicle_bumblebee_speed_forward = 350
float autocvar_g_vehicle_bumblebee_speed_strafe = 350
float autocvar_g_vehicle_bumblebee_speed_up = 350
bool autocvar_g_vehicle_bumblebee_swim = true
float autocvar_g_vehicle_bumblebee_turnspeed = 120
const float BRG_END = 8
const float BRG_SETUP = 2
const float BRG_START = 4

Function Documentation

◆ bumblebee_blowup()

void bumblebee_blowup ( entity this)

Definition at line 681 of file bumblebee.qc.

682{
687 DEATH_VH_BUMB_DEATH.m_id, DMG_NOWEP, NULL);
688
689 sound(this, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM);
690 Send_Effect(EFFECT_EXPLOSION_BIG, (this.origin + '0 0 100') + (randomvec() * 80), '0 0 0', 1);
691
692 if(this.owner.deadflag == DEAD_DYING)
693 this.owner.deadflag = DEAD_DEAD;
694
695 delete(this);
696}
float autocvar_g_vehicle_bumblebee_blowup_forceintensity
Definition bumblebee.qc:72
float autocvar_g_vehicle_bumblebee_blowup_edgedamage
Definition bumblebee.qc:71
float autocvar_g_vehicle_bumblebee_blowup_coredamage
Definition bumblebee.qc:70
float autocvar_g_vehicle_bumblebee_blowup_radius
Definition bumblebee.qc:69
entity owner
Definition main.qh:87
vector origin
float RadiusDamage(entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype,.entity weaponentity, entity directhitentity)
Definition damage.qc:981
#define DMG_NOWEP
Definition damage.qh:104
void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt)
Definition all.qc:124
vector randomvec(void)
#define NULL
Definition post.qh:14
float DEAD_DYING
Definition progsdefs.qc:275
float DEAD_DEAD
Definition progsdefs.qc:276
const float VOL_BASE
Definition sound.qh:36
const int CH_SHOTS
Definition sound.qh:14
const float ATTEN_NORM
Definition sound.qh:30
#define sound(e, c, s, v, a)
Definition sound.qh:52
entity enemy
Definition sv_ctf.qh:153

References ATTEN_NORM, autocvar_g_vehicle_bumblebee_blowup_coredamage, autocvar_g_vehicle_bumblebee_blowup_edgedamage, autocvar_g_vehicle_bumblebee_blowup_forceintensity, autocvar_g_vehicle_bumblebee_blowup_radius, CH_SHOTS, DEAD_DEAD, DEAD_DYING, DMG_NOWEP, enemy, entity(), NULL, origin, owner, RadiusDamage(), randomvec(), Send_Effect(), sound, and VOL_BASE.

Referenced by bumblebee_dead_touch(), and bumblebee_diethink().

◆ bumblebee_dead_touch()

void bumblebee_dead_touch ( entity this,
entity toucher )

Definition at line 698 of file bumblebee.qc.

699{
700 bumblebee_blowup(this);
701}
void bumblebee_blowup(entity this)
Definition bumblebee.qc:681

References bumblebee_blowup(), entity(), and toucher.

◆ bumblebee_diethink()

void bumblebee_diethink ( entity this)

Definition at line 703 of file bumblebee.qc.

704{
705 if(time >= this.wait)
707
708 if(random() < 0.1)
709 {
710 sound(this, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM);
711 Send_Effect(EFFECT_EXPLOSION_SMALL, randomvec() * 80 + (this.origin + '0 0 100'), '0 0 0', 1);
712 }
713
714 this.nextthink = time + 0.1;
715}
float wait
Definition items.qc:17
float time
float nextthink
float random(void)
#define setthink(e, f)

References ATTEN_NORM, bumblebee_blowup(), CH_SHOTS, entity(), nextthink, origin, random(), randomvec(), Send_Effect(), setthink, sound, time, VOL_BASE, and wait.

◆ bumblebee_exit()

void bumblebee_exit ( entity this,
int eject )

Definition at line 639 of file bumblebee.qc.

640{
641 if(this.owner.vehicleid == VEH_BUMBLEBEE.vehicleid)
642 {
643 bumblebee_gunner_exit(this, eject);
644 return;
645 }
646
648
649 if(!IS_DEAD(this))
650 {
652 this.nextthink = time;
653 }
654
656
657 if(!this.owner)
658 return;
659
661 vector spot;
663 spot = this.origin + v_up * 128 + v_forward * 300;
664 else
665 spot = this.origin + v_up * 128 - v_forward * 300;
666
667 spot = vehicles_findgoodexit(this, this.owner, spot);
668
669 // Hide beam
670 if(this.gun3.enemy || !wasfreed(this.gun3.enemy))
671 this.gun3.enemy.effects |= EF_NODRAW;
672
673 this.owner.velocity = 0.75 * this.vehicle.velocity + normalize(spot - this.vehicle.origin) * 200;
674 this.owner.velocity_z += 10;
675 setorigin(this.owner, spot);
676
677 antilag_clear(this.owner, CS(this.owner));
678 this.owner = NULL;
679}
void fixedmakevectors(vector a)
void antilag_clear(entity e, entity store)
Definition antilag.qc:114
float autocvar_g_vehicle_bumblebee_speed_forward
Definition bumblebee.qc:16
void bumblebee_land(entity this)
Definition bumblebee.qc:622
void bumblebee_gunner_exit(entity this, int _exitflag)
Definition bumblebee.qc:221
#define IS_DEAD(s)
Definition player.qh:245
vector v_up
vector velocity
vector v_forward
const float EF_NODRAW
ent angles
Definition ent_cs.qc:121
vector normalize(vector v)
void set_movetype(entity this, int mt)
Definition movetypes.qc:4
const int MOVETYPE_TOSS
Definition movetypes.qh:135
vector
Definition self.qh:92
#define settouch(e, f)
Definition self.qh:73
ClientState CS(Client this)
Definition state.qh:47
void vehicles_touch(entity this, entity toucher)
vector vehicles_findgoodexit(entity this, entity player, vector prefer_spot)
entity vehicle
Entity to disply the shild effect on damage.
entity gun3
#define vdist(v, cmp, f)
Vector distance comparison, avoids sqrt()
Definition vector.qh:8

References angles, antilag_clear(), autocvar_g_vehicle_bumblebee_speed_forward, bumblebee_gunner_exit(), bumblebee_land(), CS(), EF_NODRAW, entity(), fixedmakevectors(), gun3, IS_DEAD, MOVETYPE_TOSS, nextthink, normalize(), NULL, origin, owner, set_movetype(), setthink, settouch, time, v_forward, v_up, vdist, vector, vehicle, vehicles_findgoodexit(), vehicles_touch(), and velocity.

◆ bumblebee_gunner_enter()

bool bumblebee_gunner_enter ( entity this,
entity player )

Definition at line 283 of file bumblebee.qc.

284{
285 entity vehic = this;
286 entity gunner = NULL;
287
288 if(!vehic.gunner1 && !vehic.gunner2 && ((time >= vehic.gun1.phase) + (time >= vehic.gun2.phase)) == 2)
289 {
290 // we can have some fun
291 vector v1 = gettaginfo(vehic, gettagindex(vehic, "cannon_right"));
292 vector v2 = gettaginfo(vehic, gettagindex(vehic, "cannon_left"));
293 if(vlen2(player.origin - v1) < vlen2(player.origin - v2))
294 {
295 gunner = vehic.gun1;
296 vehic.gunner1 = player;
297 }
298 else
299 {
300 gunner = vehic.gun2;
301 vehic.gunner2 = player;
302 }
303 }
304 else if(!vehic.gunner1 && time >= vehic.gun1.phase) { gunner = vehic.gun1; vehic.gunner1 = player; }
305 else if(!vehic.gunner2 && time >= vehic.gun2.phase) { gunner = vehic.gun2; vehic.gunner2 = player; }
306 else { LOG_TRACE("Vehicle is full, fail"); return false; }
307
308 player.vehicle = gunner;
309 player.angles = vehic.angles;
310 player.takedamage = DAMAGE_NO;
311 player.solid = SOLID_NOT;
312 player.alpha = -1;
314 player.event_damage = func_null;
315 player.view_ofs = '0 0 0';
316 STAT(HUD, player) = STAT(HUD, gunner);
317 player.teleportable = false;
318 player.PlayerPhysplug = gunner.PlayerPhysplug;
319 player.vehicle_ammo1 = vehic.vehicle_ammo1;
320 player.vehicle_ammo2 = vehic.vehicle_ammo2;
321 player.vehicle_reload1 = vehic.vehicle_reload1;
322 player.vehicle_reload2 = vehic.vehicle_reload2;
323 player.vehicle_energy = vehic.vehicle_energy;
324 UNSET_ONGROUND(player);
325
326 RemoveGrapplingHooks(player);
327
328 for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
329 {
330 .entity weaponentity = weaponentities[slot];
331
332 gunner.(weaponentity) = new(temp_wepent);
333 gunner.(weaponentity).m_switchweapon = player.(weaponentity).m_switchweapon;
334 }
335 gunner.vehicle_exit = bumblebee_gunner_exit;
336 gunner.vehicle_hudmodel.viewmodelforclient = player;
337
338 if(IS_REAL_CLIENT(player))
339 {
340 msg_entity = player;
342 WriteEntity(MSG_ONE, gunner.vehicle_viewport);
343
344 // NOTE: engine networked
346 WriteAngle(MSG_ONE, gunner.angles_x + vehic.angles_x); // tilt
347 WriteAngle(MSG_ONE, gunner.angles_y + vehic.angles_y); // yaw
348 WriteAngle(MSG_ONE, 0); // roll
349 }
350
351 CSQCVehicleSetup(player, STAT(HUD, player));
352
353 MUTATOR_CALLHOOK(VehicleEnter, player, gunner);
354
355 return true;
356}
#define MUTATOR_CALLHOOK(id,...)
Definition base.qh:143
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
const float SOLID_NOT
#define gettagindex
#define STAT(...)
Definition stats.qh:82
#define LOG_TRACE(...)
Definition log.qh:76
float MSG_ONE
Definition menudefs.qc:56
void WriteEntity(entity data, float dest, float desto)
void WriteByte(float data, float dest, float desto)
void WriteAngle(float data, float dest, float desto)
#define UNSET_ONGROUND(s)
Definition movetypes.qh:18
const int MOVETYPE_NOCLIP
Definition movetypes.qh:137
var void func_null()
#define gettaginfo
Definition post.qh:32
entity msg_entity
Definition progsdefs.qc:63
void RemoveGrapplingHooks(entity pl)
Definition hook.qc:30
const int DAMAGE_NO
Definition subs.qh:79
void CSQCVehicleSetup(entity own, int vehicle_id)
const float SVC_SETVIEWANGLES
const float SVC_SETVIEWPORT
#define IS_REAL_CLIENT(v)
Definition utils.qh:17
#define vlen2(v)
Definition vector.qh:4
const int MAX_WEAPONSLOTS
Definition weapon.qh:16
entity weaponentities[MAX_WEAPONSLOTS]
Definition weapon.qh:17
Weapon m_switchweapon
Definition wepent.qh:25

References bumblebee_gunner_exit(), CSQCVehicleSetup(), DAMAGE_NO, entity(), func_null(), gettagindex, gettaginfo, IS_REAL_CLIENT, LOG_TRACE, m_switchweapon, MAX_WEAPONSLOTS, MOVETYPE_NOCLIP, msg_entity, MSG_ONE, MUTATOR_CALLHOOK, NULL, RemoveGrapplingHooks(), set_movetype(), SOLID_NOT, STAT, SVC_SETVIEWANGLES, SVC_SETVIEWPORT, time, UNSET_ONGROUND, vector, vlen2, weaponentities, WriteAngle(), WriteByte(), and WriteEntity().

Referenced by bumblebee_touch().

◆ bumblebee_gunner_exit()

void bumblebee_gunner_exit ( entity this,
int _exitflag )

Definition at line 221 of file bumblebee.qc.

222{
223 entity player = ((this.owner.gun1 == this) ? this.owner.gunner1 : this.owner.gunner2);
224 entity gunner = this;
225 entity vehic = gunner.owner;
226
227 if(IS_REAL_CLIENT(player))
228 {
229 msg_entity = player;
231 WriteEntity(MSG_ONE, player);
232
233 // NOTE: engine networked
236 WriteAngle(MSG_ONE, vehic.angles.y);
238 }
239
241
242 player.takedamage = DAMAGE_AIM;
243 player.solid = SOLID_SLIDEBOX;
245 player.effects &= ~EF_NODRAW;
246 player.alpha = 1;
247 player.PlayerPhysplug = func_null;
248 player.view_ofs = STAT(PL_VIEW_OFS, player);
249 player.event_damage = PlayerDamage;
250 STAT(HUD, player) = HUD_NORMAL;
251 player.teleportable = TELEPORT_NORMAL;
252 for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
253 {
254 .entity weaponentity = weaponentities[slot];
255 player.(weaponentity).m_switchweapon = gunner.(weaponentity).m_switchweapon;
256 delete(gunner.(weaponentity));
257 }
258 player.vehicle_enter_delay = time + 2;
259 setsize(player, STAT(PL_MIN, player), STAT(PL_MAX, player));
260
261 fixedmakevectors(vehic.angles);
262
263 if(player == vehic.gunner1) { vehic.gunner1 = NULL; }
264 if(player == vehic.gunner2) { vehic.gunner2 = NULL; v_right *= -1; }
265
266 vector spot = real_origin(gunner);
267 spot = spot + v_up * 128 + v_forward * 300 + v_right * 150;
268 spot = bumblebee_gunner_findgoodexit(spot, gunner, player);
269
270 // TODO: figure a way to move player out of the gunner
271
272 player.velocity = 0.75 * vehic.velocity + normalize(spot - vehic.origin) * 200;
273 player.velocity_z += 10;
274
275 gunner.phase = time + 5;
276 gunner.vehicle_hudmodel.viewmodelforclient = gunner;
277
278 MUTATOR_CALLHOOK(VehicleExit, player, gunner);
279
280 player.vehicle = NULL;
281}
vector bumblebee_gunner_findgoodexit(vector prefer_spot, entity gunner, entity player)
Definition bumblebee.qc:195
vector real_origin(entity ent)
Definition util.qc:148
const int HUD_NORMAL
Definition constants.qh:47
const float SOLID_SLIDEBOX
vector v_right
const int MOVETYPE_WALK
Definition movetypes.qh:132
void PlayerDamage(entity this, entity inflictor, entity attacker, float damage, int deathtype,.entity weaponentity, vector hitloc, vector force)
Definition player.qc:234
const int DAMAGE_AIM
Definition subs.qh:81
const int TELEPORT_NORMAL

References bumblebee_gunner_findgoodexit(), CSQCVehicleSetup(), DAMAGE_AIM, EF_NODRAW, entity(), fixedmakevectors(), func_null(), HUD_NORMAL, IS_REAL_CLIENT, m_switchweapon, MAX_WEAPONSLOTS, MOVETYPE_WALK, msg_entity, MSG_ONE, MUTATOR_CALLHOOK, normalize(), NULL, owner, PlayerDamage(), real_origin(), set_movetype(), SOLID_SLIDEBOX, STAT, SVC_SETVIEWANGLES, SVC_SETVIEWPORT, TELEPORT_NORMAL, time, v_forward, v_right, v_up, vector, weaponentities, WriteAngle(), WriteByte(), and WriteEntity().

Referenced by bumblebee_exit(), and bumblebee_gunner_enter().

◆ bumblebee_gunner_findgoodexit()

vector bumblebee_gunner_findgoodexit ( vector prefer_spot,
entity gunner,
entity player )

Definition at line 195 of file bumblebee.qc.

196{
197 //vector exitspot;
198 float mysize;
199
200 tracebox(gunner.origin + '0 0 32', STAT(PL_MIN, player), STAT(PL_MAX, player), prefer_spot, MOVE_NORMAL, player);
202 return prefer_spot;
203
204 mysize = 1.5 * vlen(STAT(PL_MAX, player) - STAT(PL_MIN, player)); // can't use gunner's size, as they don't have a size
205 float i;
206 vector v, v2;
207 v2 = 0.5 * (gunner.absmin + gunner.absmax);
208 for(i = 0; i < 100; ++i)
209 {
210 v = randomvec();
211 v_z = 0;
212 v = v2 + normalize(v) * mysize;
213 tracebox(v2, STAT(PL_MIN, player), STAT(PL_MAX, player), v, MOVE_NORMAL, player);
215 return v;
216 }
217
218 return prefer_spot; // this should be considered a fallback?!
219}
const float MOVE_NORMAL
float trace_startsolid
float trace_fraction
float trace_allsolid
float vlen(vector v)

References entity(), MOVE_NORMAL, normalize(), randomvec(), STAT, trace_allsolid, trace_fraction, trace_startsolid, vector, and vlen().

Referenced by bumblebee_gunner_exit().

◆ bumblebee_gunner_frame()

bool bumblebee_gunner_frame ( entity this,
float dt )

Definition at line 77 of file bumblebee.qc.

78{
79 entity vehic = this.vehicle.owner;
80 entity gun = this.vehicle;
81 return = true;
82
83 // this isn't technically a vehicle (yet), let's not do frame functions on it (yet)
84 //vehicles_frame(gun, player);
85
86 vehic.solid = SOLID_NOT;
87 //setorigin(this, vehic.origin);
88 this.velocity = vehic.velocity;
89
90 float _in, _out;
91 vehic.angles_x *= -1;
92 makevectors(vehic.angles);
93 vehic.angles_x *= -1;
94 if(gun == vehic.gun1)
95 {
98 setorigin(this, vehic.origin + v_up * -16 + v_forward * -16 + v_right * 128);
99 }
100 else
101 {
104 setorigin(this, vehic.origin + v_up * -16 + v_forward * -16 + v_right * -128);
105 }
106 this.oldorigin = this.origin; // negate fall damage
107
108 crosshair_trace(this);
109 vector _ct = trace_endpos;
110 vector ad;
111
113 {
114 if(gun.lock_time < time || IS_DEAD(gun.enemy) || STAT(FROZEN, gun.enemy))
115 gun.enemy = NULL;
116
117 if(trace_ent)
118 if(trace_ent.move_movetype)
119 if(trace_ent.takedamage)
120 if(!IS_DEAD(trace_ent) && !STAT(FROZEN, trace_ent))
121 {
122 if(teamplay)
123 {
124 if(DIFF_TEAM(trace_ent, this))
125 {
126 gun.enemy = trace_ent;
127 gun.lock_time = time + 2.5;
128 }
129 }
130 else
131 {
132 gun.enemy = trace_ent;
133 gun.lock_time = time + 0.5;
134 }
135 }
136 }
137
138 if(gun.enemy)
139 {
140 float distance, impact_time;
141
142 vector vf = real_origin(gun.enemy);
143 vector _vel = gun.enemy.velocity;
144 if(gun.enemy.move_movetype == MOVETYPE_WALK)
145 _vel.z *= 0.1;
146
147
148 ad = vf;
149 distance = vlen(ad - this.origin);
150 impact_time = distance / autocvar_g_vehicle_bumblebee_cannon_speed;
151 ad = vf + _vel * impact_time;
152 trace_endpos = ad;
153
154
155 UpdateAuxiliaryXhair(this, ad, '1 0 1', 1);
156 vehicle_aimturret(vehic, trace_endpos, gun, "fire",
159
160 }
161 else
162 vehicle_aimturret(vehic, _ct, gun, "fire",
165
166 if(!weaponLocked(this) && !weaponUseForbidden(this))
167 if(PHYS_INPUT_BUTTON_ATCK(this))
168 if(time > gun.attack_finished_single[0])
169 if(gun.vehicle_energy >= autocvar_g_vehicle_bumblebee_cannon_cost)
170 {
171 gun.vehicle_energy -= autocvar_g_vehicle_bumblebee_cannon_cost;
172 bumblebee_fire_cannon(vehic, gun, "fire", this);
173 gun.delay = time;
174 gun.attack_finished_single[0] = time + autocvar_g_vehicle_bumblebee_cannon_refire;
175 }
176
177 VEHICLE_UPDATE_PLAYER_RESOURCE(this, vehic, health, bumblebee, RES_HEALTH);
178
179 if(vehic.vehicle_flags & VHF_HASSHIELD)
180 VEHICLE_UPDATE_PLAYER(this, vehic, shield, bumblebee);
181
182 ad = gettaginfo(gun, gettagindex(gun, "fire"));
183 traceline(ad, ad + v_forward * max_shot_distance, MOVE_NORMAL, gun);
184
185 UpdateAuxiliaryXhair(this, trace_endpos, ('1 0 0' * this.vehicle_reload1) + ('0 1 0' *(1 - this.vehicle_reload1)), 0);
186
187 if(vehic.owner)
188 UpdateAuxiliaryXhair(vehic.owner, trace_endpos, ('1 0 0' * this.vehicle_reload1) + ('0 1 0' *(1 - this.vehicle_reload1)), ((this == vehic.gunner1) ? 1 : 2));
189
190 vehic.solid = SOLID_BBOX;
192 this.vehicle_energy = (gun.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
193}
float autocvar_g_vehicle_bumblebee_cannon_lock
Definition bumblebee.qc:42
float autocvar_g_vehicle_bumblebee_cannon_turnlimit_out
Definition bumblebee.qc:48
float autocvar_g_vehicle_bumblebee_cannon_ammo
Definition bumblebee.qc:38
float autocvar_g_vehicle_bumblebee_cannon_pitchlimit_up
Definition bumblebee.qc:46
float autocvar_g_vehicle_bumblebee_cannon_turnlimit_in
Definition bumblebee.qc:47
float autocvar_g_vehicle_bumblebee_cannon_turnspeed
Definition bumblebee.qc:44
float autocvar_g_vehicle_bumblebee_cannon_pitchlimit_down
Definition bumblebee.qc:45
void bumblebee_fire_cannon(entity this, entity _gun, string _tagname, entity _owner)
float autocvar_g_vehicle_bumblebee_cannon_speed
float autocvar_g_vehicle_bumblebee_cannon_refire
float autocvar_g_vehicle_bumblebee_cannon_cost
#define PHYS_INPUT_BUTTON_CROUCH(s)
Definition player.qh:154
#define PHYS_INPUT_BUTTON_ATCK(s)
Definition player.qh:150
#define PHYS_INPUT_BUTTON_ATCK2(s)
Definition player.qh:152
entity trace_ent
const float SOLID_BBOX
vector trace_endpos
vector oldorigin
#define makevectors
Definition post.qh:21
float health
Legacy fields for the resources. To be removed.
Definition resources.qh:9
void UpdateAuxiliaryXhair(entity own, vector loc, vector clr, int axh_id)
vector vehicle_aimturret(entity _vehic, vector _target, entity _turrret, string _tagname, float _pichlimit_min, float _pichlimit_max, float _rotlimit_min, float _rotlimit_max, float _aimspeed, float dt)
const float vehicle_energy
If ent is player this is 0..100 indicating precentage of health left on vehicle. Vehicle's value is t...
#define VEHICLE_UPDATE_PLAYER(ply, vehi, fld, vhname)
#define VEHICLE_UPDATE_PLAYER_RESOURCE(ply, vehi, fld, vhname, res)
const float vehicle_reload1
If ent is player this is 0..100 indicating percentage of primary ammo left UNLESS value is already st...
bool teamplay
Definition teams.qh:59
#define DIFF_TEAM(a, b)
Definition teams.qh:242
void crosshair_trace(entity pl)
Definition tracing.qc:549
const int VHF_HASSHIELD
Indicates vehicle.
Definition vehicle.qh:85
int max_shot_distance
Definition weapon.qh:203
bool weaponUseForbidden(entity player)
bool weaponLocked(entity player)

References autocvar_g_vehicle_bumblebee_cannon_ammo, autocvar_g_vehicle_bumblebee_cannon_cost, autocvar_g_vehicle_bumblebee_cannon_lock, autocvar_g_vehicle_bumblebee_cannon_pitchlimit_down, autocvar_g_vehicle_bumblebee_cannon_pitchlimit_up, autocvar_g_vehicle_bumblebee_cannon_refire, autocvar_g_vehicle_bumblebee_cannon_speed, autocvar_g_vehicle_bumblebee_cannon_turnlimit_in, autocvar_g_vehicle_bumblebee_cannon_turnlimit_out, autocvar_g_vehicle_bumblebee_cannon_turnspeed, bumblebee_fire_cannon(), crosshair_trace(), DIFF_TEAM, entity(), gettagindex, gettaginfo, health, IS_DEAD, makevectors, max_shot_distance, MOVE_NORMAL, MOVETYPE_WALK, NULL, oldorigin, origin, PHYS_INPUT_BUTTON_ATCK, PHYS_INPUT_BUTTON_ATCK2, PHYS_INPUT_BUTTON_CROUCH, real_origin(), SOLID_BBOX, SOLID_NOT, STAT, teamplay, time, trace_endpos, trace_ent, UpdateAuxiliaryXhair(), v_forward, v_right, v_up, vector, vehicle, vehicle_aimturret(), vehicle_energy, vehicle_reload1, VEHICLE_UPDATE_PLAYER, VEHICLE_UPDATE_PLAYER_RESOURCE, velocity, VHF_HASSHIELD, vlen(), weaponLocked(), and weaponUseForbidden().

◆ bumblebee_land()

void bumblebee_land ( entity this)

Definition at line 622 of file bumblebee.qc.

623{
624 float hgt;
625
626 hgt = vehicle_altitude(this, 512);
627 this.velocity = (this.velocity * 0.9) + ('0 0 -1800' * (hgt / 256) * PHYS_INPUT_FRAMETIME);
628 this.angles_x *= 0.95;
629 this.angles_z *= 0.95;
630
631 if(hgt < 16)
633
634 this.nextthink = time;
635
637}
#define PHYS_INPUT_FRAMETIME
Definition player.qh:255
#define CSQCMODEL_AUTOUPDATE(e)
void vehicles_think(entity this)
float vehicle_altitude(entity this, float amax)
Definition vehicles.qc:4

References CSQCMODEL_AUTOUPDATE, entity(), nextthink, PHYS_INPUT_FRAMETIME, setthink, time, vehicle_altitude(), vehicles_think(), and velocity.

Referenced by bumblebee_exit().

◆ bumblebee_pilot_frame()

bool bumblebee_pilot_frame ( entity this,
float dt )

Definition at line 415 of file bumblebee.qc.

416{
417 entity vehic = this.vehicle;
418 return = true;
419
420 if(game_stopped)
421 {
422 vehic.solid = SOLID_NOT;
423 vehic.takedamage = DAMAGE_NO;
425 return;
426 }
427
428 vehicles_frame(vehic, this);
429
430 if(IS_DEAD(vehic))
431 {
433 return;
434 }
435
436 bumblebee_regen(vehic, dt);
437
438 crosshair_trace(this);
439
440 vector vang = vehic.angles;
441 vector newvel = vectoangles(normalize(trace_endpos - vehic.origin + '0 0 32'));
442 vang.x *= -1;
443 newvel.x *= -1;
444 if(newvel.x > 180) newvel.x -= 360;
445 if(newvel.x < -180) newvel.x += 360;
446 if(newvel.y > 180) newvel.y -= 360;
447 if(newvel.y < -180) newvel.y += 360;
448
449 float ftmp = shortangle_f(this.v_angle.y - vang.y, vang.y);
450 if(ftmp > 180) ftmp -= 360;
451 if(ftmp < -180) ftmp += 360;
452 vehic.avelocity_y = bound(-autocvar_g_vehicle_bumblebee_turnspeed, ftmp + vehic.avelocity.y * 0.9, autocvar_g_vehicle_bumblebee_turnspeed);
453
454 // Pitch
455 ftmp = 0;
456 if(CS(this).movement.x > 0 && vang.x < autocvar_g_vehicle_bumblebee_pitchlimit)
457 ftmp = 4;
458 else if(CS(this).movement.x < 0 && vang.x > -autocvar_g_vehicle_bumblebee_pitchlimit)
459 ftmp = -8;
460
463 vehic.avelocity_x = bound(-autocvar_g_vehicle_bumblebee_pitchspeed, ftmp + vehic.avelocity.x * 0.9, autocvar_g_vehicle_bumblebee_pitchspeed);
464
465 vehic.angles_x = anglemods(vehic.angles.x);
466 vehic.angles_y = anglemods(vehic.angles.y);
467 vehic.angles_z = anglemods(vehic.angles.z);
468
469 makevectors('0 1 0' * vehic.angles.y);
470 newvel = vehic.velocity * -autocvar_g_vehicle_bumblebee_friction;
471
472 if(CS(this).movement.x != 0)
473 {
474 if(CS(this).movement.x > 0)
476 else if(CS(this).movement.x < 0)
478 }
479
480 if(CS(this).movement.y != 0)
481 {
482 if(CS(this).movement.y < 0)
484 else if(CS(this).movement.y > 0)
486 ftmp = newvel * v_right;
487 ftmp *= dt * 0.1;
488 vehic.angles_z = bound(-15, vehic.angles.z + ftmp, 15);
489 }
490 else
491 {
492 vehic.angles_z *= 0.95;
493 if(vehic.angles.z >= -1 && vehic.angles.z <= -1)
494 vehic.angles_z = 0;
495 }
496
499 else if(PHYS_INPUT_BUTTON_JUMP(this))
501
502 vehic.velocity += newvel * dt;
503 this.velocity = CS(this).movement = vehic.velocity;
504
505
507 {
508 if(vehic.tur_head.lock_time < time || IS_DEAD(vehic.tur_head.enemy) || STAT(FROZEN, vehic.tur_head.enemy))
509 vehic.tur_head.enemy = NULL;
510
511 if(trace_ent)
512 if(trace_ent.move_movetype)
513 if(trace_ent.takedamage)
514 if(!IS_DEAD(trace_ent) && !STAT(FROZEN, trace_ent))
515 {
516 if(teamplay)
517 {
518 if(trace_ent.team == this.team)
519 {
520 vehic.tur_head.enemy = trace_ent;
521 vehic.tur_head.lock_time = time + autocvar_g_vehicle_bumblebee_healgun_locktime;
522 }
523 }
524 else
525 {
526 vehic.tur_head.enemy = trace_ent;
527 vehic.tur_head.lock_time = time + autocvar_g_vehicle_bumblebee_healgun_locktime;
528 }
529 }
530
531 if(vehic.tur_head.enemy)
532 {
533 trace_endpos = real_origin(vehic.tur_head.enemy);
534 UpdateAuxiliaryXhair(this, trace_endpos, '0 0.75 0', 0);
535 }
536 }
537
538 vang = vehicle_aimturret(vehic, trace_endpos, vehic.gun3, "fire",
541
542 if(!weaponLocked(this) && !weaponUseForbidden(this))
544 {
545 vehic.gun3.enemy.realowner = this;
546 vehic.gun3.enemy.effects &= ~EF_NODRAW;
547
548 vehic.gun3.enemy.hook_start = gettaginfo(vehic.gun3, gettagindex(vehic.gun3, "fire"));
549 vehic.gun3.enemy.SendFlags |= BRG_START;
550
551 traceline(vehic.gun3.enemy.hook_start, vehic.gun3.enemy.hook_start + v_forward * autocvar_g_vehicle_bumblebee_raygun_range, MOVE_NORMAL, vehic);
552
553 if(trace_ent)
554 {
556 {
559 }
560 else
561 {
562 if(!IS_DEAD(trace_ent))
563 {
564 if((teamplay && trace_ent.team == this.team) || !teamplay)
565 {
567 {
570 }
571
573 {
575 trace_ent.vehicle_shield = min(trace_ent.vehicle_shield + autocvar_g_vehicle_bumblebee_healgun_sps * dt, trace_ent.tur_head.max_health);
576 }
577 else if(IS_CLIENT(trace_ent))
578 {
582 }
583 }
584 }
585 }
586 }
587
588 vehic.gun3.enemy.hook_end = trace_endpos;
589 setorigin(vehic.gun3.enemy, trace_endpos);
590 vehic.gun3.enemy.SendFlags |= BRG_END;
591
592 vehic.wait = time + 1;
593 }
594 else
595 vehic.gun3.enemy.effects |= EF_NODRAW;
596 /*{
597 if(vehic.gun3.enemy)
598 remove(vehic.gun3.enemy);
599
600 vehic.gun3.enemy = NULL;
601 }
602 */
603
604 VEHICLE_UPDATE_PLAYER_RESOURCE(this, vehic, health, bumblebee, RES_HEALTH);
605 VEHICLE_UPDATE_PLAYER(this, vehic, energy, bumblebee);
606
607 this.vehicle_ammo1 = (vehic.gun1.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
608 this.vehicle_ammo2 = (vehic.gun2.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
609
610 if(vehic.vehicle_flags & VHF_HASSHIELD)
611 VEHICLE_UPDATE_PLAYER(this, vehic, shield, bumblebee);
612
613 vehic.angles_x *= -1;
614 makevectors(vehic.angles);
615 vehic.angles_x *= -1;
616 setorigin(this, vehic.origin + v_up * 48 + v_forward * 160);
617 this.oldorigin = this.origin; // negate fall damage
618
620}
ERASEABLE float anglemods(float v)
Definition angle.qc:13
ERASEABLE float shortangle_f(float ang1, float ang2)
Definition angle.qc:29
#define MUTATOR_IS_ENABLED(this)
Definition base.qh:193
bool autocvar_g_vehicle_bumblebee_raygun
Definition bumblebee.qc:56
float autocvar_g_vehicle_bumblebee_raygun_turnspeed
Definition bumblebee.qc:51
float autocvar_g_vehicle_bumblebee_healgun_locktime
Definition bumblebee.qc:67
float autocvar_g_vehicle_bumblebee_pitchspeed
Definition bumblebee.qc:21
float autocvar_g_vehicle_bumblebee_healgun_sps
Definition bumblebee.qc:66
float autocvar_g_vehicle_bumblebee_healgun_hmax
Definition bumblebee.qc:63
float autocvar_g_vehicle_bumblebee_raygun_aps
Definition bumblebee.qc:59
float autocvar_g_vehicle_bumblebee_turnspeed
Definition bumblebee.qc:20
float autocvar_g_vehicle_bumblebee_raygun_pitchlimit_down
Definition bumblebee.qc:52
float autocvar_g_vehicle_bumblebee_healgun_aps
Definition bumblebee.qc:64
float autocvar_g_vehicle_bumblebee_speed_strafe
Definition bumblebee.qc:17
float autocvar_g_vehicle_bumblebee_healgun_hps
Definition bumblebee.qc:62
float autocvar_g_vehicle_bumblebee_raygun_range
Definition bumblebee.qc:57
void bumblebee_regen(entity this, float dt)
Definition bumblebee.qc:394
float autocvar_g_vehicle_bumblebee_raygun_turnlimit_sides
Definition bumblebee.qc:54
float autocvar_g_vehicle_bumblebee_healgun_amax
Definition bumblebee.qc:65
float autocvar_g_vehicle_bumblebee_raygun_fps
Definition bumblebee.qc:60
float autocvar_g_vehicle_bumblebee_pitchlimit
Definition bumblebee.qc:22
float autocvar_g_vehicle_bumblebee_raygun_dps
Definition bumblebee.qc:58
const float BRG_START
Definition bumblebee.qc:10
const float BRG_END
Definition bumblebee.qc:11
float autocvar_g_vehicle_bumblebee_raygun_pitchlimit_up
Definition bumblebee.qc:53
float autocvar_g_vehicle_bumblebee_friction
Definition bumblebee.qc:23
float autocvar_g_vehicle_bumblebee_speed_down
Definition bumblebee.qc:19
float autocvar_g_vehicle_bumblebee_speed_up
Definition bumblebee.qc:18
float GetResource(entity e, Resource res_type)
Returns the current amount of resource the given entity has.
vector movement
Definition player.qh:229
#define IS_CLIENT(s)
Definition player.qh:242
#define PHYS_INPUT_BUTTON_JUMP(s)
Definition player.qh:151
vector v_angle
Definition player.qh:237
#define IS_PLAYER(s)
Definition player.qh:243
float game_stopped
Definition stats.qh:81
void Damage(entity targ, entity inflictor, entity attacker, float damage, int deathtype,.entity weaponentity, vector hitloc, vector force)
Definition damage.qc:503
bool Heal(entity targ, entity inflictor, float amount, float limit)
Definition damage.qc:987
RES_ARMOR
Definition ent_cs.qc:130
float bound(float min, float value, float max)
vector vectoangles(vector v)
float min(float f,...)
const int MOVETYPE_NONE
Definition movetypes.qh:129
const int RES_LIMIT_NONE
Definition resources.qh:60
int autocvar_g_instagib_extralives
void GiveResourceWithLimit(entity receiver, Resource res_type, float amount, float limit)
Gives an entity some resource but not more than a limit.
void vehicles_frame(entity this, entity actor)
const float vehicle_ammo1
If ent is player this is 0..100 indicating precentage of shield left on vehicle. If ent is vehicle,...
const float vehicle_ammo2
If ent is player this is 0..100 indicating percentage of primary reload status. If ent is vehicle,...
#define IS_VEHICLE(v)
Definition utils.qh:22

References anglemods(), autocvar_g_instagib_extralives, autocvar_g_vehicle_bumblebee_cannon_ammo, autocvar_g_vehicle_bumblebee_friction, autocvar_g_vehicle_bumblebee_healgun_amax, autocvar_g_vehicle_bumblebee_healgun_aps, autocvar_g_vehicle_bumblebee_healgun_hmax, autocvar_g_vehicle_bumblebee_healgun_hps, autocvar_g_vehicle_bumblebee_healgun_locktime, autocvar_g_vehicle_bumblebee_healgun_sps, autocvar_g_vehicle_bumblebee_pitchlimit, autocvar_g_vehicle_bumblebee_pitchspeed, autocvar_g_vehicle_bumblebee_raygun, autocvar_g_vehicle_bumblebee_raygun_aps, autocvar_g_vehicle_bumblebee_raygun_dps, autocvar_g_vehicle_bumblebee_raygun_fps, autocvar_g_vehicle_bumblebee_raygun_pitchlimit_down, autocvar_g_vehicle_bumblebee_raygun_pitchlimit_up, autocvar_g_vehicle_bumblebee_raygun_range, autocvar_g_vehicle_bumblebee_raygun_turnlimit_sides, autocvar_g_vehicle_bumblebee_raygun_turnspeed, autocvar_g_vehicle_bumblebee_speed_down, autocvar_g_vehicle_bumblebee_speed_forward, autocvar_g_vehicle_bumblebee_speed_strafe, autocvar_g_vehicle_bumblebee_speed_up, autocvar_g_vehicle_bumblebee_turnspeed, bound(), BRG_END, BRG_START, bumblebee_regen(), crosshair_trace(), CS(), Damage(), DAMAGE_NO, DMG_NOWEP, EF_NODRAW, entity(), game_stopped, GetResource(), gettagindex, gettaginfo, GiveResourceWithLimit(), Heal(), health, IS_CLIENT, IS_DEAD, IS_PLAYER, IS_VEHICLE, makevectors, min(), MOVE_NORMAL, movement, MOVETYPE_NONE, MUTATOR_IS_ENABLED, normalize(), NULL, oldorigin, origin, PHYS_INPUT_BUTTON_ATCK, PHYS_INPUT_BUTTON_ATCK2, PHYS_INPUT_BUTTON_CROUCH, PHYS_INPUT_BUTTON_JUMP, PHYS_INPUT_FRAMETIME, real_origin(), RES_ARMOR, RES_LIMIT_NONE, set_movetype(), shortangle_f(), SOLID_NOT, STAT, teamplay, time, trace_endpos, trace_ent, UpdateAuxiliaryXhair(), v_angle, v_forward, v_right, v_up, vectoangles(), vector, vehicle, vehicle_aimturret(), vehicle_ammo1, vehicle_ammo2, VEHICLE_UPDATE_PLAYER, VEHICLE_UPDATE_PLAYER_RESOURCE, vehicles_frame(), velocity, VHF_HASSHIELD, weaponLocked(), and weaponUseForbidden().

◆ bumblebee_regen()

void bumblebee_regen ( entity this,
float dt )

Definition at line 394 of file bumblebee.qc.

395{
398 this.gun1.vehicle_energy + autocvar_g_vehicle_bumblebee_cannon_ammo_regen * dt);
399
402 this.gun2.vehicle_energy + autocvar_g_vehicle_bumblebee_cannon_ammo_regen * dt);
403
406
409
412
413}
float autocvar_g_vehicle_bumblebee_health_regen
Definition bumblebee.qc:31
float autocvar_g_vehicle_bumblebee_shield_regen
Definition bumblebee.qc:35
float autocvar_g_vehicle_bumblebee_energy_regen
Definition bumblebee.qc:27
float autocvar_g_vehicle_bumblebee_cannon_ammo_regen
Definition bumblebee.qc:39
float autocvar_g_vehicle_bumblebee_energy_regen_pause
Definition bumblebee.qc:28
float autocvar_g_vehicle_bumblebee_cannon_ammo_regen_pause
Definition bumblebee.qc:40
float autocvar_g_vehicle_bumblebee_health
Definition bumblebee.qc:30
float autocvar_g_vehicle_bumblebee_shield
Definition bumblebee.qc:34
float autocvar_g_vehicle_bumblebee_shield_regen_pause
Definition bumblebee.qc:36
float autocvar_g_vehicle_bumblebee_health_regen_pause
Definition bumblebee.qc:32
float autocvar_g_vehicle_bumblebee_energy
Definition bumblebee.qc:26
void vehicles_regen(entity this, float timer,.float regen_field, float field_max, float rpause, float regen, float delta_time, float _healthscale)
void vehicles_regen_resource(entity this, float timer,.float regen_field, float field_max, float rpause, float regen, float delta_time, float _healthscale, Resource resource)
const float vehicle_shield
If ent is player this is 0..100 indicating precentage of energy left on vehicle. If ent is vehicle,...
float dmg_time
const float vehicle_health
entity gun1
int vehicle_flags
entity gun2
const int VHF_HEALTHREGEN
Vehicles shield regenerates.
Definition vehicle.qh:87
const int VHF_ENERGYREGEN
Vehicles health regenerates.
Definition vehicle.qh:88
const int VHF_SHIELDREGEN
Vehicle has shileding.
Definition vehicle.qh:86

References autocvar_g_vehicle_bumblebee_cannon_ammo, autocvar_g_vehicle_bumblebee_cannon_ammo_regen, autocvar_g_vehicle_bumblebee_cannon_ammo_regen_pause, autocvar_g_vehicle_bumblebee_energy, autocvar_g_vehicle_bumblebee_energy_regen, autocvar_g_vehicle_bumblebee_energy_regen_pause, autocvar_g_vehicle_bumblebee_health, autocvar_g_vehicle_bumblebee_health_regen, autocvar_g_vehicle_bumblebee_health_regen_pause, autocvar_g_vehicle_bumblebee_shield, autocvar_g_vehicle_bumblebee_shield_regen, autocvar_g_vehicle_bumblebee_shield_regen_pause, dmg_time, entity(), gun1, gun2, min(), time, vehicle_energy, vehicle_flags, vehicle_health, vehicle_shield, vehicles_regen(), vehicles_regen_resource(), VHF_ENERGYREGEN, VHF_HEALTHREGEN, VHF_SHIELDREGEN, and wait.

Referenced by bumblebee_pilot_frame().

◆ bumblebee_touch()

void bumblebee_touch ( entity this,
entity toucher )

Definition at line 372 of file bumblebee.qc.

373{
374 if(autocvar_g_vehicles_enter) { return; }
375
376 if(this.gunner1 != NULL && this.gunner2 != NULL)
377 {
378 vehicles_touch(this, toucher);
379 return;
380 }
381
383 {
384 float phase_time = (time >= this.gun1.phase) + (time >= this.gun2.phase);
385
386 if(time >= toucher.vehicle_enter_delay && phase_time)
388 return;
389 }
390
391 vehicles_touch(this, toucher);
392}
bool bumblebee_gunner_enter(entity this, entity player)
Definition bumblebee.qc:283
bool vehicles_valid_pilot(entity this, entity toucher)
Definition bumblebee.qc:358
entity entity toucher
Definition self.qh:72
entity gunner1
entity gunner2

References bumblebee_gunner_enter(), entity(), gun1, gun2, gunner1, gunner2, NULL, time, toucher, vehicles_touch(), and vehicles_valid_pilot().

◆ CSQC_BUMBLE_GUN_HUD()

void CSQC_BUMBLE_GUN_HUD ( )

Definition at line 934 of file bumblebee.qc.

935{
936 Vehicles_drawHUD("vehicle_gunner", "vehicle_gunner_weapon1", string_null,
938 string_null, '0 0 0');
939}
void Vehicles_drawHUD(string vehicle, string vehicleWeapon1, string vehicleWeapon2, string iconAmmo1, vector colorAmmo1, string iconAmmo2, vector colorAmmo2)
vector autocvar_hud_progressbar_vehicles_ammo1_color
string string_null
Definition nil.qh:9

References autocvar_hud_progressbar_vehicles_ammo1_color, string_null, and Vehicles_drawHUD().

Referenced by HUD_Vehicle().

◆ spawnfunc()

spawnfunc ( vehicle_bumblebee )

Definition at line 717 of file bumblebee.qc.

718{
719 if(!autocvar_g_vehicle_bumblebee) { delete(this); return; }
720 if(!vehicle_initialize(this, VEH_BUMBLEBEE, false)) { delete(this); return; }
721}
bool autocvar_g_vehicle_bumblebee
Definition bumblebee.qc:75
bool vehicle_initialize(entity this, Vehicle info, bool nodrop)

References autocvar_g_vehicle_bumblebee, and vehicle_initialize().

◆ vehicles_valid_pilot()

bool vehicles_valid_pilot ( entity this,
entity toucher )

Definition at line 358 of file bumblebee.qc.

359{
361 return false;
362
363 if((!IS_PLAYER(toucher))
364 || (IS_DEAD(toucher))
365 || (toucher.vehicle)
366 || (DIFF_TEAM(toucher, this))
367 ) { return false; }
368
369 return true;
370}
float autocvar_g_vehicles_allow_bots
#define IS_BOT_CLIENT(v)
want: (IS_CLIENT(v) && !IS_REAL_CLIENT(v))
Definition utils.qh:15

References autocvar_g_vehicles_allow_bots, DIFF_TEAM, entity(), IS_BOT_CLIENT, IS_DEAD, IS_PLAYER, and toucher.

Referenced by bumblebee_touch().

Variable Documentation

◆ autocvar_g_vehicle_bumblebee

bool autocvar_g_vehicle_bumblebee = true

Definition at line 75 of file bumblebee.qc.

Referenced by spawnfunc().

◆ autocvar_g_vehicle_bumblebee_blowup_coredamage

float autocvar_g_vehicle_bumblebee_blowup_coredamage = 500

Definition at line 70 of file bumblebee.qc.

Referenced by bumblebee_blowup().

◆ autocvar_g_vehicle_bumblebee_blowup_edgedamage

float autocvar_g_vehicle_bumblebee_blowup_edgedamage = 100

Definition at line 71 of file bumblebee.qc.

Referenced by bumblebee_blowup().

◆ autocvar_g_vehicle_bumblebee_blowup_forceintensity

float autocvar_g_vehicle_bumblebee_blowup_forceintensity = 600

Definition at line 72 of file bumblebee.qc.

Referenced by bumblebee_blowup().

◆ autocvar_g_vehicle_bumblebee_blowup_radius

float autocvar_g_vehicle_bumblebee_blowup_radius = 500

Definition at line 69 of file bumblebee.qc.

Referenced by bumblebee_blowup().

◆ autocvar_g_vehicle_bumblebee_bouncepain

vector autocvar_g_vehicle_bumblebee_bouncepain = '1 100 200'

Definition at line 73 of file bumblebee.qc.

◆ autocvar_g_vehicle_bumblebee_cannon_ammo

float autocvar_g_vehicle_bumblebee_cannon_ammo = 100

Definition at line 38 of file bumblebee.qc.

Referenced by bumblebee_gunner_frame(), bumblebee_pilot_frame(), and bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_cannon_ammo_regen

float autocvar_g_vehicle_bumblebee_cannon_ammo_regen = 100

Definition at line 39 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_cannon_ammo_regen_pause

float autocvar_g_vehicle_bumblebee_cannon_ammo_regen_pause = 1

Definition at line 40 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_cannon_lock

float autocvar_g_vehicle_bumblebee_cannon_lock = 1

Definition at line 42 of file bumblebee.qc.

Referenced by bumblebee_gunner_frame().

◆ autocvar_g_vehicle_bumblebee_cannon_pitchlimit_down

float autocvar_g_vehicle_bumblebee_cannon_pitchlimit_down = 60

Definition at line 45 of file bumblebee.qc.

Referenced by bumblebee_gunner_frame().

◆ autocvar_g_vehicle_bumblebee_cannon_pitchlimit_up

float autocvar_g_vehicle_bumblebee_cannon_pitchlimit_up = 60

Definition at line 46 of file bumblebee.qc.

Referenced by bumblebee_gunner_frame().

◆ autocvar_g_vehicle_bumblebee_cannon_turnlimit_in

float autocvar_g_vehicle_bumblebee_cannon_turnlimit_in = 20

Definition at line 47 of file bumblebee.qc.

Referenced by bumblebee_gunner_frame().

◆ autocvar_g_vehicle_bumblebee_cannon_turnlimit_out

float autocvar_g_vehicle_bumblebee_cannon_turnlimit_out = 80

Definition at line 48 of file bumblebee.qc.

Referenced by bumblebee_gunner_frame().

◆ autocvar_g_vehicle_bumblebee_cannon_turnspeed

float autocvar_g_vehicle_bumblebee_cannon_turnspeed = 260

Definition at line 44 of file bumblebee.qc.

Referenced by bumblebee_gunner_frame().

◆ autocvar_g_vehicle_bumblebee_energy

float autocvar_g_vehicle_bumblebee_energy = 500

Definition at line 26 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_energy_regen

float autocvar_g_vehicle_bumblebee_energy_regen = 50

Definition at line 27 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_energy_regen_pause

float autocvar_g_vehicle_bumblebee_energy_regen_pause = 1

Definition at line 28 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_friction

float autocvar_g_vehicle_bumblebee_friction = 0.5

Definition at line 23 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_healgun_amax

float autocvar_g_vehicle_bumblebee_healgun_amax = 100

Definition at line 65 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_healgun_aps

float autocvar_g_vehicle_bumblebee_healgun_aps = 75

Definition at line 64 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_healgun_hmax

float autocvar_g_vehicle_bumblebee_healgun_hmax = 100

Definition at line 63 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_healgun_hps

float autocvar_g_vehicle_bumblebee_healgun_hps = 150

Definition at line 62 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_healgun_locktime

float autocvar_g_vehicle_bumblebee_healgun_locktime = 2.5

Definition at line 67 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_healgun_sps

float autocvar_g_vehicle_bumblebee_healgun_sps = 100

Definition at line 66 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_health

float autocvar_g_vehicle_bumblebee_health = 1000

Definition at line 30 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_health_regen

float autocvar_g_vehicle_bumblebee_health_regen = 65

Definition at line 31 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_health_regen_pause

float autocvar_g_vehicle_bumblebee_health_regen_pause = 10

Definition at line 32 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_pitchlimit

float autocvar_g_vehicle_bumblebee_pitchlimit = 60

Definition at line 22 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_pitchspeed

float autocvar_g_vehicle_bumblebee_pitchspeed = 60

Definition at line 21 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_raygun

bool autocvar_g_vehicle_bumblebee_raygun = false

Definition at line 56 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_raygun_aps

float autocvar_g_vehicle_bumblebee_raygun_aps = 100

Definition at line 59 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_raygun_dps

float autocvar_g_vehicle_bumblebee_raygun_dps = 250

Definition at line 58 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_raygun_fps

float autocvar_g_vehicle_bumblebee_raygun_fps = 100

Definition at line 60 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_raygun_pitchlimit_down

float autocvar_g_vehicle_bumblebee_raygun_pitchlimit_down = 20

Definition at line 52 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_raygun_pitchlimit_up

float autocvar_g_vehicle_bumblebee_raygun_pitchlimit_up = 5

Definition at line 53 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_raygun_range

float autocvar_g_vehicle_bumblebee_raygun_range = 2048

Definition at line 57 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_raygun_turnlimit_sides

float autocvar_g_vehicle_bumblebee_raygun_turnlimit_sides = 35

Definition at line 54 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_raygun_turnspeed

float autocvar_g_vehicle_bumblebee_raygun_turnspeed = 180

Definition at line 51 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_respawntime

float autocvar_g_vehicle_bumblebee_respawntime = 60

Definition at line 14 of file bumblebee.qc.

◆ autocvar_g_vehicle_bumblebee_shield

float autocvar_g_vehicle_bumblebee_shield = 400

Definition at line 34 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_shield_regen

float autocvar_g_vehicle_bumblebee_shield_regen = 150

Definition at line 35 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_shield_regen_pause

float autocvar_g_vehicle_bumblebee_shield_regen_pause = 0.75

Definition at line 36 of file bumblebee.qc.

Referenced by bumblebee_regen().

◆ autocvar_g_vehicle_bumblebee_speed_down

float autocvar_g_vehicle_bumblebee_speed_down = 350

Definition at line 19 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_speed_forward

float autocvar_g_vehicle_bumblebee_speed_forward = 350

Definition at line 16 of file bumblebee.qc.

Referenced by bumblebee_exit(), and bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_speed_strafe

float autocvar_g_vehicle_bumblebee_speed_strafe = 350

Definition at line 17 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_speed_up

float autocvar_g_vehicle_bumblebee_speed_up = 350

Definition at line 18 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ autocvar_g_vehicle_bumblebee_swim

bool autocvar_g_vehicle_bumblebee_swim = true

Definition at line 24 of file bumblebee.qc.

◆ autocvar_g_vehicle_bumblebee_turnspeed

float autocvar_g_vehicle_bumblebee_turnspeed = 120

Definition at line 20 of file bumblebee.qc.

Referenced by bumblebee_pilot_frame().

◆ BRG_END

const float BRG_END = 8

Definition at line 11 of file bumblebee.qc.

Referenced by bumble_raygun_send(), bumblebee_pilot_frame(), and NET_HANDLE().

◆ BRG_SETUP

const float BRG_SETUP = 2

Definition at line 9 of file bumblebee.qc.

Referenced by bumble_raygun_send(), and NET_HANDLE().

◆ BRG_START

const float BRG_START = 4

Definition at line 10 of file bumblebee.qc.

Referenced by bumble_raygun_send(), bumblebee_pilot_frame(), and NET_HANDLE().