[nexuiz-commits] r6886 - in branches/nexuiz-2.0: . data data/qcsrc/client data/qcsrc/menu data/qcsrc/server misc/netradiant-NexuizPack/nexuiz.game/data
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sat Jun 6 11:21:14 EDT 2009
Author: div0
Date: 2009-06-06 11:21:14 -0400 (Sat, 06 Jun 2009)
New Revision: 6886
Modified:
branches/nexuiz-2.0/.patchsets
branches/nexuiz-2.0/data/build-compat-pack.sh
branches/nexuiz-2.0/data/defaultNexuiz.cfg
branches/nexuiz-2.0/data/effectinfo.txt
branches/nexuiz-2.0/data/qcsrc/client/gibs.qc
branches/nexuiz-2.0/data/qcsrc/menu/gamecommand.qc
branches/nexuiz-2.0/data/qcsrc/menu/mbuiltin.qh
branches/nexuiz-2.0/data/qcsrc/server/bots.qc
branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
branches/nexuiz-2.0/data/qcsrc/server/constants.qh
branches/nexuiz-2.0/data/qcsrc/server/ctf.qc
branches/nexuiz-2.0/data/qcsrc/server/steerlib.qc
branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
branches/nexuiz-2.0/data/weapons.cfg
branches/nexuiz-2.0/misc/netradiant-NexuizPack/nexuiz.game/data/entities.def
Log:
r6796 | mand1nga | 2009-05-29 20:07:56 -0400 (Fri, 29 May 2009) | 1 line
Fix warning
r6797 | mand1nga | 2009-05-29 20:22:59 -0400 (Fri, 29 May 2009) | 1 line
CTF flag glow trails imported from Spidflisk by -z-
r6798 | mand1nga | 2009-05-29 20:42:16 -0400 (Fri, 29 May 2009) | 1 line
Minor cleanup
r6799 | div0 | 2009-05-30 05:12:05 -0400 (Sat, 30 May 2009) | 2 lines
fix mixed dos/unix linefeeds before I do actual changes in this file
r6800 | mrbougo | 2009-05-30 05:37:55 -0400 (Sat, 30 May 2009) | 1 line
items that aren't picked up should not spawn particles on touch
r6801 | div0 | 2009-05-30 06:17:24 -0400 (Sat, 30 May 2009) | 2 lines
weaker rocket guidance, 120 deg/sec is really too much. Trying 60.
r6802 | div0 | 2009-05-30 06:23:14 -0400 (Sat, 30 May 2009) | 2 lines
rocket guiding: no revenge from the grave
r6803 | div0 | 2009-05-30 06:29:30 -0400 (Sat, 30 May 2009) | 2 lines
rocket guide rate is 90 again, 90 was best
r6804 | div0 | 2009-05-30 07:13:11 -0400 (Sat, 30 May 2009) | 4 lines
RL damage: 120 to 100
GL edge damage: 35 to 25
to compensate for rocket guiding
r6805 | div0 | 2009-05-30 07:38:03 -0400 (Sat, 30 May 2009) | 2 lines
bring back old GL edge damage
r6806 | div0 | 2009-05-30 08:25:57 -0400 (Sat, 30 May 2009) | 2 lines
compat pack builder
r6807 | div0 | 2009-05-30 08:27:46 -0400 (Sat, 30 May 2009) | 2 lines
add missing texs
r6808 | div0 | 2009-05-30 08:30:12 -0400 (Sat, 30 May 2009) | 2 lines
scale down textures again :(
r6809 | m0rfar | 2009-05-30 10:37:14 -0400 (Sat, 30 May 2009) | 1 line
merge entities.def
r6810 | mand1nga | 2009-05-30 11:23:12 -0400 (Sat, 30 May 2009) | 1 line
Updated item_pickup effect by -z-
r6811 | div0 | 2009-05-30 13:44:58 -0400 (Sat, 30 May 2009) | 2 lines
now REALLY prevent revenge from the grave
r6812 | div0 | 2009-05-30 13:49:32 -0400 (Sat, 30 May 2009) | 2 lines
use new engine builtin isdemo()
Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/.patchsets 2009-06-06 15:21:14 UTC (rev 6886)
@@ -1,2 +1,2 @@
master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-6795
+revisions_applied = 1-6812
Modified: branches/nexuiz-2.0/data/build-compat-pack.sh
===================================================================
--- branches/nexuiz-2.0/data/build-compat-pack.sh 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/build-compat-pack.sh 2009-06-06 15:21:14 UTC (rev 6886)
@@ -24,6 +24,49 @@
models/sprites/item-strength_frame1.tga
sound/weapons/weaponpickup.ogg
particles/particlefont.tga
+ models/gibs/arm.md3
+ models/gibs/arm.md3_0.skin
+ models/gibs/arm.md3_1.skin
+ models/gibs/arm.md3_2.skin
+ models/gibs/bloodyskull.md3
+ models/gibs/bloodyskull.md3_0.skin
+ models/gibs/bloodyskull.md3_1.skin
+ models/gibs/bloodyskull.md3_2.skin
+ models/gibs/chest.md3
+ models/gibs/chest.md3_0.skin
+ models/gibs/chest.md3_1.skin
+ models/gibs/chest.md3_2.skin
+ models/gibs/chunk.mdl
+ models/gibs/eye.md3
+ models/gibs/leg1.md3
+ models/gibs/leg1.md3_0.skin
+ models/gibs/leg1.md3_1.skin
+ models/gibs/leg1.md3_2.skin
+ models/gibs/leg2.md3
+ models/gibs/leg2.md3_0.skin
+ models/gibs/leg2.md3_1.skin
+ models/gibs/leg2.md3_2.skin
+ models/gibs/smallchest.md3
+ models/gibs/smallchest.md3_0.skin
+ models/gibs/smallchest.md3_1.skin
+ models/gibs/smallchest.md3_2.skin
+ textures/meat_alien_gloss.tga
+ textures/meat_alien_glow.tga
+ textures/meat_alien_norm.tga
+ textures/meat_alien.tga
+ textures/meat_gloss.tga
+ textures/meat_norm.tga
+ textures/meat_robot_gloss.tga
+ textures/meat_robot_glow.tga
+ textures/meat_robot_norm.tga
+ textures/meat_robot.tga
+ textures/meat.tga
+ textures/bloodyskull_alien_glow.tga
+ textures/bloodyskull_alien.tga
+ textures/bloodyskull.jpg
+ textures/bloodyskull_robot_gloss.tga
+ textures/bloodyskull_robot_glow.tga
+ textures/bloodyskull_robot.tga
"
rm -rf pack
@@ -39,9 +82,9 @@
cd pack
+find textures/ -type f -print0 | qual=85 scaledown=256x256 xargs -0 ../../misc/tools/jpeg-if-not-alpha.sh
+
if false; then
- find . -type f -print0 | qual=85 scaledown=256x256 xargs -0 ../../misc/tools/jpeg-if-not-alpha.sh
-
find . -name \*.ogg | while IFS= read -r NAME; do
c=`vorbiscomment -l "$NAME"`
oggdec -o "$NAME.wav" "$NAME"
Modified: branches/nexuiz-2.0/data/defaultNexuiz.cfg
===================================================================
--- branches/nexuiz-2.0/data/defaultNexuiz.cfg 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/defaultNexuiz.cfg 2009-06-06 15:21:14 UTC (rev 6886)
@@ -24,7 +24,7 @@
seta g_configversion 0 "Configuration file version (used to upgrade settings) 0: first run, or previous start was <2.4.1 Later, it's overridden by config.cfg, version ranges are defined in config_update.cfg"
// default.cfg versioning (update using update-cvarcount.sh, run that every time after adding a new cvar)
-set cvar_check_default 2374fb15eacd4470860923b3ccddc0ad
+set cvar_check_default 300f2d03c037b68c7254fe52a47575f8
// Nexuiz version (formatted for machines)
// used to determine if a client version is compatible
@@ -536,6 +536,7 @@
set g_ctf_flag_red_skin 0
set g_ctf_flag_blue_model "models/ctf/flags.md3"
set g_ctf_flag_blue_skin 1
+set g_ctf_flag_glowtrails 0
set g_ctf_captimerecord_allow_assisted 0 "if enabled, assisted CTF records (with other players on the server) are recorded too"
exec ctfscoring-div0.cfg
Modified: branches/nexuiz-2.0/data/effectinfo.txt
===================================================================
--- branches/nexuiz-2.0/data/effectinfo.txt 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/effectinfo.txt 2009-06-06 15:21:14 UTC (rev 6886)
@@ -3355,15 +3355,15 @@
effect item_pickup
countabsolute 1
type static
-color 0x63F2EA 0x63f2EA
-size 16 16
-alpha 128 128 128
+color 0x63F2EA 0xB0C5C4
+size 8 16
+alpha 128 64 64
// cloud of particles which expand rapidly and then slow to form a ball
effect item_pickup
-count 256
+count 64
type spark
tex 41 41
-color 0x63F2EA 0x63f2EA
+color 0x63F2EA 0xB0C5C4
size 1 1
alpha 256 256 1280
//originjitter 24 24 24
Modified: branches/nexuiz-2.0/data/qcsrc/client/gibs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/gibs.qc 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/client/gibs.qc 2009-06-06 15:21:14 UTC (rev 6886)
@@ -16,7 +16,7 @@
{
float i, pmod;
pmod = cvar("cl_particles_quality");
- for (i = 0; i < 250 * pmod; i++)
+ for (i = 0; i < 250 * pmod; ++i)
pointparticles(ef, org, randomvec() * explosionspeed, howmany / 250);
}
Modified: branches/nexuiz-2.0/data/qcsrc/menu/gamecommand.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/gamecommand.qc 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/menu/gamecommand.qc 2009-06-06 15:21:14 UTC (rev 6886)
@@ -57,7 +57,8 @@
if(argv(0) == "directmenu") if(argc == 2)
{
// switch to a menu item
- m_goto(argv(1));
+ if(!isdemo()) // don't allow this command in demos
+ m_goto(argv(1));
return;
}
Modified: branches/nexuiz-2.0/data/qcsrc/menu/mbuiltin.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/mbuiltin.qh 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/menu/mbuiltin.qh 2009-06-06 15:21:14 UTC (rev 6886)
@@ -169,6 +169,8 @@
string altstr_set(string str, float num, string set) = #85;
string altstr_ins(string str, float num, string set) = #86;
+float isdemo() = #349;
+
/////////////////////////////////////////////////
// Write* Functions
/////////////////////////////////////////////////
Modified: branches/nexuiz-2.0/data/qcsrc/server/bots.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/bots.qc 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/server/bots.qc 2009-06-06 15:21:14 UTC (rev 6886)
@@ -1907,7 +1907,9 @@
vector shotorg;
vector shotdir;
-.float bot_team, bot_checked;
+.float bot_forced_team;
+.float bot_config_loaded;
+
void bot_setnameandstuff()
{
local string readfile, s;
@@ -1954,8 +1956,8 @@
if(argv(4) != "" && stof(argv(4)) >= 0) bot_pants = argv(4);
else bot_pants = ftos(floor(random() * 15));
- self.bot_team = stof(argv(5));
- self.bot_checked = 1;
+ self.bot_forced_team = stof(argv(5));
+ self.bot_config_loaded = TRUE;
prefix = cvar_string("bot_prefix");
suffix = cvar_string("bot_suffix");
@@ -2470,15 +2472,16 @@
self.isbot = TRUE;
self.createdtime = self.nextthink;
- if(!self.bot_checked) // This is needed so team overrider doesn't break between matches
+ if(!self.bot_config_loaded) // This is needed so team overrider doesn't break between matches
bot_setnameandstuff();
- if(self.bot_team==1)
+
+ if(self.bot_forced_team==1)
self.team = COLOR_TEAM1;
- else if(self.bot_team==2)
+ else if(self.bot_forced_team==2)
self.team = COLOR_TEAM2;
- else if(self.bot_team==3)
+ else if(self.bot_forced_team==3)
self.team = COLOR_TEAM3;
- else if(self.bot_team==4)
+ else if(self.bot_forced_team==4)
self.team = COLOR_TEAM4;
else
JoinBestTeam(self, FALSE, TRUE);
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc 2009-06-06 15:21:14 UTC (rev 6886)
@@ -852,6 +852,7 @@
// don't reset back to last position, even if new position is stuck in solid
self.oldorigin = self.origin;
self.prevorigin = self.origin;
+ self.lastrocket = world; // stop rocket guiding, no revenge from the grave!
if(g_arena)
{
Modified: branches/nexuiz-2.0/data/qcsrc/server/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2009-06-06 15:21:14 UTC (rev 6886)
@@ -1,4 +1,4 @@
-string CVAR_CHECK_DEFAULT = "2374fb15eacd4470860923b3ccddc0ad";
+string CVAR_CHECK_DEFAULT = "300f2d03c037b68c7254fe52a47575f8";
string CVAR_CHECK_WEAPONS = "2f93eb8481f44bb2ff744af86a75eccf";
float FALSE = 0;
Modified: branches/nexuiz-2.0/data/qcsrc/server/ctf.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/ctf.qc 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/server/ctf.qc 2009-06-06 15:21:14 UTC (rev 6886)
@@ -681,7 +681,25 @@
ReturnFlag(self);
}
+void item_flag_postspawn()
+{ // Check CTF Item Flag Post Spawn
+ // Flag Glow Trail Support
+ if(cvar("g_ctf_flag_glowtrails"))
+ { // Provide Flag Glow Trail
+ if(self.team == COLOR_TEAM1)
+ // Red
+ self.glow_color = 233;
+ else
+ if(self.team == COLOR_TEAM2)
+ // Blue
+ self.glow_color = 215;
+
+ self.glow_size = 25;
+ self.glow_trail = 1;
+ }
+};
+
/*QUAKED spawnfunc_item_flag_team1 (0 0.5 0.8) (-48 -48 -37) (48 48 37)
CTF flag for team one (Red).
Multiple are allowed.
@@ -771,6 +789,9 @@
if(cvar("g_ctf_dynamiclights"))
self.effects |= EF_RED;
+ // From Spidflisk
+ item_flag_postspawn();
+
waypoint_spawnforitem(self);
WaypointSprite_SpawnFixed("redbase", self.origin + '0 0 37', self, sprite);
@@ -869,6 +890,9 @@
if(cvar("g_ctf_dynamiclights"))
self.effects |= EF_BLUE;
+ // From Spidflisk
+ item_flag_postspawn();
+
waypoint_spawnforitem(self);
WaypointSprite_SpawnFixed("bluebase", self.origin + '0 0 37', self, sprite);
Modified: branches/nexuiz-2.0/data/qcsrc/server/steerlib.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/steerlib.qc 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/server/steerlib.qc 2009-06-06 15:21:14 UTC (rev 6886)
@@ -1,5 +1,5 @@
-.vector steerto;
-
+.vector steerto;
+
/**
Uniform pull towards a point
**/
@@ -262,183 +262,183 @@
return (upwish+leftwish+downwish+rightwish) * 0.25;
-}
+}
-/**
- Steer towards the direction least obstructed.
- Run two tracelines in a forward trident, bias each diretion negative if something is found there.
-**/
-vector steerlib_traceavoid_flat(float pitch, float length, vector vofs)
-{
- vector vt_left, vt_right,vt_front;
- float f_left, f_right,f_front;
- vector leftwish, rightwish,frontwish, v_left;
-
- v_left = v_right * -1;
-
-
- vt_front = v_forward * length;
- traceline(self.origin + vofs, self.origin + vofs + vt_front,MOVE_NOMONSTERS,self);
- f_front = trace_fraction;
-
- vt_left = (v_forward + (v_left * pitch)) * length;
- traceline(self.origin + vofs, self.origin + vofs + vt_left,MOVE_NOMONSTERS,self);
- f_left = trace_fraction;
-
- //te_lightning1(world,self.origin, trace_endpos);
-
- vt_right = (v_forward + (v_right * pitch)) * length;
- traceline(self.origin + vofs, self.origin + vofs + vt_right ,MOVE_NOMONSTERS,self);
- f_right = trace_fraction;
-
- //te_lightning1(world,self.origin, trace_endpos);
-
- leftwish = v_left * f_left;
- rightwish = v_right * f_right;
- frontwish = v_forward * f_front;
-
- return normalize(leftwish + rightwish + frontwish);
-}
-
-float beamsweep_badpoint(vector point,float waterok)
-{
- float pc,pc2;
-
- if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SKY)
- return 1;
-
- pc = pointcontents(point);
- pc2 = pointcontents(point - '0 0 1');
-
- switch(pc)
- {
- case CONTENT_SOLID: break;
- case CONTENT_SLIME: break;
- case CONTENT_LAVA: break;
-
- case CONTENT_SKY:
- return 1;
-
- case CONTENT_EMPTY:
- if (pc2 == CONTENT_SOLID)
- return 0;
-
- if (pc2 == CONTENT_WATER)
- if(waterok)
- return 0;
-
- break;
-
- case CONTENT_WATER:
- if(waterok)
- return 0;
-
- break;
- }
-
- return 1;
-}
-
-float beamsweep(vector from, vector dir,float length, float step,float step_up, float step_down)
-{
- float i;
- vector a,b,u,d;
-
- u = '0 0 1' * step_up;
- d = '0 0 1' * step_down;
-
- traceline(from + u, from - d,MOVE_NORMAL,self);
- if(trace_fraction == 1.0)
- return 0;
-
- if(beamsweep_badpoint(trace_endpos,0))
- return 0;
-
- a = trace_endpos;
- for(i = 0; i < length; i += step)
- {
-
- b = a + dir * step;
- tracebox(a + u,'-4 -4 -4','4 4 4', b + u,MOVE_NORMAL,self);
- if(trace_fraction != 1.0)
- return i / length;
-
- traceline(b + u, b - d,MOVE_NORMAL,self);
- if(trace_fraction == 1.0)
- return i / length;
-
- if(beamsweep_badpoint(trace_endpos,0))
- return i / length;
-
- //te_lightning1(world,a+u,b+u);
- //te_lightning1(world,b+u,b-d);
-
- a = trace_endpos;
- }
-
- return 1;
-}
-
-vector steerlib_beamsteer(vector dir, float length, float step, float step_up, float step_down)
-{
- float bm_forward, bm_right, bm_left,p;
- vector vr,vl;
-
- dir_z *= 0.15;
- vr = vectoangles(dir);
- vr_x *= -1;
-
- makevectors(vr);
- bm_forward = beamsweep(self.origin, v_forward, length, step, step_up, step_down);
-
- vr = normalize(v_forward + v_right * 0.125);
- vl = normalize(v_forward - v_right * 0.125);
-
- bm_right = beamsweep(self.origin, vr, length, step, step_up, step_down);
- bm_left = beamsweep(self.origin, vl, length, step, step_up, step_down);
-
-
- p = bm_left + bm_right;
- if(p == 2)
- {
- //te_lightning1(self,self.origin + '0 0 32',self.origin + '0 0 32' + vr * length);
- //te_lightning1(self.tur_head,self.origin + '0 0 32',self.origin + '0 0 32' + vl * length);
-
- return v_forward;
- }
-
- p = 2 - p;
-
- vr = normalize(v_forward + v_right * p);
- vl = normalize(v_forward - v_right * p);
- bm_right = beamsweep(self.origin, vr, length, step, step_up, step_down);
- bm_left = beamsweep(self.origin, vl, length, step, step_up, step_down);
-
-
- if(bm_left + bm_right < 0.15)
- {
- vr = normalize((v_forward*-1) + v_right * 0.75);
- vl = normalize((v_forward*-1) - v_right * 0.75);
-
- bm_right = beamsweep(self.origin, vr, length, step, step_up, step_down);
- bm_left = beamsweep(self.origin, vl, length, step, step_up, step_down);
- }
-
- //te_lightning1(self,self.origin + '0 0 32',self.origin + '0 0 32' + vr * length);
- //te_lightning1(self.tur_head,self.origin + '0 0 32',self.origin + '0 0 32' + vl * length);
-
- bm_forward *= bm_forward;
- bm_right *= bm_right;
- bm_left *= bm_left;
-
- vr = vr * bm_right;
- vl = vl * bm_left;
-
- return normalize(vr + vl);
-
+/**
+ Steer towards the direction least obstructed.
+ Run two tracelines in a forward trident, bias each diretion negative if something is found there.
+**/
+vector steerlib_traceavoid_flat(float pitch, float length, vector vofs)
+{
+ vector vt_left, vt_right,vt_front;
+ float f_left, f_right,f_front;
+ vector leftwish, rightwish,frontwish, v_left;
+
+ v_left = v_right * -1;
+
+
+ vt_front = v_forward * length;
+ traceline(self.origin + vofs, self.origin + vofs + vt_front,MOVE_NOMONSTERS,self);
+ f_front = trace_fraction;
+
+ vt_left = (v_forward + (v_left * pitch)) * length;
+ traceline(self.origin + vofs, self.origin + vofs + vt_left,MOVE_NOMONSTERS,self);
+ f_left = trace_fraction;
+
+ //te_lightning1(world,self.origin, trace_endpos);
+
+ vt_right = (v_forward + (v_right * pitch)) * length;
+ traceline(self.origin + vofs, self.origin + vofs + vt_right ,MOVE_NOMONSTERS,self);
+ f_right = trace_fraction;
+
+ //te_lightning1(world,self.origin, trace_endpos);
+
+ leftwish = v_left * f_left;
+ rightwish = v_right * f_right;
+ frontwish = v_forward * f_front;
+
+ return normalize(leftwish + rightwish + frontwish);
}
+float beamsweep_badpoint(vector point,float waterok)
+{
+ float pc,pc2;
+ if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SKY)
+ return 1;
+
+ pc = pointcontents(point);
+ pc2 = pointcontents(point - '0 0 1');
+
+ switch(pc)
+ {
+ case CONTENT_SOLID: break;
+ case CONTENT_SLIME: break;
+ case CONTENT_LAVA: break;
+
+ case CONTENT_SKY:
+ return 1;
+
+ case CONTENT_EMPTY:
+ if (pc2 == CONTENT_SOLID)
+ return 0;
+
+ if (pc2 == CONTENT_WATER)
+ if(waterok)
+ return 0;
+
+ break;
+
+ case CONTENT_WATER:
+ if(waterok)
+ return 0;
+
+ break;
+ }
+
+ return 1;
+}
+
+float beamsweep(vector from, vector dir,float length, float step,float step_up, float step_down)
+{
+ float i;
+ vector a,b,u,d;
+
+ u = '0 0 1' * step_up;
+ d = '0 0 1' * step_down;
+
+ traceline(from + u, from - d,MOVE_NORMAL,self);
+ if(trace_fraction == 1.0)
+ return 0;
+
+ if(beamsweep_badpoint(trace_endpos,0))
+ return 0;
+
+ a = trace_endpos;
+ for(i = 0; i < length; i += step)
+ {
+
+ b = a + dir * step;
+ tracebox(a + u,'-4 -4 -4','4 4 4', b + u,MOVE_NORMAL,self);
+ if(trace_fraction != 1.0)
+ return i / length;
+
+ traceline(b + u, b - d,MOVE_NORMAL,self);
+ if(trace_fraction == 1.0)
+ return i / length;
+
+ if(beamsweep_badpoint(trace_endpos,0))
+ return i / length;
+
+ //te_lightning1(world,a+u,b+u);
+ //te_lightning1(world,b+u,b-d);
+
+ a = trace_endpos;
+ }
+
+ return 1;
+}
+
+vector steerlib_beamsteer(vector dir, float length, float step, float step_up, float step_down)
+{
+ float bm_forward, bm_right, bm_left,p;
+ vector vr,vl;
+
+ dir_z *= 0.15;
+ vr = vectoangles(dir);
+ vr_x *= -1;
+
+ makevectors(vr);
+ bm_forward = beamsweep(self.origin, v_forward, length, step, step_up, step_down);
+
+ vr = normalize(v_forward + v_right * 0.125);
+ vl = normalize(v_forward - v_right * 0.125);
+
+ bm_right = beamsweep(self.origin, vr, length, step, step_up, step_down);
+ bm_left = beamsweep(self.origin, vl, length, step, step_up, step_down);
+
+
+ p = bm_left + bm_right;
+ if(p == 2)
+ {
+ //te_lightning1(self,self.origin + '0 0 32',self.origin + '0 0 32' + vr * length);
+ //te_lightning1(self.tur_head,self.origin + '0 0 32',self.origin + '0 0 32' + vl * length);
+
+ return v_forward;
+ }
+
+ p = 2 - p;
+
+ vr = normalize(v_forward + v_right * p);
+ vl = normalize(v_forward - v_right * p);
+ bm_right = beamsweep(self.origin, vr, length, step, step_up, step_down);
+ bm_left = beamsweep(self.origin, vl, length, step, step_up, step_down);
+
+
+ if(bm_left + bm_right < 0.15)
+ {
+ vr = normalize((v_forward*-1) + v_right * 0.75);
+ vl = normalize((v_forward*-1) - v_right * 0.75);
+
+ bm_right = beamsweep(self.origin, vr, length, step, step_up, step_down);
+ bm_left = beamsweep(self.origin, vl, length, step, step_up, step_down);
+ }
+
+ //te_lightning1(self,self.origin + '0 0 32',self.origin + '0 0 32' + vr * length);
+ //te_lightning1(self.tur_head,self.origin + '0 0 32',self.origin + '0 0 32' + vl * length);
+
+ bm_forward *= bm_forward;
+ bm_right *= bm_right;
+ bm_left *= bm_left;
+
+ vr = vr * bm_right;
+ vl = vl * bm_left;
+
+ return normalize(vr + vl);
+
+}
+
+
//////////////////////////////////////////////
// Testting //
// Everything below this point is a mess :D //
@@ -621,4 +621,4 @@
#endif
-
+
Modified: branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_items.qc 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_items.qc 2009-06-06 15:21:14 UTC (rev 6886)
@@ -364,11 +364,11 @@
if (self.owner == other)
return;
- pointparticles(particleeffectnum("item_pickup"), self.origin, '0 0 0', 1);
-
if(!Item_GiveTo(self, other))
return;
+ pointparticles(particleeffectnum("item_pickup"), self.origin, '0 0 0', 1);
+
if (self.classname == "droppedweapon")
remove (self);
else if((self.flags & FL_WEAPON) && !(self.flags & FL_NO_WEAPON_STAY) && g_weapon_stay)
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc 2009-06-06 15:21:14 UTC (rev 6886)
@@ -1,8 +1,19 @@
.float rl_release;
.float rl_detonate_later;
+void W_Rocket_Unregister()
+{
+ if(self.owner && self.owner.lastrocket == self)
+ {
+ self.owner.lastrocket = world;
+ // self.owner.rl_release = 1;
+ }
+}
+
void W_Rocket_Explode (void)
{
+ W_Rocket_Unregister();
+
self.event_damage = SUB_Null;
RadiusDamage (self, self.owner, cvar("g_balance_rocketlauncher_damage"), cvar("g_balance_rocketlauncher_edgedamage"), cvar("g_balance_rocketlauncher_radius"), world, cvar("g_balance_rocketlauncher_force"), self.projectiledeathtype, other);
@@ -75,6 +86,7 @@
void W_Rocket_RemoteExplode()
{
if(self.owner.deadflag == DEAD_NO)
+ if(self.owner.lastrocket)
{
if((self.spawnshieldtime >= 0)
? (time >= self.spawnshieldtime) // timer
@@ -187,27 +199,26 @@
}
else
{
- if(!self.rl_release && !self.owner.rl_release && cvar("g_balance_rocketlauncher_guiderate"))
+ if(self == self.owner.lastrocket)
+ if(!self.owner.rl_release)
+ if(cvar("g_balance_rocketlauncher_guiderate"))
+ if(time > self.pushltime)
+ if(self.owner.deadflag == DEAD_NO)
{
- if(time > self.pushltime)
- {
- velspeed = vlen(self.velocity);
+ velspeed = vlen(self.velocity);
- makevectors(self.owner.v_angle);
- desireddir = v_forward;
- desiredorigin = self.owner.origin + self.owner.view_ofs;
- olddir = normalize(self.velocity);
+ makevectors(self.owner.v_angle);
+ desireddir = v_forward;
+ desiredorigin = self.owner.origin + self.owner.view_ofs;
+ olddir = normalize(self.velocity);
- // now it gets tricky... we want to move like some curve to approximate the target direction
- // but we are limiting the rate at which we can turn!
- goal = desiredorigin + ((self.origin - desiredorigin) * desireddir + cvar("g_balance_rocketlauncher_guidegoal")) * desireddir;
- newdir = rocket_steerto(olddir, normalize(goal - self.origin), cos(cvar("g_balance_rocketlauncher_guiderate") * frametime * PI / 180));
+ // now it gets tricky... we want to move like some curve to approximate the target direction
+ // but we are limiting the rate at which we can turn!
+ goal = desiredorigin + ((self.origin - desiredorigin) * desireddir + cvar("g_balance_rocketlauncher_guidegoal")) * desireddir;
+ newdir = rocket_steerto(olddir, normalize(goal - self.origin), cos(cvar("g_balance_rocketlauncher_guiderate") * frametime * PI / 180));
- self.velocity = newdir * velspeed;
- }
+ self.velocity = newdir * velspeed;
}
- else
- self.rl_release = 1;
if(self.rl_detonate_later)
W_Rocket_RemoteExplode();
@@ -220,8 +231,8 @@
void W_Rocket_Touch (void)
{
- if(self.owner && self.owner.lastrocket == self)
- self.owner.lastrocket = world;
+ W_Rocket_Unregister();
+
PROJECTILE_TOUCH;
W_Rocket_Explode ();
}
@@ -434,15 +445,19 @@
}
else
{
- if (self.BUTTON_ATCK && self.rl_release)
- if (weapon_prepareattack(0, cvar("g_balance_rocketlauncher_refire")))
+ if (self.BUTTON_ATCK)
{
- W_Rocket_Attack();
- weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_rocketlauncher_animtime"), w_ready);
- self.rl_release = 0;
+ if(self.rl_release)
+ if(weapon_prepareattack(0, cvar("g_balance_rocketlauncher_refire")))
+ {
+ W_Rocket_Attack();
+ weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_rocketlauncher_animtime"), w_ready);
+ self.rl_release = 0;
+ }
}
- if (!self.BUTTON_ATCK)
+ else
self.rl_release = 1;
+
if (self.BUTTON_ATCK2)
{
rockfound = 0;
Modified: branches/nexuiz-2.0/data/weapons.cfg
===================================================================
--- branches/nexuiz-2.0/data/weapons.cfg 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/data/weapons.cfg 2009-06-06 15:21:14 UTC (rev 6886)
@@ -252,7 +252,7 @@
set g_balance_hagar_secondary_refire 0.15
set g_balance_hagar_secondary_ammo 1
-set g_balance_rocketlauncher_damage 120
+set g_balance_rocketlauncher_damage 100
set g_balance_rocketlauncher_edgedamage 35
set g_balance_rocketlauncher_force 600
set g_balance_rocketlauncher_radius 150
@@ -265,7 +265,7 @@
set g_balance_rocketlauncher_ammo 3
set g_balance_rocketlauncher_health 30
set g_balance_rocketlauncher_detonatedelay 0.2 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
-set g_balance_rocketlauncher_guiderate 120 // max degrees per second
+set g_balance_rocketlauncher_guiderate 90 // max degrees per second
set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in
set g_balance_rocketlauncher_laserguided_speed 1000 //650
Modified: branches/nexuiz-2.0/misc/netradiant-NexuizPack/nexuiz.game/data/entities.def
===================================================================
--- branches/nexuiz-2.0/misc/netradiant-NexuizPack/nexuiz.game/data/entities.def 2009-06-06 15:19:03 UTC (rev 6885)
+++ branches/nexuiz-2.0/misc/netradiant-NexuizPack/nexuiz.game/data/entities.def 2009-06-06 15:21:14 UTC (rev 6886)
@@ -748,7 +748,7 @@
colormap: 1024 + 16 * pantscolor + shirtcolor
angles: initial looking direction
targetname: when invoking it by a button etc., it changes the color to the initiator of the action (e.g. the one pressing a button). In Onslaught, this can be used to color control points for team who owns them. In other game types, this can be used as a fun feature. Works only with _shirt and _pants textures.
-bgmscript: emitter class from the BGM script
+bgmscript: emitter class from the BGM script (if prefixed with <, movedir is treated as an angle value)
bgmscriptattack: attack time of the effect strength (0 to 3.9)
bgmscriptdecay: decay time of the effect strength (0 to 3.9)
bgmscriptsustain: sustain level of the effect strength (0.1 to 1, set to -1 to disable sustain)
More information about the nexuiz-commits
mailing list