[nexuiz-commits] r7248 - in branches/nexuiz-2.0: . data data/gfx data/gfx/hud data/models data/models/weapons data/qcsrc/client data/qcsrc/common data/qcsrc/server data/qcsrc/server/tturrets/units data/sound/weapons data/textures misc/mediasource/hud
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Tue Jul 21 02:58:27 EDT 2009
Author: div0
Date: 2009-07-21 02:58:26 -0400 (Tue, 21 Jul 2009)
New Revision: 7248
Added:
branches/nexuiz-2.0/data/gfx/hud/inv_weapon13.tga
branches/nexuiz-2.0/data/gfx/hud/num_dot.tga
branches/nexuiz-2.0/data/gfx/hud/num_dot_stroke.tga
branches/nexuiz-2.0/misc/mediasource/hud/nexuiz-grunge-gpl-brushes.zip
Removed:
branches/nexuiz-2.0/data/gfx/crosshairseeker.tga
branches/nexuiz-2.0/data/gfx/hud/inv_weapon13.tga
branches/nexuiz-2.0/data/gfx/hud/inv_weapon15.tga
branches/nexuiz-2.0/data/models/tagrocket.md3
branches/nexuiz-2.0/data/models/tagrocket.tga
branches/nexuiz-2.0/data/models/weapons/g_seeker.md3
branches/nexuiz-2.0/data/models/weapons/h_seeker.dpm
branches/nexuiz-2.0/data/models/weapons/h_seeker.dpm.framegroups
branches/nexuiz-2.0/data/models/weapons/v_seeker.md3
branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc
branches/nexuiz-2.0/data/sound/weapons/flac_fire.ogg
branches/nexuiz-2.0/data/sound/weapons/flacexp1.ogg
branches/nexuiz-2.0/data/sound/weapons/flacexp2.ogg
branches/nexuiz-2.0/data/sound/weapons/flacexp3.ogg
branches/nexuiz-2.0/data/sound/weapons/seeker_fire.ogg
branches/nexuiz-2.0/data/sound/weapons/seekerexp1.ogg
branches/nexuiz-2.0/data/sound/weapons/seekerexp2.ogg
branches/nexuiz-2.0/data/sound/weapons/seekerexp3.ogg
branches/nexuiz-2.0/data/sound/weapons/tag_fire.ogg
branches/nexuiz-2.0/data/sound/weapons/tag_impact.ogg
branches/nexuiz-2.0/data/sound/weapons/tag_rocket_fly.ogg
branches/nexuiz-2.0/data/sound/weapons/tagexp1.ogg
branches/nexuiz-2.0/data/sound/weapons/tagexp2.ogg
branches/nexuiz-2.0/data/sound/weapons/tagexp3.ogg
branches/nexuiz-2.0/data/textures/seeker.tga
branches/nexuiz-2.0/data/textures/seeker_gloss.tga
branches/nexuiz-2.0/data/textures/seeker_glow.tga
branches/nexuiz-2.0/data/textures/seeker_norm.tga
branches/nexuiz-2.0/data/textures/seeker_pants.tga
Modified:
branches/nexuiz-2.0/.patchsets
branches/nexuiz-2.0/changes-since-last-release
branches/nexuiz-2.0/data/build-compat-pack.sh
branches/nexuiz-2.0/data/defaultNexuiz.cfg
branches/nexuiz-2.0/data/qcsrc/client/Main.qc
branches/nexuiz-2.0/data/qcsrc/client/View.qc
branches/nexuiz-2.0/data/qcsrc/client/damage.qc
branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc
branches/nexuiz-2.0/data/qcsrc/client/projectile.qc
branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc
branches/nexuiz-2.0/data/qcsrc/common/constants.qh
branches/nexuiz-2.0/data/qcsrc/common/items.qc
branches/nexuiz-2.0/data/qcsrc/common/items.qh
branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
branches/nexuiz-2.0/data/qcsrc/server/constants.qh
branches/nexuiz-2.0/data/qcsrc/server/func_breakable.qc
branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc
branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
branches/nexuiz-2.0/data/qcsrc/server/havocbot_ons.qc
branches/nexuiz-2.0/data/qcsrc/server/havocbot_roles.qc
branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
branches/nexuiz-2.0/data/qcsrc/server/progs.src
branches/nexuiz-2.0/data/qcsrc/server/race.qc
branches/nexuiz-2.0/data/qcsrc/server/race.qh
branches/nexuiz-2.0/data/qcsrc/server/scores.qc
branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc
branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_ewheel.qc
branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_flac.qc
branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_hellion.qc
branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_hk.qc
branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_mlrs.qc
branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_plasma.qc
branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_walker.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_rocketlauncher.qc
branches/nexuiz-2.0/data/qcsrc/server/w_tuba.qc
branches/nexuiz-2.0/data/weapons.cfg
branches/nexuiz-2.0/data/weaponsHavoc.cfg
branches/nexuiz-2.0/data/weaponsNexrun.cfg
Log:
r7219 | div0 | 2009-07-14 01:37:16 -0400 (Tue, 14 Jul 2009) | 2 lines
race HUD
r7220 | m0rfar | 2009-07-14 20:31:33 -0400 (Tue, 14 Jul 2009) | 1 line
mediasource: grunge brushes (used in hud)
r7221 | div0 | 2009-07-15 05:04:35 -0400 (Wed, 15 Jul 2009) | 2 lines
race: when time limit ends, do not stop the race, but let everyone finish his lap (untested, please test)
r7222 | mrbougo | 2009-07-15 10:31:28 -0400 (Wed, 15 Jul 2009) | 1 line
woops, forgot to add that for nexball
r7223 | m0rfar | 2009-07-15 13:01:37 -0400 (Wed, 15 Jul 2009) | 1 line
accuracy stats spec fix
r7224 | div0 | 2009-07-15 15:00:01 -0400 (Wed, 15 Jul 2009) | 2 lines
this really should not change anything, but apparently it fixes race... odd
r7225 | div0 | 2009-07-16 08:44:28 -0400 (Thu, 16 Jul 2009) | 2 lines
fix race penalties
r7226 | div0 | 2009-07-16 09:22:30 -0400 (Thu, 16 Jul 2009) | 2 lines
remove an accidentally committed debug change to g_triggers.qc
r7227 | div0 | 2009-07-16 10:58:19 -0400 (Thu, 16 Jul 2009) | 2 lines
HUD fixes
r7228 | div0 | 2009-07-17 04:16:33 -0400 (Fri, 17 Jul 2009) | 2 lines
cs_*project: check if DP supports them in console coordinate space
r7229 | div0 | 2009-07-17 13:44:14 -0400 (Fri, 17 Jul 2009) | 2 lines
fix the cs_project detection
r7230 | div0 | 2009-07-17 14:08:50 -0400 (Fri, 17 Jul 2009) | 2 lines
split racerecord/ctsrecord DB fields
r7231 | div0 | 2009-07-17 16:40:22 -0400 (Fri, 17 Jul 2009) | 2 lines
a stupid fix for a stupid bug breaking race
r7232 | div0 | 2009-07-17 17:05:28 -0400 (Fri, 17 Jul 2009) | 2 lines
fix a sudden death bug
r7233 | mand1nga | 2009-07-17 22:47:28 -0400 (Fri, 17 Jul 2009) | 1 line
Fix accuracy stats (#400)
r7234 | mrbougo | 2009-07-18 09:05:00 -0400 (Sat, 18 Jul 2009) | 1 line
fix waypoint display origins when out of vision... please confirm that checking if d_z == 0 is too rare to be necessary ?
r7235 | m0rfar | 2009-07-18 13:54:55 -0400 (Sat, 18 Jul 2009) | 1 line
small scoreboard fixes
r7236 | div0 | 2009-07-19 03:11:09 -0400 (Sun, 19 Jul 2009) | 2 lines
fix ANYPOINT selection
r7237 | div0 | 2009-07-19 06:11:52 -0400 (Sun, 19 Jul 2009) | 2 lines
minimize weaponsNexrun.cfg
r7238 | m0rfar | 2009-07-19 11:15:17 -0400 (Sun, 19 Jul 2009) | 1 line
Correctly display all the scoreboard columns (#428)
r7239 | mand1nga | 2009-07-19 11:43:11 -0400 (Sun, 19 Jul 2009) | 1 line
Updated some changes
r7240 | div0 | 2009-07-19 15:24:50 -0400 (Sun, 19 Jul 2009) | 2 lines
fix autodetection of cs_project behaviour
r7241 | div0 | 2009-07-19 18:04:44 -0400 (Sun, 19 Jul 2009) | 2 lines
race: fix stupid typo :P
r7242 | div0 | 2009-07-20 00:47:53 -0400 (Mon, 20 Jul 2009) | 2 lines
race campaign level: fix qualifying status
r7243 | div0 | 2009-07-20 06:33:23 -0400 (Mon, 20 Jul 2009) | 4 lines
[11:57:02] <@LordHavoc> div0: or just remove the seeker for me and say "LordHavoc told me to"
PLEASE TEST
r7244 | div0 | 2009-07-20 06:47:34 -0400 (Mon, 20 Jul 2009) | 2 lines
continue --seeker
r7245 | mand1nga | 2009-07-20 12:43:20 -0400 (Mon, 20 Jul 2009) | 1 line
Fix warning
Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/.patchsets 2009-07-21 06:58:26 UTC (rev 7248)
@@ -1,2 +1,2 @@
master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-7217
+revisions_applied = 1-7245
Modified: branches/nexuiz-2.0/changes-since-last-release
===================================================================
--- branches/nexuiz-2.0/changes-since-last-release 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/changes-since-last-release 2009-07-21 06:58:26 UTC (rev 7248)
@@ -147,6 +147,10 @@
game: vote call is now possible for server admins too
game: weapons rebalanced according to frag statistics
game: zoom unlagged, detect zoom scripts (for spectating/demos)
+game: bots ai: added support for onslaught, complete rewrite of ctf ai, basic jetpack support, other minor fixes and improvements
+game: file based bots configuration
+game: bot scripting engine
+game: weapon accuracy stats (enable with +showaccuracy)
map: aggressor supports keyhunt
map: all maps recompiled, now with external lightmaps which look way better
map: new maps accident, desertfactory, racetrack
Modified: branches/nexuiz-2.0/data/build-compat-pack.sh
===================================================================
--- branches/nexuiz-2.0/data/build-compat-pack.sh 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/build-compat-pack.sh 2009-07-21 06:58:26 UTC (rev 7248)
@@ -57,6 +57,7 @@
gfx/hud/num_9.tga
gfx/hud/num_colon_stroke.tga
gfx/hud/num_colon.tga
+ gfx/hud/num_dot.tga
gfx/hud/num_minus_stroke.tga
gfx/hud/num_minus.tga
gfx/hud/num_plus_stroke.tga
Modified: branches/nexuiz-2.0/data/defaultNexuiz.cfg
===================================================================
--- branches/nexuiz-2.0/data/defaultNexuiz.cfg 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/defaultNexuiz.cfg 2009-07-21 06:58:26 UTC (rev 7248)
@@ -174,12 +174,6 @@
seta crosshair_hlac_color_blue 0.2 "crosshair color blue component to display when wielding the H.L.A.C."
seta crosshair_hlac_color_alpha 1 "crosshair alpha value to display when wielding the H.L.A.C."
seta crosshair_hlac_size 0.6 "crosshair size when wielding the H.L.A.C."
-seta crosshair_seeker "" "crosshair to display when wielding the TAG Seeker"
-seta crosshair_seeker_color_red 1 "crosshair color red component to display when wielding the TAG seeker"
-seta crosshair_seeker_color_green 0.35 "crosshair color green component to display when wielding the TAG seeker"
-seta crosshair_seeker_color_blue 0.35 "crosshair color blue component to display when wielding the TAG seeker"
-seta crosshair_seeker_color_alpha 0.9 "crosshair alpha value to display when wielding the TAG seeker"
-seta crosshair_seeker_size 0.8 "crosshair size when wielding the TAG seeker"
seta crosshair_campingrifle "" "crosshair to display when wielding the campingrifle"
seta crosshair_campingrifle_color_red 0.85 "crosshair color red component to display when wielding the campingrifle"
seta crosshair_campingrifle_color_green 0.5 "crosshair color green component to display when wielding the campingrifle"
Deleted: branches/nexuiz-2.0/data/gfx/crosshairseeker.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/gfx/hud/inv_weapon13.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/hud/inv_weapon13.tga (from rev 7245, trunk/data/gfx/hud/inv_weapon13.tga)
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/gfx/hud/inv_weapon15.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/hud/num_dot.tga (from rev 7245, trunk/data/gfx/hud/num_dot.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/hud/num_dot_stroke.tga (from rev 7245, trunk/data/gfx/hud/num_dot_stroke.tga)
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/models/tagrocket.md3
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/models/tagrocket.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/models/weapons/g_seeker.md3
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/models/weapons/h_seeker.dpm
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/models/weapons/h_seeker.dpm.framegroups
===================================================================
--- branches/nexuiz-2.0/data/models/weapons/h_seeker.dpm.framegroups 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/models/weapons/h_seeker.dpm.framegroups 2009-07-21 06:58:26 UTC (rev 7248)
@@ -1,4 +0,0 @@
-1 8 20 0 // fire
-9 5 20 0 // fire2
-15 200 20 1 // idle
-215 40 20 0 // reload
Deleted: branches/nexuiz-2.0/data/models/weapons/v_seeker.md3
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/qcsrc/client/Main.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/Main.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/client/Main.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -122,24 +122,6 @@
cvar_clientsettemp("_supports_weaponpriority", "1");
-
-
-
- cs_project_is_b0rked = TRUE;
- R_SetView(VF_VIEWPORT, '0 0 0', '640 480 0');
- R_SetView(VF_FOV, '90 90 0');
- R_SetView(VF_ORIGIN, '0 0 0');
- R_SetView(VF_ANGLES, '0 0 0');
- R_SetView(VF_PERSPECTIVE, 1);
- makevectors('0 0 0');
- vector v;
- v = cs_project(v_forward);
- if(v_x - 320 < +1)
- if(v_x - 320 > -1)
- if(v_y - 240 < +1)
- if(v_y - 240 > -1)
- cs_project_is_b0rked = FALSE;
-
RegisterWeapons();
WaypointSprite_Load();
Modified: branches/nexuiz-2.0/data/qcsrc/client/View.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/View.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/client/View.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -261,10 +261,6 @@
mi = '-3 -3 -3';
ma = '3 3 3';
break;
- case WEP_SEEKER: // projectile has a size!
- mi = '-2 -2 -2';
- ma = '2 2 2';
- break;
case WEP_ELECTRO: // projectile has a size!
mi = '0 0 -3';
ma = '0 0 -3';
@@ -650,6 +646,33 @@
localcmd("\n", NextFrameCommand, "\n");
NextFrameCommand = string_null;
}
+
+ // we must do this check AFTER a frame was rendered, or it won't work
+ if(cs_project_is_b0rked == 0)
+ {
+ string w0, h0;
+ w0 = cvar_string("vid_conwidth");
+ h0 = cvar_string("vid_conheight");
+ //R_SetView(VF_VIEWPORT, '0 0 0', '640 480 0');
+ //R_SetView(VF_FOV, '90 90 0');
+ R_SetView(VF_ORIGIN, '0 0 0');
+ R_SetView(VF_ANGLES, '0 0 0');
+ R_SetView(VF_PERSPECTIVE, 1);
+ makevectors('0 0 0');
+ vector v1, v2;
+ cvar_set("vid_conwidth", "800");
+ cvar_set("vid_conheight", "600");
+ v1 = cs_project(v_forward);
+ cvar_set("vid_conwidth", "640");
+ cvar_set("vid_conheight", "480");
+ v2 = cs_project(v_forward);
+ if(v1 == v2)
+ cs_project_is_b0rked = 1;
+ else
+ cs_project_is_b0rked = -1;
+ cvar_set("vid_conwidth", w0);
+ cvar_set("vid_conheight", h0);
+ }
}
void Sbar_Draw();
Modified: branches/nexuiz-2.0/data/qcsrc/client/damage.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/damage.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/client/damage.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -215,56 +215,6 @@
if(!issilent)
sound(self, CHAN_PROJECTILE, "weapons/hookbomb_impact.wav", VOL_BASE, ATTN_NORM);
break;
- case WEP_SEEKER:
- org2 = org + backoff * 6;
- if(secondary)
- {
- pointparticles(particleeffectnum("flac_explode"), org2, '0 0 0', 1);
- if(!issilent)
- {
- if (r<0.15)
- sound(self, CHAN_PROJECTILE, "weapons/flacexp1.wav", 1, ATTN_NORM);
- else if (r<0.7)
- sound(self, CHAN_PROJECTILE, "weapons/flacexp2.wav", 1, ATTN_NORM);
- else
- sound(self, CHAN_PROJECTILE, "weapons/flacexp3.wav", 1, ATTN_NORM);
- }
- }
- else
- {
- if(bounce)
- {
- pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
- if(!issilent)
- {
- if (r<0.15)
- sound(self, CHAN_PROJECTILE, "weapons/tagexp1.wav", 1, ATTN_NORM);
- else if (r<0.7)
- sound(self, CHAN_PROJECTILE, "weapons/tagexp2.wav", 1, ATTN_NORM);
- else
- sound(self, CHAN_PROJECTILE, "weapons/tagexp3.wav", 1, ATTN_NORM);
- }
- }
- else if(headshot)
- {
- if(!issilent)
- sound(self, CHAN_PROJECTILE, "weapons/tag_impact.wav", 1, ATTN_NORM);
- }
- else
- {
- pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
- if(!issilent)
- {
- if (r<0.15)
- sound(self, CHAN_PROJECTILE, "weapons/seekerexp1.wav", 1, ATTN_NORM);
- else if (r<0.7)
- sound(self, CHAN_PROJECTILE, "weapons/seekerexp2.wav", 1, ATTN_NORM);
- else
- sound(self, CHAN_PROJECTILE, "weapons/seekerexp3.wav", 1, ATTN_NORM);
- }
- }
- }
- break;
case WEP_HLAC:
org2 = org + backoff * 6;
pointparticles(particleeffectnum("laser_impact"), org2, backoff * 1000, 1);
@@ -299,9 +249,6 @@
precache_sound("weapons/crylink_impact.wav");
precache_sound("weapons/electro_impact.wav");
precache_sound("weapons/electro_impact_combo.wav");
- precache_sound("weapons/flacexp1.wav");
- precache_sound("weapons/flacexp2.wav");
- precache_sound("weapons/flacexp3.wav");
precache_sound("weapons/grenade_impact.wav");
precache_sound("weapons/hagexp1.wav");
precache_sound("weapons/hagexp2.wav");
@@ -313,11 +260,4 @@
precache_sound("weapons/ric2.wav");
precache_sound("weapons/ric3.wav");
precache_sound("weapons/rocket_impact.wav");
- precache_sound("weapons/seekerexp1.wav");
- precache_sound("weapons/seekerexp2.wav");
- precache_sound("weapons/seekerexp3.wav");
- precache_sound("weapons/tagexp1.wav");
- precache_sound("weapons/tagexp2.wav");
- precache_sound("weapons/tagexp3.wav");
- precache_sound("weapons/tag_impact.wav");
}
Modified: branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -291,13 +291,11 @@
vector project_3d_to_2d(vector vec)
{
vec = cs_project(vec);
- if(cs_project_is_b0rked)
+ if(cs_project_is_b0rked > 0)
{
- vec_x += vid_width / 2;
- vec_y += vid_height / 2;
+ vec_x *= vid_conwidth / vid_width;
+ vec_y *= vid_conheight / vid_height;
}
- vec_x *= vid_conwidth / vid_width;
- vec_y *= vid_conheight / vid_height;
return vec;
}
Modified: branches/nexuiz-2.0/data/qcsrc/client/projectile.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/projectile.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/client/projectile.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -27,9 +27,6 @@
case PROJECTILE_ROCKET:
trailparticles(self, particleeffectnum("TR_ROCKET"), from, to);
break;
- case PROJECTILE_TAG:
- trailparticles(self, particleeffectnum("TR_VORESPIKE"), from, to);
- break;
case PROJECTILE_CRYLINK:
trailparticles(self, particleeffectnum("TR_CRYLINKPLASMA"), from, to);
break;
@@ -51,12 +48,6 @@
case PROJECTILE_PORTO_BLUE:
trailparticles(self, particleeffectnum("TR_WIZSPIKE"), from, to);
break;
- case PROJECTILE_FLAC:
- trailparticles(self, particleeffectnum("TR_VORESPIKE"), from, to);
- break;
- case PROJECTILE_SEEKER:
- trailparticles(self, particleeffectnum("TR_ROCKET"), from, to);
- break;
case PROJECTILE_HOOKBOMB:
trailparticles(self, particleeffectnum("TR_KNIGHTSPIKE"), from, to);
break;
@@ -262,7 +253,6 @@
{
case PROJECTILE_ELECTRO: setmodel(self, "models/ebomb.mdl"); break;
case PROJECTILE_ROCKET: setmodel(self, "models/rocket.md3"); self.scale = 2; break;
- case PROJECTILE_TAG: setmodel(self, "models/laser.mdl"); break;
case PROJECTILE_BULLET: setmodel(self, "models/tracer.mdl"); break;
case PROJECTILE_BULLET_GLOWING: setmodel(self, "models/tracer.mdl"); break;
case PROJECTILE_CRYLINK: setmodel(self, "models/plasmatrail.mdl"); break;
@@ -272,8 +262,6 @@
case PROJECTILE_GRENADE_BOUNCING: setmodel(self, "models/grenademodel.md3"); break;
case PROJECTILE_LASER: setmodel(self, "models/laser.mdl"); break;
case PROJECTILE_HLAC: setmodel(self, "models/hlac_bullet.md3"); break;
- case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.scale = 2; break;
- case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; break;
case PROJECTILE_PORTO_RED: setmodel(self, "models/grenademodel.md3"); self.scale = 4; break;
case PROJECTILE_PORTO_BLUE: setmodel(self, "models/grenademodel.md3"); self.scale = 4; break;
case PROJECTILE_HOOKBOMB: setmodel(self, "models/grenademodel.md3"); break;
@@ -305,11 +293,6 @@
self.mins = '-3 -3 -3';
self.maxs = '3 3 3';
break;
- case PROJECTILE_TAG:
- loopsound(self, CHAN_PROJECTILE, "weapons/tag_rocket_fly.wav", VOL_BASE, ATTN_NORM);
- self.mins = '-2 -2 -2';
- self.maxs = '2 2 2';
- break;
case PROJECTILE_GRENADE:
self.mins = '0 0 -3';
self.maxs = '0 0 -3';
@@ -320,14 +303,6 @@
self.move_movetype = MOVETYPE_BOUNCE;
self.move_touch = SUB_Null;
break;
- case PROJECTILE_FLAC:
- self.mins = '-2 -2 -2';
- self.maxs = '2 2 2';
- break;
- case PROJECTILE_SEEKER:
- self.mins = '-4 -4 -4';
- self.maxs = '4 4 4';
- break;
case PROJECTILE_PORTO_RED:
self.colormod = '2 1 1';
self.alpha = 0.5;
@@ -385,9 +360,7 @@
precache_model("models/laser.mdl");
precache_model("models/plasmatrail.mdl");
precache_model("models/rocket.md3");
- precache_model("models/tagrocket.md3");
precache_model("models/tracer.mdl");
precache_sound("weapons/electro_fly.wav");
precache_sound("weapons/rocket_fly.wav");
- precache_sound("weapons/tag_rocket_fly.wav");
}
Modified: branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/sbar.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/client/sbar.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -954,7 +954,7 @@
if (sbar_scoreboard_highlight)
{
if (mod(i,2))
- drawfill(pos - '0 1 0' - sbar_fontsize_x / 2 * '1 0 0', column_dim, '0 0 0', sbar_scoreboard_alpha_bg * 0.4, DRAWFLAG_NORMAL);
+ drawfill(pos - '0 1 0' - sbar_fontsize_x / 2 * '1 0 0', column_dim, '0 0 0', sbar_scoreboard_alpha_bg * 0.2, DRAWFLAG_NORMAL);
}
drawstring(pos, sbar_title[i], sbar_fontsize, rgb, 1, DRAWFLAG_NORMAL);
pos_x += column_dim_x;
@@ -966,17 +966,12 @@
{
if(sbar_field[i] == SP_SEPARATOR)
break;
- /**
- * FTEQCC BUG!
- * Using strlen(sbar_title[i])*8 instead of
- * stringwidth(sbar_title[i], FALSE) will mess it all up
- */
- pos_x -= stringwidth(sbar_title[i], FALSE)*sbar_fontsize_x;
+ pos_x -= sbar_size[i]*sbar_fontsize_x;
if (sbar_scoreboard_highlight)
{
if (i == sbar_num_fields-1)
- column_dim_x = sbar_fontsize_x*sbar_size[i] + sbar_fontsize_x / 2;
+ column_dim_x = sbar_fontsize_x*sbar_size[i] + sbar_fontsize_x / 2 + 1;
else
column_dim_x = sbar_fontsize_x*sbar_size[i] + sbar_fontsize_x;
if (!mod(i,2))
@@ -1067,7 +1062,7 @@
//for(tm = sortedTeams.sort_next; tm; tm = tm.sort_next)
for(tm = teams.sort_next; tm; tm = tm.sort_next)
{
- if(!tm.team_size || tm.team == COLOR_SPECTATOR)
+ if(tm.team == COLOR_SPECTATOR)
continue;
rgb = GetTeamRGB(tm.team);
@@ -1249,7 +1244,9 @@
void Sbar_Score(float margin)
{
float timelimit, minutes, seconds, timeleft, minutesLeft, secondsLeft, distribution, score, desiredPlayerId;
- vector sbar_save, score_offset, timer_color, offset;
+ float racemin, racesec, racemsec;
+ float distsec, distmsec;
+ vector sbar_save, score_offset, timer_color, offset, distribution_color, minuspos;
entity tm, pl, me;
sbar_save = sbar;
@@ -1285,179 +1282,213 @@
}
score_offset_z = 0;
- if(teamplay)
+ if((scores_flags[ps_primary] & SFL_TIME) && !teamplay)
{
- // Layout:
- //
- // team1 team3 team4
- //
- // TEAM2
- //for(i = 0; i < 4; ++i)
+ // me vector := [team/connected frags id]
- float max_fragcount;
- max_fragcount = -999;
+ pl = players.sort_next;
+ if(pl == me)
+ pl = pl.sort_next;
+ if(scores_flags[ps_primary] & SFL_ZERO_IS_WORST)
+ if(pl.scores[ps_primary] == 0)
+ pl = world;
- for(tm = teams.sort_next; tm; tm = tm.sort_next)
+ score = me.(scores[ps_primary]);
+
+ racemin = floor(score/600);
+ racesec = floor((score - racemin*600)/10);
+ racemsec = score - racemin*600 - racesec*10;
+
+ if (pl && ((!(scores_flags[ps_primary] & SFL_ZERO_IS_WORST)) || score)) {
+ // distribution display
+ distribution = me.(scores[ps_primary]);
+ distribution -= pl.(scores[ps_primary]);
+
+ if (distribution < 10 && distribution > -10)
+ distmsec = fabs(distribution);
+ else {
+ distsec = floor(fabs(distribution)/10);
+ distmsec = fabs(distribution) - distsec*10;
+ }
+
+ if (distribution < 100 && distribution > -100)
+ minuspos = bottomright - element_offset - score_offset + '130 -6 0' + '16 0 0';
+ else if (distribution < 1000 && distribution > -1000)
+ minuspos = bottomright - element_offset - score_offset + '130 -6 0';
+ else if (distribution < 10000 && distribution > -10000)
+ minuspos = bottomright - element_offset - score_offset + '130 -6 0' - '16 0 0';
+ else
+ minuspos = bottomright - element_offset - score_offset + '130 -6 0' - '32 0 0';
+
+ if (distribution <= 0) {
+ distribution_color = '0 1 0';
+ drawpic(minuspos, "gfx/hud/num_minus", '16 16 0', distribution_color, sbar_alpha_fg, DRAWFLAG_ADDITIVE);
+ }
+ else {
+ distribution_color = '1 0 0';
+ drawpic(minuspos, "gfx/hud/num_plus", '16 16 0', distribution_color, sbar_alpha_fg, DRAWFLAG_ADDITIVE);
+ }
+
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '180 -6 0', distmsec, 1, 16, distribution_color, 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '112 -6 0', distsec, 4, 16, distribution_color, 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ drawpic(bottomright - element_offset - score_offset + '170 -6 0', "gfx/hud/num_dot", '16 16 0', distribution_color, sbar_alpha_fg, DRAWFLAG_ADDITIVE);
+ }
+
+ // big timer
+ if (distribution <= 0 || distribution == score) // draw the highlight background behind the timer if we have the lead
+ drawpic(bottomright - element_offset - score_offset + '20 10 0', "gfx/hud/sb_highlight_4", '178 28 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL);
+
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '166 10 0', racemsec, 1, 30, '1 1 1', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '96 10 0', racesec, -2, 30, '1 1 1', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ drawpic(bottomright - element_offset - score_offset + '145 10 0', "gfx/hud/num_dot", '30 30 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_ADDITIVE);
+
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '24 10 0', racemin, -2, 30, '1 1 1', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ drawpic(bottomright - element_offset - score_offset + '76 8 0', "gfx/hud/num_colon", '30 30 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_ADDITIVE);
+ }
+ else {
+ if(teamplay)
{
- if(tm.team == COLOR_SPECTATOR || !tm.team_size) // no players? don't display
- continue;
- // -32*4 = -128
- score = tm.(teamscores[ts_primary]);
+ // Layout:
+ //
+ // team1 team3 team4
+ //
+ // TEAM2
+ //for(i = 0; i < 4; ++i)
- if (score > max_fragcount)
- max_fragcount = score;
+ float max_fragcount;
+ max_fragcount = -999;
- if(tm.team == myteam) {
- if (max_fragcount == score)
- Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, GetTeamRGB(tm.team) * 0.8, 1, 1, sbar_alpha_fg, DRAWFLAG_NORMAL);
- else
- Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, GetTeamRGB(tm.team) * 0.8, 0, 1, sbar_alpha_fg, DRAWFLAG_NORMAL);
- }
- else
+ for(tm = teams.sort_next; tm; tm = tm.sort_next)
{
- if (max_fragcount == score)
- Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0' - offset, score, 4, 16, GetTeamRGB(tm.team) * 0.8, 1, 1, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ if(tm.team == COLOR_SPECTATOR || !tm.team_size) // no players? don't display
+ continue;
+ // -32*4 = -128
+ score = tm.(teamscores[ts_primary]);
+
+ if (score > max_fragcount)
+ max_fragcount = score;
+
+ if(tm.team == myteam) {
+ if (max_fragcount == score)
+ Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, GetTeamRGB(tm.team) * 0.8, 1, 1, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ else
+ Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, GetTeamRGB(tm.team) * 0.8, 0, 1, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ }
else
- Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0' - offset, score, 4, 16, GetTeamRGB(tm.team) * 0.8, 0, 1, sbar_alpha_fg, DRAWFLAG_NORMAL);
- offset_y -= 16;
+ {
+ if (max_fragcount == score)
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0' - offset, score, 4, 16, GetTeamRGB(tm.team) * 0.8, 1, 1, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ else
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0' - offset, score, 4, 16, GetTeamRGB(tm.team) * 0.8, 0, 1, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ offset_y -= 16;
+ }
}
- }
- } else {
- // me vector := [team/connected frags id]
+ } else {
+ // me vector := [team/connected frags id]
- pl = players.sort_next;
- if(pl == me)
- pl = pl.sort_next;
+ pl = players.sort_next;
+ if(pl == me)
+ pl = pl.sort_next;
- if(pl) {
- distribution = me.(scores[ps_primary]);
- distribution -= pl.(scores[ps_primary]);
- } else
- distribution = 0;
+ if(pl) {
+ distribution = me.(scores[ps_primary]);
+ distribution -= pl.(scores[ps_primary]);
+ } else
+ distribution = 0;
- score = me.(scores[ps_primary]);
+ score = me.(scores[ps_primary]);
- if(distribution >= 0)
- {
- if (distribution != 0) {
- // draw a + sign in front of the score
- if (distribution < 10) { drawpic(bottomright - element_offset - score_offset + '132 -6 0' + '32 0 0', "gfx/hud/num_plus", '16 16 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_ADDITIVE); }
- else if (distribution < 100) { drawpic(bottomright - element_offset - score_offset + '132 -6 0' + '16 0 0', "gfx/hud/num_plus", '16 16 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_ADDITIVE); }
- else if (distribution < 1000) { drawpic(bottomright - element_offset - score_offset + '132 -6 0', "gfx/hud/num_plus", '16 16 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_ADDITIVE); }
+ if(distribution >= 0)
+ {
+ if (distribution != 0) {
+ // draw a + sign in front of the score
+ if (distribution < 10) { drawpic(bottomright - element_offset - score_offset + '132 -6 0' + '32 0 0', "gfx/hud/num_plus", '16 16 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_ADDITIVE); }
+ else if (distribution < 100) { drawpic(bottomright - element_offset - score_offset + '132 -6 0' + '16 0 0', "gfx/hud/num_plus", '16 16 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_ADDITIVE); }
+ else if (distribution < 1000) { drawpic(bottomright - element_offset - score_offset + '132 -6 0', "gfx/hud/num_plus", '16 16 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_ADDITIVE); }
+ }
+
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0', distribution, 4, 16, ' 1 1 1', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, '1 1 1', 1, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
}
-
- Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0', distribution, 4, 16, ' 1 1 1', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
- Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, '1 1 1', 1, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ else if(distribution >= -5)
+ {
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0', distribution, 4, 16, ' 1 1 0', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, '1 1 0', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ }
+ else {
+ Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0', distribution, 4, 16, ' 1 0 0', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, '1 0 0', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+ }
}
- else if(distribution >= -5)
- {
- Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0', distribution, 4, 16, ' 1 1 0', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
- Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, '1 1 0', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
- }
- else {
- Sbar_DrawXNum(bottomright - element_offset - score_offset + '132 -6 0', distribution, 4, 16, ' 1 0 0', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
- Sbar_DrawXNum(bottomright - element_offset - score_offset, score, 4, 34, '1 0 0', 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
- }
}
//draw the remaining or elapsed time
timelimit = getstatf(STAT_TIMELIMIT);
-
vector bgpos;
- if(timelimit > 0)
- {
- timeleft = max(0, timelimit * 60 + getstatf(STAT_GAMESTARTTIME) - time);
- timeleft = ceil(timeleft);
- minutesLeft = floor(timeleft / 60);
- secondsLeft = timeleft - minutesLeft*60;
- if(minutesLeft >= 5 || warmup_stage) //don't use red or yellow for timer during warmup
- timer_color = '1 1 1'; //white
- else if(minutesLeft >= 1)
- timer_color = '1 1 0'; //yellow
- else
- timer_color = '1 0 0'; //red
+ timeleft = max(0, timelimit * 60 + getstatf(STAT_GAMESTARTTIME) - time);
+ timeleft = ceil(timeleft);
+ minutesLeft = floor(timeleft / 60);
+ secondsLeft = timeleft - minutesLeft*60;
- if (cvar("sbar_increment_maptime")) {
- if (time < getstatf(STAT_GAMESTARTTIME)) {
- //while restart is still active, show negative counter
- minutes = 0;
- seconds = ceil(getstatf(STAT_GAMESTARTTIME) - time);
- } else {
- float elapsedTime;
- elapsedTime = floor(time - getstatf(STAT_GAMESTARTTIME)); //127
- minutes = floor(elapsedTime / 60);
- seconds = elapsedTime - minutes*60;
- }
+ if(minutesLeft >= 5 || warmup_stage || timelimit == 0) //don't use red or yellow in warmup or when there is no timelimit
+ timer_color = '1 1 1'; //white
+ else if(minutesLeft >= 1)
+ timer_color = '1 1 0'; //yellow
+ else
+ timer_color = '1 0 0'; //red
+
+ if (cvar("sbar_increment_maptime") || timelimit == 0) {
+ if (time < getstatf(STAT_GAMESTARTTIME)) {
+ //while restart is still active, show 00:00
+ minutes = seconds = 0;
} else {
- minutes = minutesLeft;
- seconds = secondsLeft;
+ float elapsedTime;
+ elapsedTime = floor(time - getstatf(STAT_GAMESTARTTIME)); //127
+ minutes = floor(elapsedTime / 60);
+ seconds = elapsedTime - minutes*60;
}
-
- if (minutes == 0) {
- if (cvar("sbar_increment_maptime") == 1)
- bgpos_x = topright_x - 54 - 17 - 12;
- else
- bgpos_x = topright_x - 36 - 7 - 12;
- }
- else if (minutes < 10) // nudge the timer background left if more digits are drawn
+ if (minutes < 10)
bgpos_x = topright_x - 54 - 17 - 12;
- else if (minutes < 100)
+ else if (minutes < 100) // nudge the timer background left if more digits are drawn
bgpos_x = topright_x - 72 - 17 - 12;
else
bgpos_x = topright_x - 90 - 17 - 12;
bgpos_y = 0;
bgpos_z = 0;
-
- if (cvar("viewsize") <= 100) { // draw timer background when viewsize <= 100
- if (teamplay)
- drawpic(bgpos, "gfx/hud/sb_timerbg", '120 30 0', GetTeamRGB(myteam) * sbar_color_bg_team, sbar_alpha_bg, DRAWFLAG_NORMAL); // timer bg color = myteam color
- else {
- color_x = cvar("sbar_color_bg_r");
- color_y = cvar("sbar_color_bg_g");
- color_z = cvar("sbar_color_bg_b");
-
- drawpic(bgpos, "gfx/hud/sb_timerbg", '120 30 0', color, sbar_alpha_bg, DRAWFLAG_NORMAL);
- }
- }
-
- if(minutesLeft >= 1) {
- Sbar_DrawXNum(topright - '103 0 0' + '0 2 0', minutes, 3, 18, timer_color, 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
- drawpic(topright - '53 0 0' + '0 1 0', "gfx/hud/num_colon", '18 18 0', timer_color, sbar_alpha_fg, DRAWFLAG_NORMAL);
- }
- Sbar_DrawXNum(topright - '36 0 0' - '3 0 0' + '0 2 0', seconds, -2, 18, timer_color, 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
-
} else {
- timer_color = '1 1 1'; //white
- minutes = floor(time / 60);
- seconds = floor(time - minutes*60);
-
- if (minutes < 10)
+ minutes = minutesLeft;
+ seconds = secondsLeft;
+ if (minutes == 0)
+ bgpos_x = topright_x - 36 - 7 - 12;
+ else if (minutes < 10) // nudge the timer background left if more digits are drawn
bgpos_x = topright_x - 54 - 17 - 12;
- else if (minutes < 100) // nudge the timer background left if more digits are drawn
+ else if (minutes < 100)
bgpos_x = topright_x - 72 - 17 - 12;
else
bgpos_x = topright_x - 90 - 17 - 12;
bgpos_y = 0;
bgpos_z = 0;
+ }
- if (cvar("viewsize") <= 100) { // draw timer background when viewsize <= 100
- if (teamplay)
- drawpic(bgpos, "gfx/hud/sb_timerbg", '120 30 0', GetTeamRGB(myteam) * sbar_color_bg_team, sbar_alpha_bg, DRAWFLAG_NORMAL); // timer bg color = myteam color
- else {
- color_x = cvar("sbar_color_bg_r");
- color_y = cvar("sbar_color_bg_g");
- color_z = cvar("sbar_color_bg_b");
+ if (cvar("viewsize") <= 100) { // draw timer background when viewsize <= 100
+ if (teamplay)
+ drawpic(bgpos, "gfx/hud/sb_timerbg", '120 30 0', GetTeamRGB(myteam) * sbar_color_bg_team, sbar_alpha_bg, DRAWFLAG_NORMAL); // timer bg color = myteam color
+ else {
+ color_x = cvar("sbar_color_bg_r");
+ color_y = cvar("sbar_color_bg_g");
+ color_z = cvar("sbar_color_bg_b");
- drawpic(bgpos, "gfx/hud/sb_timerbg", '120 30 0', color, sbar_alpha_bg, DRAWFLAG_NORMAL);
- }
+ drawpic(bgpos, "gfx/hud/sb_timerbg", '120 30 0', color, sbar_alpha_bg, DRAWFLAG_NORMAL);
}
+ }
+ if(minutesLeft >= 1 || cvar("sbar_increment_maptime") || timelimit == 0) {
Sbar_DrawXNum(topright - '103 0 0' + '0 2 0', minutes, 3, 18, timer_color, 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
drawpic(topright - '53 0 0' + '0 1 0', "gfx/hud/num_colon", '18 18 0', timer_color, sbar_alpha_fg, DRAWFLAG_NORMAL);
- Sbar_DrawXNum(topright - '36 0 0' - '3 0 0' + '0 2 0', seconds, -2, 18, timer_color, 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
}
-
+ Sbar_DrawXNum(topright - '36 0 0' - '3 0 0' + '0 2 0', seconds, -2, 18, timer_color, 0, 0, sbar_alpha_fg, DRAWFLAG_NORMAL);
+
if(gametype == GAME_RACE || gametype == GAME_CTS)
{
drawfont = sbar_bigfont;
Modified: branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -195,7 +195,7 @@
if(max(f1, -f1) > max(f2, -f2))
{
- if(f1 > 0)
+ if(d_z * f1 > 0)
{
// RIGHT edge
d = d * (0.5 / f1);
@@ -210,7 +210,7 @@
}
else
{
- if(f2 > 0)
+ if(d_z * f2 > 0)
{
// BOTTOM edge
d = d * (0.5 / f2);
Modified: branches/nexuiz-2.0/data/qcsrc/common/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/constants.qh 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/common/constants.qh 2009-07-21 06:58:26 UTC (rev 7248)
@@ -390,7 +390,6 @@
// this sets sounds and other properties of the projectiles in csqc
float PROJECTILE_ELECTRO = 1;
float PROJECTILE_ROCKET = 2;
-float PROJECTILE_TAG = 3;
float PROJECTILE_BULLET = 4;
float PROJECTILE_CRYLINK = 5;
float PROJECTILE_ELECTRO_BEAM = 6;
@@ -398,8 +397,6 @@
float PROJECTILE_GRENADE_BOUNCING = 8;
float PROJECTILE_LASER = 9;
float PROJECTILE_HLAC = 10;
-float PROJECTILE_SEEKER = 11;
-float PROJECTILE_FLAC = 12;
float PROJECTILE_PORTO_RED = 13;
float PROJECTILE_PORTO_BLUE = 14;
float PROJECTILE_HOOKBOMB = 15;
Modified: branches/nexuiz-2.0/data/qcsrc/common/items.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/items.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/common/items.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -37,8 +37,8 @@
dummy_weapon_info = spawn();
dummy_weapon_info.classname = "weapon_info";
- dummy_weapon_info.weapon = 0;
- dummy_weapon_info.weapons = 0;
+ dummy_weapon_info.weapon = 0; // you can recognize dummies by this
+ dummy_weapon_info.weapons = 0; // you can recognize dummies by this too
dummy_weapon_info.netname = "@!#%'n Tuba";
dummy_weapon_info.items = 0;
dummy_weapon_info.weapon_func = w_null;
@@ -114,10 +114,9 @@
register_weapon(WEP_PORTO, w_porto, 0, 0, 0, 0, WEP_TYPE_OTHER, 0, "porto" , "porto", "Port-O-Launch");
register_weapon(WEP_MINSTANEX, w_minstanex, IT_CELLS, 7, -1, 1, WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "minstanex", "minstanex", "MinstaNex");
register_weapon(WEP_HOOK, w_hook, IT_CELLS|IT_FUEL, 0, 0, 1, WEP_TYPE_SPLASH, 0, "hookgun", "hook", "Grappling Hook");
- register_weapon(WEP_SEEKER, w_seeker, IT_ROCKETS, 8, 0, 0, WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "seeker", "seeker", "T.A.G. Seeker");
register_weapon(WEP_HLAC, w_hlac, IT_CELLS, 6, 1, 0, WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hlac", "hlac", "Heavy Laser Assault Cannon");
- register_weapon(WEP_CAMPINGRIFLE, w_campingrifle, IT_NAILS, 3, 1, 0, WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "campingrifle", "campingrifle", "Rifle");
register_weapon(WEP_TUBA, w_tuba, 0, 1, -1, 0, WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "tuba", "tuba", "@!#%'n Tuba");
+ register_weapon(WEP_CAMPINGRIFLE, w_campingrifle, IT_NAILS, 3, 1, 0, WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "campingrifle", "campingrifle", "Rifle");
register_weapons_done();
}
Modified: branches/nexuiz-2.0/data/qcsrc/common/items.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/items.qh 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/common/items.qh 2009-07-21 06:58:26 UTC (rev 7248)
@@ -14,11 +14,10 @@
float WEP_MINSTANEX = 11; float WEPBIT_MINSTANEX = 1024;
float WEP_HOOK = 12; float WEPBIT_HOOK = 2048;
float WEP_HLAC = 13; float WEPBIT_HLAC = 4096;
-float WEP_SEEKER = 14; float WEPBIT_SEEKER = 8192;
+float WEP_TUBA = 14; float WEPBIT_TUBA = 8192;
float WEP_CAMPINGRIFLE = 15; float WEPBIT_CAMPINGRIFLE = 16384;
-float WEP_TUBA = 16; float WEPBIT_TUBA = 32768;
-float WEP_LAST = 16; float WEPBIT_ALL = 65535;
-float WEP_COUNT = 17;
+float WEP_LAST = 15; float WEPBIT_ALL = 32767;
+float WEP_COUNT = 16;
float BOT_PICKUP_RATING_LOW = 2500;
float BOT_PICKUP_RATING_MID = 5000;
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -28,13 +28,13 @@
sf |= 4; // zoomed
if(e.porto_v_angle_held)
sf |= 8; // angles held
-
+
WriteByte(MSG_ENTITY, ENT_CLIENT_CLIENTDATA);
WriteByte(MSG_ENTITY, sf);
if(sf & 2)
WriteByte(MSG_ENTITY, to.spectatee_status);
-
+
if(sf & 8)
{
WriteAngle(MSG_ENTITY, e.v_angle_x);
@@ -119,7 +119,7 @@
if(race_spawns)
if(spot.target == "")
return -1;
-
+
if(clienttype(self) == CLIENTTYPE_REAL)
{
if(spot.restriction == 1)
@@ -227,7 +227,7 @@
// too short distance
spawn_allgood = FALSE;
}
- else
+ else
{
// perfect
spawn_allbad = FALSE;
@@ -306,26 +306,33 @@
firstspot = findchain(classname, "info_player_deathmatch");
// filter out the bad ones
// (note this returns the original list if none survived)
- firstspot_new = Spawn_FilterOutBadSpots(firstspot, playerlist, 100, teamcheck);
- if(!firstspot_new)
- firstspot_new = Spawn_FilterOutBadSpots(firstspot, playerlist, -1, teamcheck);
- firstspot = firstspot_new;
-
- // there is 50/50 chance of choosing a random spot or the furthest spot
- // (this means that roughly every other spawn will be furthest, so you
- // usually won't get fragged at spawn twice in a row)
- if (arena_roundbased)
+ if(anypoint)
{
- firstspot_new = Spawn_FilterOutBadSpots(firstspot, playerlist, 800, teamcheck);
- if(firstspot_new)
- firstspot = firstspot_new;
spot = Spawn_WeightedPoint(firstspot, 1, 1, 1);
}
- else if (random() > cvar("g_spawn_furthest"))
- spot = Spawn_WeightedPoint(firstspot, 1, 1, 1);
else
- spot = Spawn_WeightedPoint(firstspot, 1, 5000, 5); // chooses a far far away spawnpoint
+ {
+ firstspot_new = Spawn_FilterOutBadSpots(firstspot, playerlist, 100, teamcheck);
+ if(!firstspot_new)
+ firstspot_new = Spawn_FilterOutBadSpots(firstspot, playerlist, -1, teamcheck);
+ firstspot = firstspot_new;
+ // there is 50/50 chance of choosing a random spot or the furthest spot
+ // (this means that roughly every other spawn will be furthest, so you
+ // usually won't get fragged at spawn twice in a row)
+ if (arena_roundbased)
+ {
+ firstspot_new = Spawn_FilterOutBadSpots(firstspot, playerlist, 800, teamcheck);
+ if(firstspot_new)
+ firstspot = firstspot_new;
+ spot = Spawn_WeightedPoint(firstspot, 1, 1, 1);
+ }
+ else if (random() > cvar("g_spawn_furthest"))
+ spot = Spawn_WeightedPoint(firstspot, 1, 1, 1);
+ else
+ spot = Spawn_WeightedPoint(firstspot, 1, 5000, 5); // chooses a far far away spawnpoint
+ }
+
if(cvar("spawn_debugview"))
{
print("spot mindistance: ", ftos(spot.SPAWNPOINT_SCORE), "\n");
@@ -405,7 +412,7 @@
float Client_customizeentityforclient()
{
entity modelsource;
-
+
if(self.modelindex == 0)
return TRUE;
@@ -558,7 +565,7 @@
DropBall(self.ballcarried, self.origin + self.ballcarried.origin, self.velocity);
WaypointSprite_PlayerDead();
-
+
if(self.killcount != -666)
{
if(g_lms)
@@ -575,7 +582,7 @@
PlayerScore_Clear(self); // clear scores when needed
self.spectatortime = time;
-
+
self.classname = "observer";
self.iscreature = FALSE;
self.health = -666;
@@ -599,8 +606,6 @@
self.pain_finished = 0;
self.strength_finished = 0;
self.invincible_finished = 0;
- self.damage_hits = 0;
- self.maxdamage_fired = 0;
self.pushltime = 0;
self.think = SUB_Null;
self.nextthink = 0;
@@ -729,7 +734,7 @@
oldskin = self.skinindex;
self.skinindex = RestrictSkin(stof(self.playerskin));
}
-
+
if(chmdl || oldskin != self.skinindex)
self.species = player_getspecies(); // model or skin has changed
@@ -750,7 +755,7 @@
entity e;
e = spawn();
setorigin(e, org);
- RadiusDamage(e, world, g_touchexplode_damage, g_touchexplode_edgedamage, g_touchexplode_radius, world, g_touchexplode_force, DEATH_TOUCHEXPLODE, world);
+ RadiusDamage(e, world, g_touchexplode_damage, g_touchexplode_edgedamage, g_touchexplode_radius, world, g_touchexplode_force, DEATH_TOUCHEXPLODE, world, 0);
remove(e);
}
@@ -873,8 +878,6 @@
self.pain_finished = 0;
self.strength_finished = 0;
self.invincible_finished = 0;
- self.maxdamage_fired = 0;
- self.damage_hits = 0;
self.pushltime = 0;
//self.speed_finished = 0;
//self.slowmo_finished = 0;
@@ -1129,7 +1132,7 @@
float killtime;
entity e;
killtime = cvar("g_balance_kill_delay");
-
+
if(g_race_qualifying)
killtime = 0;
@@ -1238,7 +1241,7 @@
// send prediction settings to the client
stuffcmd(e, "\nin_bindmap 0 0\n");
/*
- * we no longer need to stuff this. Remove this comment block if you feel
+ * we no longer need to stuff this. Remove this comment block if you feel
* 2.3 and higher (or was it 2.2.3?) don't need these any more
stuffcmd(e, strcat("cl_gravity ", ftos(cvar("sv_gravity")), "\n"));
stuffcmd(e, strcat("cl_movement_accelerate ", ftos(cvar("sv_accelerate")), "\n"));
@@ -1473,12 +1476,12 @@
if(self.entcs)
detach_entcs();
-
+
if(cvar("sv_eventlog"))
GameLogEcho(strcat(":part:", ftos(self.playerid)));
bprint ("^4",self.netname);
bprint ("^4 disconnected\n");
-
+
SoundEntity_Detach(self);
DropAllRunes(self);
@@ -1951,7 +1954,7 @@
self.pressedkeys &~= KEY_FORWARD;
self.pressedkeys &~= KEY_BACKWARD;
}
-
+
if (self.movement_y > 0)
{ // right key pressed
self.pressedkeys |= KEY_RIGHT;
@@ -1967,7 +1970,7 @@
self.pressedkeys &~= KEY_RIGHT;
self.pressedkeys &~= KEY_LEFT;
}
-
+
if (self.BUTTON_JUMP) // get if jump and crouch keys are pressed
self.pressedkeys |= KEY_JUMP;
else
@@ -1998,8 +2001,6 @@
self.metertime = spectatee.metertime;
self.strength_finished = spectatee.strength_finished;
self.invincible_finished = spectatee.invincible_finished;
- self.maxdamage_fired = spectatee.maxdamage_fired;
- self.damage_hits = spectatee.damage_hits;
self.pressedkeys = spectatee.pressedkeys;
self.weapons = spectatee.weapons;
self.switchweapon = spectatee.switchweapon;
@@ -2024,7 +2025,7 @@
if (self == self.enemy)
return 0;
-
+
if(self.enemy.classname != "player")
return 0;
@@ -2274,7 +2275,7 @@
if(blockSpectators && frametime)
// WORKAROUND: only use dropclient in server frames (frametime set). Never use it in cl_movement frames (frametime zero).
checkSpectatorBlock();
-
+
zoomstate_set = 0;
if(self.netname_previous != self.netname)
@@ -2472,7 +2473,7 @@
}
}
}
-
+
if(self.health <= g_bloodloss && self.deadflag == DEAD_NO)
{
if(self.bloodloss_timer < time)
@@ -2706,7 +2707,7 @@
if(Drag_MayChangeAngles(draggee))
draggee.angles_y = draggee.angles_y * (1 - f) + (dragger.v_angle_y + dragger.draglocalangle) * f;
-
+
draggee.ltime = max(servertime + serverframetime, draggee.ltime); // fixes func_train breakage
te_lightning1(dragger, dragger.origin + dragger.view_ofs, curorigin);
@@ -2800,7 +2801,7 @@
detach_sameorigin(self.cursor_trace_ent);
Drag_Begin(self, self.cursor_trace_ent, self.cursor_trace_endpos);
}
-
+
if(Drag_IsDragging(self))
{
if(self.BUTTON_DRAG)
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -452,7 +452,7 @@
setorigin(e2, org);
pointparticles(particleeffectnum("rocket_explode"), org, '0 0 0', 1);
sound(e2, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
- RadiusDamage(e2, e, 1000, 0, 128, e, 500, DEATH_CHEAT, world);
+ RadiusDamage(e2, e, 1000, 0, 128, e, 500, DEATH_CHEAT, world, 0);
remove(e2);
}
print("404 Sportsmanship not found.\n");
Modified: branches/nexuiz-2.0/data/qcsrc/server/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2009-07-21 06:58:26 UTC (rev 7248)
@@ -1,5 +1,5 @@
string CVAR_CHECK_DEFAULT = "1247e8cd8be7bda1c260795d5bebb20b";
-string CVAR_CHECK_WEAPONS = "4f7b4c1e2feeef4988b02a93ff35a2ca";
+string CVAR_CHECK_WEAPONS = "a7ca57b891d66754b856e24e5c1745e3";
float FALSE = 0;
float TRUE = 1;
Modified: branches/nexuiz-2.0/data/qcsrc/server/func_breakable.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/func_breakable.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/func_breakable.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -86,7 +86,7 @@
void func_breakable_look_destroyed()
{
local float floor_z;
-
+
if(self.mdl_dead == "")
self.model = "";
else {
@@ -97,7 +97,7 @@
self.origin_z = floor_z;
}
}
-
+
self.solid = SOLID_NOT;
}
@@ -157,7 +157,7 @@
sound (self, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NORM);
if(self.dmg)
- RadiusDamage(self, activator, self.dmg, self.dmg_edge, self.dmg_radius, self, self.dmg_force, DEATH_HURTTRIGGER, world);
+ RadiusDamage(self, activator, self.dmg, self.dmg_edge, self.dmg_radius, self, self.dmg_force, DEATH_HURTTRIGGER, world, 0);
if(self.cnt)
pointparticles(self.cnt, self.absmin * 0.5 + self.absmax * 0.5, '0 0 0', self.count);
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -934,7 +934,8 @@
float RadiusDamage_EnemyDamageDone;
float RadiusDamage_EnemyMaxDamage;
float RadiusDamage_running;
-float RadiusDamage (entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity ignore, float forceintensity, float deathtype, entity directhitentity)
+float RadiusDamage (entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity ignore,
+ float forceintensity, float deathtype, entity directhitentity, float weaponid)
// Returns total damage applies to creatures
{
entity targ;
@@ -1068,15 +1069,16 @@
RadiusDamage_running = 0;
//Calculates stats for all RadiusDamage weapons
+ if(weaponid)
if(clienttype(attacker) == CLIENTTYPE_REAL)
{
float f;
f = min(RadiusDamage_EnemyMaxDamage, RadiusDamage_EnemyDamageDone);
- attacker.actual_damage[attacker.weapon] += f; // actual damage done
+ attacker.actual_damage[weaponid] += f; // actual damage done
//attacker.max_damage[attacker.weapon] += coredamage; // max damage, potential damage
// update the client and store into addstat() in g_world
- attacker.damage_hits = attacker.weapon + 64 * rint(attacker.actual_damage[attacker.weapon]);
- attacker.maxdamage_fired = attacker.weapon + 64 * rint(attacker.max_damage[attacker.weapon]);
+ attacker.damage_hits = weaponid + 64 * rint(attacker.actual_damage[weaponid]);
+ attacker.maxdamage_fired = weaponid + 64 * rint(attacker.max_damage[weaponid]);
}
return total_damage_to_creatures;
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -162,11 +162,8 @@
if (self.wait > 0)
{
- if(self.wait > 0.01)
- {
- self.think = multi_wait;
- self.nextthink = time + self.wait;
- }
+ self.think = multi_wait;
+ self.nextthink = time + self.wait;
}
else
{ // we can't just remove (self) here, because this is a touch function
@@ -268,6 +265,8 @@
self.noise = "misc/trigger1.wav";
}
+ if (!self.wait)
+ self.wait = 0.2;
self.use = multi_use;
EXACTTRIGGER_INIT;
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_world.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_world.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -254,6 +254,7 @@
BADCVAR("g_cts");
BADCVAR("g_runematch");
BADCVAR("g_tdm");
+ BADCVAR("g_nexball");
BADCVAR("teamplay");
// long
@@ -1379,7 +1380,6 @@
float checkrules_suddendeathwarning;
float checkrules_suddendeathend;
float checkrules_overtimesadded; //how many overtimes have been already added
-float checkrules_status;
float WINNING_NO = 0; // no winner, but time limits may terminate the game
float WINNING_YES = 1; // winner found
@@ -1392,7 +1392,7 @@
// - for this timelimit_overtime needs to be >0 of course
// - also check the winning condition calculated in the previous frame and only add normal overtime
// again, if at the point at which timelimit would be extended again, still no winner was found
- if ((checkrules_overtimesadded < cvar("timelimit_overtimes")) && cvar("timelimit_overtime") && (checkrules_status == WINNING_NEVER))
+ if ((checkrules_overtimesadded >= 0) && (checkrules_overtimesadded < cvar("timelimit_overtimes")) && cvar("timelimit_overtime") && !(g_race && !g_race_qualifying))
{
++checkrules_overtimesadded;
//add one more overtime by simply extending the timelimit
@@ -1418,7 +1418,11 @@
else
{
if(!checkrules_suddendeathend)
+ {
checkrules_suddendeathend = time + 60 * cvar("timelimit_suddendeath");
+ if(g_race && !g_race_qualifying)
+ race_StartCompleting();
+ }
}
}
@@ -1713,17 +1717,26 @@
{
float wc;
entity p;
+ float n, c;
+
+ n = 0;
+ c = 0;
+ FOR_EACH_PLAYER(p)
+ {
+ ++n;
+ if(p.race_completed)
+ ++c;
+ }
+ if(n && (n == c))
+ return WINNING_YES;
wc = WinningCondition_Scores(fraglimit, 0);
// ALWAYS initiate overtime, unless EVERYONE has finished the race!
if(wc == WINNING_YES || wc == WINNING_STARTSUDDENDEATHOVERTIME)
// do NOT support equality when the laps are all raced!
- {
- FOR_EACH_PLAYER(p)
- if not(p.race_completed)
- return WINNING_STARTSUDDENDEATHOVERTIME;
- return WINNING_YES;
- }
+ return WINNING_STARTSUDDENDEATHOVERTIME;
+ else
+ return WINNING_NEVER;
return wc;
}
@@ -1884,7 +1897,7 @@
{
if (timelimit && time >= timelimit)
{
- if(g_race && g_race_qualifying == 2 && timelimit > 0)
+ if(g_race && (g_race_qualifying == 2) && timelimit > 0)
{
float totalplayers;
float playerswithlaps;
@@ -1906,6 +1919,7 @@
{
checkrules_suddendeathend = 0;
ReadyRestart(); // go to race
+ return;
}
else
InitiateOvertime();
@@ -1921,6 +1935,7 @@
return;
}
+ float checkrules_status;
checkrules_status = WinningCondition_RanOutOfSpawns();
if(checkrules_status == WINNING_YES)
{
@@ -1929,10 +1944,12 @@
else if(g_race && !g_race_qualifying && timelimit >= 0)
{
checkrules_status = WinningCondition_Race(fraglimit);
+ //print("WC_RACE yields ", ftos(checkrules_status), "\n");
}
else if(g_race && g_race_qualifying == 2 && timelimit >= 0)
{
checkrules_status = WinningCondition_QualifyingThenRace(fraglimit);
+ //print("WC_QUALIFYING_THEN_RACE yields ", ftos(checkrules_status), "\n");
}
else if(g_assault)
{
@@ -1949,11 +1966,13 @@
else
{
checkrules_status = WinningCondition_Scores(fraglimit, leadlimit);
+ //print("WC_SCORES yields ", ftos(checkrules_status), "\n");
}
if(checkrules_status == WINNING_STARTSUDDENDEATHOVERTIME)
{
checkrules_status = WINNING_NEVER;
+ checkrules_overtimesadded = -1;
InitiateOvertime();
}
@@ -1966,7 +1985,10 @@
checkrules_status = WINNING_YES;
if(checkrules_status == WINNING_YES)
+ {
+ //print("WINNING\n");
NextLevel();
+ }
};
float mapvote_nextthink;
Modified: branches/nexuiz-2.0/data/qcsrc/server/havocbot_ons.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/havocbot_ons.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/havocbot_ons.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -38,7 +38,7 @@
for(i = WEP_FIRST; i < WEP_LAST ; ++i)
{
// Find weapon
- if(power2of(i-1) & self.weapons)
+ if((get_weaponinfo(i)).weapons & self.weapons)
if(++c>=4)
break;
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/havocbot_roles.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/havocbot_roles.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/havocbot_roles.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -8,15 +8,29 @@
float havocbot_pickupevalfunc(entity item)
{
float i, j, rating, base, position, need_shells, need_nails, need_rockets, need_cells;
- rating = 0;
+ entity wi;
base = item.bot_pickupbasevalue;
+ rating = 0;
- need_shells = self.weapons & WEPBIT_SHOTGUN;
- need_nails = self.weapons & WEPBIT_UZI;
- need_cells = self.weapons & ( WEPBIT_HOOK | WEPBIT_HLAC | WEPBIT_MINSTANEX | WEPBIT_NEX | WEPBIT_ELECTRO | WEPBIT_CRYLINK );
- need_rockets = self.weapons & ( WEPBIT_ROCKET_LAUNCHER | WEPBIT_GRENADE_LAUNCHER | WEPBIT_HAGAR | WEPBIT_SEEKER );
+ // Detect needed ammo
+ for(i = WEP_FIRST; i < WEP_LAST ; ++i)
+ {
+ wi = get_weaponinfo(i);
+ if not(wi.weapons & self.weapons)
+ continue;
+
+ if(wi.items & IT_SHELLS)
+ need_shells = TRUE;
+ else if(wi.items & IT_NAILS)
+ need_nails = TRUE;
+ else if(wi.items & IT_ROCKETS)
+ need_rockets = TRUE;
+ else if(wi.items & IT_CELLS)
+ need_cells = TRUE;
+ }
+
// Rate ammo items
if (item.ammo_shells)
if (self.ammo_shells < g_pickup_shells_max && need_cells )
@@ -69,7 +83,7 @@
for(i = WEP_FIRST; i < WEP_LAST ; ++i)
{
// Find weapon
- if( power2of(i-1) & item.weapons != item.weapons )
+ if( (get_weaponinfo(i)).weapons & item.weapons != item.weapons )
continue;
// Find the highest position on any range
Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -1964,7 +1964,7 @@
}
}
- if (g_race || g_cts)
+ if (g_race)
{
for (i = 0; i < MapInfo_count; ++i)
{
@@ -1980,6 +1980,22 @@
}
}
+ if (g_cts)
+ {
+ for (i = 0; i < MapInfo_count; ++i)
+ {
+ if (MapInfo_Get_ByID(i))
+ {
+ r = stof(db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, "/ctsrecord/time")));
+ if (r == 0)
+ continue;
+ h = db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, "/ctsrecord/netname"));
+ s = strcat(s, strpad(32, MapInfo_Map_bspname), " ", strpad(-8, mmsss(r)), " ", h, "\n");
+ ++rec;
+ }
+ }
+ }
+
MapInfo_ClearTemps();
if (s == "")
Modified: branches/nexuiz-2.0/data/qcsrc/server/progs.src
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/progs.src 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/progs.src 2009-07-21 06:58:26 UTC (rev 7248)
@@ -104,7 +104,6 @@
w_porto.qc
w_hook.qc
w_hlac.qc
-w_seeker.qc
w_campingrifle.qc
w_tuba.qc
Modified: branches/nexuiz-2.0/data/qcsrc/server/race.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/race.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/race.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -64,10 +64,6 @@
cp = e.race_checkpoint;
recordtime = race_checkpoint_records[cp];
recordholder = race_checkpoint_recordholders[cp];
- /*
- recordtime = stof(db_get(ServerProgsDB, strcat(GetMapname(), "/racerecord/", ftos(cp), "/time")));
- recordholder = db_get(ServerProgsDB, strcat(GetMapname(), "/racerecord/", ftos(cp), "/netname"));
- */
if(recordholder == e.netname)
recordholder = "";
@@ -127,12 +123,7 @@
if(cvar("fraglimit"))
if(l >= cvar("fraglimit"))
- {
- race_completing = 1;
- FOR_EACH_PLAYER(p)
- if(p.deadflag != DEAD_NO)
- race_AbandonRaceCheck(p);
- }
+ race_StartCompleting();
if(race_completing)
{
@@ -167,15 +158,20 @@
{
float grecordtime;
string grecordholder;
- grecordtime = stof(db_get(ServerProgsDB, strcat(GetMapname(), "/racerecord/time")));
- grecordholder = db_get(ServerProgsDB, strcat(GetMapname(), "/racerecord/netname"));
+ string rr;
+ if(g_cts)
+ rr = "/ctsrecord/";
+ else
+ rr = "/racerecord/";
+ grecordtime = stof(db_get(ServerProgsDB, strcat(GetMapname(), rr, "time")));
+ grecordholder = db_get(ServerProgsDB, strcat(GetMapname(), rr, "netname"));
if(grecordholder == e.netname)
grecordholder = "";
if(grecordtime == 0)
{
bprint(e.netname, "^7 set the all-time fastest lap record with ", mmsss(t), "\n");
- db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/time"), ftos(t));
- db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/netname"), e.netname);
+ db_put(ServerProgsDB, strcat(GetMapname(), rr, "time"), ftos(t));
+ db_put(ServerProgsDB, strcat(GetMapname(), rr, "netname"), e.netname);
write_recordmarker(e, time - t/10, t/10);
}
else if(t < grecordtime)
@@ -184,8 +180,8 @@
bprint(e.netname, "^7 broke his all-time fastest lap record with ", mmsss(t), "\n");
else
bprint(e.netname, "^7 broke ", grecordholder, "^7's all-time fastest lap record with ", mmsss(t), "\n");
- db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/time"), ftos(t));
- db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/netname"), e.netname);
+ db_put(ServerProgsDB, strcat(GetMapname(), rr, "time"), ftos(t));
+ db_put(ServerProgsDB, strcat(GetMapname(), rr, "netname"), e.netname);
write_recordmarker(e, time - t/10, t/10);
}
else
@@ -561,6 +557,15 @@
}
}
+void race_StartCompleting()
+{
+ entity p;
+ race_completing = 1;
+ FOR_EACH_PLAYER(p)
+ if(p.deadflag != DEAD_NO)
+ race_AbandonRaceCheck(p);
+}
+
void race_PreparePlayer()
{
race_ClearTime(self);
@@ -719,12 +724,6 @@
void penalty_touch()
{
EXACTTRIGGER_TOUCH;
- race_ImposePenaltyTime(other, self.race_penalty, self.race_penalty_reason);
-}
-
-void penalty_use()
-{
- other = activator;
if(other.race_lastpenalty != self)
{
other.race_lastpenalty = self;
@@ -732,6 +731,11 @@
}
}
+void penalty_use()
+{
+ race_ImposePenaltyTime(activator, self.race_penalty, self.race_penalty_reason);
+}
+
void spawnfunc_trigger_race_penalty()
{
EXACTTRIGGER_INIT;
Modified: branches/nexuiz-2.0/data/qcsrc/server/race.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/race.qh 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/race.qh 2009-07-21 06:58:26 UTC (rev 7248)
@@ -18,3 +18,4 @@
.float race_completed;
float race_completing;
void race_ImposePenaltyTime(entity pl, float penalty, string reason);
+void race_StartCompleting();
Modified: branches/nexuiz-2.0/data/qcsrc/server/scores.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/scores.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/scores.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -458,6 +458,7 @@
else
WinningConditionHelper_topscore = -999999999;
}
+ WinningConditionHelper_equality = 0;
}
if(WinningConditionHelper_secondscore == 0)
Modified: branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -331,9 +331,6 @@
qualifying_override = cvar("g_race_qualifying_timelimit_override");
fraglimit_override = cvar("g_race_laps_limit");
leadlimit_override = 0; // currently not supported by race
-
- if(g_race_qualifying)
- independent_players = 1;
}
if(g_cts)
@@ -380,8 +377,12 @@
if(g_race)
{
// we need to find out the correct value for g_race_qualifying
- if(!cvar("g_campaign") && cvar("g_race_qualifying_timelimit") > 0)
+ if(cvar("g_campaign"))
{
+ g_race_qualifying = 1;
+ }
+ else if(!cvar("g_campaign") && cvar("g_race_qualifying_timelimit") > 0)
+ {
g_race_qualifying = 2;
race_fraglimit = cvar("fraglimit");
race_leadlimit = cvar("leadlimit");
Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_ewheel.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_ewheel.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_ewheel.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -8,11 +8,11 @@
#ifdef TURRET_DEBUG
float d;
- d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; //self.owner.shot_dmg;
self.owner.tur_dbg_dmg_t_f = self.owner.tur_dbg_dmg_t_f + self.owner.shot_dmg;
#else
- RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
#endif
sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_flac.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_flac.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_flac.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -74,11 +74,11 @@
#ifdef TURRET_DEBUG
- ftmp = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ ftmp = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + ftmp; //self.owner.shot_dmg;
self.owner.tur_dbg_dmg_t_f = self.owner.tur_dbg_dmg_t_f + self.owner.shot_dmg;
#else
- RadiusDamage (self, self.owner, self.owner.shot_dmg, self.owner.shot_dmg * 0.5, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ RadiusDamage (self, self.owner, self.owner.shot_dmg, self.owner.shot_dmg * 0.5, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
#endif
remove (self);
Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_hellion.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_hellion.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_hellion.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -161,7 +161,7 @@
//w_deathtypestring = "could not dodge the twin missiles.";
self.event_damage = SUB_Null;
- d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
#ifdef TURRET_DEBUG
self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; //self.owner.shot_dmg;
Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_hk.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_hk.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_hk.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -376,7 +376,7 @@
WriteCoord (MSG_BROADCAST, org2_z);
self.event_damage = SUB_Null;
- d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
#ifdef TURRET_DEBUG
self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; //self.owner.shot_dmg;
Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_mlrs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_mlrs.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_mlrs.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -81,11 +81,11 @@
#ifdef TURRET_DEBUG
float d;
- d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; //self.owner.shot_dmg;
self.owner.tur_dbg_dmg_t_f = self.owner.tur_dbg_dmg_t_f + self.owner.shot_dmg;
#else
- RadiusDamage (self, self.owner, self.owner.shot_dmg, self.owner.shot_dmg * 0.5, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ RadiusDamage (self, self.owner, self.owner.shot_dmg, self.owner.shot_dmg * 0.5, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
#endif
// Target dead, Tell turret.
Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_plasma.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_plasma.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_plasma.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -104,11 +104,11 @@
#ifdef TURRET_DEBUG
float d;
- d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; //self.owner.shot_dmg;
self.owner.tur_dbg_dmg_t_f = self.owner.tur_dbg_dmg_t_f + self.owner.shot_dmg;
#else
- RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world);
+ RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET, world, 0);
#endif
sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_walker.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_walker.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/unit_walker.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -278,7 +278,7 @@
pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
//w_deathtypestring = "got blasted to oblivion";
- RadiusDamage (self, self.owner, cvar("g_turrets_unit_walker_std_rocket_dmg"), 0, cvar("g_turrets_unit_walker_std_rocket_radius"), world, cvar("g_turrets_unit_walker_std_rocket_force"), DEATH_TURRET, world);
+ RadiusDamage (self, self.owner, cvar("g_turrets_unit_walker_std_rocket_dmg"), 0, cvar("g_turrets_unit_walker_std_rocket_radius"), world, cvar("g_turrets_unit_walker_std_rocket_force"), DEATH_TURRET, world, 0);
remove (self);
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_crylink.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -15,7 +15,7 @@
f = cvar("g_balance_crylink_primary_bouncedamagefactor");
if(self.alpha)
f *= self.alpha;
- RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, self.projectiledeathtype, other);
+ RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, self.projectiledeathtype, other, WEP_CRYLINK);
if (finalhit)
{
remove (self);
@@ -42,7 +42,7 @@
f = cvar("g_balance_crylink_secondary_bouncedamagefactor");
if(self.alpha)
f *= self.alpha;
- RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, self.projectiledeathtype, other);
+ RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, self.projectiledeathtype, other, WEP_CRYLINK);
if (finalhit)
{
remove (self);
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -11,11 +11,11 @@
self.event_damage = SUB_Null;
if (self.movetype == MOVETYPE_BOUNCE)
{
- RadiusDamage (self, self.owner, cvar("g_balance_electro_secondary_damage"), cvar("g_balance_electro_secondary_edgedamage"), cvar("g_balance_electro_secondary_radius"), world, cvar("g_balance_electro_secondary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.owner, cvar("g_balance_electro_secondary_damage"), cvar("g_balance_electro_secondary_edgedamage"), cvar("g_balance_electro_secondary_radius"), world, cvar("g_balance_electro_secondary_force"), self.projectiledeathtype, other, WEP_ELECTRO);
}
else
{
- RadiusDamage (self, self.owner, cvar("g_balance_electro_primary_damage"), cvar("g_balance_electro_primary_edgedamage"), cvar("g_balance_electro_primary_radius"), world, cvar("g_balance_electro_primary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.owner, cvar("g_balance_electro_primary_damage"), cvar("g_balance_electro_primary_edgedamage"), cvar("g_balance_electro_primary_radius"), world, cvar("g_balance_electro_primary_force"), self.projectiledeathtype, other, WEP_ELECTRO);
}
remove (self);
@@ -23,7 +23,7 @@
void W_Plasma_Explode_Combo (void) {
self.event_damage = SUB_Null;
- RadiusDamage (self, self.owner, cvar("g_balance_electro_combo_damage"), cvar("g_balance_electro_combo_edgedamage"), cvar("g_balance_electro_combo_radius"), world, cvar("g_balance_electro_combo_force"), WEP_ELECTRO | HITTYPE_BOUNCE, other); // use THIS type for a combo because primary can't bounce
+ RadiusDamage (self, self.owner, cvar("g_balance_electro_combo_damage"), cvar("g_balance_electro_combo_edgedamage"), cvar("g_balance_electro_combo_radius"), world, cvar("g_balance_electro_combo_force"), WEP_ELECTRO | HITTYPE_BOUNCE, other, WEP_ELECTRO); // use THIS type for a combo because primary can't bounce
remove (self);
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -8,7 +8,7 @@
announce(self.owner, "announcer/male/airshot.wav");
self.event_damage = SUB_Null;
- RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_primary_damage"), cvar("g_balance_grenadelauncher_primary_edgedamage"), cvar("g_balance_grenadelauncher_primary_radius"), world, cvar("g_balance_grenadelauncher_primary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_primary_damage"), cvar("g_balance_grenadelauncher_primary_edgedamage"), cvar("g_balance_grenadelauncher_primary_radius"), world, cvar("g_balance_grenadelauncher_primary_force"), self.projectiledeathtype, other, WEP_GRENADE_LAUNCHER);
remove (self);
}
@@ -22,7 +22,7 @@
announce(self.owner, "announcer/male/airshot.wav");
self.event_damage = SUB_Null;
- RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_secondary_damage"), cvar("g_balance_grenadelauncher_secondary_edgedamage"), cvar("g_balance_grenadelauncher_secondary_radius"), world, cvar("g_balance_grenadelauncher_secondary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_secondary_damage"), cvar("g_balance_grenadelauncher_secondary_edgedamage"), cvar("g_balance_grenadelauncher_secondary_radius"), world, cvar("g_balance_grenadelauncher_secondary_force"), self.projectiledeathtype, other, WEP_GRENADE_LAUNCHER);
remove (self);
}
@@ -103,7 +103,7 @@
gren.angles = vectoangles (gren.velocity);
gren.flags = FL_PROJECTILE;
- CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE, TRUE);
+ CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE, TRUE);
}
void W_Grenade_Attack2 (void)
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -2,7 +2,7 @@
void W_Hagar_Explode (void)
{
self.event_damage = SUB_Null;
- RadiusDamage (self, self.realowner, cvar("g_balance_hagar_primary_damage"), cvar("g_balance_hagar_primary_edgedamage"), cvar("g_balance_hagar_primary_radius"), world, cvar("g_balance_hagar_primary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.realowner, cvar("g_balance_hagar_primary_damage"), cvar("g_balance_hagar_primary_edgedamage"), cvar("g_balance_hagar_primary_radius"), world, cvar("g_balance_hagar_primary_force"), self.projectiledeathtype, other, WEP_HAGAR);
remove (self);
}
@@ -10,7 +10,7 @@
void W_Hagar_Explode2 (void)
{
self.event_damage = SUB_Null;
- RadiusDamage (self, self.realowner, cvar("g_balance_hagar_secondary_damage"), cvar("g_balance_hagar_secondary_edgedamage"), cvar("g_balance_hagar_secondary_radius"), world, cvar("g_balance_hagar_secondary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.realowner, cvar("g_balance_hagar_secondary_damage"), cvar("g_balance_hagar_secondary_edgedamage"), cvar("g_balance_hagar_secondary_radius"), world, cvar("g_balance_hagar_secondary_force"), self.projectiledeathtype, other, WEP_HAGAR);
remove (self);
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -5,7 +5,7 @@
self.event_damage = SUB_Null;
- RadiusDamage (self, self.owner, cvar("g_balance_hlac_primary_damage"), cvar("g_balance_hlac_primary_edgedamage"), cvar("g_balance_hlac_primary_radius"), world, cvar("g_balance_hlac_primary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.owner, cvar("g_balance_hlac_primary_damage"), cvar("g_balance_hlac_primary_edgedamage"), cvar("g_balance_hlac_primary_radius"), world, cvar("g_balance_hlac_primary_force"), self.projectiledeathtype, other, WEP_HLAC);
remove (self);
}
@@ -16,7 +16,7 @@
self.event_damage = SUB_Null;
- RadiusDamage (self, self.owner, cvar("g_balance_hlac_secondary_damage"), cvar("g_balance_hlac_secondary_edgedamage"), cvar("g_balance_hlac_secondary_radius"), world, cvar("g_balance_hlac_secondary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.owner, cvar("g_balance_hlac_secondary_damage"), cvar("g_balance_hlac_secondary_edgedamage"), cvar("g_balance_hlac_secondary_radius"), world, cvar("g_balance_hlac_secondary_force"), self.projectiledeathtype, other, WEP_HLAC);
remove (self);
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -19,7 +19,7 @@
f = self.dmg_last - dmg_remaining_next;
self.dmg_last = dmg_remaining_next;
- RadiusDamage (self, self.owner, self.dmg * f, self.dmg_edge * f, self.dmg_radius, self.owner, self.dmg_force * f, self.projectiledeathtype, world);
+ RadiusDamage (self, self.owner, self.dmg * f, self.dmg_edge * f, self.dmg_radius, self.owner, self.dmg_force * f, self.projectiledeathtype, world, WEP_HOOK);
self.projectiledeathtype |= HITTYPE_BOUNCE;
//RadiusDamage (self, world, self.dmg * f, self.dmg_edge * f, self.dmg_radius, world, self.dmg_force * f, self.projectiledeathtype, world);
@@ -105,7 +105,7 @@
float w_hook(float req)
{
float hooked_time_max, hooked_fuel;
-
+
if (req == WR_AIM)
{
// ... sorry ...
@@ -123,7 +123,7 @@
if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
self.ammo_fuel = self.ammo_fuel - cvar("g_balance_hook_primary_fuel");
self.hook_state |= HOOK_FIRING;
- weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_hook_primary_animtime"), w_ready);
+ weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_hook_primary_animtime"), w_ready);
}
}
@@ -148,13 +148,13 @@
if(self.hook && self.hook.state == 1)
{
- hooked_time_max = cvar("g_balance_hook_primary_hooked_time_max");
+ hooked_time_max = cvar("g_balance_hook_primary_hooked_time_max");
if (hooked_time_max > 0)
{
if ( time > self.hook_time_hooked + hooked_time_max )
self.hook_state |= HOOK_REMOVING;
}
-
+
hooked_fuel = cvar("g_balance_hook_primary_hooked_fuel");
if (hooked_fuel > 0)
{
@@ -180,7 +180,7 @@
}
else
{
- self.hook_time_hooked = time;
+ self.hook_time_hooked = time;
self.hook_time_fueldecrease = time + cvar("g_balance_hook_primary_hooked_time_free");
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -6,9 +6,9 @@
self.event_damage = SUB_Null;
if (self.dmg)
- RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), self.projectiledeathtype, other, WEP_LASER);
else
- RadiusDamage (self, self.owner, cvar("g_balance_laser_primary_damage"), cvar("g_balance_laser_primary_edgedamage"), cvar("g_balance_laser_primary_radius"), world, cvar("g_balance_laser_primary_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.owner, cvar("g_balance_laser_primary_damage"), cvar("g_balance_laser_primary_edgedamage"), cvar("g_balance_laser_primary_radius"), world, cvar("g_balance_laser_primary_force"), self.projectiledeathtype, other, WEP_LASER);
remove (self);
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -15,7 +15,7 @@
W_Rocket_Unregister();
self.event_damage = SUB_Null;
- RadiusDamage (self, self.owner, cvar("g_balance_rocketlauncher_damage"), cvar("g_balance_rocketlauncher_edgedamage"), cvar("g_balance_rocketlauncher_radius"), world, cvar("g_balance_rocketlauncher_force"), self.projectiledeathtype, other);
+ RadiusDamage (self, self.owner, cvar("g_balance_rocketlauncher_damage"), cvar("g_balance_rocketlauncher_edgedamage"), cvar("g_balance_rocketlauncher_radius"), world, cvar("g_balance_rocketlauncher_force"), self.projectiledeathtype, other, WEP_ROCKET_LAUNCHER);
if (self.owner.weapon == WEP_ROCKET_LAUNCHER)
{
Deleted: branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -1,481 +0,0 @@
-//.float speed; = switchweapon
-//.float proxytime; = autoswitch
-//.float tl; = wait
-
-void Seeker_Missile_Explode ()
-{
- self.event_damage = SUB_Null;
- RadiusDamage (self, self.owner, cvar("g_balance_seeker_missile_damage"), cvar("g_balance_seeker_missile_edgedamage"), cvar("g_balance_seeker_missile_radius"), world, cvar("g_balance_seeker_missile_force"), self.projectiledeathtype, other);
-
- remove (self);
-}
-
-void Seeker_Missile_Touch()
-{
- PROJECTILE_TOUCH;
-
- Seeker_Missile_Explode();
-}
-
-void Seeker_Missile_Think()
-{
- entity e;
- vector desireddir, olddir, newdir, eorg;
- float turnrate;
- float dist;
-
- if (time > self.cnt)
- Seeker_Missile_Explode();
-
- if (!self.switchweapon)
- self.switchweapon = cvar("g_balance_seeker_missile_speed");
-
- if ((self.switchweapon < cvar("g_balance_seeker_missile_speed_max")) && cvar("g_balance_seeker_missile_speed_accel"))
- self.switchweapon = self.switchweapon * cvar("g_balance_seeker_missile_accel");
-
- if (self.switchweapon > cvar("g_balance_seeker_missile_speed_max"))
- self.switchweapon = self.switchweapon * cvar("g_balance_seeker_missile_decel");
-
- if (self.enemy != world)
- if (self.enemy.takedamage != DAMAGE_AIM || self.enemy.deadflag != DEAD_NO)
- self.enemy = world;
-
- if (self.enemy != world)
- {
- e = self.enemy;
- eorg = 0.5 * (e.absmin + e.absmax);
- turnrate = cvar("g_balance_seeker_missile_turnrate"); // how fast to turn
- desireddir = normalize(eorg - self.origin);
- olddir = normalize(self.velocity); // get my current direction
- dist = vlen(eorg - self.origin);
-
- // Do evasive maneuvers for world objects? ( this should be a cpu hog. :P )
- if (cvar("g_balance_seeker_missile_smart") && (dist > cvar("g_balance_seeker_missile_smart_mindist")))
- {
- // Is it a better idea (shorter distance) to trace to the target itself?
- if ( vlen(self.origin + olddir * self.wait) < dist)
- traceline(self.origin, self.origin + olddir * self.wait, FALSE, self);
- else
- traceline(self.origin, eorg, FALSE, self);
-
- // Setup adaptive tracelength
- self.wait = vlen(self.origin - trace_endpos);
- if (self.wait < cvar("g_balance_seeker_missile_smart_trace_min")) self.wait = cvar("g_balance_seeker_missile_smart_trace_min");
- if (self.wait > cvar("g_balance_seeker_missile_smart_trace_max")) self.wait = cvar("g_balance_seeker_missile_smart_trace_max");
-
- // Calc how important it is that we turn and add this to the desierd (enemy) dir.
- desireddir = normalize(((trace_plane_normal * (1 - trace_fraction)) + (desireddir * trace_fraction)) * 0.5);
- }
-
- //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 * self.switchweapon; // make me fly in the new direction at my flight speed
- }
-
- // Proxy
- if (cvar("g_balance_seeker_missile_proxy"))
- {
- if ( dist <= cvar("g_balance_seeker_missile_proxy_maxrange"))
- {
- if (self.autoswitch == 0)
- {
- self.autoswitch = time + cvar("g_balance_seeker_missile_proxy_delay");
- }
- else
- {
- if (self.autoswitch <= time)
- {
- Seeker_Missile_Explode();
- self.autoswitch = 0;
- }
- }
- }
- else
- {
- if (self.autoswitch != 0)
- self.autoswitch = 0;
- }
- }
- ///////////////
-
- if (self.enemy.deadflag != DEAD_NO)
- {
- self.enemy = world;
- self.cnt = time + 1 + (random() * 4);
- self.nextthink = self.cnt;
- return;
- }
-
- self.angles = vectoangles(self.velocity); // turn model in the new flight direction
- self.nextthink = time + 0.05;
-
- UpdateCSQCProjectile(self);
-}
-
-
-
-void Seeker_Missile_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
-{
- float d;
- d = damage;
-
- if (self.health <= 0)
- return;
-
- if (self.owner == attacker)
- d = d * 0.25;
-
- self.health = self.health - d;
-
- if (self.health <= 0)
- W_PrepareExplosionByDamage(attacker, Seeker_Missile_Explode);
-}
-
-void Seeker_Missile_Animate()
-{
- self.frame = self.frame +1;
- self.nextthink = time + 0.05;
-
- if (self.enemy != world)
- if (self.enemy.takedamage != DAMAGE_AIM || self.enemy.deadflag != DEAD_NO)
- self.enemy = world;
-
- if(self.frame == 5)
- {
- self.think = Seeker_Missile_Think;
- self.nextthink = time;// + cvar("g_balance_seeker_missile_activate_delay"); // cant dealy with csqc projectiles
-
- if (cvar("g_balance_seeker_guided_proxy"))
- self.movetype = MOVETYPE_BOUNCEMISSILE;
- else
- self.movetype = MOVETYPE_FLYMISSILE;
- }
-
- UpdateCSQCProjectile(self);
-}
-
-void Seeker_Fire_Missile(vector f_diff)
-{
- local entity missile;
-
- if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
- self.ammo_rockets = self.ammo_rockets - cvar("g_balance_seeker_missile_ammo");
-
- makevectors(self.v_angle);
- W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/seeker_fire.wav", cvar("g_balance_seeker_missile_damage"));
- w_shotorg += f_diff;
- pointparticles(particleeffectnum("seeker_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
-
- //self.detornator = FALSE;
-
- missile = spawn();
- missile.owner = self;
- missile.classname = "seeker_missile";
- missile.bot_dodge = TRUE;
- missile.bot_dodgerating = cvar("g_balance_seeker_missile_damage");
-
- missile.think = Seeker_Missile_Animate;
-
- //if (!cvar("g_balance_seeker_missile_proxy"))
- missile.touch = Seeker_Missile_Touch;
-
- missile.event_damage = Seeker_Missile_Damage;
- missile.nextthink = time;// + 0.2;// + cvar("g_balance_seeker_missile_activate_delay");
- missile.cnt = time + cvar("g_balance_seeker_missile_lifetime");
- missile.enemy = self.enemy;
- missile.switchweapon = cvar("g_balance_seeker_missile_speed");
- missile.solid = SOLID_BBOX;
- missile.scale = 2;
- missile.takedamage = DAMAGE_YES;
- missile.health = cvar("g_balance_seeker_missile_health");
- missile.damageforcescale = cvar("g_balance_seeker_missile_damageforcescale");
- missile.projectiledeathtype = WEP_SEEKER;
-
- setorigin (missile, w_shotorg);
- setsize (missile, '-4 -4 -4', '4 4 4');
-
-
- missile.movetype = MOVETYPE_FLYMISSILE;// MOVETYPE_TOSS;
-
- missile.flags = FL_PROJECTILE;
-
- missile.velocity = (w_shotdir + '0 0 0.45') * missile.switchweapon;
- W_SetupProjectileVelocity(missile);
-
- missile.switchweapon = vlen(missile.velocity);
- missile.angles = vectoangles (missile.velocity);
-
- CSQCProjectile(missile, FALSE, PROJECTILE_SEEKER, TRUE);
-}
-
-void Seeker_Vollycontroler_Think()
-{
- float c;
- entity oldself,oldenemy;
- self.cnt = self.cnt - 1;
-
- if ((self.owner.ammo_rockets < cvar("g_balance_seeker_missile_ammo")) || (self.cnt <= -1) || (self.owner.deadflag != DEAD_NO))
- {
- remove(self);
- return;
- }
-
- self.nextthink = time + cvar("g_balance_seeker_missile_delay");
-
- oldself = self;
- self = self.owner;
-
- oldenemy = self.enemy;
- self.enemy = oldself.enemy;
-
- c = mod(oldself.cnt, 4);
- switch(c)
- {
- case 0:
- Seeker_Fire_Missile('-1.25 -3.75 0');
- break;
- case 1:
- Seeker_Fire_Missile('+1.25 -3.75 0');
- break;
- case 2:
- Seeker_Fire_Missile('-1.25 +3.75 0');
- break;
- case 3:
- default:
- Seeker_Fire_Missile('+1.25 +3.75 0');
- break;
- }
-
- self.enemy = oldenemy;
- self = oldself;
-}
-
-void Seeker_Tag_Explode ()
-{
- //if(other==self.owner)
- // return;
- Damage_DamageInfo(self.origin, 0, 0, 0, self.velocity, WEP_SEEKER | HITTYPE_BOUNCE, self);
-
- remove (self);
-}
-
-void Seeker_Tag_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
-{
- if (self.health <= 0)
- return;
- self.health = self.health - damage;
- if (self.health <= 0)
- Seeker_Tag_Explode();
-}
-
-void Seeker_Tag_Think()
-{
- remove(self);
- return;
-}
-
-void Seeker_Tag_Touch()
-{
- vector dir;
- vector org2;
-
- dir = normalize (self.owner.origin - self.origin);
- org2 = findbetterlocation (self.origin, 8);
-
- te_knightspike(org2);
-
- self.event_damage = SUB_Null;
- Damage_DamageInfo(self.origin, 0, 0, 0, self.velocity, WEP_SEEKER | HITTYPE_HEADSHOT, self);
-
- if (other.takedamage == DAMAGE_AIM && other.deadflag == DEAD_NO)
- {
- entity e;
- e = spawn();
- e.cnt = cvar("g_balance_seeker_missile_count");
- e.owner = self.owner;
- e.enemy = other;
- e.think = Seeker_Vollycontroler_Think;
- e.nextthink = time;
-
- //sprint(self.owner, "^1Target lock ^3[^7 ",other.netname, " ^3]^1 acquired - autofire activated.\n");
- //sprint(other,"^1You are targeted!\n");
-
- // stuffcmd(other,"play2 weapons/zany-alarm4.ogg\n");
- // stuffcmd(self.owner, "play2 weapons/zany-lock4.ogg\n");
- }
-
- remove(self);
- return;
-}
-
-
-
-void Seeker_Fire_Tag()
-{
- local entity missile;
- if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
- self.ammo_rockets = self.ammo_rockets - cvar("g_balance_seeker_tag_ammo");
-
- W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/tag_fire.wav", 0);
-
- missile = spawn();
- missile.owner = self;
- missile.classname = "seeker_tag";
- missile.bot_dodge = TRUE;
- missile.bot_dodgerating = 50;
- missile.touch = Seeker_Tag_Touch;
- missile.think = Seeker_Tag_Think;
- missile.nextthink = time + cvar("g_balance_seeker_tag_lifetime");
- missile.movetype = MOVETYPE_FLY;
- missile.solid = SOLID_BBOX;
- missile.owner = self;
-
- missile.takedamage = DAMAGE_YES;
- missile.event_damage = Seeker_Tag_Explode;
- missile.health = cvar("g_balance_seeker_tag_health");
- missile.damageforcescale = cvar("g_balance_seeker_tag_damageforcescale");
-
- setorigin (missile, w_shotorg);
- setsize (missile, '-2 -2 -2', '2 2 2');
-
- missile.flags = FL_PROJECTILE;
-
- missile.velocity = w_shotdir * cvar("g_balance_seeker_tag_speed");
- missile.movetype = MOVETYPE_FLY;
- W_SetupProjectileVelocity(missile);
- missile.angles = vectoangles (missile.velocity);
-
- CSQCProjectile(missile, TRUE, PROJECTILE_TAG, FALSE); // has sound
-}
-
-
-void Seeker_Flac_Explode ()
-{
- self.event_damage = SUB_Null;
-
- RadiusDamage (self, self.owner, cvar("g_balance_seeker_flac_damage"), cvar("g_balance_seeker_flac_edgedamage"), cvar("g_balance_seeker_flac_radius"), world, cvar("g_balance_seeker_flac_force"), self.projectiledeathtype, other);
-
- remove (self);
-}
-
-void Seeker_Flac_Touch()
-{
- PROJECTILE_TOUCH;
-
- Seeker_Flac_Explode();
-}
-
-void Seeker_Fire_Flac()
-{
- local entity missile;
- vector f_diff;
- float c;
-
- if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
- self.ammo_rockets = self.ammo_rockets - cvar("g_balance_seeker_flac_ammo");
-
- c = mod(self.bulletcounter, 4);
- switch(c)
- {
- case 0:
- f_diff = '-1.25 -3.75 0';
- break;
- case 1:
- f_diff = '+1.25 -3.75 0';
- break;
- case 2:
- f_diff = '-1.25 +3.75 0';
- break;
- case 3:
- default:
- f_diff = '+1.25 +3.75 0';
- break;
- }
- W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/flac_fire.wav", cvar("g_balance_seeker_flac_damage"));
- w_shotorg += f_diff;
-
- pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
-
- missile = spawn ();
- missile.owner = missile.realowner = self;
- missile.classname = "missile";
- missile.bot_dodge = TRUE;
- missile.bot_dodgerating = cvar("g_balance_seeker_flac_damage");
- missile.touch = Seeker_Flac_Explode;
- missile.use = Seeker_Flac_Explode;
- missile.think = Seeker_Flac_Explode;
- missile.nextthink = time + cvar("g_balance_seeker_flac_lifetime") + cvar("g_balance_seeker_flac_lifetime_rand");
- missile.solid = SOLID_BBOX;
- 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;
- w_shotdir = w_shotdir + '0 0 0.3';
- missile.velocity = (w_shotdir + randomvec() * cvar("g_balance_seeker_flac_spread")) * cvar("g_balance_seeker_flac_speed");
-
- W_SetupProjectileVelocity(missile);
-
- missile.angles = vectoangles (missile.velocity);
- missile.flags = FL_PROJECTILE;
-
- CSQCProjectile(missile, TRUE, PROJECTILE_FLAC, TRUE);
-}
-
-void spawnfunc_weapon_seeker (void)
-{
- weapon_defaultspawnfunc(WEP_SEEKER);
-}
-
-float w_seeker(float req)
-{
- if (req == WR_AIM)
- self.BUTTON_ATCK = bot_aim(cvar("g_balance_seeker_tag_speed"), 0, 20, FALSE);
-
- else if (req == WR_THINK)
- {
- if (self.BUTTON_ATCK)
- if (weapon_prepareattack(0, cvar("g_balance_seeker_tag_refire")))
- {
- Seeker_Fire_Tag();
- weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_seeker_tag_animtime"), w_ready);
- }
-
- if (self.BUTTON_ATCK2)
- if (weapon_prepareattack(1, cvar("g_balance_seeker_flac_refire")))
- {
- Seeker_Fire_Flac();
- weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_seeker_flac_animtime"), w_ready);
- }
-
- }
- else if (req == WR_PRECACHE)
- {
- precache_model ("models/weapons/g_seeker.md3");
- precache_model ("models/weapons/v_seeker.md3");
- precache_model ("models/weapons/h_seeker.dpm");
- precache_sound ("weapons/tag_fire.wav");
- precache_sound ("weapons/flac_fire.wav");
- precache_sound ("weapons/seeker_fire.wav");
- }
- else if (req == WR_SETUP)
- weapon_setup(WEP_SEEKER);
- else if (req == WR_CHECKAMMO1)
- return self.ammo_rockets >= cvar("g_balance_seeker_tag_ammo") + cvar("g_balance_seeker_missile_ammo");
- else if (req == WR_CHECKAMMO2)
- return self.ammo_rockets >= cvar("g_balance_seeker_flac_ammo");
- else if (req == WR_SUICIDEMESSAGE)
- w_deathtypestring = "played with tiny rockets";
- else if (req == WR_KILLMESSAGE)
- {
- if(w_deathtype & HITTYPE_SECONDARY)
- w_deathtypestring = "ran into #'s flac";
- else
- w_deathtypestring = "was tagged by";
- }
- return TRUE;
-};
-
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_tuba.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_tuba.qc 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_tuba.qc 2009-07-21 06:58:26 UTC (rev 7248)
@@ -37,7 +37,7 @@
note += 12;
if(hittype & HITTYPE_SECONDARY)
note += 7;
-
+
// we support two kinds of tubas, those tuned in Eb and those tuned in C
// kind of tuba currently is player slot number, or team number if in
// teamplay
@@ -52,7 +52,7 @@
if(pl.clientcolors & 1)
note += 3;
}
-
+
// total range of notes:
// 0
// *** ** ****
@@ -84,7 +84,7 @@
c = CHAN_WEAPON2;
}
sound(self, c, TUBA_NOTE(Tuba_GetNote(self, hittype)), bound(0, VOL_BASE * cvar("g_balance_tuba_volume"), 1), cvar("g_balance_tuba_attenuation"));
- RadiusDamage(self, self, cvar("g_balance_tuba_damage"), cvar("g_balance_tuba_edgedamage"), cvar("g_balance_tuba_radius"), world, cvar("g_balance_tuba_force"), hittype | WEP_TUBA, world);
+ RadiusDamage(self, self, cvar("g_balance_tuba_damage"), cvar("g_balance_tuba_edgedamage"), cvar("g_balance_tuba_radius"), world, cvar("g_balance_tuba_force"), hittype | WEP_TUBA, world, WEP_TUBA);
o = gettaginfo(self.exteriorweaponentity, 0);
pointparticles(particleeffectnum("smoke_ring"), o + v_up * 45 + v_right * -6 + v_forward * 8, v_up * 100, 1);
Deleted: branches/nexuiz-2.0/data/sound/weapons/flac_fire.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/flacexp1.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/flacexp2.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/flacexp3.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/seeker_fire.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/seekerexp1.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/seekerexp2.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/seekerexp3.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/tag_fire.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/tag_impact.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/tag_rocket_fly.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/tagexp1.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/tagexp2.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/sound/weapons/tagexp3.ogg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/seeker.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/seeker_gloss.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/seeker_glow.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/seeker_norm.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/seeker_pants.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/weapons.cfg
===================================================================
--- branches/nexuiz-2.0/data/weapons.cfg 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/weapons.cfg 2009-07-21 06:58:26 UTC (rev 7248)
@@ -3,7 +3,7 @@
//
// And... don't forget to edit weaponsHavoc.cfg too.
-set cvar_check_weapons 4f7b4c1e2feeef4988b02a93ff35a2ca
+set cvar_check_weapons a7ca57b891d66754b856e24e5c1745e3
// NOTE: this only replaces weapons on the map
// use g_start_weapon_* to also replace the on-startup weapons!
@@ -21,7 +21,6 @@
set g_weaponreplace_porto ""
set g_weaponreplace_minstanex ""
set g_weaponreplace_hook ""
-set g_weaponreplace_seeker ""
set g_weaponreplace_hlac ""
set g_weaponreplace_campingrifle ""
set g_weaponreplace_tuba ""
@@ -40,7 +39,6 @@
set g_start_weapon_porto -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_hook -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_hlac -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
-set g_start_weapon_seeker -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_campingrifle -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_ammo_shells 40
@@ -337,65 +335,6 @@
set g_balance_hlac_secondary_ammo 10
set g_balance_hlac_secondary_shots 6
-
-// TAG Seeker
-set g_balance_seeker_tag_speed 9000
-set g_balance_seeker_tag_ammo 1
-set g_balance_seeker_tag_animtime 0.3
-set g_balance_seeker_tag_refire 0.7
-set g_balance_seeker_tag_health 5
-set g_balance_seeker_tag_damageforcescale 4
-set g_balance_seeker_tag_lifetime 15
-
-set g_balance_seeker_missile_delay 0.25
-//set g_balance_seeker_missile_activate_delay 0.1
-
-set g_balance_seeker_missile_speed 700
-set g_balance_seeker_missile_accel 1.05
-set g_balance_seeker_missile_decel 0.9
-
-set g_balance_seeker_missile_speed_max 1250
-set g_balance_seeker_missile_turnrate 0.65
-
-set g_balance_seeker_missile_damage 40
-set g_balance_seeker_missile_edgedamage 10
-set g_balance_seeker_missile_radius 80
-set g_balance_seeker_missile_force 250
-
-set g_balance_seeker_missile_count 4
-set g_balance_seeker_missile_lifetime 15
-set g_balance_seeker_missile_refire 0.5
-set g_balance_seeker_missile_animtime 0.3
-set g_balance_seeker_missile_ammo 2
-set g_balance_seeker_missile_health 5
-set g_balance_seeker_missile_damageforcescale 4
-
-set g_balance_seeker_missile_proxy 0
-set g_balance_seeker_missile_proxy_maxrange 45
-set g_balance_seeker_missile_proxy_delay 0.2
-
-// World avoidance
-set g_balance_seeker_missile_smart 1
-set g_balance_seeker_missile_smart_mindist 800
-set g_balance_seeker_missile_smart_trace_max 2500
-set g_balance_seeker_missile_smart_trace_min 1000
-// End new seeker
-
-
-set g_balance_seeker_flac_lifetime 0.1
-set g_balance_seeker_flac_lifetime_rand 0.05
-set g_balance_seeker_flac_speed 3000
-set g_balance_seeker_flac_spread 0.4
-
-set g_balance_seeker_flac_damage 15
-set g_balance_seeker_flac_edgedamage 10
-set g_balance_seeker_flac_radius 100
-set g_balance_seeker_flac_force 50
-
-set g_balance_seeker_flac_refire 0.1
-set g_balance_seeker_flac_animtime 0.1
-set g_balance_seeker_flac_ammo 0.5
-
set g_balance_campingrifle_magazinecapacity 8
set g_balance_campingrifle_reloadtime 2 // matches reload anim
set g_balance_campingrifle_auto_reload_after_changing_weapons 0
Modified: branches/nexuiz-2.0/data/weaponsHavoc.cfg
===================================================================
--- branches/nexuiz-2.0/data/weaponsHavoc.cfg 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/weaponsHavoc.cfg 2009-07-21 06:58:26 UTC (rev 7248)
@@ -1,4 +1,4 @@
-set cvar_check_weapons 4f7b4c1e2feeef4988b02a93ff35a2ca
+set cvar_check_weapons a7ca57b891d66754b856e24e5c1745e3
// NOTE: this only replaces weapons on the map
// use g_start_weapon_* to also replace the on-startup weapons!
@@ -16,7 +16,6 @@
set g_weaponreplace_porto ""
set g_weaponreplace_minstanex ""
set g_weaponreplace_hook ""
-set g_weaponreplace_seeker "hagar"
set g_weaponreplace_hlac ""
set g_weaponreplace_campingrifle ""
set g_weaponreplace_tuba ""
@@ -35,7 +34,6 @@
set g_start_weapon_porto -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_hook -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_hlac -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
-set g_start_weapon_seeker -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_campingrifle -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_ammo_shells 60
@@ -332,65 +330,6 @@
set g_balance_hlac_secondary_ammo 10
set g_balance_hlac_secondary_shots 5
-
-// TAG Seeker
-set g_balance_seeker_tag_speed 9000
-set g_balance_seeker_tag_ammo 1
-set g_balance_seeker_tag_animtime 0.3
-set g_balance_seeker_tag_refire 0.7
-set g_balance_seeker_tag_health 5
-set g_balance_seeker_tag_damageforcescale 4
-set g_balance_seeker_tag_lifetime 15
-
-set g_balance_seeker_missile_delay 0.25
-//set g_balance_seeker_missile_activate_delay 0.1
-
-set g_balance_seeker_missile_speed 700
-set g_balance_seeker_missile_accel 1.05
-set g_balance_seeker_missile_decel 0.9
-
-set g_balance_seeker_missile_speed_max 1250
-set g_balance_seeker_missile_turnrate 0.65
-
-set g_balance_seeker_missile_damage 40
-set g_balance_seeker_missile_edgedamage 10
-set g_balance_seeker_missile_radius 80
-set g_balance_seeker_missile_force 250
-
-set g_balance_seeker_missile_count 4
-set g_balance_seeker_missile_lifetime 15
-set g_balance_seeker_missile_refire 0.5
-set g_balance_seeker_missile_animtime 0.3
-set g_balance_seeker_missile_ammo 2
-set g_balance_seeker_missile_health 5
-set g_balance_seeker_missile_damageforcescale 4
-
-set g_balance_seeker_missile_proxy 0
-set g_balance_seeker_missile_proxy_maxrange 45
-set g_balance_seeker_missile_proxy_delay 0.2
-
-// World avoidance
-set g_balance_seeker_missile_smart 1
-set g_balance_seeker_missile_smart_mindist 800
-set g_balance_seeker_missile_smart_trace_max 2500
-set g_balance_seeker_missile_smart_trace_min 1000
-// End new seeker
-
-
-set g_balance_seeker_flac_lifetime 0.1
-set g_balance_seeker_flac_lifetime_rand 0.05
-set g_balance_seeker_flac_speed 3000
-set g_balance_seeker_flac_spread 0.4
-
-set g_balance_seeker_flac_damage 15
-set g_balance_seeker_flac_edgedamage 10
-set g_balance_seeker_flac_radius 100
-set g_balance_seeker_flac_force 50
-
-set g_balance_seeker_flac_refire 0.1
-set g_balance_seeker_flac_animtime 0.1
-set g_balance_seeker_flac_ammo 0.5
-
set g_balance_campingrifle_magazinecapacity 5
set g_balance_campingrifle_reloadtime 1.5
set g_balance_campingrifle_auto_reload_after_changing_weapons 1
Modified: branches/nexuiz-2.0/data/weaponsNexrun.cfg
===================================================================
--- branches/nexuiz-2.0/data/weaponsNexrun.cfg 2009-07-21 06:56:12 UTC (rev 7247)
+++ branches/nexuiz-2.0/data/weaponsNexrun.cfg 2009-07-21 06:58:26 UTC (rev 7248)
@@ -1,39 +1,11 @@
-// weapon settings
+// weapon settings for nexrun CTS, not recommended for DM
g_projectiles_newton_style 0
g_shootfromcenter 1
g_balance_grenadelauncher_secondary_speed_up 0
-g_balance_grenadelauncher_secondary_force 260
-g_balance_grenadelauncher_secondary_speed 800
-g_balance_grenadelauncher_secondary_damage 100
-g_balance_grenadelauncher_secondary_edgedamage 100
-g_balance_grenadelauncher_secondary_radius 150
-g_balance_grenadelauncher_secondary_lifetime 2.5
-g_balance_grenadelauncher_secondary_refire 0.8
-g_balance_grenadelauncher_secondary_animtime 0.3
-g_balance_grenadelauncher_secondary_ammo 1
+g_balance_grenadelauncher_secondary_speed 0
-g_balance_hagar_primary_ammo 1
-g_balance_hagar_primary_damage 20
-g_balance_hagar_primary_edgedamage 15
-g_balance_hagar_primary_force 43
-g_balance_hagar_primary_lifetime 10
-g_balance_hagar_primary_radius 20
-g_balance_hagar_primary_refire 0.10
-g_balance_hagar_primary_speed 2000
-g_balance_hagar_primary_spread 0
-
-g_balance_rocketlauncher_damage 100
-g_balance_rocketlauncher_edgedamage 100
-g_balance_rocketlauncher_force 270
-g_balance_rocketlauncher_radius 150
g_balance_rocketlauncher_speed 1000
-g_balance_rocketlauncher_speedaccel 0
-g_balance_rocketlauncher_speedstart 1000
-g_balance_rocketlauncher_lifetime 30
-g_balance_rocketlauncher_refire 0.8
-g_balance_rocketlauncher_animtime 0.3
-g_balance_rocketlauncher_ammo 1
g_balance_powerup_invincible_takedamage 0
g_balance_powerup_invincible_time 999
Copied: branches/nexuiz-2.0/misc/mediasource/hud/nexuiz-grunge-gpl-brushes.zip (from rev 7245, trunk/misc/mediasource/hud/nexuiz-grunge-gpl-brushes.zip)
===================================================================
(Binary files differ)
More information about the nexuiz-commits
mailing list