[nexuiz-commits] r6761 - in branches/nexuiz-2.0: . data data/models/onslaught data/qcsrc/client data/qcsrc/menu/nexuiz data/qcsrc/server data/sound/nexball data/textures

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun May 24 05:11:31 EDT 2009


Author: div0
Date: 2009-05-24 05:11:30 -0400 (Sun, 24 May 2009)
New Revision: 6761

Added:
   branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_dmg1.md3
   branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_dmg2.md3
   branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_dmg3.md3
   branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_gib1.md3
   branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_gib2.md3
   branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_gib4.md3
   branches/nexuiz-2.0/data/models/onslaught/controlpoint_pad2.md3
   branches/nexuiz-2.0/data/physicsCPMAnex.cfg
   branches/nexuiz-2.0/data/physicsWarsow.cfg
   branches/nexuiz-2.0/data/physicsWarsowClassicBunny.cfg
   branches/nexuiz-2.0/data/physicsWarsowDev.cfg
   branches/nexuiz-2.0/data/sound/nexball/shoot1.wav
   branches/nexuiz-2.0/data/sound/nexball/shoot2.ogg
   branches/nexuiz-2.0/data/textures/ons_icon.tga
   branches/nexuiz-2.0/data/textures/ons_icon_gloss.tga
   branches/nexuiz-2.0/data/textures/ons_icon_glow.tga
   branches/nexuiz-2.0/data/textures/ons_icon_norm.tga
   branches/nexuiz-2.0/data/textures/ons_icon_pants.tga
   branches/nexuiz-2.0/data/textures/ons_icon_thrust.tga
   branches/nexuiz-2.0/data/textures/ons_icon_thrust_glow.tga
   branches/nexuiz-2.0/data/textures/ons_pad.tga
   branches/nexuiz-2.0/data/textures/ons_pad_gloss.tga
   branches/nexuiz-2.0/data/textures/ons_pad_glow.tga
   branches/nexuiz-2.0/data/textures/ons_pad_norm.tga
   branches/nexuiz-2.0/data/textures/ons_pad_pants.tga
   branches/nexuiz-2.0/data/textures/ons_pad_screen.tga
   branches/nexuiz-2.0/data/textures/ons_text.tga
   branches/nexuiz-2.0/data/textures/ons_text_glow.tga
Removed:
   branches/nexuiz-2.0/data/textures/pad.tga
   branches/nexuiz-2.0/data/textures/pad_gloss.tga
   branches/nexuiz-2.0/data/textures/pad_glow.tga
   branches/nexuiz-2.0/data/textures/pad_norm.tga
   branches/nexuiz-2.0/data/textures/pad_shirt.tga
Modified:
   branches/nexuiz-2.0/.patchsets
   branches/nexuiz-2.0/data/defaultNexuiz.cfg
   branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon.md3
   branches/nexuiz-2.0/data/models/onslaught/controlpoint_pad.md3
   branches/nexuiz-2.0/data/physics15.cfg
   branches/nexuiz-2.0/data/physics151.cfg
   branches/nexuiz-2.0/data/physics151b.cfg
   branches/nexuiz-2.0/data/physics16rc1.cfg
   branches/nexuiz-2.0/data/physics25.cfg
   branches/nexuiz-2.0/data/physicsCPMA.cfg
   branches/nexuiz-2.0/data/physicsHavoc.cfg
   branches/nexuiz-2.0/data/physicsQ.cfg
   branches/nexuiz-2.0/data/physicsQ3.cfg
   branches/nexuiz-2.0/data/physicsQBF.cfg
   branches/nexuiz-2.0/data/physicsQBFplus.cfg
   branches/nexuiz-2.0/data/physicsQBR.cfg
   branches/nexuiz-2.0/data/qcsrc/client/View.qc
   branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c
   branches/nexuiz-2.0/data/qcsrc/server/bots.qc
   branches/nexuiz-2.0/data/qcsrc/server/bots_scripting.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc
   branches/nexuiz-2.0/data/qcsrc/server/havocbot.qc
   branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
   branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc
   branches/nexuiz-2.0/data/qcsrc/server/nexball.qc
   branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc
Log:
r6677 | div0 | 2009-05-06 08:41:57 +0200 (Wed, 06 May 2009) | 2 lines
non-gameplay change: consistently apply the speed multipliers in player physics
r6678 | div0 | 2009-05-06 08:53:09 +0200 (Wed, 06 May 2009) | 2 lines
a little bit more cleanup; allow sv_maxairspeed > sv_maxspeed
r6679 | div0 | 2009-05-07 09:15:02 +0200 (Thu, 07 May 2009) | 2 lines
factor out Q3's PM_Accelerate function
r6680 | div0 | 2009-05-07 10:28:53 +0200 (Thu, 07 May 2009) | 2 lines
Wsw-like physics modes (needs current engine from svn)
r6681 | div0 | 2009-05-08 07:38:56 +0200 (Fri, 08 May 2009) | 2 lines
CPMA nex-adapted player physics
r6682 | div0 | 2009-05-08 08:24:32 +0200 (Fri, 08 May 2009) | 1 line
r6683 | div0 | 2009-05-08 08:25:05 +0200 (Fri, 08 May 2009) | 2 lines
fix water accel/friction
r6684 | div0 | 2009-05-08 09:32:10 +0200 (Fri, 08 May 2009) | 2 lines
make menu QC aware of the engine now resolving DNS names in favorites
r6685 | div0 | 2009-05-08 11:45:43 +0200 (Fri, 08 May 2009) | 2 lines
in warsow bunny mode, CPM_PM_Aircontrol never does anything. Stupid.
r6686 | div0 | 2009-05-08 11:58:44 +0200 (Fri, 08 May 2009) | 6 lines
simplifying Warsow-style physics code even more, as it now can use a common code path with Quake-style physics (the only difference there is is when moving forward only).
This could be done after the observation that CPMA-style acceleration never kicks in in Warsow mode.
The sv_aircontrol is now expected to be zero in Warsow-style mode, as it does nothing in that mode anyway! If you do set it, you get Warsow and CPMA air control added!
r6687 | div0 | 2009-05-08 12:19:19 +0200 (Fri, 08 May 2009) | 2 lines
in-development warsow physics cfg from jal
r6688 | div0 | 2009-05-08 13:00:48 +0200 (Fri, 08 May 2009) | 2 lines
add sv_gravity to the physics settings files
r6689 | morphed | 2009-05-08 14:15:28 +0200 (Fri, 08 May 2009) | 1 line
new control point pad and icon + code changes for them (with big help from Taoki)
r6690 | div0 | 2009-05-08 15:53:28 +0200 (Fri, 08 May 2009) | 2 lines
update FruitieX's CPMA-style Nexuiz physics
r6691 | mrbougo | 2009-05-08 20:49:57 +0200 (Fri, 08 May 2009) | 1 line
Nexball HUD fix, and using the porto as weapon now
r6692 | morphed | 2009-05-09 01:33:13 +0200 (Sat, 09 May 2009) | 1 line
new behavior for control point icon (by Taoki)
r6693 | m0rfar | 2009-05-09 12:04:27 +0200 (Sat, 09 May 2009) | 1 line
Changed default onslaught generator health to 5000hp. Indirectly fixing Bug #211
r6694 | div0 | 2009-05-09 17:34:28 +0200 (Sat, 09 May 2009) | 2 lines
make sv_doublejump safer by blocking jumping for up to 0.1s after jumping
r6695 | mand1nga | 2009-05-10 05:22:41 +0200 (Sun, 10 May 2009) | 1 line
Disallowed the removal of auto-generated waypoints
r6696 | mand1nga | 2009-05-10 05:30:28 +0200 (Sun, 10 May 2009) | 1 line
Added support for custom, per-bot waypoints. Required to make them arrive to any specific coordinate on the map.
r6697 | mand1nga | 2009-05-10 05:33:44 +0200 (Sun, 10 May 2009) | 1 line
Added moveto and resetgoal bot commands


Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/.patchsets	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,2 +1,2 @@
 master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-6675
+revisions_applied = 1-6697

Modified: branches/nexuiz-2.0/data/defaultNexuiz.cfg
===================================================================
--- branches/nexuiz-2.0/data/defaultNexuiz.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/defaultNexuiz.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -633,7 +633,7 @@
 
 // onslaught
 set g_onslaught 0
-set g_onslaught_gen_health 10000
+set g_onslaught_gen_health 5000
 set g_onslaught_cp_health 1000
 
 // assault

Modified: branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon.md3
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_dmg1.md3 (from rev 6697, trunk/data/models/onslaught/controlpoint_icon_dmg1.md3)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_dmg2.md3 (from rev 6697, trunk/data/models/onslaught/controlpoint_icon_dmg2.md3)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_dmg3.md3 (from rev 6697, trunk/data/models/onslaught/controlpoint_icon_dmg3.md3)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_gib1.md3 (from rev 6697, trunk/data/models/onslaught/controlpoint_icon_gib1.md3)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_gib2.md3 (from rev 6697, trunk/data/models/onslaught/controlpoint_icon_gib2.md3)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/onslaught/controlpoint_icon_gib4.md3 (from rev 6697, trunk/data/models/onslaught/controlpoint_icon_gib4.md3)
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/models/onslaught/controlpoint_pad.md3
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/onslaught/controlpoint_pad2.md3 (from rev 6697, trunk/data/models/onslaught/controlpoint_pad2.md3)
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/physics15.cfg
===================================================================
--- branches/nexuiz-2.0/data/physics15.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physics15.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// Nexuiz 1.5 physics
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 50
 sv_accelerate 5.5
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0
 sv_airaccel_qw 0
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0.25

Modified: branches/nexuiz-2.0/data/physics151.cfg
===================================================================
--- branches/nexuiz-2.0/data/physics151.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physics151.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// experimental post-Nexuiz 1.5 physics (never released)
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 50
 sv_accelerate 5.5
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0
 sv_airaccel_qw 0
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
-sv_friction_on_land 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
+set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/physics151b.cfg
===================================================================
--- branches/nexuiz-2.0/data/physics151b.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physics151b.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// experimental post-Nexuiz 1.5 physics (never released)
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 25
 sv_accelerate 5.5
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0
 sv_airaccel_qw 0
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/physics16rc1.cfg
===================================================================
--- branches/nexuiz-2.0/data/physics16rc1.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physics16rc1.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// experimental post-Nexuiz 1.5 physics (never released)
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 50
 sv_accelerate 5.5
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0
 sv_airaccel_qw 0
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
-sv_friction_on_land 0.2
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
+set sv_friction_on_land 0.2

Modified: branches/nexuiz-2.0/data/physics25.cfg
===================================================================
--- branches/nexuiz-2.0/data/physics25.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physics25.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// Nexuiz 2.5 physics
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 220
 sv_accelerate 8
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0.35
 sv_airaccel_qw 0.95
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/physicsCPMA.cfg
===================================================================
--- branches/nexuiz-2.0/data/physicsCPMA.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physicsCPMA.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,4 +1,5 @@
 // these values match CPMA
+sv_gravity 800
 sv_maxspeed 320
 sv_maxairspeed $sv_maxspeed
 sv_accelerate 15
@@ -7,10 +8,16 @@
 edgefriction 1
 sv_stepheight 18
 sv_jumpvelocity 270
+sv_wateraccelerate 4
+sv_waterfriction 1
 sv_airaccel_sideways_friction 0
 sv_airaccel_qw 1
 sv_airstopaccelerate 2.5
 sv_airstrafeaccelerate 70
 sv_maxairstrafespeed 30
 sv_aircontrol 150
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0

Copied: branches/nexuiz-2.0/data/physicsCPMAnex.cfg (from rev 6697, trunk/data/physicsCPMAnex.cfg)
===================================================================
--- branches/nexuiz-2.0/data/physicsCPMAnex.cfg	                        (rev 0)
+++ branches/nexuiz-2.0/data/physicsCPMAnex.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -0,0 +1,23 @@
+// CPMA physics adapted for Nexuiz
+sv_gravity 800
+sv_maxspeed 400 // CPMA: 320
+sv_maxairspeed 320
+sv_accelerate 15
+sv_airaccelerate 1
+sv_friction 7 // CPMA: 8
+edgefriction 1
+sv_stepheight 34 // CPMA: 18
+sv_jumpvelocity 300 // CPMA: 270
+sv_wateraccelerate -1 // CPMA: 4
+sv_waterfriction -1 // CPMA: 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw 1
+sv_airstopaccelerate 2.5
+sv_airstrafeaccelerate 70
+sv_maxairstrafespeed 30
+sv_aircontrol 300 // CPMA: 150
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
+set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/physicsHavoc.cfg
===================================================================
--- branches/nexuiz-2.0/data/physicsHavoc.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physicsHavoc.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// Nexuiz Havoc physics (work in progress)
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 220
 sv_accelerate 8
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0.65
 sv_airaccel_qw 0.95
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/physicsQ.cfg
===================================================================
--- branches/nexuiz-2.0/data/physicsQ.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physicsQ.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// Quake 1
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 250
 sv_accelerate 5.5
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0
 sv_airaccel_qw 1
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/physicsQ3.cfg
===================================================================
--- branches/nexuiz-2.0/data/physicsQ3.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physicsQ3.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,4 +1,5 @@
 // these values match Quake3
+sv_gravity 800
 sv_maxspeed 320
 sv_maxairspeed $sv_maxspeed
 sv_accelerate 10
@@ -7,10 +8,16 @@
 edgefriction 1
 sv_stepheight 18
 sv_jumpvelocity 270
+sv_wateraccelerate 4
+sv_waterfriction 1
 sv_airaccel_sideways_friction 0
 sv_airaccel_qw 1
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/physicsQBF.cfg
===================================================================
--- branches/nexuiz-2.0/data/physicsQBF.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physicsQBF.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// Quake, Bunny Fixed (feels very slow)
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 250
 sv_accelerate 5.5
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0.8
 sv_airaccel_qw 1
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/physicsQBFplus.cfg
===================================================================
--- branches/nexuiz-2.0/data/physicsQBFplus.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physicsQBFplus.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// Quake, Bunny Fixed Plus (faster using forward hopping)
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 220
 sv_accelerate 5.5
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0.5
 sv_airaccel_qw 0.93
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/physicsQBR.cfg
===================================================================
--- branches/nexuiz-2.0/data/physicsQBR.cfg	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/physicsQBR.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,3 +1,5 @@
+// Quake, Bunny Reintroduced (Nexuiz 2.0 to 2.4.2 physics)
+sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 220
 sv_accelerate 5.5
@@ -6,10 +8,16 @@
 edgefriction 1
 sv_stepheight 34
 sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
 sv_airaccel_sideways_friction 0.3
 sv_airaccel_qw 0.93
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
 sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
 set sv_friction_on_land 0

Copied: branches/nexuiz-2.0/data/physicsWarsow.cfg (from rev 6697, trunk/data/physicsWarsow.cfg)
===================================================================
--- branches/nexuiz-2.0/data/physicsWarsow.cfg	                        (rev 0)
+++ branches/nexuiz-2.0/data/physicsWarsow.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -0,0 +1,23 @@
+// these values match Warsow 0.42
+sv_gravity 850
+sv_maxspeed 320
+sv_maxairspeed $sv_maxspeed
+sv_accelerate 15
+sv_airaccelerate 1
+sv_friction 8
+edgefriction 1
+sv_stepheight 18
+sv_jumpvelocity 280
+sv_wateraccelerate 10
+sv_waterfriction 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw 1
+sv_airstopaccelerate 2.5
+sv_airstrafeaccelerate 70
+sv_maxairstrafespeed 30
+sv_aircontrol 0
+sv_warsowbunny_turnaccel 9 // activates warsow movement mode
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
+set sv_friction_on_land 0

Copied: branches/nexuiz-2.0/data/physicsWarsowClassicBunny.cfg (from rev 6697, trunk/data/physicsWarsowClassicBunny.cfg)
===================================================================
--- branches/nexuiz-2.0/data/physicsWarsowClassicBunny.cfg	                        (rev 0)
+++ branches/nexuiz-2.0/data/physicsWarsowClassicBunny.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -0,0 +1,23 @@
+// these values match Warsow 0.42 GS_CLASSICBUNNY
+sv_gravity 850
+sv_maxspeed 320
+sv_maxairspeed $sv_maxspeed
+sv_accelerate 15
+sv_airaccelerate 1
+sv_friction 8
+edgefriction 1
+sv_stepheight 18
+sv_jumpvelocity 280
+sv_wateraccelerate 10
+sv_waterfriction 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw 1
+sv_airstopaccelerate 2.5
+sv_airstrafeaccelerate 70
+sv_maxairstrafespeed 30
+sv_aircontrol 150
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
+set sv_friction_on_land 0

Copied: branches/nexuiz-2.0/data/physicsWarsowDev.cfg (from rev 6697, trunk/data/physicsWarsowDev.cfg)
===================================================================
--- branches/nexuiz-2.0/data/physicsWarsowDev.cfg	                        (rev 0)
+++ branches/nexuiz-2.0/data/physicsWarsowDev.cfg	2009-05-24 09:11:30 UTC (rev 6761)
@@ -0,0 +1,23 @@
+// these values match Warsow 0.42
+sv_gravity 850
+sv_maxspeed 320
+sv_maxairspeed $sv_maxspeed
+sv_accelerate 12
+sv_airaccelerate 1
+sv_friction 8
+edgefriction 1
+sv_stepheight 18
+sv_jumpvelocity 280
+sv_wateraccelerate 10
+sv_waterfriction 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw 1
+sv_airstopaccelerate 2
+sv_airstrafeaccelerate 70
+sv_maxairstrafespeed 30
+sv_aircontrol 0
+sv_warsowbunny_turnaccel 6 // activates warsow movement mode
+sv_warsowbunny_accel 0.1585
+sv_warsowbunny_topspeed 900
+sv_warsowbunny_backtosideratio 0.9
+set sv_friction_on_land 0

Modified: branches/nexuiz-2.0/data/qcsrc/client/View.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/View.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/client/View.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -11,7 +11,7 @@
 	vector p, dir, ang, q, nextdir;
 	float idx, portal_number, portal1_idx;
 
-	if(activeweapon != WEP_PORTO || spectatee_status)
+	if(activeweapon != WEP_PORTO || spectatee_status || gametype == GAME_NEXBALL)
 		return;
 	if(intermission == 1)
 		return;

Modified: branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/sbar.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/client/sbar.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -2213,7 +2213,7 @@
 	stat_items = getstati(STAT_ITEMS);
 	nb_pb_starttime = getstatf(STAT_NB_METERSTART);
 	
-	if(cvar("sbar_ballstatus_right"))
+	if(cvar_or("sbar_ballstatus_right", cvar("sbar_flagstatus_right")))
 		pos_x = vid_conwidth - 66 - sbar_x - 64; // the 66 comes from trial and error, no idea about the 64 (see CTF)
 	else
 		pos_x = 10 - sbar_x;
@@ -2221,7 +2221,7 @@
 	pos_z = 0;
 
 	if(sbar_hudselector == 1)
-		pos_y = (vid_conheight - sbar_y) - cvar("sbar_ballstatus_pos") - 64;
+		pos_y = (vid_conheight - sbar_y) - cvar_or("sbar_ballstatus_pos", 123) - 64;
 	else
 		pos_y = -124; // 17 more than flag icons
 

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c	2009-05-24 09:11:30 UTC (rev 6761)
@@ -93,31 +93,42 @@
 
 float IsFavorite(string srv)
 {
-	string s;
-	float o;
-	s = cvar_string("net_slist_favorites");
-	s = strcat(" ", s, " ");
-	srv = strcat(" ", srv, " ");
-	o = strstrofs(s, srv, 0);
-	return (o != -1);
+	float i, n;
+	srv = netaddress_resolve(srv, 26000);
+	n = tokenize_console(cvar_string("net_slist_favorites"));
+	for(i = 0; i < n; ++i)
+		if(srv == netaddress_resolve(argv(i), 26000))
+			return TRUE;
+	return FALSE;
 }
 
 void ToggleFavorite(string srv)
 {
-	string s;
-	float o;
+	string s, s0, s1, s2, srv_resolved;
+	float i, n;
+	srv_resolved = netaddress_resolve(srv, 26000);
 	s = cvar_string("net_slist_favorites");
-	o = strstrofs(strcat(" ", s, " "), strcat(" ", srv, " "), 0);
-	if(o == -1)
-	{
-		cvar_set("net_slist_favorites", strcat(s, " ", srv));
-	}
-	else
-	{
-		cvar_set("net_slist_favorites", strcat(
-					substring(s, 0, o - 1), substring(s, o + strlen(srv), strlen(s) - o - strlen(srv))
-					));
-	}
+	n = tokenize_console(s);
+	for(i = 0; i < n; ++i)
+		if(srv_resolved == netaddress_resolve(argv(i), 26000))
+		{
+			s0 = s1 = s2 = "";
+			if(i > 0)
+				s0 = substring(s, 0, argv_end_index(i - 1));
+			if(i < n-1)
+				s2 = substring(s, argv_start_index(i + 1), -1);
+			if(s0 != "" && s2 != "")
+				s1 = " ";
+			print("s0 = >>", s0, "<<\ns1 = >>", s1, "<<\ns2 = >>", s2, "<<\n");
+			cvar_set("net_slist_favorites", strcat(s0, s1, s2));
+			return;
+		}
+	
+	s1 = "";
+	if(s != "")
+		s1 = " ";
+	cvar_set("net_slist_favorites", strcat(s, " ", srv));
+
 	resorthostcache();
 }
 
@@ -464,11 +475,7 @@
 	string ipstr;
 	ipstr = netaddress_resolve(me.ipAddressBox.text, 26000);
 	if(ipstr != "")
-	{
-		me.ipAddressBox.setText(me.ipAddressBox, ipstr);
-		me.ipAddressBox.cursorPos = strlen(ipstr);
-		ToggleFavorite(ipstr);
-	}
+		ToggleFavorite(me.ipAddressBox.text);
 }
 void ServerList_Info_Click(entity btn, entity me)
 {

Modified: branches/nexuiz-2.0/data/qcsrc/server/bots.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/bots.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/bots.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -1,10 +1,12 @@
 .float aistatus;
-float AI_STATUS_ROAMING			= 1;	// Bot is just crawling the map. No enemies at sight
-float AI_STATUS_ATTACKING		= 2;	// There are enemies at sight
-float AI_STATUS_RUNNING			= 4;	// Bot is bunny hopping
-float AI_STATUS_DANGER_AHEAD	= 8;	// There is lava/slime/trigger_hurt ahead
-float AI_STATUS_OUT_JUMPPAD		= 16;	// Trying to get out of a "vertical" jump pad
-float AI_STATUS_OUT_WATER		= 32;	// Trying to get out of water
+float AI_STATUS_ROAMING				= 1;	// Bot is just crawling the map. No enemies at sight
+float AI_STATUS_ATTACKING			= 2;	// There are enemies at sight
+float AI_STATUS_RUNNING				= 4;	// Bot is bunny hopping
+float AI_STATUS_DANGER_AHEAD			= 8;	// There is lava/slime/trigger_hurt ahead
+float AI_STATUS_OUT_JUMPPAD			= 16;	// Trying to get out of a "vertical" jump pad
+float AI_STATUS_OUT_WATER			= 32;	// Trying to get out of water
+float AI_STATUS_WAYPOINT_PERSONAL_GOING		= 64;	// Going to a personal waypoint
+float AI_STATUS_WAYPOINT_PERSONAL_REACHED	= 128;	// Personal waypoint reached
 
 // utilities for path debugging
 #ifdef DEBUG_TRACEWALK
@@ -470,6 +472,7 @@
 float WAYPOINTFLAG_ITEM = 4194304;
 float WAYPOINTFLAG_TELEPORT = 2097152;
 float WAYPOINTFLAG_NORELINK = 1048576;
+float WAYPOINTFLAG_PERSONAL = 524288;
 
 // add a new link to the spawnfunc_waypoint, replacing the furthest link it already has
 void waypoint_addlink(entity from, entity to)
@@ -680,6 +683,8 @@
 	local entity w;
 	local vector org;
 	w = find(world, classname, "waypoint");
+
+	if not(f & WAYPOINTFLAG_PERSONAL)
 	while (w)
 	{
 		// if a matching spawnfunc_waypoint already exists, don't add a duplicate
@@ -687,6 +692,7 @@
 			return w;
 		w = find(w, classname, "waypoint");
 	}
+
 	w = spawn();
 	w.classname = "waypoint";
 	w.wpflags = f;
@@ -1270,10 +1276,18 @@
 	e.nearestwaypointtimeout = time + 1000000000;
 };
 
+entity waypoint_spawnpersonal(vector position)
+{
+	entity w;
 
+	w = waypoint_spawn(position, position, WAYPOINTFLAG_GENERATED | WAYPOINTFLAG_PERSONAL);
+	w.nearestwaypoint = world;
+	w.nearestwaypointtimeout = 0;
+	w.owner = self;
 
+	return w;
+};
 
-
 /////////////////////////////////////////////////////////////////////////////
 // goal stack
 /////////////////////////////////////////////////////////////////////////////
@@ -1359,6 +1373,9 @@
 // (used when a spawnfunc_waypoint is reached)
 void navigation_poproute()
 {
+	if(self.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL && self.goalcurrent.owner==self)
+		remove(self.goalcurrent);
+
 	self.goalcurrent = self.goalstack01;
 	self.goalstack01 = self.goalstack02;
 	self.goalstack02 = self.goalstack03;
@@ -1806,12 +1823,32 @@
 		{
 			traceline(self.origin + self.view_ofs , self.goalcurrent.origin, TRUE, world);
 			if(trace_fraction==1)
+			{
+				// Detect personal waypoints
+				if(self.aistatus & AI_STATUS_WAYPOINT_PERSONAL_GOING)
+				if(self.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL && self.goalcurrent.owner==self)
+				{
+					self.aistatus &~= AI_STATUS_WAYPOINT_PERSONAL_GOING;
+					self.aistatus |= AI_STATUS_WAYPOINT_PERSONAL_REACHED;
+				}
+
 				navigation_poproute();
+			}
 		}
 	}
 
 	while (self.goalcurrent && boxesoverlap(m1, m2, self.goalcurrent.absmin, self.goalcurrent.absmax))
+	{
+		// Detect personal waypoints
+		if(self.aistatus & AI_STATUS_WAYPOINT_PERSONAL_GOING)
+		if(self.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL && self.goalcurrent.owner==self)
+		{
+			self.aistatus &~= AI_STATUS_WAYPOINT_PERSONAL_GOING;
+			self.aistatus |= AI_STATUS_WAYPOINT_PERSONAL_REACHED;
+		}
+
 		navigation_poproute();
+	}
 }
 
 // begin a goal selection session (queries spawnfunc_waypoint network)

Modified: branches/nexuiz-2.0/data/qcsrc/server/bots_scripting.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/bots_scripting.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/bots_scripting.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -291,9 +291,11 @@
 			case BOT_CMD_TURN:
 				print("Look to the right or left N degrees. For turning to the left use positive numbers.");
 				break;
-			case BOT_CMD_MOVETO:
+			case BOT_CMD_MOVETO:
+				print("Walk to an specific coordinate on the map. Usage: moveto \"x y z\"");
 				break;
-			case BOT_CMD_RESETGOAL:
+			case BOT_CMD_RESETGOAL:
+				print("Resets the goal stack");
 				break;
 			case BOT_CMD_CC:
 				print("Execute client command. Examples: cc \"say something\"; cc god; cc \"name newnickname\"; cc kill;");
@@ -792,8 +794,18 @@
 
 	self.bot_exec_status = self.bot_exec_status | BOT_EXEC_STATUS_PAUSED;
 	return CMD_STATUS_FINISHED;
+}
+
+float bot_cmd_moveto()
+{
+	return self.cmd_moveto(bot_cmd.bot_cmd_parm_vector);
 }
-
+
+float bot_cmd_resetgoal()
+{
+	return self.cmd_resetgoal();
+}
+
 void bot_command_executed(float rm)
 {
 	entity cmd;
@@ -895,12 +907,10 @@
 			status = bot_cmd_turn();
 			break;
 		case BOT_CMD_MOVETO:
-		//	status = bot.bot_cmd_moveto();
-			status = CMD_STATUS_FINISHED;
+			status = bot_cmd_moveto();
 			break;
 		case BOT_CMD_RESETGOAL:
-		//	status = bot.cmd_resetgoal();
-			status = CMD_STATUS_FINISHED;
+			status = bot_cmd_resetgoal();
 			break;
 		case BOT_CMD_CC:
 			status = bot_cmd_cc();

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -465,6 +465,7 @@
 				case 104:
 					e = navigation_findnearestwaypoint(self, FALSE);
 					if (e)
+					if not(e.wpflags & WAYPOINTFLAG_GENERATED)
 					{
 						bprint(strcat("Waypoint removed at ",vtos(e.origin),"\n"));
 						waypoint_remove(e);

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -11,6 +11,12 @@
 float sv_airstrafeaccelerate;
 float sv_maxairstrafespeed;
 float sv_aircontrol;
+float sv_warsowbunny_airforwardaccel;
+float sv_warsowbunny_accel;
+float sv_warsowbunny_topspeed;
+float sv_warsowbunny_turnaccel;
+float sv_warsowbunny_backtosideratio;
+
 .float ladder_time;
 .entity ladder_entity;
 .float gravity;
@@ -24,6 +30,7 @@
 #define SHTEST_THRESHOLD 1.1
 .float shtest_next;
 .float shtest_accumulator;
+.float doublejump_nextjumptime;
 
 /*
 =============
@@ -49,7 +56,6 @@
 		return;
 	}
 
-
 	if (!(self.flags & FL_ONGROUND))
 		return;
 
@@ -59,6 +65,10 @@
 			
 	if(self.health <= g_bloodloss)
 		return;
+	
+	if(sv_doublejump)
+		if(time < self.doublejump_nextjumptime)
+			return;
 
 	if(g_runematch)
 	{
@@ -93,6 +103,17 @@
 
 	if(g_jump_grunt)
 		PlayerSound(playersound_jump, CHAN_PLAYER, VOICETYPE_PLAYERSOUND);
+	
+	if(sv_doublejump)
+	{
+		// we're moving upwards at self.velocity_z
+		// only allow jumping after we got 3 units upwards
+		// so we for sure leave the FL_ONGROUND check
+		//
+		// but as this sucks because of factoring in gravity, we'll just do it
+		// for 4 units, and constant velocity
+		self.doublejump_nextjumptime = time + 4 / max(40, self.velocity_z); // max 0.1s blocking of jumps
+	}
 }
 
 void CheckWaterJump()
@@ -356,7 +377,7 @@
 
 	if(self.movement_x == 0 || self.movement_y != 0)
 		return; // can't control movement if not moving forward or backward
-	
+
 	zspeed = self.velocity_z;
 	self.velocity_z = 0;
 	xyspeed = vlen(self.velocity);
@@ -373,6 +394,68 @@
 	self.velocity_z = zspeed;
 }
 
+void PM_Accelerate(vector wishdir, float wishspeed, float accel, float accelqw, float sidefric)
+{
+	float vel_straight;
+	float vel_z;
+	vector vel_perpend;
+	float addspeed;
+
+	vel_straight = self.velocity * wishdir;
+	vel_z = self.velocity_z;
+	vel_perpend = self.velocity - vel_straight * wishdir - vel_z * '0 0 1';
+
+	addspeed = wishspeed - vel_straight;
+	if(addspeed > 0)
+		vel_straight = vel_straight + min(addspeed, accel * frametime * wishspeed) * accelqw;
+	if(wishspeed > 0)
+		vel_straight = vel_straight + min(wishspeed, accel * frametime * wishspeed) * (1 - accelqw);
+
+	vel_perpend = vel_perpend * (1 - frametime * wishspeed * sidefric);
+
+	self.velocity = vel_straight * wishdir + vel_z * '0 0 1' + vel_perpend;
+}
+
+void PM_AirAccelerate(vector wishdir, float wishspeed)
+{
+	vector curvel, wishvel, acceldir, curdir;
+	float addspeed, accelspeed, curspeed, f;
+	float dot;
+	
+	if(wishspeed == 0)
+		return;
+	
+	curvel = self.velocity;
+	curvel_z = 0;
+	curspeed = vlen(curvel);
+
+	if(wishspeed > curspeed * 1.01)
+	{
+		wishspeed = min(wishspeed, curspeed + sv_warsowbunny_airforwardaccel * sv_maxspeed * frametime);
+	}
+	else
+	{
+		f = max(0, (sv_warsowbunny_topspeed - curspeed) / (sv_warsowbunny_topspeed - sv_maxspeed));
+		wishspeed = max(curspeed, sv_maxspeed) + sv_warsowbunny_accel * f * sv_maxspeed * frametime;
+	}
+	wishvel = wishdir * wishspeed;
+	acceldir = wishvel - curvel;
+	addspeed = vlen(acceldir);
+	acceldir = normalize(acceldir);
+
+	accelspeed = min(addspeed, sv_warsowbunny_turnaccel * sv_maxspeed * frametime);
+
+	if(sv_warsowbunny_backtosideratio < 1)
+	{
+		curdir = normalize(curvel);
+		dot = acceldir * curdir;
+		if(dot < 0)
+			acceldir = acceldir - (1 - sv_warsowbunny_backtosideratio) * dot * curdir;
+	}
+
+	self.velocity += accelspeed * acceldir;
+}
+
 .vector movement_old;
 .float buttons_old;
 .vector v_angle_old;
@@ -512,8 +595,7 @@
 		maxspd_mod = self.spectatorspeed;
 	}
 
-	spd = sv_maxspeed * maxspd_mod * swampspd_mod;
-
+	spd = max(sv_maxspeed, sv_maxairspeed) * maxspd_mod * swampspd_mod;
 	if(self.speed != spd)
 	{
 		self.speed = spd;
@@ -522,11 +604,11 @@
 		stuffcmd(self, strcat("cl_backspeed ", temps, "\n"));
 		stuffcmd(self, strcat("cl_sidespeed ", temps, "\n"));
 		stuffcmd(self, strcat("cl_upspeed ", temps, "\n"));
-
-		temps = ftos(sv_accelerate * maxspd_mod);
-		stuffcmd(self, strcat("cl_movement_accelerate ", temps, "\n"));
 	}
 
+	maxspd_mod *= swampspd_mod; // only one common speed modder please!
+	swampspd_mod = 1;
+
 	// if dead, behave differently
 	if (self.deadflag)
 		goto end;
@@ -611,11 +693,7 @@
 		if (wishspeed > sv_maxspeed*maxspd_mod)
 			wishspeed = sv_maxspeed*maxspd_mod;
 		if (time >= self.teleport_time)
-		{
-			f = wishspeed - (self.velocity * wishdir);
-			if (f > 0)
-				self.velocity = self.velocity + wishdir * min(f, sv_accelerate*maxspd_mod * frametime * wishspeed);
-		}
+			PM_Accelerate(wishdir, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
 	}
 	else if (self.waterlevel >= WATERLEVEL_SWIMMING)
 	{
@@ -638,9 +716,7 @@
 		self.velocity = self.velocity * (1 - frametime * sv_friction);
 
 		// water acceleration
-		f = wishspeed - (self.velocity * wishdir);
-		if (f > 0)
-			self.velocity = self.velocity + wishdir * min(f, sv_accelerate*maxspd_mod * frametime * wishspeed);
+		PM_Accelerate(wishdir, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
 	}
 	else if (time < self.ladder_time)
 	{
@@ -678,13 +754,12 @@
 		// acceleration
 		wishdir = normalize(wishvel);
 		wishspeed = vlen(wishvel);
-		if (wishspeed > sv_maxspeed)
-			wishspeed = sv_maxspeed;
+		if (wishspeed > sv_maxspeed*maxspd_mod)
+			wishspeed = sv_maxspeed*maxspd_mod;
 		if (time >= self.teleport_time)
 		{
-			f = wishspeed - (self.velocity * wishdir);
-			if (f > 0)
-				self.velocity = self.velocity + wishdir * min(f, sv_accelerate*maxspd_mod * frametime * wishspeed);
+			// water acceleration
+			PM_Accelerate(wishdir, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
 		}
 	}
 	else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!cvar("g_jetpack_fuel") || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO))
@@ -830,11 +905,7 @@
 		if (self.crouch)
 			wishspeed = wishspeed * 0.5;
 		if (time >= self.teleport_time)
-		{
-			f = wishspeed - (self.velocity * wishdir);
-			if (f > 0)
-				self.velocity = self.velocity + wishdir * min(f, sv_accelerate*maxspd_mod * frametime * wishspeed);
-		}
+			PM_Accelerate(wishdir, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
 	}
 	else
 	{
@@ -864,9 +935,13 @@
 			wishspeed = wishspeed * 0.5;
 		if (time >= self.teleport_time)
 		{
-			// CPM: air control
+			float accelerating;
 			float wishspeed2;
+
+			accelerating = (self.velocity * wishdir > 0);
 			wishspeed2 = wishspeed;
+
+			// CPM
 			if(sv_airstopaccelerate)
 				if(self.velocity * wishdir < 0)
 					airaccel = sv_airstopaccelerate;
@@ -878,37 +953,14 @@
 					airaccel = sv_airstrafeaccelerate;
 			}
 			// !CPM
-			
-			// NOTE: this does the same as the commented out old code if:
-			//   sv_airaccel_qw 0
-			//   sv_airaccel_sideways_friction 0
 
-			float vel_straight;
-			float vel_z;
-			vector vel_perpend;
-			vel_straight = self.velocity * wishdir;
-			vel_z = self.velocity_z;
-			vel_perpend = self.velocity - vel_straight * wishdir - vel_z * '0 0 1';
+			if(sv_warsowbunny_turnaccel && accelerating && self.movement_y == 0 && self.movement_x != 0)
+				PM_AirAccelerate(wishdir, wishspeed);
+			else
+				PM_Accelerate(wishdir, wishspeed, airaccel, sv_airaccel_qw, sv_airaccel_sideways_friction / maxairspd);
 
-			f = wishspeed - vel_straight;
-			if(f > 0)
-				vel_straight = vel_straight + min(f, airaccel * frametime * wishspeed) * sv_airaccel_qw;
-			if(wishspeed > 0)
-				vel_straight = vel_straight + min(wishspeed, airaccel * frametime * wishspeed) * (1 - sv_airaccel_qw);
-
-			// anti-sideways friction to fix QW-style bunnyhopping
-			vel_perpend = vel_perpend * (1 - frametime * (wishspeed / maxairspd) * sv_airaccel_sideways_friction);
-
-			self.velocity = vel_straight * wishdir + vel_z * '0 0 1' + vel_perpend;
-			
 			if(sv_aircontrol)
 				CPM_PM_Aircontrol(wishdir, wishspeed2);
-
-			/*
-			f = wishspeed;// - (self.velocity * wishdir);
-			if (f > 0)
-				self.velocity = self.velocity + wishdir * min(f, airaccel * frametime * wishspeed);
-			*/
 		}
 	}
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/havocbot.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/havocbot.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/havocbot.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -208,6 +208,7 @@
 
 					if(self.aistatus & AI_STATUS_ROAMING)
 					if(self.goalcurrent.classname=="waypoint")
+					if not(self.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL)
 					if(fabs(self.goalcurrent.origin_z - self.origin_z) < self.maxs_z - self.mins_z)
 					if(self.goalstack01!=world)
 					{
@@ -1117,9 +1118,75 @@
 	havocbot_movetogoal();
 };
 
+float havocbot_moveto(vector pos)
+{
+	if(self.aistatus & AI_STATUS_WAYPOINT_PERSONAL_GOING)
+	{
+		if(self.goalcurrent==world)
+			return CMD_STATUS_ERROR;
+
+		if (!bot_strategytoken_taken)
+		if(self.bot_strategytime<time)
+		{
+			// Refresh path to goal if necessary
+			local entity g;
+			g = self.goalentity;
+			navigation_clearroute();
+			navigation_routetogoal(g,self.origin);
+			bot_strategytoken_taken = TRUE;
+			self.bot_strategytime = time + 10;
+		}
+
+		#ifdef DEBUG_BOT_GOALSTACK
+			debuggoalstack();
+		#endif
+
+		// Heading
+		local vector dir = self.goalcurrent.origin - (self.origin + self.view_ofs);
+		dir_z = 0;
+		bot_aimdir(dir, -1);
+
+		// Go!
+		havocbot_movetogoal();
+		return CMD_STATUS_EXECUTING;
+	}
+
+	if(self.aistatus & AI_STATUS_WAYPOINT_PERSONAL_REACHED)
+	{
+		self.aistatus &~= AI_STATUS_WAYPOINT_PERSONAL_REACHED;
+		return CMD_STATUS_FINISHED;
+	}
+
+	// Spawn personal waypoint
+	entity wp;
+	wp = waypoint_spawnpersonal(pos);
+	if(wp==world)
+		return CMD_STATUS_ERROR;
+
+	// Put it as next goal
+	navigation_clearroute();
+	navigation_findnearestwaypoint(wp, TRUE);
+	navigation_routetogoal(wp,self.origin);
+	bot_strategytoken_taken = TRUE;
+	self.bot_strategytime = time + 10;
+
+	self.aistatus |= AI_STATUS_WAYPOINT_PERSONAL_GOING;
+
+	return CMD_STATUS_EXECUTING;
+}
+
+float havocbot_resetgoal()
+{
+	navigation_clearroute();
+	return CMD_STATUS_FINISHED;
+}
+
 void havocbot_setupbot()
 {
 	self.bot_ai = havocbot_ai;
+	self.cmd_moveto = havocbot_moveto;
+	self.cmd_resetgoal = havocbot_resetgoal;
+
 	// will be updated by think code
 	//Generate some random skill levels
 	self.havocbot_keyboardskill=random()-0.5;

Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -887,14 +887,14 @@
 				else if(g_race)
 					t = (i == WEP_LASER);
 				else if(g_nexball)
-					t = 0; //GL is set a few lines later
+					t = 0; // weapon is set a few lines later
 				else
 					t = (i == WEP_LASER || i == WEP_SHOTGUN);
 				if(g_grappling_hook) // if possible, redirect off-hand hook to on-hand hook
 					t += (i == WEP_HOOK);
 			}
 
-			if(g_nexball && i == WEP_GRENADE_LAUNCHER)
+			if(g_nexball && i == WEP_PORTO)
 					t=1;
 
 			if(t)

Modified: branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -17,6 +17,47 @@
 
 .string model1, model2, model3;
 
+void ons_gib_damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce)
+{
+    self.velocity += vforce;
+}
+
+void ons_trowgib(
+    vector v_from, vector v_to, vector v_colormod,
+    string smodel,
+    float f_lifetime, float f_fadetime, float b_burn)
+{
+    local entity gib;
+    local entity burn;
+
+    gib = spawn();
+
+    gib.classname = "turret_gib";
+    setmodel(gib,smodel);
+    setorigin(gib,v_from);
+    SUB_SetFade(gib,time + f_lifetime,2);
+
+    gib.solid              = SOLID_BBOX;
+
+    gib.movetype           = MOVETYPE_BOUNCE;
+    gib.takedamage         = DAMAGE_YES;
+    gib.event_damage       = ons_gib_damage;
+    gib.health             = -1;
+    gib.effects            = EF_LOWPRECISION;
+    gib.flags              = FL_NOTARGET;
+    gib.colormod           = v_colormod;
+    gib.velocity           = v_to;
+
+    if (b_burn)
+    {
+        burn = spawn();
+        burn.effects        = EF_LOWPRECISION;//|EF_FLAME;
+        setattachment(burn,gib,"");
+        setorigin(burn,(gib.mins + gib.maxs) * 0.5);
+        SUB_SetFade(burn,time + (f_lifetime * 0.5) ,2);
+    }
+}
+
 void onslaught_updatelinks()
 {
 	local entity l, links;
@@ -647,6 +688,8 @@
 };
 
 .float waslinked;
+.float cp_bob_spd;
+.vector cp_origin, cp_bob_origin, cp_bob_dmg;
 void onslaught_controlpoint_icon_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
 {
 	entity oself;
@@ -670,8 +713,9 @@
 		self.pain_finished = time + 5;
 	}
 	self.health = self.health - damage;
-	self.alpha = self.health / self.max_health;
 	self.pain_finished = time + 1;
+	self.punchangle = (2 * randomvec() - '1 1 1') * 45;
+	self.cp_bob_dmg_z = (2 * random() - 1) * 15;
 	// colormod flash when shot
 	self.colormod = '2 2 2';
 	if (self.health < 0)
@@ -682,6 +726,13 @@
 			string t;
 			t = ColoredTeamName(attacker.team);
 			bprint(ColoredTeamName(self.team), " ", self.message, " control point destroyed by ", t, "\n");
+			ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 25,'1 1 1',"models/onslaught/controlpoint_icon_gib1.md3",5,1,1);
+			ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 45,'1 1 1',"models/onslaught/controlpoint_icon_gib2.md3",5,1,1);
+			ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 45,'1 1 1',"models/onslaught/controlpoint_icon_gib2.md3",5,1,1);
+			ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,'1 1 1',"models/onslaught/controlpoint_icon_gib4.md3",5,1,1);
+			ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,'1 1 1',"models/onslaught/controlpoint_icon_gib4.md3",5,1,1);
+			ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,'1 1 1',"models/onslaught/controlpoint_icon_gib4.md3",5,1,1);
+			ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,'1 1 1',"models/onslaught/controlpoint_icon_gib4.md3",5,1,1);
 		}
 		self.owner.goalentity = world;
 		self.owner.islinked = FALSE;
@@ -698,6 +749,8 @@
 		self = oself;
 
 		self.owner.waslinked = self.owner.islinked;
+		if(self.owner.model != "models/onslaught/controlpoint_pad.md3")
+			setmodel(self.owner, "models/onslaught/controlpoint_pad.md3");
 
 		remove(self);
 	}
@@ -706,14 +759,21 @@
 void onslaught_controlpoint_icon_think()
 {
 	entity oself;
-	self.nextthink = time + 0.1;
-	if (time > self.pain_finished + 1)
+	self.nextthink = time + 0.05;
+	if (time > self.pain_finished + 5)
 	{
 		self.health = self.health + self.count;
 		if (self.health >= self.max_health)
 			self.health = self.max_health;
 	}
-	self.alpha = self.health / self.max_health;
+	if (self.health < self.max_health * 0.90)
+		setmodel(self, "models/onslaught/controlpoint_icon.md3");
+	if (self.health < self.max_health * 0.75)
+		setmodel(self, "models/onslaught/controlpoint_icon_dmg1.md3");
+	if (self.health < self.max_health * 0.50)
+		setmodel(self, "models/onslaught/controlpoint_icon_dmg2.md3");
+	if (self.health < self.max_health * 0.25)
+		setmodel(self, "models/onslaught/controlpoint_icon_dmg3.md3");
 	// colormod flash when shot
 	self.colormod = '1 1 1' * (2 - bound(0, (self.pain_finished - time) / 10, 1));
 
@@ -735,6 +795,35 @@
 
 		self.owner.waslinked = self.owner.islinked;
 	}
+	if (self.punchangle_x > 2)
+		self.punchangle_x = self.punchangle_x - 2;
+	else if (self.punchangle_x < -2)
+		self.punchangle_x = self.punchangle_x + 2;
+	else
+		self.punchangle_x = 0;
+	if (self.punchangle_y > 2)
+		self.punchangle_y = self.punchangle_y - 2;
+	else if (self.punchangle_y < -2)
+		self.punchangle_y = self.punchangle_y + 2;
+	else
+		self.punchangle_y = 0;
+	if (self.punchangle_z > 2)
+		self.punchangle_z = self.punchangle_z - 2;
+	else if (self.punchangle_z < -2)
+		self.punchangle_z = self.punchangle_z + 2;
+	else
+		self.punchangle_z = 0;
+	self.angles_x = self.punchangle_x;
+	self.angles_y = self.angles_y + self.punchangle_y + 2;
+	self.angles_z = self.punchangle_z;
+
+	self.cp_bob_origin_z = 4 * PI * (1 - cos(self.cp_bob_spd / 8));
+	self.cp_bob_spd = self.cp_bob_spd + 0.5;
+	if(self.cp_bob_dmg_z > 0)
+		self.cp_bob_dmg_z = self.cp_bob_dmg_z - 0.1;
+	else
+		self.cp_bob_dmg_z = 0;
+	self.origin = self.cp_origin + self.cp_bob_origin + self.cp_bob_dmg;
 };
 
 void onslaught_controlpoint_icon_buildthink()
@@ -742,19 +831,19 @@
 	local entity oself;
 	float a;
 
-	self.nextthink = time + 0.1;
+	self.nextthink = time + 0.05;
 
 	// only do this if there is power
 	a = onslaught_controlpoint_can_be_linked(self.owner, self.owner.team);
 	if(!a)
 		return;
 
-	self.health = self.health + self.count;
+	self.health = self.health + (self.count / 2);
 
 	if (self.health >= self.max_health)
 	{
 		self.health = self.max_health;
-		self.count = self.count * 0.2; // slow repair rate from now on
+		self.count = self.count * 0.1; // slow repair rate from now on
 		self.think = onslaught_controlpoint_icon_think;
 		sound(self, CHAN_TRIGGER, "onslaught/controlpoint_built.wav", VOL_BASE, ATTN_NORM);
 		bprint(ColoredTeamName(self.team), " captured ", self.owner.message, " control point\n");
@@ -767,10 +856,15 @@
 		activator = self;
 		SUB_UseTargets ();
 		self = oself;
+		self.cp_origin = self.origin;
+		self.cp_bob_origin = '0 0 0.1';
+		self.cp_bob_spd = 0;
 	}
 	self.alpha = self.health / self.max_health;
 	// colormod flash when shot
 	self.colormod = '1 1 1' * (2 - bound(0, (self.pain_finished - time) / 10, 1));
+	if(self.owner.model != "models/onslaught/controlpoint_pad2.md3")
+		setmodel(self.owner, "models/onslaught/controlpoint_pad2.md3");
 };
 
 void onslaught_controlpoint_touch()
@@ -790,7 +884,6 @@
 	e.owner = self;
 	e.max_health = cvar("g_onslaught_cp_health");
 	e.health = e.max_health * 0.1;
-	e.alpha = e.health / e.max_health;
 	e.solid = SOLID_BBOX;
 	e.movetype = MOVETYPE_NONE;
 	setmodel(e, "models/onslaught/controlpoint_icon.md3");
@@ -849,8 +942,15 @@
 		return;
 	}
 	precache_model("models/onslaught/controlpoint_pad.md3");
+	precache_model("models/onslaught/controlpoint_pad2.md3");
 	precache_model("models/onslaught/controlpoint_shield.md3");
 	precache_model("models/onslaught/controlpoint_icon.md3");
+	precache_model("models/onslaught/controlpoint_icon_dmg1.md3");
+	precache_model("models/onslaught/controlpoint_icon_dmg2.md3");
+	precache_model("models/onslaught/controlpoint_icon_dmg3.md3");
+	precache_model("models/onslaught/controlpoint_icon_gib1.md3");
+	precache_model("models/onslaught/controlpoint_icon_gib2.md3");
+	precache_model("models/onslaught/controlpoint_icon_gib4.md3");
 	precache_sound("onslaught/controlpoint_build.wav");
 	precache_sound("onslaught/controlpoint_built.wav");
 	precache_sound("weapons/grenade_impact.wav");

Modified: branches/nexuiz-2.0/data/qcsrc/server/nexball.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/nexball.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/nexball.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -577,7 +577,7 @@
 	if (!(ball = self.ballcarried))
 		return;
 
-	W_SetupShot (self, FALSE, 4, "weapons/grenade_fire.wav");
+	W_SetupShot (self, FALSE, 4, "nexball/shoot1.wav");
 	tracebox(w_shotorg, BALL_MINS, BALL_MAXS, w_shotorg, MOVE_WORLDONLY, world);
 	if(trace_startsolid)
 	{
@@ -608,8 +608,8 @@
 	local entity missile;
 	if (!(balls & BALL_BASKET))
 		return;
-	W_SetupShot (self, FALSE, 2, "weapons/grenade_fire.wav");
-	pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
+	W_SetupShot (self, FALSE, 2, "nexball/shoot2.ogg");
+//	pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 	missile = spawn ();
 
 	missile.owner = self;
@@ -667,14 +667,15 @@
 	}
 	else if (req == WR_PRECACHE)
 	{
-		precache_model ("models/weapons/g_gl.md3");
-		precache_model ("models/weapons/v_gl.md3");
-		precache_model ("models/weapons/h_gl.dpm");
+		precache_model ("models/weapons/g_porto.md3");
+		precache_model ("models/weapons/v_porto.md3");
+		precache_model ("models/weapons/h_porto.dpm");
 		precache_model ("models/elaser.mdl");
-		precache_sound ("weapons/grenade_fire.wav");
+		precache_sound ("nexball/shoot1.wav");
+		precache_sound ("nexball/shoot2.ogg");
 	}
 	else if (req == WR_SETUP)
-		weapon_setup(WEP_GRENADE_LAUNCHER);
+		weapon_setup(WEP_PORTO);
 	else if (req == WR_SUICIDEMESSAGE)
 	{
 		w_deathtypestring = "is a weirdo";

Modified: branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -163,6 +163,11 @@
 	sv_airstrafeaccelerate = cvar("sv_airstrafeaccelerate");
 	sv_maxairstrafespeed = cvar("sv_maxairstrafespeed");
 	sv_aircontrol = cvar("sv_aircontrol");
+	sv_warsowbunny_airforwardaccel = cvar("sv_warsowbunny_airforwardaccel");
+	sv_warsowbunny_accel = cvar("sv_warsowbunny_accel");
+	sv_warsowbunny_topspeed = cvar("sv_warsowbunny_topspeed");
+	sv_warsowbunny_turnaccel = cvar("sv_warsowbunny_turnaccel");
+	sv_warsowbunny_backtosideratio = cvar("sv_warsowbunny_backtosideratio");
 	teamplay = cvar ("teamplay");
 
 	if(teams_matter && !teamplay)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -147,10 +147,8 @@
 }
 
 .float bot_secondary_grenademooth;
-float w_nexball_weapon(float req);
 float w_glauncher(float req)
 {
-	if (g_nexball) { return w_nexball_weapon(req); }
 	if (req == WR_AIM)
 	{
 		self.BUTTON_ATCK = FALSE;

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc	2009-05-24 09:07:22 UTC (rev 6760)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc	2009-05-24 09:11:30 UTC (rev 6761)
@@ -202,10 +202,12 @@
 	weapon_defaultspawnfunc(WEP_PORTO);
 }
 
+float w_nexball_weapon(float req);
 float w_porto(float req)
 {
 	vector v_angle_save;
 
+	if (g_nexball) { return w_nexball_weapon(req); }
 	if (req == WR_AIM)
 	{
 		self.BUTTON_ATCK = FALSE;

Copied: branches/nexuiz-2.0/data/sound/nexball/shoot1.wav (from rev 6697, trunk/data/sound/nexball/shoot1.wav)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/sound/nexball/shoot2.ogg (from rev 6697, trunk/data/sound/nexball/shoot2.ogg)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_icon.tga (from rev 6697, trunk/data/textures/ons_icon.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_icon_gloss.tga (from rev 6697, trunk/data/textures/ons_icon_gloss.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_icon_glow.tga (from rev 6697, trunk/data/textures/ons_icon_glow.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_icon_norm.tga (from rev 6697, trunk/data/textures/ons_icon_norm.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_icon_pants.tga (from rev 6697, trunk/data/textures/ons_icon_pants.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_icon_thrust.tga (from rev 6697, trunk/data/textures/ons_icon_thrust.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_icon_thrust_glow.tga (from rev 6697, trunk/data/textures/ons_icon_thrust_glow.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_pad.tga (from rev 6697, trunk/data/textures/ons_pad.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_pad_gloss.tga (from rev 6697, trunk/data/textures/ons_pad_gloss.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_pad_glow.tga (from rev 6697, trunk/data/textures/ons_pad_glow.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_pad_norm.tga (from rev 6697, trunk/data/textures/ons_pad_norm.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_pad_pants.tga (from rev 6697, trunk/data/textures/ons_pad_pants.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_pad_screen.tga (from rev 6697, trunk/data/textures/ons_pad_screen.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_text.tga (from rev 6697, trunk/data/textures/ons_text.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/textures/ons_text_glow.tga (from rev 6697, trunk/data/textures/ons_text_glow.tga)
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/textures/pad.tga
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/textures/pad_gloss.tga
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/textures/pad_glow.tga
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/textures/pad_norm.tga
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/textures/pad_shirt.tga
===================================================================
(Binary files differ)



More information about the nexuiz-commits mailing list