From 65476ff645a032a7c4d7d8642bc771caeb7037f2 Mon Sep 17 00:00:00 2001
From: Jakob MG <jakob_mg@hotmail.com>
Date: Thu, 16 Aug 2012 17:26:45 +0200
Subject: [PATCH] Update bumble balance, fix healray stuck midair, set
 pilot/gunner to individual offsets so you can see who in in there

---
 qcsrc/server/vehicles/bumblebee.qc | 85 ++++++++++++++++++++----------
 vehicle_bumblebee.cfg              | 31 +++++------
 2 files changed, 74 insertions(+), 42 deletions(-)

diff --git a/qcsrc/server/vehicles/bumblebee.qc b/qcsrc/server/vehicles/bumblebee.qc
index 0d2538d77..c8f8da2e7 100644
--- a/qcsrc/server/vehicles/bumblebee.qc
+++ b/qcsrc/server/vehicles/bumblebee.qc
@@ -62,6 +62,7 @@ float autocvar_g_vehicle_bumblebee_healgun_hmax;
 float autocvar_g_vehicle_bumblebee_healgun_aps;
 float autocvar_g_vehicle_bumblebee_healgun_amax;
 float autocvar_g_vehicle_bumblebee_healgun_sps;
+float autocvar_g_vehicle_bumblebee_healgun_locktime;
 
 float autocvar_g_vehicle_bumblebee_respawntime;
 
@@ -95,16 +96,34 @@ float bumb_gunner_frame()
 	entity gunner   = self;
 	self = vehic;
 
+
+	
+	
 	vehic.solid = SOLID_NOT;
-	setorigin(gunner, vehic.origin);
+	//setorigin(gunner, vehic.origin);
 	gunner.velocity = vehic.velocity;
+	
+	float _in, _out;
+	vehic.angles_x *= -1;
+	makevectors(vehic.angles);
+	vehic.angles_x *= -1;
+	if((gun == vehic.gun1))
+	{
+		_in = autocvar_g_vehicle_bumblebee_cannon_turnlimit_in;
+		_out = autocvar_g_vehicle_bumblebee_cannon_turnlimit_out;
+		setorigin(gunner, vehic.origin + v_up * -16 + v_forward * -16 + v_right * 128);
+	}
+	else
+	{
+		_in = autocvar_g_vehicle_bumblebee_cannon_turnlimit_out;
+		_out = autocvar_g_vehicle_bumblebee_cannon_turnlimit_in;
+		setorigin(gunner, vehic.origin + v_up * -16 + v_forward * -16 + v_right * -128);		
+	}
+	
 	crosshair_trace(gunner);
 	vector _ct = trace_endpos;
 	vector ad;
 
-	float _in = ((gun == vehic.gun1) ? autocvar_g_vehicle_bumblebee_cannon_turnlimit_in : autocvar_g_vehicle_bumblebee_cannon_turnlimit_out);
-	float _out = ((gun == vehic.gun1) ? autocvar_g_vehicle_bumblebee_cannon_turnlimit_out : autocvar_g_vehicle_bumblebee_cannon_turnlimit_in);
-
 	if(autocvar_g_vehicle_bumblebee_cannon_lock)
 	{
 		if(gun.lock_time < time)
@@ -462,37 +481,40 @@ float bumb_pilot_frame()
 
 	vehic.velocity  += newvel * frametime;
 	pilot.velocity = pilot.movement  = vehic.velocity;
-	setorigin(pilot, vehic.origin + '0 0 32');
+	
 
-	if(vehic.tur_head.lock_time < time || vehic.tur_head.enemy.deadflag)
-		vehic.tur_head.enemy = world;
+	if(autocvar_g_vehicle_bumblebee_healgun_locktime)
+	{		
+		if(vehic.tur_head.lock_time < time || vehic.tur_head.enemy.deadflag)
+			vehic.tur_head.enemy = world;
 
-	if(trace_ent)
-	if(trace_ent.movetype)
-	if(trace_ent.takedamage)
-	if(!trace_ent.deadflag)
-	{
-		if(teamplay)
+		if(trace_ent)
+		if(trace_ent.movetype)
+		if(trace_ent.takedamage)
+		if(!trace_ent.deadflag)
 		{
-			if(trace_ent.team == pilot.team)
+			if(teamplay)
 			{
+				if(trace_ent.team == pilot.team)
+				{
+					vehic.tur_head.enemy = trace_ent;
+					vehic.tur_head.lock_time = time + autocvar_g_vehicle_bumblebee_healgun_locktime;
+				}
+			}
+			else
+			{            
 				vehic.tur_head.enemy = trace_ent;
-				vehic.tur_head.lock_time = time + 1;
+				vehic.tur_head.lock_time = time + 0.5;
 			}
 		}
-		else
-		{            
-			vehic.tur_head.enemy = trace_ent;
-			vehic.tur_head.lock_time = time + 0.5;
+			
+		if(vehic.tur_head.enemy)
+		{
+			trace_endpos = real_origin(vehic.tur_head.enemy);
+			UpdateAuxiliaryXhair(pilot, trace_endpos, '0 0.75 0', 0);		
 		}
 	}
-		
-	if(vehic.tur_head.enemy)
-	{
-		trace_endpos = real_origin(vehic.tur_head.enemy);
-		UpdateAuxiliaryXhair(pilot, trace_endpos, '0 0.5 0', 0);		
-	}
-		
+	
 	vang = vehicle_aimturret(vehic, trace_endpos, self.gun3, "fire",
 					  autocvar_g_vehicle_bumblebee_raygun_pitchlimit_down * -1,  autocvar_g_vehicle_bumblebee_raygun_pitchlimit_up,
 					  autocvar_g_vehicle_bumblebee_raygun_turnlimit_sides * -1,  autocvar_g_vehicle_bumblebee_raygun_turnlimit_sides,  autocvar_g_vehicle_bumblebee_raygun_turnspeed);
@@ -571,7 +593,11 @@ float bumb_pilot_frame()
 
 	if(vehic.vehicle_flags & VHF_HASSHIELD)
 		VEHICLE_UPDATE_PLAYER(pilot, shield, bumblebee);
-
+		
+	vehic.angles_x *= -1;
+	makevectors(vehic.angles);
+	vehic.angles_x *= -1;
+	setorigin(pilot, vehic.origin + v_up * 64 + v_forward * 128);
 
 	pilot.BUTTON_ATCK = pilot.BUTTON_ATCK2 = pilot.BUTTON_CROUCH = 0;
 	self = pilot;
@@ -619,6 +645,7 @@ void bumb_enter()
 {
 	self.touch = bumb_touch;
 	self.nextthink = 0;
+	//setattachment(self.owner, self.vehicle_viewport, "");
 }
 
 void bumb_exit(float eject)
@@ -677,6 +704,10 @@ void bumb_diethink()
 void bumb_die()
 {
 	entity oldself = self;
+	
+	// Hide beam
+	self.gun3.enemy.effects |= EF_NODRAW;
+	
 	if(self.gunner1)
 	{
 		self = self.gunner1;
diff --git a/vehicle_bumblebee.cfg b/vehicle_bumblebee.cfg
index f50c2d702..705d2a988 100644
--- a/vehicle_bumblebee.cfg
+++ b/vehicle_bumblebee.cfg
@@ -1,32 +1,32 @@
 set g_vehicle_bumblebee_respawntime              60
 
-set g_vehicle_bumblebee_speed_forward            250
-set g_vehicle_bumblebee_speed_strafe             250
-set g_vehicle_bumblebee_speed_up                 250
-set g_vehicle_bumblebee_speed_down               250
-set g_vehicle_bumblebee_turnspeed                90
+set g_vehicle_bumblebee_speed_forward            350
+set g_vehicle_bumblebee_speed_strafe             350
+set g_vehicle_bumblebee_speed_up                 350
+set g_vehicle_bumblebee_speed_down               350
+set g_vehicle_bumblebee_turnspeed                120
 set g_vehicle_bumblebee_pitchspeed               60
 set g_vehicle_bumblebee_pitchlimit               60
-set g_vehicle_bumblebee_friction                 0.45
+set g_vehicle_bumblebee_friction                 0.5
 
 set g_vehicle_bumblebee_energy                   500
 set g_vehicle_bumblebee_energy_regen             50
 set g_vehicle_bumblebee_energy_regen_pause       1
 
 set g_vehicle_bumblebee_health                   1000
-set g_vehicle_bumblebee_health_regen             50
+set g_vehicle_bumblebee_health_regen             65
 set g_vehicle_bumblebee_health_regen_pause       10
 
-set g_vehicle_bumblebee_shield                   300
-set g_vehicle_bumblebee_shield_regen             100
-set g_vehicle_bumblebee_shield_regen_pause       1
+set g_vehicle_bumblebee_shield                   400
+set g_vehicle_bumblebee_shield_regen             150
+set g_vehicle_bumblebee_shield_regen_pause       0.75
 
 set g_vehicle_bumblebee_cannon_lock				0
 set g_vehicle_bumblebee_cannon_cost				2
 set g_vehicle_bumblebee_cannon_damage			60
 set g_vehicle_bumblebee_cannon_radius			225
 set g_vehicle_bumblebee_cannon_refire			0.2
-set g_vehicle_bumblebee_cannon_speed			9000
+set g_vehicle_bumblebee_cannon_speed			20000
 set g_vehicle_bumblebee_cannon_spread			0.02
 set g_vehicle_bumblebee_cannon_force			-35
 set g_vehicle_bumblebee_cannon_turnspeed		160
@@ -38,7 +38,7 @@ set g_vehicle_bumblebee_cannon_ammo				100
 set g_vehicle_bumblebee_cannon_ammo_regen		100
 set g_vehicle_bumblebee_cannon_ammo_regen_pause 	1
 
-set g_vehicle_bumblebee_raygun_turnspeed 160
+set g_vehicle_bumblebee_raygun_turnspeed 180
 set g_vehicle_bumblebee_raygun_pitchlimit_down 20
 set g_vehicle_bumblebee_raygun_pitchlimit_up 5
 set g_vehicle_bumblebee_raygun_turnlimit_sides 35
@@ -49,12 +49,13 @@ set g_vehicle_bumblebee_raygun_dps 250
 set g_vehicle_bumblebee_raygun_aps 100
 set g_vehicle_bumblebee_raygun_fps 100
 
-set g_vehicle_bumblebee_healgun_hps 60
+set g_vehicle_bumblebee_healgun_hps 150
 set g_vehicle_bumblebee_healgun_hmax 100
-set g_vehicle_bumblebee_healgun_aps 45
+set g_vehicle_bumblebee_healgun_aps 75
 set g_vehicle_bumblebee_healgun_amax 100
-set g_vehicle_bumblebee_healgun_sps 55
+set g_vehicle_bumblebee_healgun_sps 100
 set g_vehicle_bumblebee_healgun_smax 100
+set g_vehicle_bumblebee_healgun_locktime 2.5
 
 set g_vehicle_bumblebee_blowup_radius            500
 set g_vehicle_bumblebee_blowup_coredamage        500
-- 
2.39.5