[nexuiz-commits] r6885 - in branches/nexuiz-2.0: . data data/gfx/menu/blueplastic data/gfx/menu/default data/gfx/menu/silver data/gfx/menu/simplygray data/gfx/menu/wickedblack data/gfx/menu/wickedblue data/gfx/menu/wickedgreen data/gfx/menu/wickedred data/gfx/menu/wickedwhite data/gfx/menu/wickedyellow data/gfx/menu/wickedz data/gfx/menu/xaw data/qcsrc/client data/qcsrc/menu data/qcsrc/menu/nexuiz data/qcsrc/server data/scripts

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Jun 6 11:19:03 EDT 2009


Author: div0
Date: 2009-06-06 11:19:03 -0400 (Sat, 06 Jun 2009)
New Revision: 6885

Modified:
   branches/nexuiz-2.0/.patchsets
   branches/nexuiz-2.0/data/effectinfo.txt
   branches/nexuiz-2.0/data/gfx/menu/blueplastic/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/default/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/silver/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/simplygray/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/wickedblack/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/wickedblue/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/wickedgreen/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/wickedred/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/wickedwhite/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/wickedyellow/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/wickedz/skinvalues.txt
   branches/nexuiz-2.0/data/gfx/menu/xaw/skinvalues.txt
   branches/nexuiz-2.0/data/qcsrc/client/View.qc
   branches/nexuiz-2.0/data/qcsrc/client/gibs.qc
   branches/nexuiz-2.0/data/qcsrc/client/projectile.qc
   branches/nexuiz-2.0/data/qcsrc/client/wall.qc
   branches/nexuiz-2.0/data/qcsrc/menu/classes.c
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/mainwindow.c
   branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc
   branches/nexuiz-2.0/data/qcsrc/server/bots.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
   branches/nexuiz-2.0/data/qcsrc/server/constants.qh
   branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc
   branches/nexuiz-2.0/data/scripts/entities.def
   branches/nexuiz-2.0/data/weapons.cfg
   branches/nexuiz-2.0/data/weaponsHavoc.cfg
Log:
r6785 | mand1nga | 2009-05-28 22:32:21 -0400 (Thu, 28 May 2009) | 1 line
Minor fix
r6786 | div0 | 2009-05-29 15:27:58 -0400 (Fri, 29 May 2009) | 2 lines
fix grenade launcher through floor
r6787 | div0 | 2009-05-29 16:19:56 -0400 (Fri, 29 May 2009) | 8 lines
As per lordhavoc's suggestion, all rockets are guided now as long as you hold down fire. Rocket becomes unguided if you release button (no laser toggling, but also no stealing).
Guiding is NOT done via laser dot, but it always tries to get into the direction of your crosshair.
Enjoy!
NOTE: may need rebalacing of rocket launcher.
r6788 | div0 | 2009-05-29 16:20:51 -0400 (Fri, 29 May 2009) | 2 lines
nex damage down to 110, so 150 + megahealth gives you an "extra life" against the nex.
r6789 | div0 | 2009-05-29 16:28:22 -0400 (Fri, 29 May 2009) | 2 lines
prevent guiding for the first 0.15s after firing rocket to allow exact rocket aim again
r6790 | div0 | 2009-05-29 16:52:23 -0400 (Fri, 29 May 2009) | 2 lines
bgmscript: < means angular movement
r6791 | div0 | 2009-05-29 16:56:31 -0400 (Fri, 29 May 2009) | 2 lines
#101
r6792 | div0 | 2009-05-29 17:05:24 -0400 (Fri, 29 May 2009) | 2 lines
adv server settings
r6793 | div0 | 2009-05-29 17:06:16 -0400 (Fri, 29 May 2009) | 2 lines
missing in last patch
r6794 | mrbougo | 2009-05-29 17:42:19 -0400 (Fri, 29 May 2009) | 1 line
More tweaks to the blood color, simulate te_bloodshower to avoid black blood. Everything should be fine now.
r6795 | mrbougo | 2009-05-29 17:48:36 -0400 (Fri, 29 May 2009) | 1 line
weapon cvars checksum updated


Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/.patchsets	2009-06-06 15:19:03 UTC (rev 6885)
@@ -1,2 +1,2 @@
 master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-6774,6776-6784
+revisions_applied = 1-6795

Modified: branches/nexuiz-2.0/data/effectinfo.txt
===================================================================
--- branches/nexuiz-2.0/data/effectinfo.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/effectinfo.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -741,7 +741,7 @@
 tex 24 32
 size 3 8
 alpha 256 256 64
-color 0x90FFFF 0x90FFFFF
+color 0xA8FFFF 0xA8FFFFF
 bounce -1
 airfriction 1
 liquidfriction 4
@@ -783,7 +783,7 @@
 effect TR_BLOOD
 trailspacing 16
 type blood
-color 0x90FFFF 0x90FFFF
+color 0xA8FFFF 0xA8FFFF
 tex 24 32
 size 8 8
 alpha 384 384 192
@@ -800,7 +800,7 @@
 effect TR_SLIGHTBLOOD
 trailspacing 32
 type blood
-color 0x90FFFF 0x90FFFF
+color 0xA8FFFF 0xA8FFFF
 tex 24 32
 size 8 8
 alpha 384 384 192
@@ -3272,7 +3272,7 @@
 tex 0 8
 size 25 30
 alpha 100 256 400
-color 0x000000 0x236432
+color 0x000000 0x204010
 originjitter 11 11 11
 
 effect robot_blood
@@ -3300,7 +3300,7 @@
 effect alien_TR_BLOOD
 trailspacing 16
 type blood
-color 0xDC9BCD 0xDC9BCD
+color 0xC080B0 0xC080B0
 tex 24 32
 size 8 8
 alpha 384 384 192
@@ -3313,7 +3313,7 @@
 effect robot_TR_BLOOD
 trailspacing 16
 type blood
-color 0xCDE69B 0xCDE69B
+color 0xC0D890 0xC0D890
 tex 24 32
 size 8 8
 alpha 384 384 192
@@ -3326,7 +3326,7 @@
 effect alien_TR_SLIGHTBLOOD
 trailspacing 32
 type blood
-color 0xDC9BCD 0xDC9BCD
+color 0xC080B0 0xC080B0
 tex 24 32
 size 80 80
 alpha 384 384 192
@@ -3339,7 +3339,7 @@
 effect robot_TR_SLIGHTBLOOD
 trailspacing 32
 type blood
-color 0xCDE69B 0xCDE69B
+color 0xC0D890 0xC0D890
 tex 24 32
 size 8 8
 alpha 384 384 192
@@ -3369,4 +3369,41 @@
 //originjitter 24 24 24
 velocityjitter 256 256 256
 
+effect bloodshower
+countabsolute 1
+type blood
+tex 24 32
+size 8 8
+color 0xA8FFFF 0xA8FFFFF
+alpha 256 256 64
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 1
 
+effect alien_bloodshower
+countabsolute 1
+type blood
+tex 24 32
+size 8 8
+color 0xC080B0 0xC080B0
+alpha 256 256 64
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 1
+
+effect robot_bloodshower
+countabsolute 1
+type blood
+tex 24 32
+size 8 8
+color 0xC0D890 0xC0D890
+alpha 256 256 64
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 1

Modified: branches/nexuiz-2.0/data/gfx/menu/blueplastic/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/blueplastic/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/blueplastic/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -14,6 +14,7 @@
 COLOR_DIALOG_SETTINGS           '1 1 1'
 COLOR_DIALOG_TEAMSELECT         '1 1 1'
 COLOR_DIALOG_QUIT               '0.75 0 0'
+COLOR_DIALOG_ADVANCED           '1 1 1'
 COLOR_DIALOG_MUTATORS           '1 1 1'
 COLOR_DIALOG_MAPINFO            '1 1 1'
 COLOR_DIALOG_USERBIND           '1 1 1'

Modified: branches/nexuiz-2.0/data/gfx/menu/default/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/default/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/default/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '0.7 0.7 1'
 COLOR_DIALOG_TEAMSELECT         '1 1 1'
 COLOR_DIALOG_QUIT               '1 0 0'
+COLOR_DIALOG_ADVANCED           '0.7 0.7 1'
 COLOR_DIALOG_MUTATORS           '0.7 0.7 1'
 COLOR_DIALOG_MAPINFO            '0.7 0.7 1'
 COLOR_DIALOG_USERBIND           '0.7 0.7 1'

Modified: branches/nexuiz-2.0/data/gfx/menu/silver/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/silver/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/silver/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '0.95 0.95 1'
 COLOR_DIALOG_TEAMSELECT         '1 1 1'
 COLOR_DIALOG_QUIT               '1 0.2 0.2'
+COLOR_DIALOG_ADVANCED           '0.8 0.8 0.8'
 COLOR_DIALOG_MUTATORS           '0.8 0.8 0.8'
 COLOR_DIALOG_MAPINFO            '0.6 0.7 0.8'
 COLOR_DIALOG_USERBIND           '1 1 1'

Modified: branches/nexuiz-2.0/data/gfx/menu/simplygray/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/simplygray/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/simplygray/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '0.7 0.7 0.7'
 COLOR_DIALOG_TEAMSELECT         '1 1 1'
 COLOR_DIALOG_QUIT               '1 0 0'
+COLOR_DIALOG_ADVANCED           '0.7 0.7 0.7'
 COLOR_DIALOG_MUTATORS           '0.7 0.7 0.7'
 COLOR_DIALOG_MAPINFO            '0.7 0.7 0.7'
 COLOR_DIALOG_USERBIND           '0.7 0.7 0.7'

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedblack/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedblack/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '1 1 1'
 COLOR_DIALOG_TEAMSELECT         '1 1 1'
 COLOR_DIALOG_QUIT               '0.75 0 0'
+COLOR_DIALOG_ADVANCED           '1 1 1'
 COLOR_DIALOG_MUTATORS           '1 1 1'
 COLOR_DIALOG_MAPINFO            '1 1 1'
 COLOR_DIALOG_USERBIND           '1 1 1'

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedblue/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedblue/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '0.5 0.75 1'
 COLOR_DIALOG_TEAMSELECT         '0.5 0.75 1'
 COLOR_DIALOG_QUIT               '0.75 0 0'
+COLOR_DIALOG_ADVANCED           '0.5 0.75 1'
 COLOR_DIALOG_MUTATORS           '0.5 0.75 1'
 COLOR_DIALOG_MAPINFO            '0.5 0.75 1'
 COLOR_DIALOG_USERBIND           '0.5 0.75 1'

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedgreen/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedgreen/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '0.5 1 0'
 COLOR_DIALOG_TEAMSELECT         '0.5 1 0'
 COLOR_DIALOG_QUIT               '0.75 0 0'
+COLOR_DIALOG_ADVANCED           '0.5 1 0'
 COLOR_DIALOG_MUTATORS           '0.5 1 0'
 COLOR_DIALOG_MAPINFO            '0.5 1 0'
 COLOR_DIALOG_USERBIND           '0.5 1 0'

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedred/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedred/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '1 0 0'
 COLOR_DIALOG_TEAMSELECT         '1 0 0'
 COLOR_DIALOG_QUIT               '0.75 0 0'
+COLOR_DIALOG_ADVANCED           '1 0 0'
 COLOR_DIALOG_MUTATORS           '1 0 0'
 COLOR_DIALOG_MAPINFO            '1 0 0'
 COLOR_DIALOG_USERBIND           '1 0 0'

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedwhite/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedwhite/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '1 1 1'
 COLOR_DIALOG_TEAMSELECT         '1 1 1'
 COLOR_DIALOG_QUIT               '0.75 0 0'
+COLOR_DIALOG_ADVANCED           '1 1 1'
 COLOR_DIALOG_MUTATORS           '1 1 1'
 COLOR_DIALOG_MAPINFO            '1 1 1'
 COLOR_DIALOG_USERBIND           '1 1 1'

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedyellow/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedyellow/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '1 0.875 0'
 COLOR_DIALOG_TEAMSELECT         '1 0.875 0'
 COLOR_DIALOG_QUIT               '0.75 0 0'
+COLOR_DIALOG_ADVANCED           '1 0.875 0'
 COLOR_DIALOG_MUTATORS           '1 0.875 0'
 COLOR_DIALOG_MAPINFO            '1 0.875 0'
 COLOR_DIALOG_USERBIND           '1 0.875 0'

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedz/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedz/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedz/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -27,6 +27,7 @@
 COLOR_DIALOG_SETTINGS           '0.5 0.65 0.7'
 COLOR_DIALOG_TEAMSELECT         '0.4 0.8 0.9'
 COLOR_DIALOG_QUIT               '0.4 0.8 0.9'
+COLOR_DIALOG_ADVANCED           '0.4 0.8 0.9'
 COLOR_DIALOG_MUTATORS           '0.4 0.8 0.9'
 COLOR_DIALOG_MAPINFO            '0.4 0.8 0.9'
 COLOR_DIALOG_USERBIND           '0.4 0.8 0.9'

Modified: branches/nexuiz-2.0/data/gfx/menu/xaw/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/xaw/skinvalues.txt	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/gfx/menu/xaw/skinvalues.txt	2009-06-06 15:19:03 UTC (rev 6885)
@@ -13,6 +13,7 @@
 COLOR_DIALOG_SETTINGS           '1 1 1'
 COLOR_DIALOG_TEAMSELECT         '1 1 1'
 COLOR_DIALOG_QUIT               '1 0 0'
+COLOR_DIALOG_ADVANCED           '1 1 1'
 COLOR_DIALOG_MUTATORS           '1 1 1'
 COLOR_DIALOG_MAPINFO            '1 1 1'
 COLOR_DIALOG_USERBIND           '1 1 1'

Modified: branches/nexuiz-2.0/data/qcsrc/client/View.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/View.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/client/View.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -232,6 +232,10 @@
 			mi = '-2 -2 -2';
 			ma = '2 2 2';
 			break;
+		case WEP_ELECTRO: // projectile has a size!
+			mi = '0 0 -3';
+			ma = '0 0 -3';
+			break;
 	}
 
 	vecs = decompressShotOrigin(getstati(STAT_SHOTORG));
@@ -247,12 +251,8 @@
 	dv = view_right * vecs_y + view_up * vecs_z;
 	w_shotorg = view_origin + dv;
 
-	// move the vecs sideways as much as requested if possible
-	traceline(view_origin, w_shotorg + normalize(dv) * nudge, MOVE_NORMAL, trueaim);
-	w_shotorg = trace_endpos - normalize(dv) * nudge;
-
 	// now move the vecs forward as much as requested if possible
-	traceline(w_shotorg, w_shotorg + view_forward * (vecs_x + nudge), MOVE_NORMAL, trueaim); // FIXME this MOVE_NORMAL part will misbehave a little in csqc
+	tracebox(w_shotorg, mi, ma, w_shotorg + view_forward * (vecs_x + nudge), MOVE_NORMAL, trueaim); // FIXME this MOVE_NORMAL part will misbehave a little in csqc
 	w_shotorg = trace_endpos - view_forward * nudge;
 	
 	// now test whether we will actually hit the trueaimpoint...

Modified: branches/nexuiz-2.0/data/qcsrc/client/gibs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/gibs.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/client/gibs.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -12,6 +12,14 @@
 	}
 }
 
+void new_te_bloodshower (float ef, vector org, float explosionspeed, float howmany)
+{
+	float i, pmod;
+	pmod = cvar("cl_particles_quality");
+	for (i = 0; i < 250 * pmod; i++)
+		pointparticles(ef, org, randomvec() * explosionspeed, howmany / 250);
+}
+
 void SUB_RemoveOnNoImpact()
 {
 	if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
@@ -93,7 +101,7 @@
 void Ent_GibSplash()
 {
 	float amount, type, specnum;
-	vector org, vel, mi, ma;
+	vector org, vel;
 	string specstr;
 
 	float c, gibfactor, randomvalue;
@@ -104,8 +112,6 @@
 	org_y = ReadShort() * 4 + 2;
 	org_z = ReadShort() * 4 + 2;
 	vel = decompressShortVector(ReadShort());
-	mi = decompressShortVector(ReadShort());
-	ma = decompressShortVector(ReadShort());
 
 	if(cvar("cl_gentle"))
 		type |= 0x80; // set gentle bit
@@ -132,7 +138,7 @@
 
 			if(prandom() < amount)
 				TossGib ("models/gibs/eye.md3", org, vel, prandomvec() * 150, specnum, 0);
-			te_bloodshower(org + mi, org + ma, 1200, 1000 * amount);
+			new_te_bloodshower(particleeffectnum(strcat(specstr, "bloodshower")), org, 1200, amount);
 			if(prandom() < amount)
 				TossGib ("models/gibs/bloodyskull.md3", org, vel, prandomvec() * 100, specnum, 0);
 

Modified: branches/nexuiz-2.0/data/qcsrc/client/projectile.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/projectile.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/client/projectile.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -303,6 +303,10 @@
 				self.mins = '-2 -2 -2';
 				self.maxs = '2 2 2';
 				break;
+			case PROJECTILE_GRENADE:
+				self.mins = '0 0 -3';
+				self.maxs = '0 0 -3';
+				break;
 			case PROJECTILE_GRENADE_BOUNCING:
 				self.mins = '0 0 -3';
 				self.maxs = '0 0 -3';

Modified: branches/nexuiz-2.0/data/qcsrc/client/wall.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/wall.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/client/wall.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -1,13 +1,20 @@
 .float lip;
+.float bgmscriptangular;
 
 void Ent_Wall_Draw()
 {
 	float f;
 	vector save;
+	var .vector fld;
 
 	InterpolateOrigin_Do();
 
-	save = self.origin;
+	if(self.bgmscriptangular)
+		fld = angles;
+	else
+		fld = origin;
+	
+	save = self.fld;
 	f = BGMScript(self);
 	if(f >= 0)
 	{
@@ -15,7 +22,7 @@
 			self.alpha = 1 + self.lip * f;
 		else // > 0: alpha goes from 1-|lip| to 1 when toggled (toggling adds lip)
 			self.alpha = 1 - self.lip * (1 - f);
-		self.origin = self.origin + self.movedir * f;
+		self.fld = self.fld + self.movedir * f;
 	}
 	else
 		self.alpha = 1;
@@ -23,7 +30,7 @@
 	if(self.alpha >= ALPHA_MIN_VISIBLE)
 		R_AddEntity(self);
 
-	self.origin = save;
+	self.fld = save;
 }
 
 void Ent_Wall_Remove()
@@ -84,9 +91,20 @@
 		}
 		else
 			self.mins = self.maxs = '0 0 0';
+
 		if(self.bgmscript)
 			strunzone(self.bgmscript);
-		self.bgmscript = strzone(ReadString());
+		self.bgmscript = ReadString();
+		if(substring(self.bgmscript, 0, 1) == "<")
+		{
+			self.bgmscript = strzone(substring(self.bgmscript, 1, -1));
+			self.bgmscriptangular = 1;
+		}
+		else
+		{
+			self.bgmscript = strzone(self.bgmscript);
+			self.bgmscriptangular = 0;
+		}
 		if(self.bgmscript != "")
 		{
 			self.bgmscriptattack = ReadByte() / 64.0;

Modified: branches/nexuiz-2.0/data/qcsrc/menu/classes.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/classes.c	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/menu/classes.c	2009-06-06 15:19:03 UTC (rev 6885)
@@ -52,6 +52,7 @@
 #include "nexuiz/dialog_quit.c"
 #include "nexuiz/dialog_multiplayer_create.c"
 #include "nexuiz/dialog_multiplayer_create_mutators.c"
+#include "nexuiz/dialog_multiplayer_create_advanced.c"
 #include "nexuiz/dialog_multiplayer_create_mapinfo.c"
 #include "nexuiz/gametypebutton.c"
 #include "nexuiz/maplist.c"

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c	2009-06-06 15:19:03 UTC (rev 6885)
@@ -132,9 +132,6 @@
 			setDependent(e, "bot_number", 0, -1);
 	me.TR(me);
 	me.TR(me);
-		me.TD(me, 1, 3, e = makeNexuizCheckBoxEx(2, 0, "g_antilag", "AntiLag"));
-	me.TR(me);
-	me.TR(me);
 		me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Map voting:"));
 		me.TD(me, 1, 2, e = makeNexuizTextSlider("g_maplist_votable"));
 			e.addValue(e, "No voting", "0");
@@ -151,6 +148,13 @@
 		me.TD(me, 1, 3, e = makeNexuizCheckBoxEx(0.5, 0, "sv_vote_simple_majority_factor", "Simple majority wins vcall"));
 	me.TR(me);
 	me.TR(me);
+		me.TDempty(me, 0.5);
+		me.TD(me, 1, 2, e = makeNexuizButton("Advanced settings...", '0 0 0'));
+			e.onClick = DialogOpenButton_Click;
+			e.onClickEntity = main.advancedDialog;
+			main.advancedDialog.refilterEntity = me.mapListBox;
+		me.TR(me);
+		me.TR(me);
 		me.TD(me, 1, 1, e = makeNexuizButton("Mutators...", '0 0 0'));
 			e.onClick = DialogOpenButton_Click;
 			e.onClickEntity = main.mutatorsDialog;

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/mainwindow.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/mainwindow.c	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/mainwindow.c	2009-06-06 15:19:03 UTC (rev 6885)
@@ -1,6 +1,7 @@
 #ifdef INTERFACE
 CLASS(MainWindow) EXTENDS(ModalController)
 	METHOD(MainWindow, configureMainWindow, void(entity))
+	ATTRIB(MainWindow, advancedDialog, entity, NULL)
 	ATTRIB(MainWindow, mutatorsDialog, entity, NULL)
 	ATTRIB(MainWindow, weaponsDialog, entity, NULL)
 	ATTRIB(MainWindow, mapInfoDialog, entity, NULL)
@@ -32,6 +33,10 @@
 	i.configureDialog(i);
 	me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
 
+	me.advancedDialog = i = spawnNexuizAdvancedDialog();
+	i.configureDialog(i);
+	me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+
 	me.mutatorsDialog = i = spawnNexuizMutatorsDialog();
 	i.configureDialog(i);
 	me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);

Modified: branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -45,6 +45,7 @@
 	SKINVECTOR(COLOR_DIALOG_SETTINGS, '0.7 0.7 1');
 	SKINVECTOR(COLOR_DIALOG_TEAMSELECT, '1 1 1');
 	SKINVECTOR(COLOR_DIALOG_QUIT, '1 0 0');
+	SKINVECTOR(COLOR_DIALOG_ADVANCED, '0.7 0.7 1');
 	SKINVECTOR(COLOR_DIALOG_MUTATORS, '0.7 0.7 1');
 	SKINVECTOR(COLOR_DIALOG_MAPINFO, '0.7 0.7 1');
 	SKINVECTOR(COLOR_DIALOG_USERBIND, '0.7 0.7 1');

Modified: branches/nexuiz-2.0/data/qcsrc/server/bots.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/bots.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/bots.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -1907,7 +1907,7 @@
 vector shotorg;
 vector shotdir;
 
-.float bot_team;
+.float bot_team, bot_checked;
 void bot_setnameandstuff()
 {
 	local string readfile, s;
@@ -1955,6 +1955,7 @@
 	else bot_pants = ftos(floor(random() * 15));
 
 	self.bot_team = stof(argv(5));
+	self.bot_checked = 1;
 	prefix = cvar_string("bot_prefix");
 	suffix = cvar_string("bot_suffix");
 
@@ -2469,15 +2470,18 @@
 	self.isbot = TRUE;
 	self.createdtime = self.nextthink;
 
-	switch(self.bot_team)
-	{
-		case 1: self.team = COLOR_TEAM1;
-		case 2:	self.team = COLOR_TEAM2;
-		case 3:	self.team = COLOR_TEAM3;
-		case 4:	self.team = COLOR_TEAM4;
-		default:
-			JoinBestTeam(self, FALSE, TRUE);
-	}
+	if(!self.bot_checked) // This is needed so team overrider doesn't break between matches
+		bot_setnameandstuff();
+	if(self.bot_team==1)
+		self.team = COLOR_TEAM1;
+	else if(self.bot_team==2)
+		self.team = COLOR_TEAM2;
+	else if(self.bot_team==3)
+		self.team = COLOR_TEAM3;
+	else if(self.bot_team==4)
+		self.team = COLOR_TEAM4;
+	else
+		JoinBestTeam(self, FALSE, TRUE);
 
 	havocbot_setupbot();
 	self.bot_mouseskill=random()-0.5;

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -275,7 +275,7 @@
 void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
 {
 	local float take, save;
-	Violence_GibSplash_At(hitloc, '0 0 0', '0 0 0', force, 2, bound(0, damage, 200) / 16);
+	Violence_GibSplash_At(hitloc, force, 2, bound(0, damage, 200) / 16);
 
 	// damage resistance (ignore most of the damage from a bullet or similar)
 	damage = max(damage - 5, 1);
@@ -291,9 +291,9 @@
 		sound (self, CHAN_PROJECTILE, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM);
 
 	if (take > 50)
-		Violence_GibSplash_At(hitloc, '0 0 0', '0 0 0', force * -0.1, 3, 1);
+		Violence_GibSplash_At(hitloc, force * -0.1, 3, 1);
 	if (take > 100)
-		Violence_GibSplash_At(hitloc, '0 0 0', '0 0 0', force * -0.2, 3, 1);
+		Violence_GibSplash_At(hitloc, force * -0.2, 3, 1);
 
 	if (!(self.flags & FL_GODMODE))
 	{
@@ -333,7 +333,7 @@
 			damage /= sqrt(bound(1.0, attacker.cvar_cl_handicap, 100.0));
 	}
 
-	Violence_GibSplash_At(hitloc, '0 0 0', '0 0 0', force, 2, bound(0, damage, 200) / 16);
+	Violence_GibSplash_At(hitloc, force, 2, bound(0, damage, 200) / 16);
 
 	if(g_arena)
 	if(numspawned < 2)
@@ -358,9 +358,9 @@
 		sound (self, CHAN_PROJECTILE, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM); // FIXME possibly remove them?
 
 	if (take > 50)
-		Violence_GibSplash_At(hitloc, '0 0 0', '0 0 0', force * -0.1, 3, 1);
+		Violence_GibSplash_At(hitloc, force * -0.1, 3, 1);
 	if (take > 100)
-		Violence_GibSplash_At(hitloc, '0 0 0', '0 0 0', force * -0.2, 3, 1);
+		Violence_GibSplash_At(hitloc, force * -0.2, 3, 1);
 
 	if (time > self.spawnshieldtime)
 	{

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -103,7 +103,7 @@
 // this function calculates w_shotorg and w_shotdir based on the weapon model
 // offset, trueaim and antilag, and won't put w_shotorg inside a wall.
 // make sure you call makevectors first (FIXME?)
-void W_SetupShot(entity ent, float antilag, float recoil, string snd)
+void W_SetupShot_ProjectileSize(entity ent, vector mi, vector ma, float antilag, float recoil, string snd)
 {
 	float nudge = 1; // added to traceline target and subtracted from result
 	local vector trueaimpoint;
@@ -130,12 +130,8 @@
 	dv = v_right * vecs_y + v_up * vecs_z;
 	w_shotorg = ent.origin + ent.view_ofs + dv;
 
-	// move the vecs sideways as much as requested if possible
-	traceline(ent.origin + ent.view_ofs, w_shotorg + normalize(dv) * nudge, MOVE_NORMAL, ent);
-	w_shotorg = trace_endpos - normalize(dv) * nudge;
-
 	// now move the shotorg forward as much as requested if possible
-	traceline(w_shotorg, w_shotorg + v_forward * (vecs_x + nudge), MOVE_NORMAL, ent);
+	tracebox(w_shotorg, mi, ma, w_shotorg + v_forward * (vecs_x + nudge), MOVE_NORMAL, ent);
 	w_shotorg = trace_endpos - v_forward * nudge;
 	// calculate the shotdir from the chosen shotorg
 	w_shotdir = normalize(trueaimpoint - w_shotorg);
@@ -267,6 +263,11 @@
 		sound (ent, CHAN_AUTO, "weapons/strength_fire.wav", VOL_BASE, ATTN_NORM);
 };
 
+void W_SetupShot(entity ent, float antilag, float recoil, string snd)
+{
+	W_SetupShot_ProjectileSize(ent, '0 0 0', '0 0 0', antilag, recoil, snd);
+}
+
 void LaserTarget_Think()
 {
 	entity e;

Modified: branches/nexuiz-2.0/data/qcsrc/server/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/constants.qh	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/constants.qh	2009-06-06 15:19:03 UTC (rev 6885)
@@ -1,5 +1,5 @@
 string CVAR_CHECK_DEFAULT = "2374fb15eacd4470860923b3ccddc0ad";
-string CVAR_CHECK_WEAPONS = "c5b3e579a14c45d555550b08f203a607";
+string CVAR_CHECK_WEAPONS = "2f93eb8481f44bb2ff744af86a75eccf";
 
 float	FALSE					= 0;
 float	TRUE					= 1;

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -7,13 +7,11 @@
 	WriteShort(MSG_ENTITY, floor(self.origin_y / 4)); // not using a coord here, as gibs don't need this accuracy
 	WriteShort(MSG_ENTITY, floor(self.origin_z / 4)); // not using a coord here, as gibs don't need this accuracy
 	WriteShort(MSG_ENTITY, self.oldorigin_x); // acrually compressed velocity
-	WriteShort(MSG_ENTITY, self.oldorigin_y); // acrually compressed mins
-	WriteShort(MSG_ENTITY, self.oldorigin_z); // acrually compressed maxs
 	return TRUE;
 }
 
 // TODO maybe convert this to a TE?
-void Violence_GibSplash_At(vector org, vector mi, vector ma, vector dir, float type, float amount)
+void Violence_GibSplash_At(vector org, vector dir, float type, float amount)
 {
 	entity e;
 
@@ -25,17 +23,14 @@
 		e.state |= 0x80; // "force gentle" bit
 	e.state |= 8 * self.species; // gib type, ranges from 0 to 15
 	setorigin(e, org);
-	setsize(e, mi, ma);
 	e.velocity = dir;
 
 	e.oldorigin_x = compressShortVector(e.velocity);
-	e.oldorigin_y = compressShortVector(e.mins);
-	e.oldorigin_z = compressShortVector(e.maxs);
 
 	Net_LinkEntity(e, FALSE, 0.2, Violence_GibSplash_SendEntity);
 }
 
 void Violence_GibSplash(entity source, float type, float amount)
 {
-	Violence_GibSplash_At(source.origin + source.view_ofs, source.mins - source.view_ofs, source.maxs - source.view_ofs, source.velocity, type, amount);
+	Violence_GibSplash_At(source.origin + source.view_ofs, source.velocity, type, amount);
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -88,6 +88,7 @@
 		//proj.gravity = 0.001;
 
 		setorigin (proj, w_shotorg);
+		setsize(proj, '0 0 0', '0 0 0');
 
 
 		s = '0 0 0';
@@ -151,6 +152,7 @@
 		//proj.gravity = 0.001;
 
 		setorigin (proj, w_shotorg);
+		setsize(proj, '0 0 0', '0 0 0');
 
 		proj.velocity = (w_shotdir + (((counter + 0.5) / shots) * 2 - 1) * v_right * cvar("g_balance_crylink_secondary_spread")) * cvar("g_balance_crylink_secondary_speed");
 		W_SetupProjectileVelocity(proj);

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -69,7 +69,7 @@
 {
 	local entity proj;
 
-	W_SetupShot (self, FALSE, 2, "weapons/electro_fire.wav");
+	W_SetupShot_ProjectileSize (self, '0 0 -3', '0 0 -3', FALSE, 2, "weapons/electro_fire.wav");
 
 	pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
@@ -92,6 +92,7 @@
 	W_SetupProjectileVelocity(proj);
 	proj.angles = vectoangles(proj.velocity);
 	proj.touch = W_Plasma_TouchExplode;
+	setsize(proj, '0 0 -3', '0 0 -3');
 	proj.flags = FL_PROJECTILE;
 
 	//sound (proj, CHAN_PAIN, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
@@ -104,7 +105,7 @@
 {
 	local entity proj;
 
-	W_SetupShot (self, FALSE, 2, "weapons/electro_fire2.wav");
+	W_SetupShot_ProjectileSize (self, '0 0 -3', '0 0 -3', FALSE, 2, "weapons/electro_fire2.wav");
 	w_shotdir = v_forward; // no TrueAim for grenades please
 
 	pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -74,7 +74,7 @@
 
 	if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
 		self.ammo_rockets = self.ammo_rockets - cvar("g_balance_grenadelauncher_primary_ammo");
-	W_SetupShot (self, FALSE, 4, "weapons/grenade_fire.wav");
+	W_SetupShot_ProjectileSize (self, '0 0 -3', '0 0 -3', FALSE, 4, "weapons/grenade_fire.wav");
 	w_shotdir = v_forward; // no TrueAim for grenades please
 
 	pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -88,6 +88,7 @@
 	gren.solid = SOLID_BBOX;
 	gren.projectiledeathtype = WEP_GRENADE_LAUNCHER;
 	setorigin(gren, w_shotorg);
+	setsize(gren, '0 0 -3', '0 0 -3');
 
 	gren.nextthink = time + cvar("g_balance_grenadelauncher_primary_lifetime");
 	gren.think = adaptor_think2use;
@@ -108,7 +109,7 @@
 
 	if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
 		self.ammo_rockets = self.ammo_rockets - cvar("g_balance_grenadelauncher_secondary_ammo");
-	W_SetupShot (self, FALSE, 4, "weapons/grenade_fire.wav");
+	W_SetupShot_ProjectileSize (self, '0 0 -3', '0 0 -3', FALSE, 4, "weapons/grenade_fire.wav");
 	w_shotdir = v_forward; // no TrueAim for grenades please
 
 	pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -121,7 +122,7 @@
 	gren.movetype = MOVETYPE_BOUNCE;
 	gren.solid = SOLID_BBOX;
 	gren.projectiledeathtype = WEP_GRENADE_LAUNCHER | HITTYPE_SECONDARY;
-	setsize(gren, '0 0 -3', '0 0 -3'); // why, just, why?
+	setsize(gren, '0 0 -3', '0 0 -3');
 	setorigin(gren, w_shotorg);
 
 	gren.nextthink = time + cvar("g_balance_grenadelauncher_secondary_lifetime");

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -65,6 +65,7 @@
 	missile.solid = SOLID_BBOX;
 	missile.projectiledeathtype = WEP_HAGAR;
 	setorigin (missile, w_shotorg);
+	setsize(missile, '0 0 0', '0 0 0');
 	//missile.takedamage = DAMAGE_YES;
 	//missile.damageforcescale = 4;
 	//missile.health = 10;
@@ -104,6 +105,7 @@
 	missile.solid = SOLID_BBOX;
 	missile.projectiledeathtype = WEP_HAGAR | HITTYPE_SECONDARY;
 	setorigin (missile, w_shotorg);
+	setsize(missile, '0 0 0', '0 0 0');
 	//missile.takedamage = DAMAGE_YES;
 	//missile.damageforcescale = 4;
 	//missile.health = 10;

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -56,6 +56,7 @@
 	missile.solid = SOLID_BBOX;
 
 	setorigin (missile, w_shotorg);
+	setsize(missile, '0 0 0', '0 0 0');
 
     missile.velocity = (w_shotdir + randomvec() * spread) * cvar("g_balance_hlac_primary_speed");
 
@@ -99,6 +100,7 @@
 	missile.solid = SOLID_BBOX;
 
 	setorigin (missile, w_shotorg);
+	setsize(missile, '0 0 0', '0 0 0');
 
     missile.velocity = (w_shotdir + randomvec() * spread) * cvar("g_balance_hlac_secondary_speed");
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -71,6 +71,7 @@
 	gren.solid = SOLID_BBOX;
 	gren.projectiledeathtype = WEP_HOOK | HITTYPE_SECONDARY;
 	setorigin(gren, w_shotorg);
+	setsize(gren, '0 0 0', '0 0 0');
 
 	gren.nextthink = time + cvar("g_balance_hook_secondary_lifetime");
 	gren.think = adaptor_think2use;

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -37,6 +37,7 @@
 		missile.projectiledeathtype |= HITTYPE_SECONDARY;
 
 	setorigin (missile, w_shotorg);
+	setsize(missile, '0 0 0', '0 0 0');
 
 	if (issecondary)
 		missile.velocity = w_shotdir * cvar("g_balance_laser_secondary_speed");

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -174,6 +174,7 @@
 	gren.effects = EF_RED;
 	gren.scale = 4;
 	setorigin(gren, w_shotorg);
+	setsize(gren, '0 0 0', '0 0 0');
 
 	gren.nextthink = time + cvar("g_balance_porto_primary_lifetime");
 	gren.think = W_Porto_Think;

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:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -91,10 +91,32 @@
 	}
 }
 
+vector rocket_steerto(vector thisdir, vector goaldir, float maxturn_cos)
+{
+	if(thisdir * goaldir > maxturn_cos)
+		return goaldir;
+	float f, m2;
+	vector v;
+	// solve:
+	//   g = normalize(thisdir + goaldir * X)
+	//   thisdir * g = maxturn
+	//
+	//   gg = thisdir + goaldir * X
+	//   (thisdir * gg)^2 = maxturn^2 * (gg * gg)
+	//
+	//   (1 + (thisdir * goaldir) * X)^2 = maxturn^2 * (1 + X*X + 2 * X * thisdir * goaldir)
+	f = thisdir * goaldir;
+	//   (1 + f * X)^2 = maxturn^2 * (1 + X*X + 2 * X * f)
+	//   0 = (m^2 - f^2) * x^2 + (2 * f * (m^2 - 1)) * x + (m^2 - 1)
+	m2 = maxturn_cos * maxturn_cos;
+	v = solve_quadratic(m2 - f * f, 2 * f * (m2 - 1), m2 - 1);
+	return normalize(thisdir + goaldir * v_y); // the larger solution!
+}
+
 void W_Rocket_Think (void)
 {
 	entity e;
-	vector desireddir, olddir, newdir;
+	vector desireddir, olddir, newdir, desiredorigin, goal;
 	float turnrate, velspeed;
 	self.nextthink = time;
 	if (time > self.cnt)
@@ -156,7 +178,7 @@
 				turnrate = cvar("g_balance_rocketlauncher_laserguided_turnrate");//0.65;						// how fast to turn
 				desireddir = normalize(e.origin - self.origin);		// get direction from my position to the laser target
 				olddir = normalize(self.velocity);					// get my current direction
-				newdir = normalize((olddir + desireddir * turnrate) * 0.5);	// take the average of the 2 directions; not the best method but simple & easy
+				newdir = normalize(olddir + desireddir * turnrate);	// take the average of the 2 directions; not the best method but simple & easy
 				self.velocity = newdir * velspeed;					// make me fly in the new direction at my flight speed
 				self.angles = vectoangles(self.velocity);			// turn model in the new flight direction
 
@@ -165,6 +187,28 @@
 		}
 		else
 		{
+			if(!self.rl_release && !self.owner.rl_release && cvar("g_balance_rocketlauncher_guiderate"))
+			{
+				if(time > self.pushltime)
+				{
+					velspeed = vlen(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));
+
+					self.velocity = newdir * velspeed;
+				}
+			}
+			else
+				self.rl_release = 1;
+
 			if(self.rl_detonate_later)
 				W_Rocket_RemoteExplode();
 		}
@@ -198,7 +242,7 @@
 	if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
 		self.ammo_rockets = self.ammo_rockets - cvar("g_balance_rocketlauncher_ammo");
 
-	W_SetupShot (self, FALSE, 5, "weapons/rocket_fire.wav");
+	W_SetupShot_ProjectileSize (self, '-3 -3 -3', '3 3 3', FALSE, 5, "weapons/rocket_fire.wav");
 	pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
 	missile = spawn ();
@@ -208,6 +252,7 @@
 		missile.spawnshieldtime = time + cvar("g_balance_rocketlauncher_detonatedelay");
 	else
 		missile.spawnshieldtime = -1;
+	missile.pushltime = time + cvar("g_balance_rocketlauncher_guidedelay");
 	missile.classname = "rocket";
 	missile.bot_dodge = TRUE;
 	missile.bot_dodgerating = cvar("g_balance_rocketlauncher_primary_damage") * 2; // * 2 because it can be detonated inflight which makes it even more dangerous
@@ -236,7 +281,7 @@
 	missile.cnt = time + cvar("g_balance_rocketlauncher_lifetime");
 	missile.flags = FL_PROJECTILE;
 
-	CSQCProjectile(missile, cvar("g_balance_rocketlauncher_speedaccel") == 0 && !g_laserguided_missile, PROJECTILE_ROCKET, FALSE); // because of fly sound
+	CSQCProjectile(missile, cvar("g_balance_rocketlauncher_guiderate") == 0 && cvar("g_balance_rocketlauncher_speedaccel") == 0 && !g_laserguided_missile, PROJECTILE_ROCKET, FALSE); // because of fly sound
 
 	// muzzle flash for 1st person view
 	flash = spawn ();
@@ -389,12 +434,15 @@
 		}
 		else
 		{
-			if (self.BUTTON_ATCK)
+			if (self.BUTTON_ATCK && 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)
+				self.rl_release = 1;
 			if (self.BUTTON_ATCK2)
 			{
 				rockfound = 0;

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc	2009-06-06 15:19:03 UTC (rev 6885)
@@ -160,7 +160,7 @@
 		self.ammo_rockets = self.ammo_rockets - cvar("g_balance_seeker_missile_ammo");
 
 	makevectors(self.v_angle);
-	W_SetupShot (self, FALSE, 2, "weapons/seeker_fire.wav");
+	W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/seeker_fire.wav");
 	w_shotorg += f_diff;
 	pointparticles(particleeffectnum("seeker_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
@@ -312,7 +312,7 @@
 	if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
 		self.ammo_rockets = self.ammo_rockets - cvar("g_balance_seeker_tag_ammo");
 
-	W_SetupShot (self, FALSE, 2, "weapons/tag_fire.wav");
+	W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/tag_fire.wav");
 
 	missile                 = spawn();
 	missile.owner           = self;
@@ -331,6 +331,7 @@
 	missile.health          = 5;
 
 	setorigin (missile, w_shotorg);
+	setsize (missile, '-2 -2 -2', '2 2 2');
 
 	missile.flags       = FL_PROJECTILE;
 
@@ -385,7 +386,7 @@
 			f_diff = '+1.25 +3.75 0';
 			break;
 	}
-	W_SetupShot (self, FALSE, 2, "weapons/flac_fire.wav");
+	W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/flac_fire.wav");
 	w_shotorg += f_diff;
 
 	pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -403,6 +404,7 @@
 	missile.scale = 0.4; // BUG: the model is too big
 	missile.projectiledeathtype = WEP_SEEKER;
 	setorigin (missile, w_shotorg);
+	setsize (missile, '-2 -2 -2', '2 2 2');
 	missile.projectiledeathtype = WEP_SEEKER | HITTYPE_SECONDARY;
 
 	missile.movetype = MOVETYPE_FLY;

Modified: branches/nexuiz-2.0/data/scripts/entities.def
===================================================================
--- branches/nexuiz-2.0/data/scripts/entities.def	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/scripts/entities.def	2009-06-06 15:19:03 UTC (rev 6885)
@@ -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)

Modified: branches/nexuiz-2.0/data/weapons.cfg
===================================================================
--- branches/nexuiz-2.0/data/weapons.cfg	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/weapons.cfg	2009-06-06 15:19:03 UTC (rev 6885)
@@ -3,7 +3,7 @@
 //
 // And... don't forget to edit weaponsHavoc.cfg too.
 
-set cvar_check_weapons c5b3e579a14c45d555550b08f203a607
+set cvar_check_weapons 2f93eb8481f44bb2ff744af86a75eccf
 
 // NOTE: this only replaces weapons on the map
 // use g_start_weapon_* to also replace the on-startup weapons!
@@ -223,7 +223,7 @@
 set g_balance_crylink_secondary_line_lifetime 2 // range: 35000 full, fades to 70000
 set g_balance_crylink_secondary_line_fadetime 2
 
-set g_balance_nex_damage 130
+set g_balance_nex_damage 110
 set g_balance_nex_force 600
 set g_balance_nex_refire 1.5
 set g_balance_nex_animtime 0.3
@@ -265,6 +265,9 @@
 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_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
 set g_balance_rocketlauncher_laserguided_speedaccel 0
 set g_balance_rocketlauncher_laserguided_speedstart 1000

Modified: branches/nexuiz-2.0/data/weaponsHavoc.cfg
===================================================================
--- branches/nexuiz-2.0/data/weaponsHavoc.cfg	2009-06-06 15:11:32 UTC (rev 6884)
+++ branches/nexuiz-2.0/data/weaponsHavoc.cfg	2009-06-06 15:19:03 UTC (rev 6885)
@@ -1,4 +1,4 @@
-set cvar_check_weapons c5b3e579a14c45d555550b08f203a607
+set cvar_check_weapons 2f93eb8481f44bb2ff744af86a75eccf
 
 // NOTE: this only replaces weapons on the map
 // use g_start_weapon_* to also replace the on-startup weapons!
@@ -260,6 +260,9 @@
 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 0 // 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
 set g_balance_rocketlauncher_laserguided_speedaccel 0
 set g_balance_rocketlauncher_laserguided_speedstart 1000



More information about the nexuiz-commits mailing list