#ifndef VEHICLE_BUMBLEBEE
#define VEHICLE_BUMBLEBEE
#include "bumblebee.qh"
+#ifndef MENUQC
int v_bumblebee(int);
+#endif
REGISTER_VEHICLE_SIMPLE(
/* VEH_##id */ BUMBLEBEE,
-/* function */ v_bumblebee,
/* spawnflags */ VHF_DMGSHAKE,
/* mins,maxs */ '-245 -130 -130', '230 130 130',
/* model */ "models/vehicles/bumblebee_body.dpm",
/* fullname */ _("Bumblebee")
) {
this.m_icon = "vehicle_bumble";
+#ifndef MENUQC
+ this.vehicle_func = v_bumblebee;
+#endif
}
#endif
void bumblebee_fire_cannon(entity _gun, string _tagname, entity _owner)
{
vector v = gettaginfo(_gun, gettagindex(_gun, _tagname));
- vehicles_projectile("bigplasma_muzzleflash", "weapons/flacexp3.wav",
+ vehicles_projectile(EFFECT_BIGPLASMA_MUZZLEFLASH.eent_eff_name, W_Sound("flacexp3"),
v, normalize(v_forward + randomvec() * autocvar_g_vehicle_bumblebee_cannon_spread) * autocvar_g_vehicle_bumblebee_cannon_speed,
autocvar_g_vehicle_bumblebee_cannon_damage, autocvar_g_vehicle_bumblebee_cannon_radius, autocvar_g_vehicle_bumblebee_cannon_force, 0,
DEATH_VH_BUMB_GUN, PROJECTILE_BUMBLE_GUN, 0, true, true, _owner);
}
else if(!vehic.gunner1 && time >= vehic.gun1.phase) { gunner = vehic.gun1; vehic.gunner1 = player; }
else if(!vehic.gunner2 && time >= vehic.gun2.phase) { gunner = vehic.gun2; vehic.gunner2 = player; }
- else { dprint("Vehicle is full, fail\n"); return false; }
+ else { LOG_TRACE("Vehicle is full, fail\n"); return false; }
player.vehicle = gunner;
player.angles = vehic.angles;
{
entity pilot, vehic;
vector newvel;
-
+
if(intermission_running)
{
self.vehicle.velocity = '0 0 0';
self.think = vehicles_think;
self.nextthink = time;
-
+
CSQCMODEL_AUTOUPDATE();
}
self.think = bumblebee_land;
self.nextthink = time;
}
-
+
self.movetype = MOVETYPE_TOSS;
if(!self.owner)
autocvar_g_vehicle_bumblebee_blowup_forceintensity,
DEATH_VH_BUMB_DEATH, world);
- sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTEN_NORM);
- Send_Effect("explosion_big", (self.origin + '0 0 100') + (randomvec() * 80), '0 0 0', 1);
+ sound(self, CH_SHOTS, W_Sound("rocket_impact"), VOL_BASE, ATTEN_NORM);
+ Send_Effect(EFFECT_EXPLOSION_BIG, (self.origin + '0 0 100') + (randomvec() * 80), '0 0 0', 1);
if(self.owner.deadflag == DEAD_DYING)
self.owner.deadflag = DEAD_DEAD;
if(random() < 0.1)
{
- sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTEN_NORM);
- Send_Effect("explosion_small", randomvec() * 80 + (self.origin + '0 0 100'), '0 0 0', 1);
+ sound(self, CH_SHOTS, W_Sound("rocket_impact"), VOL_BASE, ATTEN_NORM);
+ Send_Effect(EFFECT_EXPLOSION_SMALL, randomvec() * 80 + (self.origin + '0 0 100'), '0 0 0', 1);
}
self.nextthink = time + 0.1;
{
if(autocvar_g_vehicle_bumblebee_bouncepain)
vehicles_impact(autocvar_g_vehicle_bumblebee_bouncepain_x, autocvar_g_vehicle_bumblebee_bouncepain_y, autocvar_g_vehicle_bumblebee_bouncepain_z);
-
+
return true;
}
case VR_ENTER:
{
self.angles_z *= 0.8;
self.angles_x *= 0.8;
-
+
self.nextthink = time;
-
+
if(!self.owner)
{
- entity oldself = self;
+ entity oldself = self;
if(self.gunner1)
{
self = self.gunner1;
other = oldother;
return true;
}
-
+
if(self.gunner2)
{
self = self.gunner2;
self.touch();
other = oldother;
return true;
- }
+ }
}
-
+
return true;
}
case VR_DEATH:
// Hide beam
if(self.gun3.enemy || !wasfreed(self.gun3.enemy))
self.gun3.enemy.effects |= EF_NODRAW;
-
+
if(self.gunner1)
{
self = self.gunner1;
_body.touch = bumblebee_blowup;
else
_body.touch = func_null;
-
+
_body.think = bumblebee_diethink;
_body.nextthink = time;
_body.wait = time + 2 + (random() * 8);
_body.scale = 1.5;
_body.angles = self.angles;
- Send_Effect("explosion_medium", findbetterlocation(self.origin, 16), '0 0 0', 1);
-
+ Send_Effect(EFFECT_EXPLOSION_MEDIUM, findbetterlocation(self.origin, 16), '0 0 0', 1);
+
self.health = 0;
self.event_damage = func_null;
self.solid = SOLID_NOT;
setorigin(self.gun2.vehicle_viewport, '-85 0 50');
self.scale = 1.5;
-
+
// Raygun beam
if(self.gun3.enemy == world)
- {
+ {
self.gun3.enemy = spawn();
Net_LinkEntity(self.gun3.enemy, true, 0, bumble_raygun_send);
- self.gun3.enemy.SendFlags = BRG_SETUP;
- self.gun3.enemy.cnt = autocvar_g_vehicle_bumblebee_raygun;
+ self.gun3.enemy.SendFlags = BRG_SETUP;
+ self.gun3.enemy.cnt = autocvar_g_vehicle_bumblebee_raygun;
self.gun3.enemy.effects = EF_NODRAW | EF_LOWPRECISION;
}
}
self.solid = SOLID_BBOX;
self.movetype = MOVETYPE_TOSS;
self.damageforcescale = 0.025;
-
+
self.PlayerPhysplug = bumblebee_pilot_frame;
-
+
setorigin(self, self.origin + '0 0 25');
return true;
}
if(autocvar_g_vehicle_bumblebee_health_regen)
self.vehicle_flags |= VHF_HEALTHREGEN;
-
+
self.vehicle_exit = bumblebee_exit;
self.respawntime = autocvar_g_vehicle_bumblebee_respawntime;
self.vehicle_health = autocvar_g_vehicle_bumblebee_health;
self.max_health = self.vehicle_health;
self.vehicle_shield = autocvar_g_vehicle_bumblebee_shield;
-
+
return true;
}
case VR_PRECACHE:
else
self.colormod = '0 1 0';
- self.traileffect = particleeffectnum("healray_muzzleflash");
- self.lip = particleeffectnum("healray_impact");
+ self.traileffect = particleeffectnum(EFFECT_BUMBLEBEE_HEAL_MUZZLEFLASH);
+ self.lip = particleeffectnum(EFFECT_BUMBLEBEE_HEAL_IMPACT);
self.draw = bumble_raygun_draw;
}