[nexuiz-commits] r6285 - in trunk/data: . qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Wed Mar 25 15:48:56 EDT 2009


Author: div0
Date: 2009-03-25 15:48:54 -0400 (Wed, 25 Mar 2009)
New Revision: 6285

Modified:
   trunk/data/defaultNexuiz.cfg
   trunk/data/qcsrc/server/cl_physics.qc
   trunk/data/qcsrc/server/defs.qh
   trunk/data/qcsrc/server/g_hook.qc
   trunk/data/qcsrc/server/miscfunctions.qc
Log:
feature not for 2.5: jetpack


Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2009-03-25 18:31:05 UTC (rev 6284)
+++ trunk/data/defaultNexuiz.cfg	2009-03-25 19:48:54 UTC (rev 6285)
@@ -1415,3 +1415,10 @@
 
 seta cl_showpressedkeys	0	"Show which movement keys someone is pressing: 1 for spectating, 2 for always"
 set cl_showpressedkeys_position "1 0.8"	"1 0 would be upper right corner, 0.5 0.5 the center"
+
+set g_jetpack 0 "Jetpack mutator (experimental)"
+set g_jetpack_accel_side 400 "max jetpack sideways acceleration" 
+set g_jetpack_accel_up 1000 "max jetpack upwards acceleration" 
+set g_jetpack_accel_upadjust 2 "view angle adjustment" 
+set g_jetpack_accel_maxspeed 2000 "max speed for jetpack (also, when jetpack becomes inoperative because of this, it takes no cells)" 
+set g_jetpack_accel_ammo 2 "cells per second for jetpack" 

Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc	2009-03-25 18:31:05 UTC (rev 6284)
+++ trunk/data/qcsrc/server/cl_physics.qc	2009-03-25 19:48:54 UTC (rev 6285)
@@ -527,6 +527,44 @@
 
 		if (self.waterlevel == WATERLEVEL_SWIMMING)
 			CheckWaterJump ();
+
+		if (g_jetpack && self.BUTTON_HOOK)
+		{
+			self.flags &~= FL_ONGROUND;
+			//makevectors(self.v_angle_y * '0 1 0');
+			makevectors(self.v_angle);
+			wishvel = v_forward * self.movement_x + v_right * self.movement_y;
+			// add remaining speed as Z component
+			maxairspd = sv_maxairspeed*max(1, maxspd_mod);
+			wishvel_x *= 1 / maxairspd;
+			wishvel_y *= 1 / maxairspd;
+			wishvel_z = 0;
+			wishvel_z += sqrt(max(0, 1 - wishvel * wishvel));
+			wishvel_z += cvar("g_jetpack_accel_upadjust");
+			wishvel = normalize(wishvel);
+			wishvel_x *= cvar("g_jetpack_accel_side");
+			wishvel_y *= cvar("g_jetpack_accel_side");
+			wishvel_z *= cvar("g_jetpack_accel_up");
+
+			wishdir = normalize(wishvel);
+			wishspeed = vlen(wishvel);
+
+			f = (1 - (self.velocity * wishdir) / cvar("g_jetpack_maxspeed"));
+			if(cvar("g_jetpack_ammo"))
+			{
+				f = min(f, self.ammo_cells / (cvar("g_jetpack_ammo") * frametime));
+			}
+			if (f > 0)
+			{
+				self.velocity = self.velocity + wishvel * f * frametime;
+				self.ammo_cells -= frametime * cvar("g_jetpack_ammo") * f;
+				self.modelflags |= MF_ROCKET;
+			}
+			else
+				self.modelflags &~= MF_ROCKET;
+		}
+		else
+			self.modelflags &~= MF_ROCKET;
 	}
 
 	if (self.flags & FL_WATERJUMP )

Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh	2009-03-25 18:31:05 UTC (rev 6284)
+++ trunk/data/qcsrc/server/defs.qh	2009-03-25 19:48:54 UTC (rev 6285)
@@ -36,6 +36,7 @@
 float g_pickup_respawntime_long;
 float g_pickup_respawntime_powerup;
 float g_maplist_allow_hidden;
+float g_jetpack;
 
 float sv_clones;
 float sv_cheats;

Modified: trunk/data/qcsrc/server/g_hook.qc
===================================================================
--- trunk/data/qcsrc/server/g_hook.qc	2009-03-25 18:31:05 UTC (rev 6284)
+++ trunk/data/qcsrc/server/g_hook.qc	2009-03-25 19:48:54 UTC (rev 6285)
@@ -408,7 +408,7 @@
 			//self.hook_state &~= HOOK_RELEASING;
 		}
 	}
-	else if(!g_grappling_hook && self.switchweapon != WEP_HOOK)
+	else if(!g_jetpack && !g_grappling_hook && self.switchweapon != WEP_HOOK)
 	{
 		if(self.BUTTON_HOOK && !self.hook_switchweapon)
 			W_SwitchWeapon(WEP_HOOK);

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2009-03-25 18:31:05 UTC (rev 6284)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2009-03-25 19:48:54 UTC (rev 6285)
@@ -755,6 +755,9 @@
 	start_health = cvar("g_balance_health_start");
 	start_armorvalue = cvar("g_balance_armor_start");
 
+	if(g_jetpack)
+		g_grappling_hook = 0;
+
 	g_weaponarena = 0;
 	s = cvar_string("g_weaponarena");
 	if(s == "0")
@@ -947,6 +950,12 @@
 		g_grappling_hook = 0;
 	}
 
+	if(g_jetpack)
+	{
+		start_weapons &~= WEPBIT_HOOK;
+		warmup_start_weapons &~= WEPBIT_HOOK;
+	}
+
 	if(g_weapon_stay == 2)
 	{
 		if(!start_ammo_shells) start_ammo_shells = g_pickup_shells;
@@ -1024,6 +1033,7 @@
 	g_jump_grunt = cvar("g_jump_grunt");
 	g_footsteps = cvar("g_footsteps");
 	g_grappling_hook = cvar("g_grappling_hook");
+	g_jetpack = cvar("g_jetpack");
 	g_laserguided_missile = cvar("g_laserguided_missile");
 	g_midair = cvar("g_midair");
 	g_minstagib = cvar("g_minstagib");
@@ -1427,7 +1437,7 @@
 	// common weapon precaches
 	precache_sound ("weapons/weapon_switch.wav");
 	precache_sound ("weapons/weaponpickup.wav");
-	if (cvar("g_grappling_hook"))
+	if(g_grappling_hook)
 	{
 		precache_sound ("weapons/hook_fire.wav"); // hook
 		precache_sound ("weapons/hook_impact.wav"); // hook



More information about the nexuiz-commits mailing list