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 698 of file bumblebee.qc.

699{
700 RadiusDamage(this, this.enemy,
704 this,
705 NULL,
707 DEATH_VH_BUMB_DEATH.m_id,
708 DMG_NOWEP,
709 NULL
710 );
711
712 sound(this, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM);
713 Send_Effect(EFFECT_EXPLOSION_BIG, (this.origin + '0 0 100') + (randomvec() * 80), '0 0 0', 1);
714
715 if (this.owner.deadflag == DEAD_DYING)
716 this.owner.deadflag = DEAD_DEAD;
717
718 delete(this);
719}
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:943
#define DMG_NOWEP
Definition damage.qh:104
void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt)
Definition all.qc:120
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 721 of file bumblebee.qc.

722{
723 bumblebee_blowup(this);
724}
void bumblebee_blowup(entity this)
Definition bumblebee.qc:698

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

◆ bumblebee_diethink()

void bumblebee_diethink ( entity this)

Definition at line 726 of file bumblebee.qc.

727{
728 if (time >= this.wait)
730
731 if (random() < 0.1)
732 {
733 sound(this, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM);
734 Send_Effect(EFFECT_EXPLOSION_SMALL, randomvec() * 80 + (this.origin + '0 0 100'), '0 0 0', 1);
735 }
736
737 this.nextthink = time + 0.1;
738}
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 656 of file bumblebee.qc.

657{
658 if (this.owner.vehicleid == VEH_BUMBLEBEE.vehicleid)
659 {
660 bumblebee_gunner_exit(this, eject);
661 return;
662 }
663
665
666 if (!IS_DEAD(this))
667 {
669 this.nextthink = time;
670 }
671
673
674 if (!this.owner)
675 return;
676
678 vector spot;
680 spot = this.origin + v_up * 128 + v_forward * 300;
681 else
682 spot = this.origin + v_up * 128 - v_forward * 300;
683
684 spot = vehicles_findgoodexit(this, this.owner, spot);
685
686 // Hide beam
687 if (this.gun3.enemy || !wasfreed(this.gun3.enemy))
688 this.gun3.enemy.effects |= EF_NODRAW;
689
690 this.owner.velocity = 0.75 * this.vehicle.velocity + normalize(spot - this.vehicle.origin) * 200;
691 this.owner.velocity.z += 10;
692 setorigin(this.owner, spot);
693
694 antilag_clear(this.owner, CS(this.owner));
695 this.owner = NULL;
696}
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:641
void bumblebee_gunner_exit(entity this, int _exitflag)
Definition bumblebee.qc:216
#define IS_DEAD(s)
Definition player.qh:244
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 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
289 && time >= vehic.gun1.phase && time >= vehic.gun2.phase)
290 {
291 // we can have some fun
292 vector v1 = gettaginfo(vehic, gettagindex(vehic, "cannon_right"));
293 vector v2 = gettaginfo(vehic, gettagindex(vehic, "cannon_left"));
294 if (vlen2(player.origin - v1) < vlen2(player.origin - v2))
295 {
296 gunner = vehic.gun1;
297 vehic.gunner1 = player;
298 }
299 else
300 {
301 gunner = vehic.gun2;
302 vehic.gunner2 = player;
303 }
304 }
305 else if (!vehic.gunner1 && time >= vehic.gun1.phase)
306 {
307 gunner = vehic.gun1;
308 vehic.gunner1 = player;
309 }
310 else if (!vehic.gunner2 && time >= vehic.gun2.phase)
311 {
312 gunner = vehic.gun2;
313 vehic.gunner2 = player;
314 }
315 else
316 {
317 LOG_TRACE("Vehicle is full, fail");
318 return false;
319 }
320
321 player.vehicle = gunner;
322 player.angles = vehic.angles;
323 player.takedamage = DAMAGE_NO;
324 player.solid = SOLID_NOT;
325 player.alpha = -1;
327 player.event_damage = func_null;
328 player.view_ofs = '0 0 0';
329 STAT(HUD, player) = STAT(HUD, gunner);
330 player.teleportable = false;
331 player.PlayerPhysplug = gunner.PlayerPhysplug;
332 player.vehicle_ammo1 = vehic.vehicle_ammo1;
333 player.vehicle_ammo2 = vehic.vehicle_ammo2;
334 player.vehicle_reload1 = vehic.vehicle_reload1;
335 player.vehicle_reload2 = vehic.vehicle_reload2;
336 player.vehicle_energy = vehic.vehicle_energy;
337 UNSET_ONGROUND(player);
338
339 RemoveGrapplingHooks(player);
340
341 for (int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
342 {
343 .entity weaponentity = weaponentities[slot];
344 gunner.(weaponentity) = new(temp_wepent);
345 gunner.(weaponentity).m_switchweapon = player.(weaponentity).m_switchweapon;
346 }
347 gunner.vehicle_exit = bumblebee_gunner_exit;
348 gunner.vehicle_hudmodel.viewmodelforclient = player;
349
350 if (IS_REAL_CLIENT(player))
351 {
352 msg_entity = player;
354 WriteEntity(MSG_ONE, gunner.vehicle_viewport);
355
356 // NOTE: engine networked
358 WriteAngle(MSG_ONE, gunner.angles.x + vehic.angles.x); // tilt
359 WriteAngle(MSG_ONE, gunner.angles.y + vehic.angles.y); // yaw
360 WriteAngle(MSG_ONE, 0); // roll
361 }
362
363 CSQCVehicleSetup(player, STAT(HUD, player));
364
365 MUTATOR_CALLHOOK(VehicleEnter, player, gunner);
366
367 return true;
368}
#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 216 of file bumblebee.qc.

217{
218 entity player = (this.owner.gun1 == this ? this.owner.gunner1 : this.owner.gunner2);
219 entity gunner = this;
220 entity vehic = gunner.owner;
221
222 if (IS_REAL_CLIENT(player))
223 {
224 msg_entity = player;
226 WriteEntity(MSG_ONE, player);
227
228 // NOTE: engine networked
231 WriteAngle(MSG_ONE, vehic.angles.y);
233 }
234
236
237 player.takedamage = DAMAGE_AIM;
238 player.solid = SOLID_SLIDEBOX;
240 player.effects &= ~EF_NODRAW;
241 player.alpha = 1;
242 player.PlayerPhysplug = func_null;
243 player.view_ofs = STAT(PL_VIEW_OFS, player);
244 player.event_damage = PlayerDamage;
245 STAT(HUD, player) = HUD_NORMAL;
246 player.teleportable = TELEPORT_NORMAL;
247 for (int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
248 {
249 .entity weaponentity = weaponentities[slot];
250 player.(weaponentity).m_switchweapon = gunner.(weaponentity).m_switchweapon;
251 delete(gunner.(weaponentity));
252 }
253 player.vehicle_enter_delay = time + 2;
254 setsize(player, STAT(PL_MIN, player), STAT(PL_MAX, player));
255
256 fixedmakevectors(vehic.angles);
257
258 if (player == vehic.gunner1)
259 vehic.gunner1 = NULL;
260 if (player == vehic.gunner2)
261 {
262 vehic.gunner2 = NULL;
263 v_right = -v_right;
264 }
265
266 vector spot = real_origin(gunner);
267 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:193
vector real_origin(entity ent)
Definition util.qc:147
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 193 of file bumblebee.qc.

194{
195 //vector exitspot;
196 tracebox(gunner.origin + '0 0 32', STAT(PL_MIN, player), STAT(PL_MAX, player), prefer_spot, MOVE_NORMAL, player);
198 return prefer_spot;
199
200 float 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
201 vector v;
202 vector v2 = 0.5 * (gunner.absmin + gunner.absmax);
203 for (int i = 0; i < 100; ++i)
204 {
205 v = randomvec();
206 v.z = 0;
207 v = v2 + normalize(v) * mysize;
208 tracebox(v2, STAT(PL_MIN, player), STAT(PL_MAX, player), v, MOVE_NORMAL, player);
210 return v;
211 }
212
213 return prefer_spot; // this should be considered a fallback?!
214}
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 = -vehic.angles.x;
92 makevectors(vehic.angles);
93 vehic.angles.x = -vehic.angles.x;
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
112 {
113 if (gun.lock_time < time || IS_DEAD(gun.enemy) || STAT(FROZEN, gun.enemy))
114 gun.enemy = NULL;
115
116 if (trace_ent
117 && trace_ent.move_movetype
118 && trace_ent.takedamage
119 && !IS_DEAD(trace_ent) && !STAT(FROZEN, trace_ent))
120 {
121 if (teamplay)
122 {
123 if (DIFF_TEAM(trace_ent, this))
124 {
125 gun.enemy = trace_ent;
126 gun.lock_time = time + 2.5;
127 }
128 }
129 else
130 {
131 gun.enemy = trace_ent;
132 gun.lock_time = time + 0.5;
133 }
134 }
135 }
136
137 vector ad;
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 ad = vf;
148 distance = vlen(ad - this.origin);
149 impact_time = distance / autocvar_g_vehicle_bumblebee_cannon_speed;
150 ad = vf + _vel * impact_time;
151 trace_endpos = ad;
152
153 UpdateAuxiliaryXhair(this, ad, '1 0 1', 1);
154 vehicle_aimturret(vehic, trace_endpos, gun, "fire",
157
158 }
159 else
160 vehicle_aimturret(vehic, _ct, gun, "fire",
163
164 if (!weaponLocked(this) && !weaponUseForbidden(this)
166 && time > gun.attack_finished_single[0]
167 && gun.vehicle_energy >= autocvar_g_vehicle_bumblebee_cannon_cost)
168 {
169 gun.vehicle_energy -= autocvar_g_vehicle_bumblebee_cannon_cost;
170 bumblebee_fire_cannon(vehic, gun, "fire", this);
171 gun.delay = time;
172 gun.attack_finished_single[0] = time + autocvar_g_vehicle_bumblebee_cannon_refire;
173 }
174
175 VEHICLE_UPDATE_PLAYER_RESOURCE(this, vehic, health, bumblebee, RES_HEALTH);
176
177 if (vehic.vehicle_flags & VHF_HASSHIELD)
178 VEHICLE_UPDATE_PLAYER(this, vehic, shield, bumblebee);
179
180 ad = gettaginfo(gun, gettagindex(gun, "fire"));
181 traceline(ad, ad + v_forward * max_shot_distance, MOVE_NORMAL, gun);
182
183 UpdateAuxiliaryXhair(this, trace_endpos, ('1 0 0' * this.vehicle_reload1) + ('0 1 0' * (1 - this.vehicle_reload1)), 0);
184
185 if (vehic.owner)
186 UpdateAuxiliaryXhair(vehic.owner, trace_endpos, ('1 0 0' * this.vehicle_reload1) + ('0 1 0' * (1 - this.vehicle_reload1)), (this == vehic.gunner1 ? 1 : 2));
187
188 vehic.solid = SOLID_BBOX;
190 this.vehicle_energy = (gun.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
191}
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:156
#define PHYS_INPUT_BUTTON_ATCK(s)
Definition player.qh:152
#define PHYS_INPUT_BUTTON_ATCK2(s)
Definition player.qh:154
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 energy left on vehicle. If ent is vehicle,...
#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 reload status. If ent is vehicle,...
bool teamplay
Definition teams.qh:59
#define DIFF_TEAM(a, b)
Definition teams.qh:242
void crosshair_trace(entity pl)
Definition tracing.qc:542
const int VHF_HASSHIELD
Vehicle has shileding.
Definition vehicle.qh:95
int max_shot_distance
Definition weapon.qh:245
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 641 of file bumblebee.qc.

642{
643 float hgt = vehicle_altitude(this, 512);
644 this.velocity = (this.velocity * 0.9) + ('0 0 -1800' * (hgt / 256) * PHYS_INPUT_FRAMETIME);
645 this.angles.x *= 0.95;
646 this.angles.z *= 0.95;
647
648 if (hgt < 16)
650
651 this.nextthink = time;
652
654}
#define PHYS_INPUT_FRAMETIME
Definition player.qh:254
#define CSQCMODEL_AUTOUPDATE(e)
void vehicles_think(entity this)
float vehicle_altitude(entity this, float amax)
Definition vehicles.qc:4

References angles, 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 427 of file bumblebee.qc.

428{
429 entity vehic = this.vehicle;
430 return = true;
431
432 if (game_stopped)
433 {
434 vehic.solid = SOLID_NOT;
435 vehic.takedamage = DAMAGE_NO;
437 return;
438 }
439
440 vehicles_frame(vehic, this);
441
442 if (IS_DEAD(vehic))
443 {
445 return;
446 }
447
448 bumblebee_regen(vehic, dt);
449
450 crosshair_trace(this);
451
452 vector vang = vehic.angles;
453 vector newvel = vectoangles(normalize(trace_endpos - vehic.origin + '0 0 32'));
454 vang.x = -vang.x;
455 newvel.x = -newvel.x;
456 if (newvel.x > 180) newvel.x -= 360;
457 if (newvel.x < -180) newvel.x += 360;
458 if (newvel.y > 180) newvel.y -= 360;
459 if (newvel.y < -180) newvel.y += 360;
460
461 float ftmp = shortangle_f(this.v_angle.y - vang.y, vang.y);
462 if (ftmp > 180) ftmp -= 360;
463 if (ftmp < -180) ftmp += 360;
464 vehic.avelocity.y = bound(-autocvar_g_vehicle_bumblebee_turnspeed, ftmp + vehic.avelocity.y * 0.9, autocvar_g_vehicle_bumblebee_turnspeed);
465
466 // Pitch
467 ftmp = 0;
468 if (CS(this).movement.x > 0 && vang.x < autocvar_g_vehicle_bumblebee_pitchlimit)
469 ftmp = 4;
470 else if (CS(this).movement.x < 0 && vang.x > -autocvar_g_vehicle_bumblebee_pitchlimit)
471 ftmp = -8;
472
475 vehic.avelocity.x = bound(-autocvar_g_vehicle_bumblebee_pitchspeed, ftmp + vehic.avelocity.x * 0.9, autocvar_g_vehicle_bumblebee_pitchspeed);
476
477 vehic.angles.x = anglemods(vehic.angles.x);
478 vehic.angles.y = anglemods(vehic.angles.y);
479 vehic.angles.z = anglemods(vehic.angles.z);
480
481 makevectors('0 1 0' * vehic.angles.y);
482 newvel = vehic.velocity * -autocvar_g_vehicle_bumblebee_friction;
483
484 if (CS(this).movement.x != 0)
485 {
486 if (CS(this).movement.x > 0)
488 else if (CS(this).movement.x < 0)
490 }
491
492 if (CS(this).movement.y != 0)
493 {
494 if (CS(this).movement.y < 0)
496 else if (CS(this).movement.y > 0)
498 ftmp = newvel * v_right;
499 ftmp *= dt * 0.1;
500 vehic.angles.z = bound(-15, vehic.angles.z + ftmp, 15);
501 }
502 else
503 {
504 vehic.angles.z *= 0.95;
505 if (vehic.angles.z >= -1 && vehic.angles.z <= -1)
506 vehic.angles.z = 0;
507 }
508
509 if (PHYS_INPUT_BUTTON_CROUCH(this))
511 else if (PHYS_INPUT_BUTTON_JUMP(this))
513
514 vehic.velocity += newvel * dt;
515 this.velocity = CS(this).movement = vehic.velocity;
516
517
519 {
520 if (vehic.tur_head.lock_time < time || IS_DEAD(vehic.tur_head.enemy) || STAT(FROZEN, vehic.tur_head.enemy))
521 vehic.tur_head.enemy = NULL;
522
523 if (trace_ent
524 && trace_ent.move_movetype
525 && trace_ent.takedamage
526 && !IS_DEAD(trace_ent) && !STAT(FROZEN, trace_ent))
527 {
528 if (teamplay)
529 {
530 if (trace_ent.team == this.team)
531 {
532 vehic.tur_head.enemy = trace_ent;
533 vehic.tur_head.lock_time = time + autocvar_g_vehicle_bumblebee_healgun_locktime;
534 }
535 }
536 else
537 {
538 vehic.tur_head.enemy = trace_ent;
539 vehic.tur_head.lock_time = time + autocvar_g_vehicle_bumblebee_healgun_locktime;
540 }
541 }
542
543 if (vehic.tur_head.enemy)
544 {
545 trace_endpos = real_origin(vehic.tur_head.enemy);
546 UpdateAuxiliaryXhair(this, trace_endpos, '0 0.75 0', 0);
547 }
548 }
549
550 vang = vehicle_aimturret(vehic, trace_endpos, vehic.gun3, "fire",
553
554 if (!weaponLocked(this) && !weaponUseForbidden(this)
557 {
558 vehic.gun3.enemy.realowner = this;
559 vehic.gun3.enemy.effects &= ~EF_NODRAW;
560
561 vehic.gun3.enemy.hook_start = gettaginfo(vehic.gun3, gettagindex(vehic.gun3, "fire"));
562 vehic.gun3.enemy.SendFlags |= BRG_START;
563
564 traceline(vehic.gun3.enemy.hook_start, vehic.gun3.enemy.hook_start + v_forward * autocvar_g_vehicle_bumblebee_raygun_range, MOVE_NORMAL, vehic);
565
566 if (trace_ent)
567 {
569 {
570 Damage(trace_ent, vehic, this,
572 DEATH_GENERIC.m_id,
573 DMG_NOWEP,
576 );
578 }
579 else
580 {
581 if (!IS_DEAD(trace_ent))
582 {
583 if ((teamplay && trace_ent.team == this.team) || !teamplay)
584 {
586 {
589 }
590
592 {
594 trace_ent.vehicle_shield = min(trace_ent.vehicle_shield + autocvar_g_vehicle_bumblebee_healgun_sps * dt, trace_ent.tur_head.max_health);
595 }
596 else if (IS_CLIENT(trace_ent))
597 {
601 }
602 }
603 }
604 }
605 }
606
607 vehic.gun3.enemy.hook_end = trace_endpos;
608 setorigin(vehic.gun3.enemy, trace_endpos);
609 vehic.gun3.enemy.SendFlags |= BRG_END;
610
611 vehic.wait = time + 1;
612 }
613 else
614 vehic.gun3.enemy.effects |= EF_NODRAW;
615 /*{
616 if (vehic.gun3.enemy)
617 remove(vehic.gun3.enemy);
618
619 vehic.gun3.enemy = NULL;
620 }
621 */
622
623 VEHICLE_UPDATE_PLAYER_RESOURCE(this, vehic, health, bumblebee, RES_HEALTH);
624 VEHICLE_UPDATE_PLAYER(this, vehic, energy, bumblebee);
625
626 this.vehicle_ammo1 = (vehic.gun1.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
627 this.vehicle_ammo2 = (vehic.gun2.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
628
629 if (vehic.vehicle_flags & VHF_HASSHIELD)
630 VEHICLE_UPDATE_PLAYER(this, vehic, shield, bumblebee);
631
632 vehic.angles.x = -vehic.angles.x;
633 makevectors(vehic.angles);
634 vehic.angles.x = -vehic.angles.x;
635 setorigin(this, vehic.origin + v_up * 48 + v_forward * 160);
636 this.oldorigin = this.origin; // negate fall damage
637
639}
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:407
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:228
#define IS_CLIENT(s)
Definition player.qh:241
#define PHYS_INPUT_BUTTON_JUMP(s)
Definition player.qh:153
vector v_angle
Definition player.qh:236
#define IS_PLAYER(s)
Definition player.qh:242
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:493
bool Heal(entity targ, entity inflictor, float amount, float limit)
Definition damage.qc:957
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 percentage of primary ammo left UNLESS value is already st...
const float vehicle_ammo2
If ent is player this is 0..100 indicating percentage of secondary ammo left. If ent is vehicle,...
#define IS_VEHICLE(v)
Definition utils.qh:24

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 407 of file bumblebee.qc.

408{
411 this.gun1.vehicle_energy + autocvar_g_vehicle_bumblebee_cannon_ammo_regen * dt);
412
415 this.gun2.vehicle_energy + autocvar_g_vehicle_bumblebee_cannon_ammo_regen * dt);
416
419
422
425}
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 shield left on vehicle. If ent is vehicle,...
float dmg_time
const float vehicle_health
If ent is player this is 0..100 indicating precentage of health left on vehicle. Vehicle's value is t...
entity gun1
int vehicle_flags
entity gun2
const int VHF_HEALTHREGEN
Vehicles health regenerates.
Definition vehicle.qh:97
const int VHF_ENERGYREGEN
Vehicles energy regenerates.
Definition vehicle.qh:98
const int VHF_SHIELDREGEN
Vehicles shield regenerates.
Definition vehicle.qh:96

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 384 of file bumblebee.qc.

385{
386 if (autocvar_g_vehicles_enter)
387 return;
388
389 if (this.gunner1 != NULL && this.gunner2 != NULL)
390 {
391 vehicles_touch(this, toucher);
392 return;
393 }
394
395 if (vehicles_valid_pilot(this, toucher))
396 {
397 bool phase_time = (time >= this.gun1.phase || time >= this.gun2.phase);
398
399 if (time >= toucher.vehicle_enter_delay && phase_time
401 return;
402 }
403
404 vehicles_touch(this, toucher);
405}
bool bumblebee_gunner_enter(entity this, entity player)
Definition bumblebee.qc:283
bool vehicles_valid_pilot(entity this, entity toucher)
Definition bumblebee.qc:370
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 958 of file bumblebee.qc.

959{
960 Vehicles_drawHUD("vehicle_gunner", "vehicle_gunner_weapon1", string_null,
962 string_null, '0 0 0');
963}
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 740 of file bumblebee.qc.

741{
743 || !vehicle_initialize(this, VEH_BUMBLEBEE, false))
744 {
745 delete(this);
746 return;
747 }
748}
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 370 of file bumblebee.qc.

371{
373 return false;
374
375 if (!IS_PLAYER(toucher)
376 || IS_DEAD(toucher)
377 || toucher.vehicle
378 || DIFF_TEAM(toucher, this))
379 return false;
380
381 return true;
382}
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().