[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