[nexuiz-commits] r6762 - in branches/nexuiz-2.0: . data data/gfx data/models/onslaught data/models/sprites data/qcsrc/client data/qcsrc/common data/qcsrc/menu/nexuiz data/qcsrc/server data/scripts data/sound/misc data/sound/onslaught data/textures misc/mediasource misc/netradiant-NexuizPack/nexuiz.game/data misc/tools server/rcon2irc
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun May 24 05:17:59 EDT 2009
Author: div0
Date: 2009-05-24 05:17:59 -0400 (Sun, 24 May 2009)
New Revision: 6762
Added:
branches/nexuiz-2.0/data/models/onslaught/boom.md3
branches/nexuiz-2.0/data/models/onslaught/gen_gib1.md3
branches/nexuiz-2.0/data/models/onslaught/gen_gib2.md3
branches/nexuiz-2.0/data/models/onslaught/gen_gib3.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dmg3.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dmg4.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dmg5.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dmg6.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dmg7.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dmg8.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dmg9.md3
branches/nexuiz-2.0/data/models/onslaught/shockwave.md3
branches/nexuiz-2.0/data/models/onslaught/shockwave2.md3
branches/nexuiz-2.0/data/models/onslaught/shockwavetransring.md3
branches/nexuiz-2.0/data/models/onslaught/shockwavetranssphere.md3
branches/nexuiz-2.0/data/models/sprites/item-extralife_frame0.tga
branches/nexuiz-2.0/data/models/sprites/item-extralife_frame1.tga
branches/nexuiz-2.0/data/models/sprites/item-fuelregen_frame0.tga
branches/nexuiz-2.0/data/models/sprites/item-fuelregen_frame1.tga
branches/nexuiz-2.0/data/models/sprites/item-invis_frame0.tga
branches/nexuiz-2.0/data/models/sprites/item-invis_frame1.tga
branches/nexuiz-2.0/data/models/sprites/item-jetpack_frame0.tga
branches/nexuiz-2.0/data/models/sprites/item-jetpack_frame1.tga
branches/nexuiz-2.0/data/models/sprites/item-shield_frame0.tga
branches/nexuiz-2.0/data/models/sprites/item-shield_frame1.tga
branches/nexuiz-2.0/data/models/sprites/item-speed_frame0.tga
branches/nexuiz-2.0/data/models/sprites/item-speed_frame1.tga
branches/nexuiz-2.0/data/models/sprites/item-strength_frame0.tga
branches/nexuiz-2.0/data/models/sprites/item-strength_frame1.tga
branches/nexuiz-2.0/data/sound/misc/itemrespawncountdown.ogg
branches/nexuiz-2.0/data/sound/onslaught/shockwave.ogg
branches/nexuiz-2.0/data/textures/generator.tga
branches/nexuiz-2.0/data/textures/generator_destroyed.tga
branches/nexuiz-2.0/data/textures/generator_gloss.tga
branches/nexuiz-2.0/data/textures/generator_glow.tga
branches/nexuiz-2.0/data/textures/generator_lightning.tga
branches/nexuiz-2.0/data/textures/generator_lightning2.tga
branches/nexuiz-2.0/data/textures/generator_norm.tga
branches/nexuiz-2.0/data/textures/generator_pants.tga
branches/nexuiz-2.0/data/textures/ons_boom1.tga
branches/nexuiz-2.0/data/textures/ons_gengib.tga
branches/nexuiz-2.0/data/textures/ons_shockwave1.tga
branches/nexuiz-2.0/data/textures/ons_shockwave2.tga
branches/nexuiz-2.0/data/textures/ons_smoke1.tga
branches/nexuiz-2.0/misc/mediasource/sb_str_inv.xcf
branches/nexuiz-2.0/misc/tools/hitplot2tga.c
Removed:
branches/nexuiz-2.0/data/textures/core.tga
branches/nexuiz-2.0/data/textures/core_dmg1.tga
branches/nexuiz-2.0/data/textures/core_dmg1_glow.tga
branches/nexuiz-2.0/data/textures/core_dmg2.tga
branches/nexuiz-2.0/data/textures/core_dmg2_glow.tga
branches/nexuiz-2.0/data/textures/core_gloss.tga
branches/nexuiz-2.0/data/textures/core_glow.tga
branches/nexuiz-2.0/data/textures/reactor.jpg
branches/nexuiz-2.0/data/textures/reactor.tga
branches/nexuiz-2.0/data/textures/reactor_dead.tga
branches/nexuiz-2.0/data/textures/reactor_dmg1.tga
branches/nexuiz-2.0/data/textures/reactor_dmg1_glow.tga
branches/nexuiz-2.0/data/textures/reactor_dmg1_shirt.tga
branches/nexuiz-2.0/data/textures/reactor_dmg2.tga
branches/nexuiz-2.0/data/textures/reactor_dmg2_glow.tga
branches/nexuiz-2.0/data/textures/reactor_dmg2_shirt.tga
branches/nexuiz-2.0/data/textures/reactor_glow.tga
branches/nexuiz-2.0/data/textures/reactor_shirt.tga
Modified:
branches/nexuiz-2.0/.patchsets
branches/nexuiz-2.0/data/build-compat-pack.sh
branches/nexuiz-2.0/data/defaultNexuiz.cfg
branches/nexuiz-2.0/data/gfx/sb_invinc.tga
branches/nexuiz-2.0/data/gfx/sb_str.tga
branches/nexuiz-2.0/data/models/onslaught/generator.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dead.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dmg1.md3
branches/nexuiz-2.0/data/models/onslaught/generator_dmg2.md3
branches/nexuiz-2.0/data/models/sprites/make-sprites.sh
branches/nexuiz-2.0/data/qcsrc/client/Main.qc
branches/nexuiz-2.0/data/qcsrc/client/main.qh
branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
branches/nexuiz-2.0/data/qcsrc/client/teamradar.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/menu/nexuiz/dialog_singleplayer.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/maplist.c
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/cl_player.qc
branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc
branches/nexuiz-2.0/data/qcsrc/server/constants.qh
branches/nexuiz-2.0/data/qcsrc/server/defs.qh
branches/nexuiz-2.0/data/qcsrc/server/extensions.qh
branches/nexuiz-2.0/data/qcsrc/server/func_breakable.qc
branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc
branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
branches/nexuiz-2.0/data/qcsrc/server/w_campingrifle.qc
branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc
branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc
branches/nexuiz-2.0/data/scripts/entities.def
branches/nexuiz-2.0/data/scripts/onslaught.shader
branches/nexuiz-2.0/data/weapons.cfg
branches/nexuiz-2.0/data/weaponsHavoc.cfg
branches/nexuiz-2.0/misc/netradiant-NexuizPack/nexuiz.game/data/entities.def
branches/nexuiz-2.0/server/rcon2irc/rbiserver.pl
Log:
r6698 | greenmarine | 2009-05-10 12:19:30 +0200 (Sun, 10 May 2009) | 1 line
fix issue 19
r6699 | morphed | 2009-05-10 17:25:17 +0200 (Sun, 10 May 2009) | 1 line
missing shader for onslaught
r6700 | div0 | 2009-05-10 20:56:07 +0200 (Sun, 10 May 2009) | 2 lines
hitplot writing
r6701 | div0 | 2009-05-10 21:09:43 +0200 (Sun, 10 May 2009) | 2 lines
hit plot fix of closing file handle -1
r6702 | div0 | 2009-05-10 21:20:37 +0200 (Sun, 10 May 2009) | 2 lines
fix two bugs in hitplotting
r6703 | div0 | 2009-05-11 12:24:18 +0200 (Mon, 11 May 2009) | 2 lines
handle antilag for bots correctly for hitplot purposes
r6704 | div0 | 2009-05-11 13:30:50 +0200 (Mon, 11 May 2009) | 2 lines
hitplot to tga tool
r6705 | div0 | 2009-05-11 14:34:11 +0200 (Mon, 11 May 2009) | 2 lines
hit plots: also print weapon number
r6706 | div0 | 2009-05-11 20:33:07 +0200 (Mon, 11 May 2009) | 2 lines
hook now takes fuel
r6707 | div0 | 2009-05-11 21:05:01 +0200 (Mon, 11 May 2009) | 2 lines
fix stupid typo in HUD score defintiion
r6708 | div0 | 2009-05-11 21:09:20 +0200 (Mon, 11 May 2009) | 2 lines
hooked: less ammo (so you can always hook twice with one hook pickup)
r6709 | div0 | 2009-05-12 12:16:09 +0200 (Tue, 12 May 2009) | 4 lines
testing:
randomize powerup respawns by 10 seconds
show powerup respawns in advance by 5 seconds (and play a countdown sound)
r6710 | div0 | 2009-05-12 12:18:08 +0200 (Tue, 12 May 2009) | 2 lines
cvar check :P
r6711 | div0 | 2009-05-12 12:31:07 +0200 (Tue, 12 May 2009) | 2 lines
fix shield sprite
r6712 | div0 | 2009-05-12 12:34:09 +0200 (Tue, 12 May 2009) | 2 lines
new compat pack :P
r6713 | div0 | 2009-05-12 12:49:43 +0200 (Tue, 12 May 2009) | 2 lines
use grey for jetpack, not orange
r6714 | div0 | 2009-05-12 13:14:58 +0200 (Tue, 12 May 2009) | 2 lines
fix respawn display of teamed items
r6715 | div0 | 2009-05-12 13:23:31 +0200 (Tue, 12 May 2009) | 2 lines
fix team radar pings
r6716 | div0 | 2009-05-12 14:01:04 +0200 (Tue, 12 May 2009) | 2 lines
remove <err.h> dependency to make it compile on stupid operating systems too
r6717 | div0 | 2009-05-12 14:02:07 +0200 (Tue, 12 May 2009) | 2 lines
also implement errx
r6718 | div0 | 2009-05-12 15:35:36 +0200 (Tue, 12 May 2009) | 2 lines
compat pack missed a file
r6719 | div0 | 2009-05-12 17:16:41 +0200 (Tue, 12 May 2009) | 3 lines
items: randomize initial spawn of powerups fully
regeneration: always regenerate fuel, even in LMS
r6720 | div0 | 2009-05-12 21:31:40 +0200 (Tue, 12 May 2009) | 2 lines
the "noobhud": a HUD that does not show armor and health, but instead shows which of the two is "larger", and how much total damage you survive
r6721 | div0 | 2009-05-12 23:25:49 +0200 (Tue, 12 May 2009) | 2 lines
fix typos in hudselector 2
r6723 | div0 | 2009-05-13 00:07:08 +0200 (Wed, 13 May 2009) | 2 lines
new strength/invincible images
r6724 | div0 | 2009-05-13 00:07:15 +0200 (Wed, 13 May 2009) | 2 lines
new strength/invincible images
r6725 | div0 | 2009-05-13 00:14:45 +0200 (Wed, 13 May 2009) | 2 lines
make strength/invincible countdown look better with the new pics
r6726 | div0 | 2009-05-13 00:17:43 +0200 (Wed, 13 May 2009) | 2 lines
updated xcf
r6727 | div0 | 2009-05-13 00:18:08 +0200 (Wed, 13 May 2009) | 2 lines
make these pics poweroftwo while I'm at it
r6728 | div0 | 2009-05-13 00:43:56 +0200 (Wed, 13 May 2009) | 2 lines
debrisskin parameter to func_breakable
r6729 | morphed | 2009-05-13 01:38:05 +0200 (Wed, 13 May 2009) | 1 line
new generator model, with damage models and small code changes for it
r6730 | div0 | 2009-05-13 11:57:49 +0200 (Wed, 13 May 2009) | 2 lines
turn off intermission cdtrack to fix #214
r6731 | div0 | 2009-05-13 21:40:16 +0200 (Wed, 13 May 2009) | 2 lines
fix compat pack building
r6732 | div0 | 2009-05-14 11:22:35 +0200 (Thu, 14 May 2009) | 2 lines
print pure check details to IRC
r6733 | div0 | 2009-05-14 14:34:24 +0200 (Thu, 14 May 2009) | 2 lines
make maxplayers at least bot_number+1
r6734 | mrbougo | 2009-05-15 16:29:33 +0200 (Fri, 15 May 2009) | 1 line
someone forgot to merge the entities
r6735 | div0 | 2009-05-16 16:58:20 +0200 (Sat, 16 May 2009) | 2 lines
forbid LOD models if ALLOW_VARIABLE_LOD is set
r6736 | div0 | 2009-05-16 20:14:43 +0200 (Sat, 16 May 2009) | 2 lines
I have no idea why this logic needs inverting, but it does. But then, this code apparently never worked in 2.5 or 2.5.1.
r6737 | div0 | 2009-05-16 20:38:21 +0200 (Sat, 16 May 2009) | 2 lines
print which item you picked up if you pick up jetpack; fallback to fuel if an item jetpack or fuel regen would be useless
r6738 | div0 | 2009-05-16 21:29:09 +0200 (Sat, 16 May 2009) | 2 lines
don't ask me why - put the condition back. maybe a temporary engien bug?
r6739 | div0 | 2009-05-17 21:40:49 +0200 (Sun, 17 May 2009) | 2 lines
now the trolls have done it. An official "mute" and "unmute" command.
r6740 | morphed | 2009-05-18 02:23:15 +0200 (Mon, 18 May 2009) | 1 line
onslaught sfx assets
r6741 | mand1nga | 2009-05-18 17:11:47 +0200 (Mon, 18 May 2009) | 1 line
Shockwave sound by m0rphed
r6742 | mand1nga | 2009-05-18 19:30:04 +0200 (Mon, 18 May 2009) | 1 line
Updated ons effects by //\//\0rph3d
r6743 | mand1nga | 2009-05-18 19:33:30 +0200 (Mon, 18 May 2009) | 1 line
New generator explosion for Onslaught
r6744 | mand1nga | 2009-05-18 19:34:09 +0200 (Mon, 18 May 2009) | 1 line
Updated sound by morphed
r6745 | div0 | 2009-05-20 19:30:14 +0200 (Wed, 20 May 2009) | 3 lines
new supercontents flags: BOTCLIP (matching Q3's botclip), and OPAQUE (matching anything fully opaque, good for line-of-sight checks)
impulse 146 as a test for it
r6746 | mand1nga | 2009-05-21 01:27:25 +0200 (Thu, 21 May 2009) | 1 line
Fix typo
Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/.patchsets 2009-05-24 09:17:59 UTC (rev 6762)
@@ -1,2 +1,2 @@
master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-6697
+revisions_applied = 1-6721,6723-6746
Modified: branches/nexuiz-2.0/data/build-compat-pack.sh
===================================================================
--- branches/nexuiz-2.0/data/build-compat-pack.sh 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/build-compat-pack.sh 2009-05-24 09:17:59 UTC (rev 6762)
@@ -4,1287 +4,52 @@
COMPAT_FILES="
effectinfo.txt
- gfx/aggressor_radar.tga
- gfx/aneurysm_radar.tga
- gfx/basementctf_radar.tga
- gfx/bleach_radar.tga
- gfx/bloodprisonctf_radar.tga
- gfx/bloodprison_radar.tga
- gfx/bluesky_radar.tga
- gfx/dieselpower_radar.tga
- gfx/dismal_radar.tga
- gfx/final_rage_radar.tga
- gfx/inv_weapon10.tga
- gfx/inv_weapon11.tga
- gfx/inv_weapon12.tga
- gfx/inv_weapon13.tga
- gfx/inv_weapon14.tga
- gfx/inv_weapon9.tga
- gfx/keys/key_backward.tga
- gfx/keys/key_bg.tga
- gfx/keys/key_crouch.tga
- gfx/keys/key_forward.tga
- gfx/keys/key_jump.tga
- gfx/keys/key_left.tga
- gfx/keys/key_right.tga
- gfx/reslimed_radar.tga
- gfx/runningman_1on1remix_radar.tga
- gfx/runningmanctf_radar.tga
- gfx/runningman_radar.tga
- gfx/sb_flag_blue_shielded.tga
- gfx/sb_flag_red_shielded.tga
- gfx/sb_kh_full.tga
- gfx/sb_kh_outline.tga
- gfx/sb_player_ready.tga
- gfx/sb_playercolor_base.tga
- gfx/sb_playercolor_pants.tga
- gfx/sb_playercolor_shirt.tga
- gfx/silvercity_radar.tga
- gfx/stormkeep_radar.tga
- gfx/strength_radar.tga
- gfx/teamradar_icon_1.tga
- gfx/teamradar_icon_2.tga
- gfx/teamradar_ping.tga
- gfx/toxic_radar.tga
- gfx/warfare_radar.tga
- maps/eggandbacon.bsp
- models/ctf/flags.md3
- models/ctf/flags.md3_0.skin
- models/ctf/flags.md3_1.skin
- models/hlac_bullet.md3
- models/hlac_bullet.tga
- models/player/carni.zym.sounds
- models/player/headhunter.zym.sounds
- models/player/insurrectionist.zym.sounds
- models/player/lurk.zym.sounds
- models/player/lycanthrope.zym.sounds
- models/player/marine.zym.sounds
- models/player/nexus.zym.sounds
- models/player/pyria.zym.sounds
- models/player/shock.zym.sounds
- models/player/skadi.zym.sounds
- models/player/specop.zym.sounds
- models/player/visitant.zym.sounds
- models/player/xolar.zym.sounds
- models/portal.md3
- models/portal.md3_0.skin
- models/portal.md3_1.skin
- models/portal.md3_2.skin
- models/sprites/as-defend_frame0.tga
- models/sprites/as-destroy_frame0.tga
- models/sprites/as-push_frame0.tga
- models/sprites/bluebase.tga
- models/sprites/danger.tga
- models/sprites/defend.tga
- models/sprites/destroy.tga
- models/sprites/flagcarrier.tga
- models/sprites/helpme.tga
- models/sprites/here.tga
- models/sprites/keycarrier-blue.tga
- models/sprites/keycarrier-finish.tga
- models/sprites/keycarrier-friend.tga
- models/sprites/keycarrier-pink.tga
- models/sprites/keycarrier-red.tga
- models/sprites/keycarrier-yellow.tga
- models/sprites/key-dropped.tga
- models/sprites/ons-cp-atck-blue_frame0.tga
- models/sprites/ons-cp-atck-blue_frame1.tga
- models/sprites/ons-cp-atck-neut_frame0.tga
- models/sprites/ons-cp-atck-neut_frame1.tga
- models/sprites/ons-cp-atck-red_frame0.tga
- models/sprites/ons-cp-atck-red_frame1.tga
- models/sprites/ons-cp-blue.tga
- models/sprites/ons-cp-dfnd-blue_frame0.tga
- models/sprites/ons-cp-dfnd-blue_frame1.tga
- models/sprites/ons-cp-dfnd-red_frame0.tga
- models/sprites/ons-cp-dfnd-red_frame1.tga
- models/sprites/ons-cp-neut.tga
- models/sprites/ons-cp-red.tga
- models/sprites/ons-gen-blue.tga
- models/sprites/ons-gen-red.tga
- models/sprites/ons-gen-shielded.tga
- models/sprites/push.tga
- models/sprites/race-checkpoint.sp2
- models/sprites/race-checkpoint.tga
- models/sprites/race-finish.sp2
- models/sprites/race-finish.tga
- models/sprites/redbase.tga
- models/sprites/waypoint.tga
- models/sprites/wpn-campingrifle_frame0.tga
- models/sprites/wpn-crylink_frame0.tga
- models/sprites/wpn-electro_frame0.tga
- models/sprites/wpn-gl_frame0.tga
- models/sprites/wpn-hagar_frame0.tga
- models/sprites/wpn-hlac_frame0.tga
- models/sprites/wpn-hookgun_frame0.tga
- models/sprites/wpn-laser_frame0.tga
- models/sprites/wpn-minstanex_frame0.tga
- models/sprites/wpn-nex_frame0.tga
- models/sprites/wpn-porto_frame0.tga
- models/sprites/wpn-rl_frame0.tga
- models/sprites/wpn-seeker_frame0.tga
- models/sprites/wpn-shotgun_frame0.tga
- models/sprites/wpn-uzi_frame0.tga
- models/tagrocket.md3
- models/tagrocket.tga
- models/turrets/base-gib1.md3
- models/turrets/base-gib2.md3
- models/turrets/base-gib3.md3
- models/turrets/base-gib4.md3
- models/turrets/base.md3
- models/turrets/c512.md3
- models/turrets/c8.md3
- models/turrets/flac.md3
- models/turrets/fusion_top.md3
- models/turrets/fusreac.md3
- models/turrets/head-gib1.md3
- models/turrets/head-gib2.md3
- models/turrets/head-gib3.md3
- models/turrets/head-gib4.md3
- models/turrets/hellion.md3
- models/turrets/hk.md3
- models/turrets/hunter2.md3
- models/turrets/machinegun.md3
- models/turrets/mlrs.md3
- models/turrets/mlrs_rocket.md3
- models/turrets/pd_proj.md3
- models/turrets/phaser_beam.md3
- models/turrets/phaser.md3
- models/turrets/plasmad.md3
- models/turrets/plasma.md3
- models/turrets/reactor.md3
- models/turrets/rocket.md3
- models/turrets/tesla_base.md3
- models/turrets/tesla_head.md3
- models/turrets/tesla.md3
- models/turrets/walker_body.md3
- models/turrets/walker_head_minigun.md3
- models/turrets/walker_mghead.md3
- models/turrets/walker_props.md3
- models/turrets/walker_spawn.md3
- models/weapons/g_campingrifle.md3
- models/weapons/g_hlac.md3
- models/weapons/g_hookgun.md3
- models/weapons/g_minstanex.md3
- models/weapons/g_porto.md3
- models/weapons/g_seeker.md3
- models/weapons/h_campingrifle.dpm
- models/weapons/h_campingrifle.dpm.animinfo
- models/weapons/h_crylink.dpm
- models/weapons/h_crylink.dpm.animinfo
- models/weapons/h_electro.dpm
- models/weapons/h_electro.dpm.animinfo
- models/weapons/h_gl.dpm
- models/weapons/h_gl.dpm.animinfo
- models/weapons/h_hagar.dpm
- models/weapons/h_hagar.dpm.animinfo
- models/weapons/h_hlac.dpm
- models/weapons/h_hlac.dpm.animinfo
- models/weapons/h_hookgun.dpm
- models/weapons/h_hookgun.dpm.animinfo
- models/weapons/h_laser.dpm
- models/weapons/h_laser.dpm.animinfo
- models/weapons/h_minstanex.dpm
- models/weapons/h_minstanex.dpm.animinfo
- models/weapons/h_nex.dpm
- models/weapons/h_nex.dpm.animinfo
- models/weapons/h_porto.dpm
- models/weapons/h_porto.dpm.animinfo
- models/weapons/h_rl.dpm
- models/weapons/h_rl.dpm.animinfo
- models/weapons/h_seeker.dpm
- models/weapons/h_seeker.dpm.animinfo
- models/weapons/h_shotgun.dpm
- models/weapons/h_shotgun.dpm.animinfo
- models/weapons/h_uzi.dpm
- models/weapons/h_uzi.dpm.animinfo
- models/weapons/v_campingrifle.md3
- models/weapons/v_hlac.md3
- models/weapons/v_hookgun.md3
- models/weapons/v_minstanex.md3
- models/weapons/v_porto.md3
- models/weapons/v_seeker.md3
- particles/particlefont.tga
- scripts/eggandbacon.shader
- scripts/egyptsoc.shader
- scripts/flags.shader
- scripts/hlac.shader
- scripts/portals.shader
- sound/announcer/male/airshot.ogg
- sound/announcer/male/electrobitch.ogg
- sound/announcer/male/headshot.ogg
- sound/announcer/male/impressive.ogg
- sound/announcer/male/yoda.ogg
- sound/ctf/bluecapture.ogg
- sound/ctf/redcapture.ogg
- sound/ctf/respawn.wav
- sound/ctf/return.wav
- sound/ctf/take.wav
- sound/domination/claim.wav
- sound/kh/alarm.wav
- sound/kh/capture.wav
- sound/kh/collect.wav
- sound/kh/destroy.wav
- sound/kh/drop.wav
- sound/misc/armor10.wav
- sound/misc/armor1.wav
+ sound/misc/itemrespawncountdown.ogg
sound/misc/armor25.wav
- sound/misc/footstep01.wav
- sound/misc/footstep02.wav
- sound/misc/footstep03.wav
- sound/misc/footstep04.wav
- sound/misc/footstep05.wav
- sound/misc/footstep06.wav
- sound/misc/gib.wav
- sound/misc/hitground1.ogg
- sound/misc/hitground2.ogg
- sound/misc/hitground3.ogg
- sound/misc/hitground4.ogg
- sound/misc/hit.wav
- sound/misc/itempickup.ogg
- sound/misc/jumppad.ogg
- sound/misc/mediumhealth.ogg
- sound/misc/metalfootstep01.wav
- sound/misc/metalfootstep02.wav
- sound/misc/metalfootstep03.wav
- sound/misc/metalfootstep04.wav
- sound/misc/metalfootstep05.wav
- sound/misc/metalfootstep06.wav
- sound/misc/metalhitground1.ogg
- sound/misc/metalhitground2.ogg
- sound/misc/metalhitground3.ogg
- sound/misc/metalhitground4.ogg
- sound/misc/minihealth.ogg
- sound/misc/powerup.ogg
- sound/misc/powerup_shield.ogg
- sound/misc/typehit.wav
- sound/player/carni-lycan/coms/attackinfive.ogg
- sound/player/carni-lycan/coms/attack.ogg
- sound/player/carni-lycan/coms/coverme.ogg
- sound/player/carni-lycan/coms/defend.ogg
- sound/player/carni-lycan/coms/freelance1.ogg
- sound/player/carni-lycan/coms/freelance2.ogg
- sound/player/carni-lycan/coms/incoming.ogg
- sound/player/carni-lycan/coms/meet.ogg
- sound/player/carni-lycan/coms/needhelp1.ogg
- sound/player/carni-lycan/coms/seenflag.ogg
- sound/player/carni-lycan/coms/taunt1.ogg
- sound/player/carni-lycan/coms/taunt2.ogg
- sound/player/carni-lycan/coms/taunt3.ogg
- sound/player/carni-lycan/coms/teamshoot1.ogg
- sound/player/carni-lycan/coms/teamshoot2.ogg
- sound/player/carni-lycan/coms/teamshoot3.ogg
- sound/player/carni-lycan/player/death1.ogg
- sound/player/carni-lycan/player/death2.ogg
- sound/player/carni-lycan/player/death3.ogg
- sound/player/carni-lycan/player/drown.ogg
- sound/player/carni-lycan/player/fall1.ogg
- sound/player/carni-lycan/player/falling.ogg
- sound/player/carni-lycan/player/gasp.ogg
- sound/player/carni-lycan/player/jump.ogg
- sound/player/carni-lycan/player/pain100.ogg
- sound/player/carni-lycan/player/pain25.ogg
- sound/player/carni-lycan/player/pain50.ogg
- sound/player/carni-lycan/player/pain75.ogg
- sound/player/default.sounds
- sound/player/fricka/coms/attackinfive.ogg
- sound/player/fricka/coms/attack.ogg
- sound/player/fricka/coms/coverme.ogg
- sound/player/fricka/coms/defend.ogg
- sound/player/fricka/coms/flagseen.ogg
- sound/player/fricka/coms/freelance1.ogg
- sound/player/fricka/coms/freelance2.ogg
- sound/player/fricka/coms/incoming.ogg
- sound/player/fricka/coms/taunt1.ogg
- sound/player/fricka/coms/taunt2.ogg
- sound/player/fricka/coms/taunt3.ogg
- sound/player/fricka/coms/taunt4.ogg
- sound/player/fricka/coms/teamshoot1.ogg
- sound/player/fricka/coms/teamshoot2.ogg
- sound/player/fricka/coms/teamshoot3.ogg
- sound/player/fricka/coms/waypoint.ogg
- sound/player/fricka/player/death1.ogg
- sound/player/fricka/player/death2.ogg
- sound/player/fricka/player/death3.ogg
- sound/player/fricka/player/drown.ogg
- sound/player/fricka/player/fall1.ogg
- sound/player/fricka/player/falling.ogg
- sound/player/fricka/player/gasp.ogg
- sound/player/fricka/player/jump.ogg
- sound/player/fricka/player/pain100.ogg
- sound/player/fricka/player/pain25.ogg
- sound/player/fricka/player/pain50.ogg
- sound/player/fricka/player/pain75.ogg
- sound/player/insurrectionist/coms/attackinfive.ogg
- sound/player/insurrectionist/coms/attack.ogg
- sound/player/insurrectionist/coms/coverme.ogg
- sound/player/insurrectionist/coms/defend.ogg
- sound/player/insurrectionist/coms/freelance1.ogg
- sound/player/insurrectionist/coms/freelance2.ogg
- sound/player/insurrectionist/coms/incoming.ogg
- sound/player/insurrectionist/coms/meet.ogg
- sound/player/insurrectionist/coms/needhelp1.ogg
- sound/player/insurrectionist/coms/needhelp2.ogg
- sound/player/insurrectionist/coms/seenflag.ogg
- sound/player/insurrectionist/coms/taunt1.ogg
- sound/player/insurrectionist/coms/taunt2.ogg
- sound/player/insurrectionist/coms/taunt3.ogg
- sound/player/insurrectionist/coms/taunt4.ogg
- sound/player/insurrectionist/coms/teamshoot1.ogg
- sound/player/insurrectionist/coms/teamshoot2.ogg
- sound/player/insurrectionist/coms/teamshoot3.ogg
- sound/player/insurrectionist/player/death1.ogg
- sound/player/insurrectionist/player/death2.ogg
- sound/player/insurrectionist/player/death3.ogg
- sound/player/insurrectionist/player/drown.ogg
- sound/player/insurrectionist/player/fall1.ogg
- sound/player/insurrectionist/player/falling.ogg
- sound/player/insurrectionist/player/gasp.ogg
- sound/player/insurrectionist/player/jump.ogg
- sound/player/insurrectionist/player/pain100.ogg
- sound/player/insurrectionist/player/pain25.ogg
- sound/player/insurrectionist/player/pain50.ogg
- sound/player/insurrectionist/player/pain75.ogg
- sound/player/lava.wav
- sound/player/marine/coms/attackinfive.ogg
- sound/player/marine/coms/attack.ogg
- sound/player/marine/coms/coverme.ogg
- sound/player/marine/coms/defend.ogg
- sound/player/marine/coms/freelance1.ogg
- sound/player/marine/coms/freelance2.ogg
- sound/player/marine/coms/incoming.ogg
- sound/player/marine/coms/meet.ogg
- sound/player/marine/coms/needhelp1.ogg
- sound/player/marine/coms/needhelp2.ogg
- sound/player/marine/coms/seenflag.ogg
- sound/player/marine/coms/taunt1.ogg
- sound/player/marine/coms/taunt2.ogg
- sound/player/marine/coms/taunt3.ogg
- sound/player/marine/coms/teamshoot1.ogg
- sound/player/marine/coms/teamshoot2.ogg
- sound/player/marine/coms/teamshoot3.ogg
- sound/player/marine/coms/teamshoot4.ogg
- sound/player/marine/player/death1.ogg
- sound/player/marine/player/death2.ogg
- sound/player/marine/player/death3.ogg
- sound/player/marine/player/drown.ogg
- sound/player/marine/player/fall1.ogg
- sound/player/marine/player/falling.ogg
- sound/player/marine/player/gasp.ogg
- sound/player/marine/player/jump.ogg
- sound/player/marine/player/pain100.ogg
- sound/player/marine/player/pain25.ogg
- sound/player/marine/player/pain50.ogg
- sound/player/marine/player/pain75.ogg
- sound/player/pyria-skadi/coms/attack1.ogg
- sound/player/pyria-skadi/coms/attack2.ogg
- sound/player/pyria-skadi/coms/attackinfive.ogg
- sound/player/pyria-skadi/coms/coverme.ogg
- sound/player/pyria-skadi/coms/defend.ogg
- sound/player/pyria-skadi/coms/freelance1.ogg
- sound/player/pyria-skadi/coms/freelance2.ogg
- sound/player/pyria-skadi/coms/incoming.ogg
- sound/player/pyria-skadi/coms/meet.ogg
- sound/player/pyria-skadi/coms/needhelp1.ogg
- sound/player/pyria-skadi/coms/seenflag.ogg
- sound/player/pyria-skadi/coms/taunt1.ogg
- sound/player/pyria-skadi/coms/taunt2.ogg
- sound/player/pyria-skadi/coms/taunt3.ogg
- sound/player/pyria-skadi/coms/taunt4.ogg
- sound/player/pyria-skadi/coms/taunt5.ogg
- sound/player/pyria-skadi/coms/teamshoot1.ogg
- sound/player/pyria-skadi/coms/teamshoot2.ogg
- sound/player/pyria-skadi/coms/teamshoot3.ogg
- sound/player/pyria-skadi/coms/teamshoot4.ogg
- sound/player/pyria-skadi/player/death1.ogg
- sound/player/pyria-skadi/player/death2.ogg
- sound/player/pyria-skadi/player/death3.ogg
- sound/player/pyria-skadi/player/drown.ogg
- sound/player/pyria-skadi/player/fall1.ogg
- sound/player/pyria-skadi/player/falling.ogg
- sound/player/pyria-skadi/player/gasp.ogg
- sound/player/pyria-skadi/player/jump.ogg
- sound/player/pyria-skadi/player/pain100.ogg
- sound/player/pyria-skadi/player/pain25.ogg
- sound/player/pyria-skadi/player/pain50.ogg
- sound/player/pyria-skadi/player/pain75.ogg
- sound/player/reptilian/coms/attackinfive.ogg
- sound/player/reptilian/coms/attack.ogg
- sound/player/reptilian/coms/coverme.ogg
- sound/player/reptilian/coms/defend.ogg
- sound/player/reptilian/coms/freelance1.ogg
- sound/player/reptilian/coms/freelance2.ogg
- sound/player/reptilian/coms/incoming.ogg
- sound/player/reptilian/coms/meet.ogg
- sound/player/reptilian/coms/needhelp1.ogg
- sound/player/reptilian/coms/needhelp2.ogg
- sound/player/reptilian/coms/seenflag.ogg
- sound/player/reptilian/coms/taunt1.ogg
- sound/player/reptilian/coms/taunt2.ogg
- sound/player/reptilian/coms/taunt3.ogg
- sound/player/reptilian/coms/teamshoot1.ogg
- sound/player/reptilian/coms/teamshoot2.ogg
- sound/player/reptilian/coms/teamshoot3.ogg
- sound/player/reptilian/player/death1.ogg
- sound/player/reptilian/player/death2.ogg
- sound/player/reptilian/player/death3.ogg
- sound/player/reptilian/player/drown.ogg
- sound/player/reptilian/player/fall1.ogg
- sound/player/reptilian/player/falling.ogg
- sound/player/reptilian/player/gasp.ogg
- sound/player/reptilian/player/jump.ogg
- sound/player/reptilian/player/pain100.ogg
- sound/player/reptilian/player/pain25.ogg
- sound/player/reptilian/player/pain50.ogg
- sound/player/reptilian/player/pain75.ogg
- sound/player/slime.wav
- sound/player/soldier/coms/attackinfive.ogg
- sound/player/soldier/coms/attack.ogg
- sound/player/soldier/coms/coverme.ogg
- sound/player/soldier/coms/defend.ogg
- sound/player/soldier/coms/freelance1.ogg
- sound/player/soldier/coms/freelance2.ogg
- sound/player/soldier/coms/ideas/flagcarriertakingdamage.ogg
- sound/player/soldier/coms/ideas/getourflagback.ogg
- sound/player/soldier/coms/incoming.ogg
- sound/player/soldier/coms/meet.ogg
- sound/player/soldier/coms/needhelp1.ogg
- sound/player/soldier/coms/needhelp2.ogg
- sound/player/soldier/coms/seenflag.ogg
- sound/player/soldier/coms/taunt1.ogg
- sound/player/soldier/coms/taunt2.ogg
- sound/player/soldier/coms/taunt3.ogg
- sound/player/soldier/coms/teamshoot1.ogg
- sound/player/soldier/coms/teamshoot2.ogg
- sound/player/soldier/coms/teamshoot3.ogg
- sound/player/soldier/player/death1.ogg
- sound/player/soldier/player/death2.ogg
- sound/player/soldier/player/death3.ogg
- sound/player/soldier/player/drown.ogg
- sound/player/soldier/player/fall1.ogg
- sound/player/soldier/player/falling.ogg
- sound/player/soldier/player/gasp.ogg
- sound/player/soldier/player/jump.ogg
- sound/player/soldier/player/pain100.ogg
- sound/player/soldier/player/pain25.ogg
- sound/player/soldier/player/pain50.ogg
- sound/player/soldier/player/pain75.ogg
- sound/player/specop/coms/attackinfive.ogg
- sound/player/specop/coms/attack.ogg
- sound/player/specop/coms/coverme.ogg
- sound/player/specop/coms/defend.ogg
- sound/player/specop/coms/freelance1.ogg
- sound/player/specop/coms/freelance2.ogg
- sound/player/specop/coms/incoming.ogg
- sound/player/specop/coms/meet.ogg
- sound/player/specop/coms/needhelp1.ogg
- sound/player/specop/coms/seenflag.ogg
- sound/player/specop/coms/taunt1.ogg
- sound/player/specop/coms/taunt2.ogg
- sound/player/specop/coms/taunt3.ogg
- sound/player/specop/coms/taunt4.ogg
- sound/player/specop/coms/teamshoot1.ogg
- sound/player/specop/coms/teamshoot2.ogg
- sound/player/specop/coms/teamshoot3.ogg
- sound/player/specop/coms/teamshoot4.ogg
- sound/player/specop/player/death1.ogg
- sound/player/specop/player/death2.ogg
- sound/player/specop/player/death3.ogg
- sound/player/specop/player/drown.ogg
- sound/player/specop/player/fall1.ogg
- sound/player/specop/player/falling.ogg
- sound/player/specop/player/gasp.ogg
- sound/player/specop/player/jump.ogg
- sound/player/specop/player/pain100.ogg
- sound/player/specop/player/pain25.ogg
- sound/player/specop/player/pain50.ogg
- sound/player/specop/player/pain75.ogg
- sound/player/torus/attack.ogg
- sound/player/torus/coverme.ogg
- sound/player/torus/death.ogg
- sound/player/torus/drown.ogg
- sound/player/torus/fall.ogg
- sound/player/torus/flagseen.ogg
- sound/player/torus/gasp.ogg
- sound/player/torus/hooah.ogg
- sound/player/torus/incoming.ogg
- sound/player/torus/jump.ogg
- sound/player/torus/letsgo.ogg
- sound/player/torus/needhelp.ogg
- sound/player/torus/pain100.ogg
- sound/player/torus/pain25.ogg
- sound/player/torus/pain50.ogg
- sound/player/torus/pain75.ogg
- sound/player/torus/taunt.ogg
- sound/player/torus/teamshoot.ogg
- sound/player/torus/waypoint.ogg
- sound/porto/bounce.ogg
- sound/porto/create.ogg
- sound/porto/expire.ogg
- sound/porto/explode.ogg
- sound/porto/fire.ogg
- sound/porto/unsupported.ogg
- sound/weapons/brass1.ogg
- sound/weapons/brass2.ogg
- sound/weapons/brass3.ogg
- sound/weapons/campingrifle_fire.ogg
- sound/weapons/campingrifle_reload.ogg
- sound/weapons/casings1.ogg
- sound/weapons/casings2.ogg
- sound/weapons/casings3.ogg
- sound/weapons/crylink_fire2.ogg
- sound/weapons/crylink_fire.ogg
- sound/weapons/crylink_impact2.ogg
- sound/weapons/crylink_impact.ogg
- sound/weapons/electro_bounce.ogg
- sound/weapons/electro_fire2.ogg
- sound/weapons/electro_fire.ogg
- sound/weapons/electro_fly.ogg
- sound/weapons/electro_impact.ogg
- sound/weapons/flacexp1.ogg
- sound/weapons/flacexp2.ogg
- sound/weapons/flacexp3.ogg
- sound/weapons/flac_fire.ogg
- sound/weapons/grenade_bounce1.ogg
- sound/weapons/grenade_bounce2.ogg
- sound/weapons/grenade_bounce3.ogg
- sound/weapons/grenade_bounce4.ogg
- sound/weapons/grenade_bounce5.ogg
- sound/weapons/grenade_bounce6.ogg
- sound/weapons/grenade_fire.ogg
- sound/weapons/grenade_impact.ogg
- sound/weapons/hagar_fire.ogg
- sound/weapons/hagexp1.ogg
- sound/weapons/hagexp2.ogg
- sound/weapons/hagexp3.ogg
- sound/weapons/hookbomb_fire.ogg
- sound/weapons/hookbomb_impact.ogg
- sound/weapons/hook_fire.ogg
- sound/weapons/hook_impact.ogg
- sound/weapons/lasergun_fire.ogg
- sound/weapons/laserimpact.ogg
- sound/weapons/minstanexfire.ogg
- sound/weapons/nexfire.ogg
- sound/weapons/neximpact.ogg
- sound/weapons/rocket_det.ogg
- sound/weapons/rocket_fire.ogg
- sound/weapons/rocket_fly.ogg
- sound/weapons/rocket_impact.ogg
- sound/weapons/rocket_mode.ogg
- sound/weapons/seekerexp1.ogg
- sound/weapons/seekerexp2.ogg
- sound/weapons/seekerexp3.ogg
- sound/weapons/seeker_fire.ogg
- sound/weapons/shotgun_fire.ogg
- sound/weapons/strength_fire.ogg
- sound/weapons/tagexp1.ogg
- sound/weapons/tagexp2.ogg
- sound/weapons/tagexp3.ogg
- sound/weapons/tag_fire.ogg
- sound/weapons/tag_impact.ogg
- sound/weapons/tag_rocket_fly.ogg
- sound/weapons/uzi_fire.ogg
- sound/weapons/weaponpickup.ogg
- sound/weapons/weapon_switch.ogg
- textures/campingrifle_bump.tga
- textures/campingrifle_gloss.tga
- textures/campingrifle_glow.tga
- textures/campingrifle_pants.tga
- textures/campingrifle_shirt.tga
- textures/campingrifle.tga
- textures/crifleflashider_bump.tga
- textures/crifleflashider_gloss.tga
- textures/crifleflashider.tga
- textures/eggandbacon/black.tga
- textures/eggandbacon/platten_bump.tga
- textures/eggandbacon/platten_gloss.tga
- textures/eggandbacon/platten.tga
- textures/eggandbacon/upsign_bump.tga
- textures/eggandbacon/upsign_gloss.tga
- textures/eggandbacon/upsign.tga
- textures/egyptsoc_floor/block01a.tga
- textures/egyptsoc_floor/block01b.tga
- textures/egyptsoc_floor/block02a.tga
- textures/egyptsoc_floor/block02b.tga
- textures/egyptsoc_floor/block03a.tga
- textures/egyptsoc_floor/block03b.tga
- textures/egyptsoc_floor/block04a.tga
- textures/egyptsoc_floor/block04b.tga
- textures/egyptsoc_floor/block06a.tga
- textures/egyptsoc_floor/block06b.tga
- textures/egyptsoc_floor/block07a.tga
- textures/egyptsoc_floor/block07b.tga
- textures/egyptsoc_floor/block08a.tga
- textures/egyptsoc_floor/block08b.tga
- textures/egyptsoc_floor/block08c.tga
- textures/egyptsoc_floor/block08d.tga
- textures/egyptsoc_floor/block09a.tga
- textures/egyptsoc_floor/block09b.tga
- textures/egyptsoc_floor/block10a.tga
- textures/egyptsoc_floor/block10b.tga
- textures/egyptsoc_floor/block10c.tga
- textures/egyptsoc_floor/grate1a.tga
- textures/egyptsoc_floor/grate1b.tga
- textures/egyptsoc_floor/grate2a.tga
- textures/egyptsoc_floor/grate2b.tga
- textures/egyptsoc_floor/grate3a.tga
- textures/egyptsoc_floor/grate3b.tga
- textures/egyptsoc_floor/grate4a.tga
- textures/egyptsoc_floor/grate4b.tga
- textures/egyptsoc_floor/jumppad1ab_glow.tga
- textures/egyptsoc_floor/jumppad1ab.tga
- textures/egyptsoc_floor/jumppad1ag_glow.tga
- textures/egyptsoc_floor/jumppad1ag.tga
- textures/egyptsoc_floor/jumppad1ap.tga
- textures/egyptsoc_floor/jumppad1ar_glow.tga
- textures/egyptsoc_floor/jumppad1ar.tga
- textures/egyptsoc_floor/jumppad1bb_glow.tga
- textures/egyptsoc_floor/jumppad1bb.tga
- textures/egyptsoc_floor/jumppad1bg_glow.tga
- textures/egyptsoc_floor/jumppad1bg.tga
- textures/egyptsoc_floor/jumppad1br_glow.tga
- textures/egyptsoc_floor/jumppad1br.tga
- textures/egyptsoc_floor/marker1ab.tga
- textures/egyptsoc_floor/marker1ag.tga
- textures/egyptsoc_floor/marker1bb.tga
- textures/egyptsoc_floor/marker1bg.tga
- textures/egyptsoc_floor/solidgrate1a.tga
- textures/egyptsoc_floor/solidgrate1b.tga
- textures/egyptsoc_floor/solidgrate2a.tga
- textures/egyptsoc_floor/solidgrate2b.tga
- textures/egyptsoc_floor/solidgrate3a.tga
- textures/egyptsoc_floor/solidgrate3b.tga
- textures/egyptsoc_floor/solidgrate4a.tga
- textures/egyptsoc_floor/solidgrate4b.tga
- textures/egyptsoc_floor/woodmgrid1a.tga
- textures/egyptsoc_floor/woodmgrid1b.tga
- textures/egyptsoc_floor/woodmgrid2a.tga
- textures/egyptsoc_floor/woodmgrid2b.tga
- textures/egyptsoc_floor/woodmgrid3a.tga
- textures/egyptsoc_floor/woodmgrid3b.tga
- textures/egyptsoc_mat/block01a.tga
- textures/egyptsoc_mat/block01b.tga
- textures/egyptsoc_mat/block01c.tga
- textures/egyptsoc_mat/block01d.tga
- textures/egyptsoc_mat/block02a.tga
- textures/egyptsoc_mat/block02b.tga
- textures/egyptsoc_mat/block02c.tga
- textures/egyptsoc_mat/block02d.tga
- textures/egyptsoc_mat/sand1a.tga
- textures/egyptsoc_mat/sand1b.tga
- textures/egyptsoc_mat/wood02.tga
- textures/egyptsoc_mat/wood04.tga
- textures/egyptsoc_mat/wood05a.tga
- textures/egyptsoc_mat/wood05b.tga
- textures/egyptsoc_mat/wood07.tga
- textures/egyptsoc_mat/wood09.tga
- textures/egyptsoc_mat/wood17.tga
- textures/egyptsoc_mat/wood18.tga
- textures/egyptsoc_sfx/lig_032-01b1_glow.tga
- textures/egyptsoc_sfx/lig_032-01b1.tga
- textures/egyptsoc_sfx/lig_032-01b2_glow.tga
- textures/egyptsoc_sfx/lig_032-01b2.tga
- textures/egyptsoc_sfx/lig_032-01r1_glow.tga
- textures/egyptsoc_sfx/lig_032-01r1.tga
- textures/egyptsoc_sfx/lig_032-01r2_glow.tga
- textures/egyptsoc_sfx/lig_032-01r2.tga
- textures/egyptsoc_sfx/lig_032-01w1_glow.tga
- textures/egyptsoc_sfx/lig_032-01w1.tga
- textures/egyptsoc_sfx/lig_032-01w2_glow.tga
- textures/egyptsoc_sfx/lig_032-01w2.tga
- textures/egyptsoc_sfx/lig_032-01y1_glow.tga
- textures/egyptsoc_sfx/lig_032-01y1.tga
- textures/egyptsoc_sfx/lig_032-01y2_glow.tga
- textures/egyptsoc_sfx/lig_032-01y2.tga
- textures/egyptsoc_sfx/lig_032-02b1_glow.tga
- textures/egyptsoc_sfx/lig_032-02b1.tga
- textures/egyptsoc_sfx/lig_032-02b2_glow.tga
- textures/egyptsoc_sfx/lig_032-02b2.tga
- textures/egyptsoc_sfx/lig_032-02r1_glow.tga
- textures/egyptsoc_sfx/lig_032-02r1.tga
- textures/egyptsoc_sfx/lig_032-02r2_glow.tga
- textures/egyptsoc_sfx/lig_032-02r2.tga
- textures/egyptsoc_sfx/lig_032-02w1_glow.tga
- textures/egyptsoc_sfx/lig_032-02w1.tga
- textures/egyptsoc_sfx/lig_032-02w2_glow.tga
- textures/egyptsoc_sfx/lig_032-02w2.tga
- textures/egyptsoc_sfx/lig_032-02y1_glow.tga
- textures/egyptsoc_sfx/lig_032-02y1.tga
- textures/egyptsoc_sfx/lig_032-02y2_glow.tga
- textures/egyptsoc_sfx/lig_032-02y2.tga
- textures/egyptsoc_sfx/lig_032-03b1_glow.tga
- textures/egyptsoc_sfx/lig_032-03b1.tga
- textures/egyptsoc_sfx/lig_032-03b2_glow.tga
- textures/egyptsoc_sfx/lig_032-03b2.tga
- textures/egyptsoc_sfx/lig_032-03r1_glow.tga
- textures/egyptsoc_sfx/lig_032-03r1.tga
- textures/egyptsoc_sfx/lig_032-03r2_glow.tga
- textures/egyptsoc_sfx/lig_032-03r2.tga
- textures/egyptsoc_sfx/lig_032-03w1_glow.tga
- textures/egyptsoc_sfx/lig_032-03w1.tga
- textures/egyptsoc_sfx/lig_032-03w2_glow.tga
- textures/egyptsoc_sfx/lig_032-03w2.tga
- textures/egyptsoc_sfx/lig_032-03y1_glow.tga
- textures/egyptsoc_sfx/lig_032-03y1.tga
- textures/egyptsoc_sfx/lig_032-03y2_glow.tga
- textures/egyptsoc_sfx/lig_032-03y2.tga
- textures/egyptsoc_sfx/lig_032-04b1_glow.tga
- textures/egyptsoc_sfx/lig_032-04b1.tga
- textures/egyptsoc_sfx/lig_032-04b2_glow.tga
- textures/egyptsoc_sfx/lig_032-04b2.tga
- textures/egyptsoc_sfx/lig_032-04r1_glow.tga
- textures/egyptsoc_sfx/lig_032-04r1.tga
- textures/egyptsoc_sfx/lig_032-04r2_glow.tga
- textures/egyptsoc_sfx/lig_032-04r2.tga
- textures/egyptsoc_sfx/lig_032-04w1_glow.tga
- textures/egyptsoc_sfx/lig_032-04w1.tga
- textures/egyptsoc_sfx/lig_032-04w2_glow.tga
- textures/egyptsoc_sfx/lig_032-04w2.tga
- textures/egyptsoc_sfx/lig_032-04y1_glow.tga
- textures/egyptsoc_sfx/lig_032-04y1.tga
- textures/egyptsoc_sfx/lig_032-04y2_glow.tga
- textures/egyptsoc_sfx/lig_032-04y2.tga
- textures/egyptsoc_sfx/lig_064-01b1_glow.tga
- textures/egyptsoc_sfx/lig_064-01b1.tga
- textures/egyptsoc_sfx/lig_064-01b2_glow.tga
- textures/egyptsoc_sfx/lig_064-01b2.tga
- textures/egyptsoc_sfx/lig_064-01r1_glow.tga
- textures/egyptsoc_sfx/lig_064-01r1.tga
- textures/egyptsoc_sfx/lig_064-01r2_glow.tga
- textures/egyptsoc_sfx/lig_064-01r2.tga
- textures/egyptsoc_sfx/lig_064-01w1_glow.tga
- textures/egyptsoc_sfx/lig_064-01w1.tga
- textures/egyptsoc_sfx/lig_064-01w2_glow.tga
- textures/egyptsoc_sfx/lig_064-01w2.tga
- textures/egyptsoc_sfx/lig_064-01y1_glow.tga
- textures/egyptsoc_sfx/lig_064-01y1.tga
- textures/egyptsoc_sfx/lig_064-01y2_glow.tga
- textures/egyptsoc_sfx/lig_064-01y2.tga
- textures/egyptsoc_sfx/lig_064-02b1_glow.tga
- textures/egyptsoc_sfx/lig_064-02b1.tga
- textures/egyptsoc_sfx/lig_064-02b2_glow.tga
- textures/egyptsoc_sfx/lig_064-02b2.tga
- textures/egyptsoc_sfx/lig_064-02r1_glow.tga
- textures/egyptsoc_sfx/lig_064-02r1.tga
- textures/egyptsoc_sfx/lig_064-02r2_glow.tga
- textures/egyptsoc_sfx/lig_064-02r2.tga
- textures/egyptsoc_sfx/lig_064-02w1_glow.tga
- textures/egyptsoc_sfx/lig_064-02w1.tga
- textures/egyptsoc_sfx/lig_064-02w2_glow.tga
- textures/egyptsoc_sfx/lig_064-02w2.tga
- textures/egyptsoc_sfx/lig_064-02y1_glow.tga
- textures/egyptsoc_sfx/lig_064-02y1.tga
- textures/egyptsoc_sfx/lig_064-02y2_glow.tga
- textures/egyptsoc_sfx/lig_064-02y2.tga
- textures/egyptsoc_sfx/lig_064-04b1_glow.tga
- textures/egyptsoc_sfx/lig_064-04b1.tga
- textures/egyptsoc_sfx/lig_064-04b2_glow.tga
- textures/egyptsoc_sfx/lig_064-04b2.tga
- textures/egyptsoc_sfx/lig_064-04r1_glow.tga
- textures/egyptsoc_sfx/lig_064-04r1.tga
- textures/egyptsoc_sfx/lig_064-04r2_glow.tga
- textures/egyptsoc_sfx/lig_064-04r2.tga
- textures/egyptsoc_sfx/lig_064-04w1_glow.tga
- textures/egyptsoc_sfx/lig_064-04w1.tga
- textures/egyptsoc_sfx/lig_064-04w2_glow.tga
- textures/egyptsoc_sfx/lig_064-04w2.tga
- textures/egyptsoc_sfx/lig_064-04y1_glow.tga
- textures/egyptsoc_sfx/lig_064-04y1.tga
- textures/egyptsoc_sfx/lig_064-04y2_glow.tga
- textures/egyptsoc_sfx/lig_064-04y2.tga
- textures/egyptsoc_sfx/lig_064-05b1_glow.tga
- textures/egyptsoc_sfx/lig_064-05b1.tga
- textures/egyptsoc_sfx/lig_064-05b2_glow.tga
- textures/egyptsoc_sfx/lig_064-05b2.tga
- textures/egyptsoc_sfx/lig_064-05r1_glow.tga
- textures/egyptsoc_sfx/lig_064-05r1.tga
- textures/egyptsoc_sfx/lig_064-05r2_glow.tga
- textures/egyptsoc_sfx/lig_064-05r2.tga
- textures/egyptsoc_sfx/lig_064-05w1_glow.tga
- textures/egyptsoc_sfx/lig_064-05w1.tga
- textures/egyptsoc_sfx/lig_064-05w2_glow.tga
- textures/egyptsoc_sfx/lig_064-05w2.tga
- textures/egyptsoc_sfx/lig_064-05y1_glow.tga
- textures/egyptsoc_sfx/lig_064-05y1.tga
- textures/egyptsoc_sfx/lig_064-05y2_glow.tga
- textures/egyptsoc_sfx/lig_064-05y2.tga
- textures/egyptsoc_sfx/lig_064-06b1_glow.tga
- textures/egyptsoc_sfx/lig_064-06b1.tga
- textures/egyptsoc_sfx/lig_064-06b2_glow.tga
- textures/egyptsoc_sfx/lig_064-06b2.tga
- textures/egyptsoc_sfx/lig_064-06r1_glow.tga
- textures/egyptsoc_sfx/lig_064-06r1.tga
- textures/egyptsoc_sfx/lig_064-06r2_glow.tga
- textures/egyptsoc_sfx/lig_064-06r2.tga
- textures/egyptsoc_sfx/lig_064-06w1_glow.tga
- textures/egyptsoc_sfx/lig_064-06w1.tga
- textures/egyptsoc_sfx/lig_064-06w2_glow.tga
- textures/egyptsoc_sfx/lig_064-06w2.tga
- textures/egyptsoc_sfx/lig_064-06y1_glow.tga
- textures/egyptsoc_sfx/lig_064-06y1.tga
- textures/egyptsoc_sfx/lig_064-06y2_glow.tga
- textures/egyptsoc_sfx/lig_064-06y2.tga
- textures/egyptsoc_sfx/lig_128-05b1.tga
- textures/egyptsoc_sfx/lig_128-05b2.tga
- textures/egyptsoc_sfx/lig_128-05r1.tga
- textures/egyptsoc_sfx/lig_128-05r2.tga
- textures/egyptsoc_sfx/lig_128-05w1.tga
- textures/egyptsoc_sfx/lig_128-05w2.tga
- textures/egyptsoc_sfx/lig_128-05y1.tga
- textures/egyptsoc_sfx/lig_128-05y2.tga
- textures/egyptsoc_sfx/lig_b064-01a_glow.tga
- textures/egyptsoc_sfx/lig_b064-01a.tga
- textures/egyptsoc_sfx/lig_b064-01b_glow.tga
- textures/egyptsoc_sfx/lig_b064-01b.tga
- textures/egyptsoc_sfx/lig_b064-01c_glow.tga
- textures/egyptsoc_sfx/lig_b064-01c.tga
- textures/egyptsoc_sfx/lig_b064-01d_glow.tga
- textures/egyptsoc_sfx/lig_b064-01d.tga
- textures/egyptsoc_sfx/lig_b064-01e_glow.tga
- textures/egyptsoc_sfx/lig_b064-01e.tga
- textures/egyptsoc_sfx/lig_b064-01f_glow.tga
- textures/egyptsoc_sfx/lig_b064-01f.tga
- textures/egyptsoc_sfx/lig_b064-02a_glow.tga
- textures/egyptsoc_sfx/lig_b064-02a.tga
- textures/egyptsoc_sfx/lig_b064-02b_glow.tga
- textures/egyptsoc_sfx/lig_b064-02b.tga
- textures/egyptsoc_sfx/lig_b064-02c_glow.tga
- textures/egyptsoc_sfx/lig_b064-02c.tga
- textures/egyptsoc_sfx/lig_b064-02d_glow.tga
- textures/egyptsoc_sfx/lig_b064-02d.tga
- textures/egyptsoc_sfx/lig_b064-02e_glow.tga
- textures/egyptsoc_sfx/lig_b064-02e.tga
- textures/egyptsoc_sfx/lig_b064-02f_glow.tga
- textures/egyptsoc_sfx/lig_b064-02f.tga
- textures/egyptsoc_sfx/lig_b064-03a_glow.tga
- textures/egyptsoc_sfx/lig_b064-03a.tga
- textures/egyptsoc_sfx/lig_b064-03b_glow.tga
- textures/egyptsoc_sfx/lig_b064-03b.tga
- textures/egyptsoc_sfx/lig_b064-03c_glow.tga
- textures/egyptsoc_sfx/lig_b064-03c.tga
- textures/egyptsoc_sfx/lig_b064-03d_glow.tga
- textures/egyptsoc_sfx/lig_b064-03d.tga
- textures/egyptsoc_sfx/lig_b064-03e_glow.tga
- textures/egyptsoc_sfx/lig_b064-03e.tga
- textures/egyptsoc_sfx/lig_b064-03f_glow.tga
- textures/egyptsoc_sfx/lig_b064-03f.tga
- textures/egyptsoc_sfx/lig_v192-01ba_glow.tga
- textures/egyptsoc_sfx/lig_v192-01ba.tga
- textures/egyptsoc_sfx/lig_v192-01bb_glow.tga
- textures/egyptsoc_sfx/lig_v192-01bb.tga
- textures/egyptsoc_sfx/lig_v192-01wa_glow.tga
- textures/egyptsoc_sfx/lig_v192-01wa.tga
- textures/egyptsoc_sfx/lig_v192-01wb_glow.tga
- textures/egyptsoc_sfx/lig_v192-01wb.tga
- textures/egyptsoc_sfx/lig_v192-01ya_glow.tga
- textures/egyptsoc_sfx/lig_v192-01ya.tga
- textures/egyptsoc_sfx/lig_v192-01yb_glow.tga
- textures/egyptsoc_sfx/lig_v192-01yb.tga
- textures/egyptsoc_trim/032-01a.tga
- textures/egyptsoc_trim/032-01b.tga
- textures/egyptsoc_trim/032-01c.tga
- textures/egyptsoc_trim/032-02a.tga
- textures/egyptsoc_trim/032-02b.tga
- textures/egyptsoc_trim/032-02c.tga
- textures/egyptsoc_trim/032-03a.tga
- textures/egyptsoc_trim/032-03b.tga
- textures/egyptsoc_trim/032-03c.tga
- textures/egyptsoc_trim/032-04a.tga
- textures/egyptsoc_trim/032-04b.tga
- textures/egyptsoc_trim/032-04c.tga
- textures/egyptsoc_trim/032-04d.tga
- textures/egyptsoc_trim/032-05a.tga
- textures/egyptsoc_trim/032-05b.tga
- textures/egyptsoc_trim/032-05c.tga
- textures/egyptsoc_trim/032-05d.tga
- textures/egyptsoc_trim/032-05e.tga
- textures/egyptsoc_trim/032-05f.tga
- textures/egyptsoc_trim/032-06a.tga
- textures/egyptsoc_trim/032-06b.tga
- textures/egyptsoc_trim/032-06c.tga
- textures/egyptsoc_trim/048-01a.tga
- textures/egyptsoc_trim/048-01b.tga
- textures/egyptsoc_trim/048-01c.tga
- textures/egyptsoc_trim/048-02a.tga
- textures/egyptsoc_trim/048-02b.tga
- textures/egyptsoc_trim/048-02c.tga
- textures/egyptsoc_trim/048-02d.tga
- textures/egyptsoc_trim/048-02e.tga
- textures/egyptsoc_trim/048-02f.tga
- textures/egyptsoc_trim/048-02g.tga
- textures/egyptsoc_trim/048-02h.tga
- textures/egyptsoc_trim/064-01a.tga
- textures/egyptsoc_trim/064-01b.tga
- textures/egyptsoc_trim/064-01c.tga
- textures/egyptsoc_trim/064-02a.tga
- textures/egyptsoc_trim/064-02b.tga
- textures/egyptsoc_trim/064-02c.tga
- textures/egyptsoc_trim/064-03a.tga
- textures/egyptsoc_trim/064-03b.tga
- textures/egyptsoc_trim/064-03c.tga
- textures/egyptsoc_trim/064-04a.tga
- textures/egyptsoc_trim/064-04b.tga
- textures/egyptsoc_trim/064-04c.tga
- textures/egyptsoc_trim/064-05a.tga
- textures/egyptsoc_trim/064-05b.tga
- textures/egyptsoc_trim/064-05c.tga
- textures/egyptsoc_trim/064-05d.tga
- textures/egyptsoc_trim/064-06a.tga
- textures/egyptsoc_trim/064-06b.tga
- textures/egyptsoc_trim/064-06c.tga
- textures/egyptsoc_trim/064-06d.tga
- textures/egyptsoc_trim/064-07a.tga
- textures/egyptsoc_trim/064-07b.tga
- textures/egyptsoc_trim/064-07c.tga
- textures/egyptsoc_trim/064-07d.tga
- textures/egyptsoc_trim/064-07e.tga
- textures/egyptsoc_trim/064-08a.tga
- textures/egyptsoc_trim/064-08b.tga
- textures/egyptsoc_trim/064-08c.tga
- textures/egyptsoc_trim/064-08d.tga
- textures/egyptsoc_trim/064-08e.tga
- textures/egyptsoc_trim/064-08f.tga
- textures/egyptsoc_trim/096-01c.tga
- textures/egyptsoc_trim/128-01a.tga
- textures/egyptsoc_trim/128-01b.tga
- textures/egyptsoc_trim/128-01c.tga
- textures/egyptsoc_trim/128-01pa.tga
- textures/egyptsoc_trim/128-01pb.tga
- textures/egyptsoc_trim/128-01pc.tga
- textures/egyptsoc_trim/128-02a.tga
- textures/egyptsoc_trim/128-02b.tga
- textures/egyptsoc_trim/128-02c.tga
- textures/egyptsoc_trim/128-02pa.tga
- textures/egyptsoc_trim/128-02pb.tga
- textures/egyptsoc_trim/128-02pc.tga
- textures/egyptsoc_trim/128-03a.tga
- textures/egyptsoc_trim/128-03b.tga
- textures/egyptsoc_trim/128-03c.tga
- textures/egyptsoc_trim/128-04a.tga
- textures/egyptsoc_trim/128-04b.tga
- textures/egyptsoc_trim/128-04c.tga
- textures/egyptsoc_trim/128-04d.tga
- textures/egyptsoc_trim/128-05a.tga
- textures/egyptsoc_trim/128-05b.tga
- textures/egyptsoc_trim/128-05c.tga
- textures/egyptsoc_trim/128-05d.tga
- textures/egyptsoc_trim/128-05e.tga
- textures/egyptsoc_trim/128-05f.tga
- textures/egyptsoc_trim/128-05g.tga
- textures/egyptsoc_trim/128-05h.tga
- textures/egyptsoc_trim/128-05i.tga
- textures/egyptsoc_trim/128-05j.tga
- textures/egyptsoc_trim/128-comb1.tga
- textures/egyptsoc_trim/256-01a.tga
- textures/egyptsoc_trim/256-01b.tga
- textures/egyptsoc_trim/256-03a.tga
- textures/egyptsoc_trim/256-03b.tga
- textures/egyptsoc_trim/256-03c.tga
- textures/egyptsoc_trim/256-03d.tga
- textures/egyptsoc_trim/256-04a.tga
- textures/egyptsoc_trim/256-04b.tga
- textures/egyptsoc_trim/256-04c.tga
- textures/egyptsoc_trim/256-04d.tga
- textures/egyptsoc_trimd/128-04cr.tga
- textures/egyptsoc_trimd/128-04dr.tga
- textures/egyptsoc_trimd/s064-01ed.tga
- textures/egyptsoc_trimd/s064-01er.tga
- textures/egyptsoc_trimd/s064-01fd.tga
- textures/egyptsoc_trimd/s064-01fr.tga
- textures/egyptsoc_trimd/s064-02cd.tga
- textures/egyptsoc_trimd/s064-02cr.tga
- textures/egyptsoc_trimd/s064-02dd.tga
- textures/egyptsoc_trimd/s064-02dr.tga
- textures/egyptsoc_trimd/s064-03cd.tga
- textures/egyptsoc_trimd/s064-03dd.tga
- textures/egyptsoc_trimd/s064-04cd.tga
- textures/egyptsoc_trimd/s064-04dd.tga
- textures/egyptsoc_trimd/s128-01cd.tga
- textures/egyptsoc_trimd/s128-01cr_glow.tga
- textures/egyptsoc_trimd/s128-01cr.tga
- textures/egyptsoc_trimd/s128-01dd.tga
- textures/egyptsoc_trimd/s128-01dr_glow.tga
- textures/egyptsoc_trimd/s128-01dr.tga
- textures/egyptsoc_trimd/s128-02cd.tga
- textures/egyptsoc_trimd/s128-02cr.tga
- textures/egyptsoc_trimd/s128-02dd.tga
- textures/egyptsoc_trimd/s128-02dr.tga
- textures/egyptsoc_trimd/s128-04cd.tga
- textures/egyptsoc_trimd/s128-04cr.tga
- textures/egyptsoc_trimd/s128-04dd.tga
- textures/egyptsoc_trimd/s128-04dr.tga
- textures/egyptsoc_trimd/v064-01cd.tga
- textures/egyptsoc_trimd/v064-01cr.tga
- textures/egyptsoc_trimd/v064-01dd.tga
- textures/egyptsoc_trimd/v064-01dr.tga
- textures/egyptsoc_trimd/v064-02cd.tga
- textures/egyptsoc_trimd/v064-02cr.tga
- textures/egyptsoc_trimd/v064-02dd.tga
- textures/egyptsoc_trimd/v064-02dr.tga
- textures/egyptsoc_trimd/v064-03cd.tga
- textures/egyptsoc_trimd/v064-03cr.tga
- textures/egyptsoc_trimd/v064-03dd.tga
- textures/egyptsoc_trimd/v064-03dr.tga
- textures/egyptsoc_trimd/v128-01cd.tga
- textures/egyptsoc_trimd/v128-01cr.tga
- textures/egyptsoc_trimd/v128-01dd.tga
- textures/egyptsoc_trimd/v128-01dr.tga
- textures/egyptsoc_trimd/v128-02cd.tga
- textures/egyptsoc_trimd/v128-02cr.tga
- textures/egyptsoc_trimd/v128-02dd.tga
- textures/egyptsoc_trimd/v128-02dr.tga
- textures/egyptsoc_trimd/v128-03cd.tga
- textures/egyptsoc_trimd/v128-03cr.tga
- textures/egyptsoc_trimd/v128-03dd.tga
- textures/egyptsoc_trimd/v128-03dr.tga
- textures/egyptsoc_trimd/v128-03gd.tga
- textures/egyptsoc_trimd/v128-04cd.tga
- textures/egyptsoc_trimd/v128-04cr.tga
- textures/egyptsoc_trimd/v128-04dd.tga
- textures/egyptsoc_trimd/v128-04dr.tga
- textures/egyptsoc_trimd/v128-04fd.tga
- textures/egyptsoc_trimd/v128-04fr.tga
- textures/egyptsoc_trimd/v128-04gr.tga
- textures/egyptsoc_trim/lig_128-05a.tga
- textures/egyptsoc_trim/lig_128-05b.tga
- textures/egyptsoc_trim/s064-01a.tga
- textures/egyptsoc_trim/s064-01b.tga
- textures/egyptsoc_trim/s064-01c.tga
- textures/egyptsoc_trim/s064-01d.tga
- textures/egyptsoc_trim/s064-01e.tga
- textures/egyptsoc_trim/s064-01f.tga
- textures/egyptsoc_trim/s064-02a.tga
- textures/egyptsoc_trim/s064-02b.tga
- textures/egyptsoc_trim/s064-02c.tga
- textures/egyptsoc_trim/s064-02d.tga
- textures/egyptsoc_trim/s064-02e.tga
- textures/egyptsoc_trim/s064-03a.tga
- textures/egyptsoc_trim/s064-03b.tga
- textures/egyptsoc_trim/s064-03c.tga
- textures/egyptsoc_trim/s064-03d.tga
- textures/egyptsoc_trim/s064-03e.tga
- textures/egyptsoc_trim/s064-04a.tga
- textures/egyptsoc_trim/s064-04b.tga
- textures/egyptsoc_trim/s064-04c.tga
- textures/egyptsoc_trim/s064-04d.tga
- textures/egyptsoc_trim/s064-04e.tga
- textures/egyptsoc_trim/s064-05a.tga
- textures/egyptsoc_trim/s064-05b.tga
- textures/egyptsoc_trim/s064-05c.tga
- textures/egyptsoc_trim/s064-05d.tga
- textures/egyptsoc_trim/s064-05e.tga
- textures/egyptsoc_trim/s064-05f.tga
- textures/egyptsoc_trim/s064-05g.tga
- textures/egyptsoc_trim/s064-05h.tga
- textures/egyptsoc_trim/s064-05i.tga
- textures/egyptsoc_trim/s064-05j.tga
- textures/egyptsoc_trim/s064-05k.tga
- textures/egyptsoc_trim/s064-05l.tga
- textures/egyptsoc_trim/s064-05m.tga
- textures/egyptsoc_trim/s064-05n.tga
- textures/egyptsoc_trim/s064-05o.tga
- textures/egyptsoc_trim/s064-05p.tga
- textures/egyptsoc_trim/s128-01a.tga
- textures/egyptsoc_trim/s128-01b.tga
- textures/egyptsoc_trim/s128-01c_glow.tga
- textures/egyptsoc_trim/s128-01c.tga
- textures/egyptsoc_trim/s128-01d_glow.tga
- textures/egyptsoc_trim/s128-01d.tga
- textures/egyptsoc_trim/s128-01e_glow.tga
- textures/egyptsoc_trim/s128-01e.tga
- textures/egyptsoc_trim/s128-02a.tga
- textures/egyptsoc_trim/s128-02b.tga
- textures/egyptsoc_trim/s128-02c.tga
- textures/egyptsoc_trim/s128-02d.tga
- textures/egyptsoc_trim/s128-02e.tga
- textures/egyptsoc_trim/s128-04a.tga
- textures/egyptsoc_trim/s128-04b.tga
- textures/egyptsoc_trim/s128-04c.tga
- textures/egyptsoc_trim/s128-04d.tga
- textures/egyptsoc_trim/s128-04e.tga
- textures/egyptsoc_trim/step01a.tga
- textures/egyptsoc_trim/step01b.tga
- textures/egyptsoc_trim/stepangle01a.tga
- textures/egyptsoc_trim/stepangle01b.tga
- textures/egyptsoc_trim/stepangle01c.tga
- textures/egyptsoc_trim/stepangle01d.tga
- textures/egyptsoc_trim/t064-01a.tga
- textures/egyptsoc_trim/t064-01b.tga
- textures/egyptsoc_trim/t064-02a.tga
- textures/egyptsoc_trim/t064-02b.tga
- textures/egyptsoc_trim/t064-02c.tga
- textures/egyptsoc_trim/t064-02d.tga
- textures/egyptsoc_trim/v064-01a.tga
- textures/egyptsoc_trim/v064-01b.tga
- textures/egyptsoc_trim/v064-01c.tga
- textures/egyptsoc_trim/v064-01d.tga
- textures/egyptsoc_trim/v064-01e.tga
- textures/egyptsoc_trim/v064-02a.tga
- textures/egyptsoc_trim/v064-02b.tga
- textures/egyptsoc_trim/v064-02c.tga
- textures/egyptsoc_trim/v064-02d.tga
- textures/egyptsoc_trim/v064-02e.tga
- textures/egyptsoc_trim/v064-03a.tga
- textures/egyptsoc_trim/v064-03b.tga
- textures/egyptsoc_trim/v064-03c.tga
- textures/egyptsoc_trim/v064-03d.tga
- textures/egyptsoc_trim/v064-03e.tga
- textures/egyptsoc_trim/v096-01b.tga
- textures/egyptsoc_trim/v096-01c.tga
- textures/egyptsoc_trim/v128-01a.tga
- textures/egyptsoc_trim/v128-01b.tga
- textures/egyptsoc_trim/v128-01c.tga
- textures/egyptsoc_trim/v128-01d.tga
- textures/egyptsoc_trim/v128-01e.tga
- textures/egyptsoc_trim/v128-02a.tga
- textures/egyptsoc_trim/v128-02b.tga
- textures/egyptsoc_trim/v128-02c.tga
- textures/egyptsoc_trim/v128-02d.tga
- textures/egyptsoc_trim/v128-02e.tga
- textures/egyptsoc_trim/v128-03a.tga
- textures/egyptsoc_trim/v128-03b.tga
- textures/egyptsoc_trim/v128-03c.tga
- textures/egyptsoc_trim/v128-03d.tga
- textures/egyptsoc_trim/v128-03e.tga
- textures/egyptsoc_trim/v128-03f.tga
- textures/egyptsoc_trim/v128-03g.tga
- textures/egyptsoc_trim/v128-04a.tga
- textures/egyptsoc_trim/v128-04b.tga
- textures/egyptsoc_trim/v128-04c.tga
- textures/egyptsoc_trim/v128-04d.tga
- textures/egyptsoc_trim/v128-04e.tga
- textures/egyptsoc_trim/v128-04f.tga
- textures/egyptsoc_trim/v128-04g.tga
- textures/egyptsoc_wall/relief03a.tga
- textures/egyptsoc_wall/relief03b.tga
- textures/egyptsoc_wall/relief03c.tga
- textures/egyptsoc_wall/relief03d.tga
- textures/egyptsoc_wall/relief04a.tga
- textures/egyptsoc_wall/relief04b.tga
- textures/egyptsoc_wall/relief04c.tga
- textures/egyptsoc_wall/relief04d.tga
- textures/egyptsoc_wall/stone01a.tga
- textures/egyptsoc_wall/stone01b.tga
- textures/egyptsoc_wall/stone01c.tga
- textures/egyptsoc_wall/stone01d.tga
- textures/egyptsoc_wall/stone02a.tga
- textures/egyptsoc_wall/stone02b.tga
- textures/egyptsoc_wall/stone02c.tga
- textures/egyptsoc_wall/stone02d.tga
- textures/egyptsoc_wall/stone03a.tga
- textures/egyptsoc_wall/stone03b.tga
- textures/egyptsoc_wall/stone03c.tga
- textures/egyptsoc_wall/stone03d.tga
- textures/egyptsoc_wall/stone04a.tga
- textures/egyptsoc_wall/stone04b.tga
- textures/egyptsoc_wall/stone04c.tga
- textures/egyptsoc_wall/stone04d.tga
- textures/egyptsoc_wall/stone05a.tga
- textures/egyptsoc_wall/stone05b.tga
- textures/egyptsoc_wall/stone06a.tga
- textures/egyptsoc_wall/stone06b.tga
- textures/egyptsoc_wall/stone06e.tga
- textures/egyptsoc_wall/stone07a.tga
- textures/egyptsoc_wall/stone07b.tga
- textures/egyptsoc_wall/stone07c.tga
- textures/egyptsoc_wall/stone07d.tga
- textures/egyptsoc_wall/stone08a.tga
- textures/egyptsoc_wall/stone08b.tga
- textures/egyptsoc_wall/stone08c.tga
- textures/egyptsoc_wall/stone08d.tga
- textures/egyptsoc_wall/stone09a.tga
- textures/egyptsoc_wall/stone09b.tga
- textures/egyptsoc_wall/stone09c.tga
- textures/egyptsoc_wall/stone09d.tga
- textures/egyptsoc_wall/stone10a.tga
- textures/egyptsoc_wall/stone10b.tga
- textures/egyptsoc_wall/stone10c.tga
- textures/egyptsoc_wall/stone10d.tga
- textures/egyptsoc_wall/stone11a.tga
- textures/egyptsoc_wall/stone11b.tga
- textures/egyptsoc_wall/stone11c.tga
- textures/egyptsoc_wall/stone11d.tga
- textures/flags/flag_blue_cloth.tga
- textures/flags/flag_blue_gloss.tga
- textures/flags/flag_blue_glow.tga
- textures/flags/flag_blue_laser.tga
- textures/flags/flag_blue_norm.tga
- textures/flags/flag_blue.tga
- textures/flags/flag_red_cloth.tga
- textures/flags/flag_red_gloss.tga
- textures/flags/flag_red_glow.tga
- textures/flags/flag_red_laser.tga
- textures/flags/flag_red_norm.tga
- textures/flags/flag_red.tga
- textures/hlac_accessory_gloss.tga
- textures/hlac_accessory_norm.tga
- textures/hlac_accessory_pants.tga
- textures/hlac_accessory_shirt.tga
- textures/hlac_accessory.tga
- textures/hlac_body_gloss.tga
- textures/hlac_body_glow.tga
- textures/hlac_body_norm.tga
- textures/hlac_body_pants.tga
- textures/hlac_body_shirt.tga
- textures/hlac_body.tga
- textures/hlac_glass.tga
- textures/hlac_metal.tga
- textures/hlac_plasma.tga
- textures/hlac.tga
- textures/hookgun_gloss.tga
- textures/hookgun_norm.tga
- textures/hookgun_pants.tga
- textures/hookgun.tga
- textures/nex_bump.tga
- textures/nex_gloss.tga
- textures/nex_glow.tga
- textures/nex_pants.tga
- textures/nex_shirt.tga
- textures/nex.tga
- textures/portalgun_gloss.tga
- textures/portalgun_glow.tga
- textures/portalgun_norm.tga
- textures/portalgun.tga
- textures/portals/portals_blue_gloss.tga
- textures/portals/portals_blue_glow.tga
- textures/portals/portals_blue_norm.tga
- textures/portals/portals_blue.tga
- textures/portals/portals_blue_vortex.tga
- textures/portals/portals_inactive.tga
- textures/portals/portals_inactive_vortex.tga
- textures/portals/portals_red_gloss.tga
- textures/portals/portals_red_glow.tga
- textures/portals/portals_red_norm.tga
- textures/portals/portals_red.tga
- textures/portals/portals_red_vortex.tga
- textures/seeker_gloss.tga
- textures/seeker_glow.tga
- textures/seeker_norm.tga
- textures/seeker_pants.tga
- textures/seeker.tga
+ sound/misc/poweroff.wav
+ scripts/onslaught.shader
+ models/sprites/item-extralife_frame0.tga
+ models/sprites/item-extralife_frame1.tga
+ models/sprites/item-fuelregen_frame0.tga
+ models/sprites/item-fuelregen_frame1.tga
+ models/sprites/item-invis_frame0.tga
+ models/sprites/item-invis_frame1.tga
+ models/sprites/item-jetpack_frame0.tga
+ models/sprites/item-jetpack_frame1.tga
+ models/sprites/item-shield_frame0.tga
+ models/sprites/item-shield_frame1.tga
+ models/sprites/item-speed_frame0.tga
+ models/sprites/item-speed_frame1.tga
+ models/sprites/item-strength_frame0.tga
+ models/sprites/item-strength_frame1.tga
"
rm -rf pack
mkdir pack
for F in $COMPAT_FILES; do
- mkdir -p pack/${F%/*}
+ case "$F" in
+ */*)
+ mkdir -p pack/${F%/*}
+ ;;
+ esac
cp "$F" pack/"$F"
done
cd pack
-find . -type f -print0 | qual=85 scaledown=256x256 xargs -0 ../../misc/tools/jpeg-if-not-alpha.sh
+if false; then
+ find . -type f -print0 | qual=85 scaledown=256x256 xargs -0 ../../misc/tools/jpeg-if-not-alpha.sh
-find . -name \*.ogg | while IFS= read -r NAME; do
- c=`vorbiscomment -l "$NAME"`
- oggdec -o "$NAME.wav" "$NAME"
- oggenc -q 0 -o "$NAME" "$NAME.wav"
- echo "$c" | vorbiscomment -w "$NAME"
- rm -f "$NAME.wav"
+ find . -name \*.ogg | while IFS= read -r NAME; do
+ c=`vorbiscomment -l "$NAME"`
+ oggdec -o "$NAME.wav" "$NAME"
+ oggenc -q 0 -o "$NAME" "$NAME.wav"
+ echo "$c" | vorbiscomment -w "$NAME"
+ rm -f "$NAME.wav"
+ touch "${NAME%.ogg}.wav" # to disable this file, should the client have it
+ done
+fi
- touch "${NAME%.ogg}.wav" # to disable this file, should the client have it
-done
-
rev=`svnversion .. | sed 's/M$//g; s/.*://g;'`
pack="zzz_svn-compat-$rev"
echo "Support files to play on svn servers of revision $rev" > "$pack.txt"
Modified: branches/nexuiz-2.0/data/defaultNexuiz.cfg
===================================================================
--- branches/nexuiz-2.0/data/defaultNexuiz.cfg 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/defaultNexuiz.cfg 2009-05-24 09:17:59 UTC (rev 6762)
@@ -24,7 +24,7 @@
seta g_configversion 0 "Configuration file version (used to upgrade settings) 0: first run, or previous start was <2.4.1 Later, it's overridden by config.cfg, version ranges are defined in config_update.cfg"
// default.cfg versioning (update using update-cvarcount.sh, run that every time after adding a new cvar)
-set cvar_check_default dbe0a62fd00f815592a25cea67fc6156
+set cvar_check_default ca174b42ef38020187602cfda6d8ef43
// Nexuiz version (formatted for machines)
// used to determine if a client version is compatible
@@ -812,20 +812,28 @@
alias _weapnext_001 "impulse 10"
alias _weapnext_010 "impulse 10"
alias _weapnext_011 "impulse 10"
+alias _weapnext_020 "impulse 10"
+alias _weapnext_021 "impulse 10"
alias _weapnext_100 "impulse 10"
alias _weapnext_101 "impulse 15"
alias _weapnext_110 "impulse 18"
alias _weapnext_111 "impulse 15"
+alias _weapnext_120 "impulse 18"
+alias _weapnext_121 "impulse 15"
alias weaplast "impulse 11"
alias weapprev "_weapprev_${_supports_weaponpriority}${sbar_hudselector}${cl_weaponpriority_useforcycling}"
alias _weapprev_000 "impulse 12"
alias _weapprev_001 "impulse 12"
alias _weapprev_010 "impulse 12"
alias _weapprev_011 "impulse 12"
+alias _weapprev_020 "impulse 12"
+alias _weapprev_021 "impulse 12"
alias _weapprev_100 "impulse 12"
alias _weapprev_101 "impulse 16"
alias _weapprev_110 "impulse 19"
alias _weapprev_111 "impulse 16"
+alias _weapprev_120 "impulse 19"
+alias _weapprev_121 "impulse 16"
set _supports_weaponpriority 0 "set to 1 by csqc if supported, and to 0 on disconnect"
alias weapbest "impulse 13"
@@ -1250,6 +1258,10 @@
seta menu_maxplayers 8 "maxplayers value when the menu starts a game"
+// command executed before loading a map by the menu
+// makes sure maxplayers is at least minplayers or bot_number + 1
+alias menu_loadmap_prepare "disconnect; wait; g_campaign 0; menu_cmd rpn /_menu_loadmap_maxplayers menu_maxplayers minplayers bot_number 1 add max max def; maxplayers $_menu_loadmap_maxplayers; g_maplist_shufflenow"
+
// useful vote aliases
set timelimit_increment 5
set timelimit_decrement 5
@@ -1320,7 +1332,7 @@
set g_cdtracks_remaplist "digital-pursuit breakdown-easy brainsukker chaos-fog infight neuronal-diving subcities thru-the-mirror calling-bogus beast-of-insanity thunder creation brokenlight stairs sixtyfour_ desert3 ninesix sixtyfour_revisited" "list used by mapinfo system to automatically assign cdtracks - must match the cd remap command"
set g_cdtracks_dontusebydefault "digital-pursuit thunder brokenlight" "list used by mapinfo system to automatically assign cdtracks - must be a subset of g_cdtracks_remaplist"
cd remap $g_cdtracks_remaplist
-set sv_intermission_cdtrack brainsukker
+set sv_intermission_cdtrack ""
set menu_cdtrack brokenlight
// maxidle (in seconds): kick players idle for more than that amount of time
@@ -1521,6 +1533,11 @@
set cl_effects_lightningarc_branchfactor_start 0.25
set cl_effects_lightningarc_branchfactor_add 0.1
+set g_hitplots 0 "when set to 1, hitplots are stored by the server to provide a means of proving that a triggerbot was used"
+
+alias mute "prvm_edictset server $1 muted 1" // I am lazy and not making an actual command of this
+alias unmute "prvm_edictset server $1 muted 0" // dito
+
rcon_secure 1
set menu_updatecheck 1
Modified: branches/nexuiz-2.0/data/gfx/sb_invinc.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/sb_str.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/boom.md3 (from rev 6746, trunk/data/models/onslaught/boom.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/gen_gib1.md3 (from rev 6746, trunk/data/models/onslaught/gen_gib1.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/gen_gib2.md3 (from rev 6746, trunk/data/models/onslaught/gen_gib2.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/gen_gib3.md3 (from rev 6746, trunk/data/models/onslaught/gen_gib3.md3)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/onslaught/generator.md3
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/onslaught/generator_dead.md3
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/onslaught/generator_dmg1.md3
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/onslaught/generator_dmg2.md3
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/generator_dmg3.md3 (from rev 6746, trunk/data/models/onslaught/generator_dmg3.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/generator_dmg4.md3 (from rev 6746, trunk/data/models/onslaught/generator_dmg4.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/generator_dmg5.md3 (from rev 6746, trunk/data/models/onslaught/generator_dmg5.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/generator_dmg6.md3 (from rev 6746, trunk/data/models/onslaught/generator_dmg6.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/generator_dmg7.md3 (from rev 6746, trunk/data/models/onslaught/generator_dmg7.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/generator_dmg8.md3 (from rev 6746, trunk/data/models/onslaught/generator_dmg8.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/generator_dmg9.md3 (from rev 6746, trunk/data/models/onslaught/generator_dmg9.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/shockwave.md3 (from rev 6746, trunk/data/models/onslaught/shockwave.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/shockwave2.md3 (from rev 6746, trunk/data/models/onslaught/shockwave2.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/shockwavetransring.md3 (from rev 6746, trunk/data/models/onslaught/shockwavetransring.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/onslaught/shockwavetranssphere.md3 (from rev 6746, trunk/data/models/onslaught/shockwavetranssphere.md3)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-extralife_frame0.tga (from rev 6721, trunk/data/models/sprites/item-extralife_frame0.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-extralife_frame1.tga (from rev 6721, trunk/data/models/sprites/item-extralife_frame1.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-fuelregen_frame0.tga (from rev 6721, trunk/data/models/sprites/item-fuelregen_frame0.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-fuelregen_frame1.tga (from rev 6721, trunk/data/models/sprites/item-fuelregen_frame1.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-invis_frame0.tga (from rev 6721, trunk/data/models/sprites/item-invis_frame0.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-invis_frame1.tga (from rev 6721, trunk/data/models/sprites/item-invis_frame1.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-jetpack_frame0.tga (from rev 6721, trunk/data/models/sprites/item-jetpack_frame0.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-jetpack_frame1.tga (from rev 6721, trunk/data/models/sprites/item-jetpack_frame1.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-shield_frame0.tga (from rev 6721, trunk/data/models/sprites/item-shield_frame0.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-shield_frame1.tga (from rev 6721, trunk/data/models/sprites/item-shield_frame1.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-speed_frame0.tga (from rev 6721, trunk/data/models/sprites/item-speed_frame0.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-speed_frame1.tga (from rev 6721, trunk/data/models/sprites/item-speed_frame1.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-strength_frame0.tga (from rev 6721, trunk/data/models/sprites/item-strength_frame0.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/item-strength_frame1.tga (from rev 6721, trunk/data/models/sprites/item-strength_frame1.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/sprites/make-sprites.sh
===================================================================
--- branches/nexuiz-2.0/data/models/sprites/make-sprites.sh 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/models/sprites/make-sprites.sh 2009-05-24 09:17:59 UTC (rev 6762)
@@ -191,3 +191,11 @@
sprite dom-blue "CONTROL POINT" 0000ff 000000 0.0
sprite dom-yellow "CONTROL POINT" ffff00 000000 0.0
sprite dom-pink "CONTROL POINT" ff00ff 000000 0.0
+
+sprite item-invis "INVISIBILITY" 0000ff 000000 0.5 0000ff ffff00 0.5
+sprite item-extralife "EXTRA LIFE" ff0000 000000 0.5 ff0000 ffff00 0.5
+sprite item-speed "SPEED" ff00ff 000000 0.5 ff00ff ffff00 0.5
+sprite item-strength "STRENGTH" 0000ff 000000 0.5 0000ff ffff00 0.5
+sprite item-shield "SHIELD" ff00ff 000000 0.5 ff00ff ffff00 0.5
+sprite item-fuelregen "FUEL REGEN" ff8000 000000 0.5 ff8000 ffff00 0.5
+sprite item-jetpack "JET PACK" 808080 000000 0.5 808080 ffff00 0.5
Modified: branches/nexuiz-2.0/data/qcsrc/client/Main.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/Main.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/client/Main.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -886,6 +886,8 @@
strunzone(forcefog);
forcefog = strzone(ReadString());
+ armorblockpercent = ReadByte() / 255.0;
+
if(!postinit)
PostInit();
}
Modified: branches/nexuiz-2.0/data/qcsrc/client/main.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/main.qh 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/client/main.qh 2009-05-24 09:17:59 UTC (rev 6762)
@@ -149,3 +149,5 @@
void centerprint(string strMessage);
#define ALPHA_MIN_VISIBLE 0.003
+
+float armorblockpercent;
Modified: branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/sbar.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/client/sbar.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -61,7 +61,7 @@
value = (active) ? 1 : 0.6;
color_x = color_y = color_z = value;
- if(sbar_hudselector == 1)
+ if(sbar_hudselector == 1 || sbar_hudselector == 2)
{
// width = 300, height = 100
const float w_width = 32, w_height = 12, w_space = 2, font_size = 8;
@@ -362,7 +362,7 @@
"+lms/lives +lms/rank ",
"+kh/caps +kh/pushes +kh/destroyed ",
"?+race/laps ?+race/time ?+race/fastest ",
- "+as/objectives +nexball/faults +nexball/goals",
+ "+as/objectives +nexball/faults +nexball/goals ",
"-lms,race,nexball/score");
}
@@ -1449,8 +1449,8 @@
vector pos, picsize, number_position;
float strength_time, invincibility_time, countdown_fontsize;
- picsize = '40 40 0';
- countdown_fontsize = 22;
+ picsize = '48 48 0';
+ countdown_fontsize = 24;
//element will be positioned on the right side of the screen:
pos_x = vid_conwidth - picsize_x - 10; //margin 10 from right border
@@ -1462,7 +1462,7 @@
//now calculate the values Sbar_DrawXNum() will be called with:
number_position_x = number_position_x - sbar_x; //relative to sbar coordinates
number_position_y = number_position_y - sbar_y; //relative to sbar coordinates
- number_position_y += 10; //center number vertically to the icon
+ number_position_y += 14; //center number vertically to the icon
pos_z = number_position_z = 0;
@@ -1957,162 +1957,213 @@
}
else
{
- if (sb_lines && sbar_hudselector == 1)
+ if(sb_lines)
{
- stat_items = getstati(STAT_ITEMS);
- stat_weapons = getstati(STAT_WEAPONS);
+ float armor, health;
+ armor = getstati(STAT_ARMOR);
+ health = getstati(STAT_HEALTH);
- sbar_x = (vid_conwidth - 320.0)*0.5;
- sbar_y = vid_conheight - 24.0 - 16.0;
- sbar_z = 0;
-
- fade = 3.2 - 2 * (time - weapontime);
- fade = bound(0.7, fade, 1);
+ if (sbar_hudselector == 1 || sbar_hudselector == 2)
+ {
+ stat_items = getstati(STAT_ITEMS);
+ stat_weapons = getstati(STAT_WEAPONS);
- x = 1.0;
- Sbar_DrawWeapon_Clear();
- for(i = 1; i <= 24; ++i)
- {
- if(weaponimpulse[i-1] >= 0)
- if(stat_weapons & x)
+ sbar_x = (vid_conwidth - 320.0)*0.5;
+ sbar_y = vid_conheight - 24.0 - 16.0;
+ sbar_z = 0;
+
+ fade = 3.2 - 2 * (time - weapontime);
+ fade = bound(0.7, fade, 1);
+
+ x = 1.0;
+ Sbar_DrawWeapon_Clear();
+ for(i = 1; i <= 24; ++i)
{
- Sbar_DrawWeapon(i-1, fade, (i == activeweapon));
+ if(weaponimpulse[i-1] >= 0)
+ if(stat_weapons & x)
+ {
+ Sbar_DrawWeapon(i-1, fade, (i == activeweapon));
+ }
+ x *= 2;
}
- x *= 2;
- }
- // armor
- x = getstati(STAT_ARMOR);
- if (x > 0)
- {
- // "gfx/sb_armor"
- //Sbar_DrawStretchPic (72, 0, sb_armor[0], sbar_alpha_fg.value, 24, 24);
- drawpic(sbar + '72 0 0', "gfx/sb_armor", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
- if(x > 200)
- Sbar_DrawXNum('0 0 0', x, 3, 24, '0 1 0', 1, 0);
- else if(x > 100)
- Sbar_DrawXNum('0 0 0', x, 3, 24, '0.2 1 0', 1, 0);
- else if(x > 50)
- Sbar_DrawXNum('0 0 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
- else if(x > 25)
- Sbar_DrawXNum('0 0 0', x, 3, 24, '1 1 0.2', 1, 0);
- else
- Sbar_DrawXNum('0 0 0', x, 3, 24, '0.7 0 0', 1, 0);
- }
+ if(health != 0)
+ {
+ if(sbar_hudselector == 2)
+ {
+ // NOTE: we'll always choose the SMALLER value...
+ float healthdamage, armordamage, armorideal;
+ healthdamage = (health - 1) / (1 - armorblockpercent); // damage we can take if we could use more health
+ armordamage = armor + (health - 1); // damage we can take if we could use more armor
+ armorideal = healthdamage * armorblockpercent;
- // health
- x = getstati(STAT_HEALTH);
- if (x != 0)
- {
- // "gfx/sb_health"
- //Sbar_DrawStretchPic (184, 0, sb_health, sbar_alpha_fg.value, 24, 24);
- drawpic(sbar + '184 0 0', "gfx/sb_health", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
- if(x > 200)
- Sbar_DrawXNum('112 0 0', x, 3, 24, '0 1 0', 1, 0);
- else if(x > 100)
- Sbar_DrawXNum('112 0 0', x, 3, 24, '0.2 1 0', 1, 0);
- else if(x > 50)
- Sbar_DrawXNum('112 0 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
- else if(x > 25)
- Sbar_DrawXNum('112 0 0', x, 3, 24, '1 1 0.2', 1, 0);
- else
- Sbar_DrawXNum('112 0 0', x, 3, 24, '0.7 0 0', 1, 0);
- }
+ if(armordamage < healthdamage)
+ {
+ // here, armorideal > armor
+ x = floor(armordamage + 1);
+ drawpic(sbar + '116 0 0', "gfx/sb_health", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
+ drawpic(sbar + '142 2 0', "gfx/sb_armor", '20 20 0', '1 1 1', sbar_alpha_fg * armor / armorideal, 0);
+ if(x > 200)
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '0 1 0', 1, 0);
+ else if(x > 100)
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '0.2 1 0', 1, 0);
+ else if(x > 50)
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
+ else if(x > 25)
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '1 1 0.2', 1, 0);
+ else
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '0.7 0 0', 1, 0);
+ }
+ else
+ {
+ x = floor(healthdamage + 1);
+ drawpic(sbar + '116 2 0', "gfx/sb_health", '20 20 0', '1 1 1', sbar_alpha_fg * armorideal / armor, 0);
+ drawpic(sbar + '140 0 0', "gfx/sb_armor", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
+ if(x > 200)
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '0 1 0', 1, 0);
+ else if(x > 100)
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '0.2 1 0', 1, 0);
+ else if(x > 50)
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
+ else if(x > 25)
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '1 1 0.2', 1, 0);
+ else
+ Sbar_DrawXNum('44 0 0', x, 3, 24, '0.7 0 0', 1, 0);
+ }
+ }
+ else
+ {
+ // armor
+ x = armor;
+ if (x > 0)
+ {
+ // "gfx/sb_armor"
+ //Sbar_DrawStretchPic (72, 0, sb_armor[0], sbar_alpha_fg.value, 24, 24);
+ drawpic(sbar + '72 0 0', "gfx/sb_armor", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
+ if(x > 200)
+ Sbar_DrawXNum('0 0 0', x, 3, 24, '0 1 0', 1, 0);
+ else if(x > 100)
+ Sbar_DrawXNum('0 0 0', x, 3, 24, '0.2 1 0', 1, 0);
+ else if(x > 50)
+ Sbar_DrawXNum('0 0 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
+ else if(x > 25)
+ Sbar_DrawXNum('0 0 0', x, 3, 24, '1 1 0.2', 1, 0);
+ else
+ Sbar_DrawXNum('0 0 0', x, 3, 24, '0.7 0 0', 1, 0);
+ }
- // ammo
- for(i = 0, v = '0 0 0'; (x = GetAmmoStat(i)) >= 0; ++i)
- if(stat_items & GetAmmoItemCode(i))
- {
- x = getstati(x);
- drawpic(sbar + '296 0 0' + v, GetAmmoPicture(i), '24 24 0', '1 1 1', sbar_alpha_fg, 0);
- if(x > 10)
- Sbar_DrawXNum('224 0 0' + v, x, 3, 24, '0.6 0.7 0.8', 1, 0);
- else
- Sbar_DrawXNum('224 0 0' + v, x, 3, 24, '0.7 0 0', 1, 0);
- v_y -= 30;
+ x = health;
+ // "gfx/sb_health"
+ //Sbar_DrawStretchPic (184, 0, sb_health, sbar_alpha_fg.value, 24, 24);
+ drawpic(sbar + '184 0 0', "gfx/sb_health", '24 24 0', '1 1 1', sbar_alpha_fg, 0);
+ if(x > 200)
+ Sbar_DrawXNum('112 0 0', x, 3, 24, '0 1 0', 1, 0);
+ else if(x > 100)
+ Sbar_DrawXNum('112 0 0', x, 3, 24, '0.2 1 0', 1, 0);
+ else if(x > 50)
+ Sbar_DrawXNum('112 0 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
+ else if(x > 25)
+ Sbar_DrawXNum('112 0 0', x, 3, 24, '1 1 0.2', 1, 0);
+ else
+ Sbar_DrawXNum('112 0 0', x, 3, 24, '0.7 0 0', 1, 0);
+ }
}
- if (sbar_x + 320 + 160 <= vid_conwidth)
- Sbar_MiniDeathmatchOverlay(sbar + '320 0 0');
- if (sbar_x > 0)
- Sbar_Score(16);
- // The margin can be at most 8 to support 640x480 console size:
- // 320 + 2 * (144 + 16) = 640
- }
- else if (sb_lines)
- {
-
- stat_items = getstati(STAT_ITEMS);
- stat_weapons = getstati(STAT_WEAPONS);
-
- sbar_x = (vid_conwidth - 640.0)*0.5;
- sbar_y = vid_conheight - 47;
- sbar_z = 0;
+ // ammo
+ for(i = 0, v = '0 0 0'; (x = GetAmmoStat(i)) >= 0; ++i)
+ if(stat_items & GetAmmoItemCode(i))
+ {
+ x = getstati(x);
+ drawpic(sbar + '296 0 0' + v, GetAmmoPicture(i), '24 24 0', '1 1 1', sbar_alpha_fg, 0);
+ if(x > 10)
+ Sbar_DrawXNum('224 0 0' + v, x, 3, 24, '0.6 0.7 0.8', 1, 0);
+ else
+ Sbar_DrawXNum('224 0 0' + v, x, 3, 24, '0.7 0 0', 1, 0);
+ v_y -= 30;
+ }
- fade = 3 - 2 * (time - weapontime);
+ if (sbar_x + 320 + 160 <= vid_conwidth)
+ Sbar_MiniDeathmatchOverlay(sbar + '320 0 0');
+ if (sbar_x > 0)
+ Sbar_Score(16);
+ // The margin can be at most 8 to support 640x480 console size:
+ // 320 + 2 * (144 + 16) = 640
+ }
+ else
+ {
+
+ stat_items = getstati(STAT_ITEMS);
+ stat_weapons = getstati(STAT_WEAPONS);
+
+ sbar_x = (vid_conwidth - 640.0)*0.5;
+ sbar_y = vid_conheight - 47;
+ sbar_z = 0;
- x = 1.0;
- Sbar_DrawWeapon_Clear();
- for(i = 1; i <= 24; ++i)
- {
- if(weaponimpulse[i-1] >= 0)
- if(stat_weapons & x)
+ fade = 3 - 2 * (time - weapontime);
+
+ x = 1.0;
+ Sbar_DrawWeapon_Clear();
+ for(i = 1; i <= 24; ++i)
{
- Sbar_DrawWeapon(i-1, fade, (i == activeweapon));
+ if(weaponimpulse[i-1] >= 0)
+ if(stat_weapons & x)
+ {
+ Sbar_DrawWeapon(i-1, fade, (i == activeweapon));
+ }
+ x *= 2;
}
- x *= 2;
- }
- if (sb_lines > 24)
- drawpic(sbar, "gfx/sbar", '0 0 0', '1 1 1', sbar_alpha_fg, 0);
- else
- drawpic(sbar, "gfx/sbar_minimal", '0 0 0', '1 1 1', sbar_alpha_fg, 0);
+ if (sb_lines > 24)
+ drawpic(sbar, "gfx/sbar", '0 0 0', '1 1 1', sbar_alpha_fg, 0);
+ else
+ drawpic(sbar, "gfx/sbar_minimal", '0 0 0', '1 1 1', sbar_alpha_fg, 0);
- // armor
- // (340-3*24) = 268
- Sbar_DrawXNum('268 12 0', getstati(STAT_ARMOR), 3, 24, '0.6 0.7 0.8', 1, 0);
+ // armor
+ // (340-3*24) = 268
+ Sbar_DrawXNum('268 12 0', getstati(STAT_ARMOR), 3, 24, '0.6 0.7 0.8', 1, 0);
- // health
- // (154-3*24) = 82
- x = getstati(STAT_HEALTH);
- if(x > 100)
- Sbar_DrawXNum('82 12 0', x, 3, 24, '1 1 1', 1, 0);
- else if(x <= 25 && time - floor(time) > 0.5)
- Sbar_DrawXNum('82 12 0', x, 3, 24, '0.7 0 0', 1, 0);
- else
- Sbar_DrawXNum('81 12 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
+ // health
+ // (154-3*24) = 82
+ x = getstati(STAT_HEALTH);
+ if(x > 100)
+ Sbar_DrawXNum('82 12 0', x, 3, 24, '1 1 1', 1, 0);
+ else if(x <= 25 && time - floor(time) > 0.5)
+ Sbar_DrawXNum('82 12 0', x, 3, 24, '0.7 0 0', 1, 0);
+ else
+ Sbar_DrawXNum('81 12 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
- // ammo
- for(i = 0, v = '0 0 0'; (x = GetAmmoStat(i)) >= 0; ++i)
- if(stat_items & GetAmmoItemCode(i))
- {
- x = getstati(x);
- drawpic(sbar + '519 0 0' + v, GetAmmoPicture(i), '0 0 0', '1 1 1', sbar_alpha_fg, 0);
- if(x > 10)
- Sbar_DrawXNum('447 12 0' + v, x, 3, 24, '0.6 0.7 0.8', 1, 0);
- else
- Sbar_DrawXNum('447 12 0' + v, x, 3, 24, '0.7 0 0', 1, 0);
- v_y -= 40;
- }
+ // ammo
+ for(i = 0, v = '0 0 0'; (x = GetAmmoStat(i)) >= 0; ++i)
+ if(stat_items & GetAmmoItemCode(i))
+ {
+ x = getstati(x);
+ drawpic(sbar + '519 0 0' + v, GetAmmoPicture(i), '0 0 0', '1 1 1', sbar_alpha_fg, 0);
+ if(x > 10)
+ Sbar_DrawXNum('447 12 0' + v, x, 3, 24, '0.6 0.7 0.8', 1, 0);
+ else
+ Sbar_DrawXNum('447 12 0' + v, x, 3, 24, '0.7 0 0', 1, 0);
+ v_y -= 40;
+ }
- if (sb_lines > 24)
- drawpic(sbar, "gfx/sbar_overlay", '0 0 0', '1 1 1', 1, DRAWFLAG_MODULATE);
+ if (sb_lines > 24)
+ drawpic(sbar, "gfx/sbar_overlay", '0 0 0', '1 1 1', 1, DRAWFLAG_MODULATE);
- if (sbar_x + 600 + 160 <= vid_conwidth)
- Sbar_MiniDeathmatchOverlay (sbar + '600 0 0');
+ if (sbar_x + 600 + 160 <= vid_conwidth)
+ Sbar_MiniDeathmatchOverlay (sbar + '600 0 0');
- if (sbar_x > 0)
- Sbar_Score(-16);
- // Because:
- // Mini scoreboard uses 12*4 per other team, that is, 144
- // pixels when there are four teams...
- // Nexuiz by default sets vid_conwidth to 800... makes
- // sbar_x == 80...
- // so we need to shift it by 64 pixels to the right to fit
- // BUT: then it overlaps with the image that gets drawn
- // for viewsize 100! Therefore, just account for 3 teams,
- // that is, 96 pixels mini scoreboard size, needing 16 pixels
- // to the right!
+ if (sbar_x > 0)
+ Sbar_Score(-16);
+ // Because:
+ // Mini scoreboard uses 12*4 per other team, that is, 144
+ // pixels when there are four teams...
+ // Nexuiz by default sets vid_conwidth to 800... makes
+ // sbar_x == 80...
+ // so we need to shift it by 64 pixels to the right to fit
+ // BUT: then it overlaps with the image that gets drawn
+ // for viewsize 100! Therefore, just account for 3 teams,
+ // that is, 96 pixels mini scoreboard size, needing 16 pixels
+ // to the right!
+ }
}
//show strength/invincibility ICON and timer:
@@ -2163,7 +2214,7 @@
pos_z = 0;
- if(sbar_hudselector == 1)
+ if(sbar_hudselector == 1 || sbar_hudselector == 2)
pos_y = (vid_conheight - sbar_y) - cvar("sbar_flagstatus_pos") - 64;
else
pos_y = -117;
@@ -2220,7 +2271,7 @@
pos_z = 0;
- if(sbar_hudselector == 1)
+ if(sbar_hudselector == 1 || sbar_hudselector == 2)
pos_y = (vid_conheight - sbar_y) - cvar_or("sbar_ballstatus_pos", 123) - 64;
else
pos_y = -124; // 17 more than flag icons
Modified: branches/nexuiz-2.0/data/qcsrc/client/teamradar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/teamradar.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/client/teamradar.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -144,7 +144,7 @@
if(dt == 0)
continue;
dt = time - dt;
- if(dt > 1)
+ if(dt >= 1 || dt <= 0)
continue;
v = '2 2 0' * teamradar_size * dt;
drawpic(coord - 0.5 * v, "gfx/teamradar_ping", v, '1 1 1', 1 - dt, DRAWFLAG_ADDITIVE);
Modified: branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -16,6 +16,7 @@
.float fadetime;
.float maxdistance;
.float hideflags;
+.float spawntime;
vector SPRITE_SIZE = '128 32 0';
vector SPRITE_HOTSPOT = '64 32 0';
@@ -185,7 +186,7 @@
if(t == 0)
spriteimage = strcat("models/sprites/", spriteimage);
else
- spriteimage = strcat("models/sprites/", spriteimage, "_frame", ftos(mod(floor(time * 2), t)));
+ spriteimage = strcat("models/sprites/", spriteimage, "_frame", ftos(mod(floor((max(0, time - self.spawntime)) * 2), t)));
drawrotpic(o, rot * 90 * DEG2RAD, spriteimage, SPRITE_SIZE * waypointsprite_scale * vidscale, SPRITE_HOTSPOT * waypointsprite_scale * vidscale, '1 1 1', a, DRAWFLAG_MIPMAP);
}
@@ -205,6 +206,9 @@
float sendflags, f;
sendflags = ReadByte();
+ if(!self.spawntime)
+ self.spawntime = time;
+
self.draw2d = Draw_WaypointSprite;
InterpolateOrigin_Undo();
Modified: branches/nexuiz-2.0/data/qcsrc/common/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/constants.qh 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/common/constants.qh 2009-05-24 09:17:59 UTC (rev 6762)
@@ -92,6 +92,7 @@
const float RADARICON_GENERATOR = 1;
const float RADARICON_OBJECTIVE = 1;
const float RADARICON_DOMPOINT = 1;
+const float RADARICON_POWERUP = 1;
///////////////////////////
// key constants
Modified: branches/nexuiz-2.0/data/qcsrc/common/items.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/items.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/common/items.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -98,21 +98,21 @@
void RegisterWeapons()
{
// %weaponaddpoint
- register_weapon(WEP_LASER, w_laser, 0, 1, 1, 1, 0, "laser", "laser", "Laser");
- register_weapon(WEP_SHOTGUN, w_shotgun, IT_SHELLS, 2, 1, 0, BOT_PICKUP_RATING_LOW, "shotgun", "shotgun", "Shotgun");
- register_weapon(WEP_UZI, w_uzi, IT_NAILS, 3, 1, 0, BOT_PICKUP_RATING_MID, "uzi", "uzi", "Machine Gun");
- register_weapon(WEP_GRENADE_LAUNCHER, w_glauncher, IT_ROCKETS, 4, 1, 1, BOT_PICKUP_RATING_MID, "gl", "grenadelauncher", "Mortar");
- register_weapon(WEP_ELECTRO, w_electro, IT_CELLS, 5, 1, 0, BOT_PICKUP_RATING_MID, "electro", "electro", "Electro");
- register_weapon(WEP_CRYLINK, w_crylink, IT_CELLS, 6, 1, 0, BOT_PICKUP_RATING_MID, "crylink", "crylink", "Crylink");
- register_weapon(WEP_NEX, w_nex, IT_CELLS, 7, 1, 0, BOT_PICKUP_RATING_HIGH, "nex", "nex", "Nex");
- register_weapon(WEP_HAGAR, w_hagar, IT_ROCKETS, 8, 1, 1, BOT_PICKUP_RATING_MID, "hagar", "hagar", "Hagar");
- register_weapon(WEP_ROCKET_LAUNCHER, w_rlauncher, IT_ROCKETS, 9, 1, 1, BOT_PICKUP_RATING_HIGH, "rl", "rocketlauncher", "Rocket Launcher");
- register_weapon(WEP_PORTO, w_porto, 0, 0, 0, 0, 0, "porto" , "porto", "Port-O-Launch");
- register_weapon(WEP_MINSTANEX, w_minstanex, IT_CELLS, 7, 0, 1, BOT_PICKUP_RATING_HIGH, "minstanex", "minstanex", "MinstaNex");
- register_weapon(WEP_HOOK, w_hook, IT_CELLS, 0, 0, 1, 0, "hookgun", "hook", "Grappling Hook");
- register_weapon(WEP_SEEKER, w_seeker, IT_ROCKETS, 8, 0, 0, BOT_PICKUP_RATING_HIGH, "seeker", "seeker", "T.A.G. Seeker");
- register_weapon(WEP_HLAC, w_hlac, IT_CELLS, 6, 1, 0, BOT_PICKUP_RATING_MID, "hlac", "hlac", "Heavy Laser Assault Cannon");
- register_weapon(WEP_CAMPINGRIFLE, w_campingrifle, IT_NAILS, 3, 1, 0, BOT_PICKUP_RATING_MID, "campingrifle", "campingrifle", "Rifle");
+ register_weapon(WEP_LASER, w_laser, 0, 1, 1, 1, 0, "laser", "laser", "Laser");
+ register_weapon(WEP_SHOTGUN, w_shotgun, IT_SHELLS, 2, 1, 0, BOT_PICKUP_RATING_LOW, "shotgun", "shotgun", "Shotgun");
+ register_weapon(WEP_UZI, w_uzi, IT_NAILS, 3, 1, 0, BOT_PICKUP_RATING_MID, "uzi", "uzi", "Machine Gun");
+ register_weapon(WEP_GRENADE_LAUNCHER, w_glauncher, IT_ROCKETS, 4, 1, 1, BOT_PICKUP_RATING_MID, "gl", "grenadelauncher", "Mortar");
+ register_weapon(WEP_ELECTRO, w_electro, IT_CELLS, 5, 1, 0, BOT_PICKUP_RATING_MID, "electro", "electro", "Electro");
+ register_weapon(WEP_CRYLINK, w_crylink, IT_CELLS, 6, 1, 0, BOT_PICKUP_RATING_MID, "crylink", "crylink", "Crylink");
+ register_weapon(WEP_NEX, w_nex, IT_CELLS, 7, 1, 0, BOT_PICKUP_RATING_HIGH, "nex", "nex", "Nex");
+ register_weapon(WEP_HAGAR, w_hagar, IT_ROCKETS, 8, 1, 1, BOT_PICKUP_RATING_MID, "hagar", "hagar", "Hagar");
+ register_weapon(WEP_ROCKET_LAUNCHER, w_rlauncher, IT_ROCKETS, 9, 1, 1, BOT_PICKUP_RATING_HIGH, "rl", "rocketlauncher", "Rocket Launcher");
+ register_weapon(WEP_PORTO, w_porto, 0, 0, 0, 0, 0, "porto" , "porto", "Port-O-Launch");
+ register_weapon(WEP_MINSTANEX, w_minstanex, IT_CELLS, 7, 0, 1, BOT_PICKUP_RATING_HIGH, "minstanex", "minstanex", "MinstaNex");
+ register_weapon(WEP_HOOK, w_hook, IT_CELLS|IT_FUEL, 0, 0, 1, 0, "hookgun", "hook", "Grappling Hook");
+ register_weapon(WEP_SEEKER, w_seeker, IT_ROCKETS, 8, 0, 0, BOT_PICKUP_RATING_HIGH, "seeker", "seeker", "T.A.G. Seeker");
+ register_weapon(WEP_HLAC, w_hlac, IT_CELLS, 6, 1, 0, BOT_PICKUP_RATING_MID, "hlac", "hlac", "Heavy Laser Assault Cannon");
+ register_weapon(WEP_CAMPINGRIFLE, w_campingrifle, IT_NAILS, 3, 1, 0, BOT_PICKUP_RATING_MID, "campingrifle", "campingrifle", "Rifle");
register_weapons_done();
}
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_singleplayer.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_singleplayer.c 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_singleplayer.c 2009-05-24 09:17:59 UTC (rev 6762)
@@ -40,7 +40,7 @@
else if(argv(0) == "changelevel")
{
fclose(fh);
- localcmd("\ndisconnect\nwait\ng_campaign 0\nmaxplayers $menu_maxplayers\n");
+ localcmd("\nmenu_loadmap_prepare\n");
MapInfo_SwitchGameType(MAPINFO_TYPE_DEATHMATCH);
MapInfo_LoadMap(argv(1));
cvar_set("lastlevel", "1");
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/maplist.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/maplist.c 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/maplist.c 2009-05-24 09:17:59 UTC (rev 6762)
@@ -272,7 +272,7 @@
}
if(MapInfo_CheckMap(m))
{
- localcmd("\ndisconnect\nwait\ng_campaign 0\nmaxplayers $menu_maxplayers\ng_maplist_shufflenow\n");
+ localcmd("\nmenu_loadmap_prepare\n");
if(cvar("menu_use_default_hostname"))
localcmd("hostname \"", strdecolorize(cvar_string("_cl_name")), "'s Nexuiz server\"\n");
MapInfo_LoadMap(m);
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -362,6 +362,13 @@
if(substring(plyermodel,strlen(plyermodel)-4,4) != ".md3")
if(substring(plyermodel,strlen(plyermodel)-4,4) != ".psk")
return FallbackPlayerModel;
+#ifdef ALLOW_VARIABLE_LOD
+ // forbid the LOD models
+ if(substring(plyermodel, strlen(plyermodel)-6,2) == "_1")
+ return FallbackPlayerModel;
+ if(substring(plyermodel, strlen(plyermodel)-6,2) == "_2")
+ return FallbackPlayerModel;
+#endif
if(plyermodel != strtolower(plyermodel))
return FallbackPlayerModel;
if(!fexists(plyermodel))
@@ -923,7 +930,7 @@
WriteString(MSG_ENTITY, world.fog);
else
WriteString(MSG_ENTITY, "");
-
+ WriteByte(MSG_ENTITY, cvar("g_balance_armor_blockpercent") * 255.0);
return TRUE;
}
@@ -1350,6 +1357,14 @@
stuffcmd(self, strcat("\nfog ", world.fog, "\nr_fog_exp2 0\nr_drawfog 1\n"));
SoundEntity_Attach(self);
+
+ if(cvar("g_hitplots"))
+ {
+ self.hitplotfh = fopen(strcat("hits-", matchid, "-", ftos(self.playerid), ".plot"), FILE_WRITE);
+ fputs(self.hitplotfh, strcat("#name ", self.netname, "\n"));
+ }
+ else
+ self.hitplotfh = -1;
}
/*
@@ -1370,6 +1385,12 @@
return;
}
+ if(self.hitplotfh >= 0)
+ {
+ fclose(self.hitplotfh);
+ self.hitplotfh = -1;
+ }
+
bot_clientdisconnect();
if(self.entcs)
@@ -1731,9 +1752,6 @@
limita = cvar("g_balance_armor_limit");
limitf = cvar("g_balance_fuel_limit");
- if (g_minstagib || (g_lms && !cvar("g_lms_regenerate")))
- return;
-
max_mod = regen_mod = rot_mod = limit_mod = 1;
if (self.runes & RUNE_REGEN)
@@ -1769,38 +1787,51 @@
limita = limita * limit_mod;
//limitf = limitf * limit_mod;
- if (self.armorvalue > maxa)
+ if (!g_minstagib && (!g_lms || cvar("g_lms_regenerate")))
{
- if (time > self.pauserotarmor_finished)
+ if (self.armorvalue > maxa)
{
- self.armorvalue = max(maxa, self.armorvalue + (maxa - self.armorvalue) * cvar("g_balance_armor_rot") * frametime);
- self.armorvalue = max(maxa, self.armorvalue - cvar("g_balance_armor_rotlinear") * frametime);
+ if (time > self.pauserotarmor_finished)
+ {
+ self.armorvalue = max(maxa, self.armorvalue + (maxa - self.armorvalue) * cvar("g_balance_armor_rot") * frametime);
+ self.armorvalue = max(maxa, self.armorvalue - cvar("g_balance_armor_rotlinear") * frametime);
+ }
}
- }
- else if (self.armorvalue < maxa)
- {
- if (time > self.pauseregen_finished)
+ else if (self.armorvalue < maxa)
{
- self.armorvalue = CalcRegen(self.armorvalue, maxa, cvar("g_balance_armor_regen"));
- self.armorvalue = min(maxa, self.armorvalue + cvar("g_balance_armor_regenlinear") * frametime);
+ if (time > self.pauseregen_finished)
+ {
+ self.armorvalue = CalcRegen(self.armorvalue, maxa, cvar("g_balance_armor_regen"));
+ self.armorvalue = min(maxa, self.armorvalue + cvar("g_balance_armor_regenlinear") * frametime);
+ }
}
- }
- if (self.health > maxh)
- {
- if (time > self.pauserothealth_finished)
+ if (self.armorvalue > limita)
+ self.armorvalue = limita;
+
+ if (self.health > maxh)
{
- self.health = max(maxh, self.health + (maxh - self.health) * rot_mod*cvar("g_balance_health_rot") * frametime);
- self.health = max(maxh, self.health - rot_mod*cvar("g_balance_health_rotlinear") * frametime);
+ if (time > self.pauserothealth_finished)
+ {
+ self.health = max(maxh, self.health + (maxh - self.health) * rot_mod*cvar("g_balance_health_rot") * frametime);
+ self.health = max(maxh, self.health - rot_mod*cvar("g_balance_health_rotlinear") * frametime);
+ }
}
- }
- else if (self.health < maxh)
- {
- if (time > self.pauseregen_finished)
+ else if (self.health < maxh)
{
- self.health = CalcRegen(self.health, maxh, regen_mod * cvar("g_balance_health_regen"));
- self.health = min(maxh, self.health + regen_mod*cvar("g_balance_health_regenlinear") * frametime);
+ if (time > self.pauseregen_finished)
+ {
+ self.health = CalcRegen(self.health, maxh, regen_mod * cvar("g_balance_health_regen"));
+ self.health = min(maxh, self.health + regen_mod*cvar("g_balance_health_regenlinear") * frametime);
+ }
}
+ if (self.health > limith)
+ self.health = limith;
+
+ // if player rotted to death... die!
+ if(self.health < 1)
+ self.event_damage(self, self, 1, DEATH_ROT, self.origin, '0 0 0');
}
+
if (self.ammo_fuel > maxf)
{
if (time > self.pauserotfuel_finished)
@@ -1820,17 +1851,8 @@
}
}
}
-
- if (self.health > limith)
- self.health = limith;
- if (self.armorvalue > limita)
- self.armorvalue = limita;
if (self.ammo_fuel > limitf)
self.ammo_fuel = limitf;
-
- // if player rotted to death... die!
- if(self.health < 1)
- self.event_damage(self, self, 1, DEATH_ROT, self.origin, '0 0 0');
}
float zoomstate_set;
@@ -2168,6 +2190,7 @@
*/
void() ctf_setstatus;
void() nexball_setstatus;
+.float items_added;
void PlayerPreThink (void)
{
self.stat_sys_ticrate = cvar("sys_ticrate");
@@ -2391,12 +2414,16 @@
if(frametime)
{
+ self.items &~= self.items_added;
+
W_WeaponFrame();
- self.items &~= IT_FUEL; // TODO don't do this if the current weapon actually USES fuel...
+ self.items_added = 0;
if(self.items & IT_JETPACK)
if(self.items & IT_FUEL_REGEN || self.ammo_fuel >= 0.01)
- self.items |= IT_FUEL;
+ self.items_added |= IT_FUEL;
+
+ self.items |= self.items_added;
}
player_regen();
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -416,6 +416,15 @@
traceline(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * 65536, FALSE, self);
sprint(self, strcat("distance: ", ftos(fabs(vlen(trace_endpos - (self.origin + self.view_ofs)))), "\n"));
break;
+ case 146:
+ makevectors(self.v_angle);
+ i = self.dphitcontentsmask;
+ self.dphitcontentsmask = DPCONTENTS_OPAQUE;
+ traceline(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * 65536, FALSE, self);
+ self.dphitcontentsmask = i;
+ sprint(self, strcat("distance: ", ftos(fabs(vlen(trace_endpos - (self.origin + self.view_ofs)))), "\n"));
+ pointparticles(particleeffectnum("fire_big"), trace_endpos, '0 0 0', 10);
+ break;
case 148:
FOR_EACH_PLAYER(e)
{
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -665,9 +665,7 @@
self.last_selected_player = self.selected_player;
}
-.float floodcontrol_chat;
-.float floodcontrol_chatteam;
-.float floodcontrol_chattell;
+.float muted; // to be used by prvm_edictset server playernumber muted 1
void Say(entity source, float teamsay, entity privatesay, string msgin, float floodcontrol)
{
string msgstr, colorstr, cmsgstr, namestr, fullmsgstr, sourcemsgstr, fullcmsgstr, sourcecmsgstr, privatemsgprefix;
@@ -798,6 +796,9 @@
msgstr = fullmsgstr;
}
}
+
+ if (timeoutStatus == 2) //when game is paused, no flood protection
+ source.flood_field = flood = 0;
if(flood == 2)
{
@@ -833,12 +834,23 @@
if(privatesay)
sourcemsgstr = strcat(privatemsgprefix, substring(sourcemsgstr, privatemsgprefixlen, -1));
- if(flood == 1)
+ if(source.muted)
{
+ // always fake the message
+ sprint(source, sourcemsgstr);
+ if(cmsgstr != "" && !privatesay)
+ centerprint(source, sourcecmsgstr);
+ }
+ else if(flood == 1)
+ {
if(cvar("g_chat_flood_notify_flooder"))
sprint(source, strcat("^3FLOOD CONTROL: ^7wait ^1", ftos(source.flood_field - time), "^3 seconds\n"));
else
+ {
sprint(source, sourcemsgstr);
+ if(cmsgstr != "" && !privatesay)
+ centerprint(source, sourcecmsgstr);
+ }
}
else if(privatesay)
{
@@ -1100,8 +1112,6 @@
GlobalSound(sample, chan, voicetype);
}
-.float floodcontrol_voice;
-.float floodcontrol_voiceteam;
void VoiceMessage(string type, string msg)
{
var .string sample;
@@ -1137,6 +1147,9 @@
self.flood_field = max(time, self.flood_field) + flood_spv;
else
flood = 1;
+
+ if (timeoutStatus == 2) //when game is paused, no flood protection
+ self.flood_field = flood = 0;
if (msg != "")
Say(self, ownteam, world, msg, 0);
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -173,11 +173,12 @@
SUB_SetFade(self, time + 20, 1);
}
-// returns amount of ammo used, or -1 for failure, or 0 for no ammo count
-float W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo)
+// returns amount of ammo used as string, or -1 for failure, or 0 for no ammo count
+string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo)
{
entity oldself, wep;
- float wa, thisammo;
+ float wa, thisammo, i, j;
+ string s;
var .float ammofield;
wep = spawn();
@@ -198,29 +199,38 @@
weapon_defaultspawnfunc(wpn);
self = oldself;
if(startitem_failed)
- return -1;
+ return string_null;
wep.think = thrown_wep_think;
wep.nextthink = time + 0.5;
- return 0;
+ return "";
}
else
{
- ammofield = Item_CounterField(wa);
+ s = "";
oldself = self;
self = wep;
weapon_defaultspawnfunc(wpn);
self = oldself;
if(startitem_failed)
- return -1;
+ return string_null;
if(doreduce)
{
- thisammo = min(own.ammofield, wep.ammofield);
- wep.ammofield = thisammo;
- own.ammofield -= thisammo;
+ for(i = 0, j = 1; i < 24; ++i, j *= 2)
+ {
+ if(wa & j)
+ {
+ ammofield = Item_CounterField(j);
+ thisammo = min(own.ammofield, wep.ammofield);
+ wep.ammofield = thisammo;
+ own.ammofield -= thisammo;
+ s = strcat(s, " and ", ftos(thisammo), " ", Item_CounterFieldName(j));
+ }
+ }
+ s = substring(s, 5, -1);
}
wep.think = thrown_wep_think;
wep.nextthink = time + 0.5;
- return wep.ammofield;
+ return s;
}
}
@@ -248,7 +258,8 @@
// toss current weapon
void W_ThrowWeapon(vector velo, vector delta, float doreduce)
{
- local float w, a, wb;
+ local float w, wb;
+ string a;
w = self.weapon;
if (w == 0)
@@ -273,14 +284,14 @@
self.weapons &~= wb;
W_SwitchWeapon_Force(self, w_getbestweapon(self));
a = W_ThrowNewWeapon(self, w, doreduce, self.origin + delta, velo);
- if(a < 0)
+ if not(a)
return;
if(self.health >= 1)
{
- if(a == 0)
+ if(a == "")
sprint(self, strcat("You dropped the ^2", W_Name(w), "\n"));
else
- sprint(self, strcat("You dropped the ^2", W_Name(w), " with ", ftos(a), " ", Item_CounterFieldName(W_AmmoItemCode(w)), "\n"));
+ sprint(self, strcat("You dropped the ^2", W_Name(w), " with ", a, "\n"));
}
};
@@ -346,7 +357,7 @@
while (c < 5)
{
c = c + 1;
- if(wb && self.weapons & wb == 0)
+ if(wb && ((self.weapons & wb) == 0))
{
W_SwitchWeapon_Force(self, w_getbestweapon(self));
wb = 0;
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -25,6 +25,78 @@
void(float fr, float t, void() func) weapon_thinkf;
+vector W_HitPlotUnnormalizedUntransform(vector screenforward, vector screenright, vector screenup, vector v)
+{
+ vector ret;
+ ret_x = screenright * v;
+ ret_y = screenup * v;
+ ret_z = screenforward * v;
+ return ret;
+}
+
+vector W_HitPlotNormalizedUntransform(vector org, entity targ, vector screenforward, vector screenright, vector screenup, vector v)
+{
+ float i, j, k;
+ vector mi, ma, thisv, myv, ret;
+
+ myv = W_HitPlotUnnormalizedUntransform(screenforward, screenright, screenup, org);
+
+ // x = 0..1 relative to hitbox; y = 0..1 relative to hitbox; z = distance
+
+ for(i = 0; i < 2; ++i) for(j = 0; j < 2; ++j) for(k = 0; k < 2; ++k)
+ {
+ thisv = targ.origin;
+ if(i) thisv_x += targ.maxs_x; else thisv_x += targ.mins_x;
+ if(j) thisv_y += targ.maxs_y; else thisv_y += targ.mins_y;
+ if(k) thisv_z += targ.maxs_z; else thisv_z += targ.mins_z;
+ thisv = W_HitPlotUnnormalizedUntransform(screenforward, screenright, screenup, thisv);
+ if(i || j || k)
+ {
+ if(mi_x > thisv_x) mi_x = thisv_x; if(ma_x < thisv_x) ma_x = thisv_x;
+ if(mi_y > thisv_y) mi_y = thisv_y; if(ma_y < thisv_y) ma_y = thisv_y;
+ //if(mi_z > thisv_z) mi_z = thisv_z; if(ma_z < thisv_z) ma_y = thisv_z;
+ }
+ else
+ {
+ // first run
+ mi = ma = thisv;
+ }
+ }
+
+ thisv = W_HitPlotUnnormalizedUntransform(screenforward, screenright, screenup, v);
+ ret_x = (thisv_x - mi_x) / (ma_x - mi_x);
+ ret_y = (thisv_y - mi_y) / (ma_y - mi_y);
+ ret_z = thisv_z - myv_z;
+ return ret;
+}
+
+void W_HitPlotAnalysis(entity player, vector screenforward, vector screenright, vector screenup)
+{
+ vector hitplot;
+ vector org;
+ float lag;
+
+ if(player.hitplotfh >= 0)
+ {
+ lag = ANTILAG_LATENCY(player);
+ if(lag < 0.001)
+ lag = 0;
+ if(clienttype(player) != CLIENTTYPE_REAL)
+ lag = 0; // only antilag for clients
+
+ org = player.origin + player.view_ofs;
+ traceline_antilag_force(player, org, org + screenforward * MAX_SHOT_DISTANCE, MOVE_NORMAL, player, lag);
+ if(trace_ent.flags & FL_CLIENT)
+ {
+ antilag_takeback(trace_ent, time - lag);
+ hitplot = W_HitPlotNormalizedUntransform(org, trace_ent, screenforward, screenright, screenup, trace_endpos);
+ antilag_restore(trace_ent);
+ fputs(player.hitplotfh, strcat(ftos(hitplot_x), " ", ftos(hitplot_y), " ", ftos(hitplot_z), " ", ftos(player.switchweapon), "\n"));
+ //print(strcat(ftos(hitplot_x), " ", ftos(hitplot_y), " ", ftos(hitplot_z), "\n"));
+ }
+ }
+}
+
vector w_shotorg;
vector w_shotdir;
@@ -42,6 +114,8 @@
traceline(ent.origin + ent.view_ofs, ent.origin + ent.view_ofs + v_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, ent);
trueaimpoint = trace_endpos;
+ W_HitPlotAnalysis(ent, v_forward, v_right, v_up);
+
if(ent.weaponentity.movedir_x > 0)
{
vecs = ent.weaponentity.movedir;
Modified: branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -388,6 +388,9 @@
else
self.nickspamcount += 1;
self.nickspamtime = time + cvar("g_nick_flood_penalty");
+
+ if (timeoutStatus == 2) //when game is paused, no flood protection
+ self.nickspamcount = self.nickspamtime = 0;
}
clientcommand(self,s);
Modified: branches/nexuiz-2.0/data/qcsrc/server/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2009-05-24 09:17:59 UTC (rev 6762)
@@ -1,5 +1,5 @@
-string CVAR_CHECK_DEFAULT = "dbe0a62fd00f815592a25cea67fc6156";
-string CVAR_CHECK_WEAPONS = "00219e78f5d78d7d8a1600c4f4c73aa5";
+string CVAR_CHECK_DEFAULT = "ca174b42ef38020187602cfda6d8ef43";
+string CVAR_CHECK_WEAPONS = "c5b3e579a14c45d555550b08f203a607";
float FALSE = 0;
float TRUE = 1;
Modified: branches/nexuiz-2.0/data/qcsrc/server/defs.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/defs.qh 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/defs.qh 2009-05-24 09:17:59 UTC (rev 6762)
@@ -33,6 +33,12 @@
float g_pickup_respawntime_medium;
float g_pickup_respawntime_long;
float g_pickup_respawntime_powerup;
+float g_pickup_respawntimejitter_weapon;
+float g_pickup_respawntimejitter_ammo;
+float g_pickup_respawntimejitter_short;
+float g_pickup_respawntimejitter_medium;
+float g_pickup_respawntimejitter_long;
+float g_pickup_respawntimejitter_powerup;
float g_maplist_allow_hidden;
float g_jetpack;
@@ -162,6 +168,7 @@
.string playerskin;
.float respawntime;
+.float respawntimejitter;
//.float chasecam;
.float damageforcescale;
@@ -567,7 +574,16 @@
.vector prevorigin;
+//flood fields
.float nickspamtime; // time of last nick change
.float nickspamcount;
+.float floodcontrol_chat;
+.float floodcontrol_chatteam;
+.float floodcontrol_chattell;
+.float floodcontrol_voice;
+.float floodcontrol_voiceteam;
.float stat_shotorg; // networked stat for trueaim HUD
+
+string matchid;
+.float hitplotfh;
Modified: branches/nexuiz-2.0/data/qcsrc/server/extensions.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/extensions.qh 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/extensions.qh 2009-05-24 09:17:59 UTC (rev 6762)
@@ -1650,6 +1650,8 @@
float DPCONTENTS_MONSTERCLIP = 512; // blocks monster movement
float DPCONTENTS_DONOTENTER = 1024; // AI hint brush
float DPCONTENTS_LIQUIDSMASK = 14; // WATER | SLIME | LAVA
+float DPCONTENTS_BOTCLIP = 2048; // AI hint brush
+float DPCONTENTS_OPAQUE = 4096; // only fully opaque brushes get this (may be useful for line of sight checks)
float Q3SURFACEFLAG_NODAMAGE = 1;
float Q3SURFACEFLAG_SLICK = 2; // low friction surface
float Q3SURFACEFLAG_SKY = 4; // sky surface (also has NOIMPACT and NOMARKS set)
Modified: branches/nexuiz-2.0/data/qcsrc/server/func_breakable.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/func_breakable.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/func_breakable.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -13,6 +13,7 @@
.float debristimejitter;
.float debrisfadetime;
.float debrisdamageforcescale;
+.float debrisskin;
.string mdl_dead; // or "" to hide when broken
.string debris; // space separated list of debris models
@@ -48,6 +49,8 @@
+ '0 1 0' * random() * (self.absmax_y - self.absmin_y)
+ '0 0 1' * random() * (self.absmax_z - self.absmin_z));
setmodel (dbr, debrisname );
+ dbr.skin = self.debrisskin;
+ dbr.colormap = self.colormap; // inherit team colors
dbr.owner = self; // do not be affected by our own explosion
dbr.movetype = self.debrismovetype;
dbr.solid = self.debrissolid;
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_world.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_world.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -79,6 +79,10 @@
else {
//now pause the game:
timeoutStatus = 2;
+ //reset all the flood variables
+ FOR_EACH_CLIENT(plr) {
+ plr.nickspamcount = plr.nickspamtime = plr.floodcontrol_chat = plr.floodcontrol_chatteam = plr.floodcontrol_chattell = plr.floodcontrol_voice = plr.floodcontrol_voiceteam = 0;
+ }
cvar_set("slowmo", ftos(TIMEOUT_SLOWMO_VALUE));
//copy .v_angle to .lastV_angle for every player in order to fix their view during pause (see PlayerPreThink)
FOR_EACH_REALPLAYER(plr) {
@@ -500,6 +504,8 @@
{
s = strcat(cvar_string("sv_eventlog_files_counter"), ".");
s = strcat(s, ftos(random()));
+ matchid = strzone(s);
+
GameLogEcho(strcat(":gamestart:", GetGametype(), "_", GetMapname(), ":", s));
s = ":gameinfo:mutators:LIST";
if(cvar("g_grappling_hook"))
@@ -527,6 +533,8 @@
GameLogEcho(s);
GameLogEcho(":gameinfo:end");
}
+ else
+ matchid = strzone(ftos(random()));
cvar_set("nextmap", "");
Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -943,30 +943,16 @@
}
}
- if(start_weapons & WEPBIT_HOOK)
+ if(g_jetpack || (g_grappling_hook && (start_weapons & WEPBIT_HOOK)))
{
- // can't have off-hand hook, if hook weapon is enabled
-
- // note: if g_grappling_hook is 1, also give some initial cells
- if(g_grappling_hook)
- {
- if(!start_ammo_cells)
- start_ammo_cells = g_pickup_cells;
- if(!warmup_start_ammo_cells)
- warmup_start_ammo_cells = g_pickup_cells;
- }
-
- g_grappling_hook = 0;
- }
-
- if(g_jetpack)
- {
g_grappling_hook = 0; // these two can't coexist, as they use the same button
- start_items |= IT_JETPACK;
start_items |= IT_FUEL_REGEN;
start_ammo_fuel = max(start_ammo_fuel, cvar("g_balance_fuel_stable"));
}
+ if(g_jetpack)
+ start_items |= IT_JETPACK;
+
if(g_weapon_stay == 2)
{
if(!start_ammo_shells) start_ammo_shells = g_pickup_shells;
@@ -1078,6 +1064,12 @@
g_pickup_respawntime_medium = cvar("g_pickup_respawntime_medium");
g_pickup_respawntime_long = cvar("g_pickup_respawntime_long");
g_pickup_respawntime_powerup = cvar("g_pickup_respawntime_powerup");
+ g_pickup_respawntimejitter_weapon = cvar("g_pickup_respawntimejitter_weapon");
+ g_pickup_respawntimejitter_ammo = cvar("g_pickup_respawntimejitter_ammo");
+ g_pickup_respawntimejitter_short = cvar("g_pickup_respawntimejitter_short");
+ g_pickup_respawntimejitter_medium = cvar("g_pickup_respawntimejitter_medium");
+ g_pickup_respawntimejitter_long = cvar("g_pickup_respawntimejitter_long");
+ g_pickup_respawntimejitter_powerup = cvar("g_pickup_respawntimejitter_powerup");
if(g_minstagib) g_nixnex = g_weaponarena = 0;
if(g_nixnex) g_weaponarena = 0;
Modified: branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -380,23 +380,165 @@
}
};
+void onslaught_generator_ring_think()
+{
+ self.nextthink = time;
+ if(self.count>20)
+ {
+ self.think = SUB_Remove;
+ return;
+ }
+
+ self.scale = self.count * 4;
+ setsize(self, self.mins * self.scale, self.maxs * self.scale);
+
+ self.frame = self.count * 4;
+
+ self.count +=1;
+ self.alpha = 0.3;
+};
+
+void onslaught_generator_ring_spawn(vector org)
+{
+ entity e;
+ e = spawn();
+ setmodel(e, "models/onslaught/shockwavetransring.md3");
+ setorigin(e,org);
+
+ e.count = 1;
+ e.alpha = 0;
+
+ e.think = onslaught_generator_ring_think;
+ e.nextthink = time;
+};
+
+void onslaught_generator_shockwave_think()
+{
+ self.nextthink = time;
+ if(self.count>20)
+ {
+ self.think = SUB_Remove;
+ return;
+ }
+
+ if(self.count>10)
+ self.alpha -= 0.1;
+ else
+ self.alpha = 1;
+
+ self.scale = self.count * 4;
+ setsize(self, self.mins * self.scale, self.maxs * self.scale);
+ self.frame = self.count * 4;
+
+ self.count +=1;
+};
+
+void onslaught_generator_shockwave_spawn(vector org)
+{
+ entity e;
+ e = spawn();
+ setmodel(e, "models/onslaught/shockwave.md3");
+ setorigin(e,org);
+
+ e.alpha = 0;
+ e.frame = 0;
+
+ e.think = onslaught_generator_shockwave_think;
+ e.nextthink = time;
+};
+
+void onslaught_generator_boom_think()
+{
+ self.nextthink = time;
+ if(self.frame==15)
+ {
+ self.think = SUB_Remove;
+ return;
+ }
+
+ if(self.frame>11)
+ self.alpha -= 0.3;
+
+ self.frame +=1;
+};
+
+void onslaught_generator_boom_spawn(vector org, float fscale)
+{
+ entity e;
+ e = spawn();
+ setmodel(e, "models/onslaught/boom.md3");
+ setorigin(e,org);
+
+ e.scale = fscale;
+ setsize(e, e.mins * e.scale, e.maxs * e.scale);
+
+ e.effects = EF_NOSHADOW;
+
+ e.think = onslaught_generator_boom_think;
+ e.nextthink = time;
+};
+
void onslaught_generator_deaththink()
{
local vector org;
- if (self.count > 0)
+ local float i, scale;
+
+ if not (self.count)
+ self.count = 40;
+
+ // White shockwave
+ if(self.count==40||self.count==20)
{
- self.nextthink = time + 0.1;
- self.count = self.count - 1;
- org = randompos(self.origin + self.mins + '8 8 8', self.origin + self.maxs + '-8 -8 -8');
- pointparticles(particleeffectnum("onslaught_generator_smallexplosion"), org, '0 0 0', 1);
+ onslaught_generator_ring_spawn(self.origin);
+ sound(self, CHAN_TRIGGER, "onslaught/shockwave.wav", VOL_BASE, ATTN_NORM);
+ }
+
+ // Throw some gibs
+ if(random()<0.2)
+ {
+ i = random();
+ if(i<0.3)
+ ons_trowgib(self.origin, (100 * randomvec() - '1 1 1') * 25,'1 1 1',"models/onslaught/gen_gib1.md3",20,1,0);
+ else if(i>0.7)
+ ons_trowgib(self.origin, (100 * randomvec() - '1 1 1') * 25,'1 1 1',"models/onslaught/gen_gib2.md3",20,1,0);
+ else
+ ons_trowgib(self.origin, (100 * randomvec() - '1 1 1') * 25,'1 1 1',"models/onslaught/gen_gib3.md3",20,1,0);
+ }
+
+ // Spawn fire balls
+ for(i=0;i<6;++i)
+ {
+ org = self.origin + self.mins;
+ org_z = self.origin_z - 20;
+ org = randompos(org, self.origin + self.maxs + '0 0 20');
+
+ onslaught_generator_boom_spawn(org, 1);
+ }
+
+ // Short explosion sound + small explosion
+ if(random()<0.25)
+ {
+ te_explosion(self.origin);
sound(self, CHAN_TRIGGER, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
}
- else
+
+ // Particles
+ org = randompos(self.origin + self.mins + '8 8 8', self.origin + self.maxs + '-8 -8 -8');
+ pointparticles(particleeffectnum("onslaught_generator_smallexplosion"), org, '0 0 0', 1);
+
+ // Final explosion
+ if(self.count==1)
{
org = self.origin;
+ te_explosion(org);
+ onslaught_generator_shockwave_spawn(org);
pointparticles(particleeffectnum("onslaught_generator_finalexplosion"), org, '0 0 0', 1);
sound(self, CHAN_TRIGGER, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
}
+ else
+ self.nextthink = time;
+
+ self.count = self.count - 1;
};
void onslaught_generator_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
@@ -451,16 +593,30 @@
self.isshielded = FALSE;
self.takedamage = DAMAGE_NO; // can't be hurt anymore
self.event_damage = SUB_Null; // won't do anything if hurt
- self.count = 30; // 30 explosions
+ self.count = 0; // reset counter
self.think = onslaught_generator_deaththink; // explosion sequence
self.nextthink = time; // start exploding immediately
self.think(); // do the first explosion now
onslaught_updatelinks();
}
- if(self.health < cvar("g_onslaught_gen_health") * 0.75)
+ if(self.health < cvar("g_onslaught_gen_health") * 0.90)
setmodel(self, "models/onslaught/generator_dmg1.md3");
- if(self.health < cvar("g_onslaught_gen_health") * 0.35)
+ if(self.health < cvar("g_onslaught_gen_health") * 0.80)
setmodel(self, "models/onslaught/generator_dmg2.md3");
+ if(self.health < cvar("g_onslaught_gen_health") * 0.70)
+ setmodel(self, "models/onslaught/generator_dmg3.md3");
+ if(self.health < cvar("g_onslaught_gen_health") * 0.60)
+ setmodel(self, "models/onslaught/generator_dmg4.md3");
+ if(self.health < cvar("g_onslaught_gen_health") * 0.50)
+ setmodel(self, "models/onslaught/generator_dmg5.md3");
+ if(self.health < cvar("g_onslaught_gen_health") * 0.40)
+ setmodel(self, "models/onslaught/generator_dmg6.md3");
+ if(self.health < cvar("g_onslaught_gen_health") * 0.30)
+ setmodel(self, "models/onslaught/generator_dmg7.md3");
+ if(self.health < cvar("g_onslaught_gen_health") * 0.20)
+ setmodel(self, "models/onslaught/generator_dmg8.md3");
+ if(self.health < cvar("g_onslaught_gen_health") * 0.10)
+ setmodel(self, "models/onslaught/generator_dmg9.md3");
if(self.health <= 0)
setmodel(self, "models/onslaught/generator_dead.md3");
};
@@ -643,11 +799,25 @@
precache_model("models/onslaught/generator_shield.md3");
precache_model("models/onslaught/generator_dmg1.md3");
precache_model("models/onslaught/generator_dmg2.md3");
+ precache_model("models/onslaught/generator_dmg3.md3");
+ precache_model("models/onslaught/generator_dmg4.md3");
+ precache_model("models/onslaught/generator_dmg5.md3");
+ precache_model("models/onslaught/generator_dmg6.md3");
+ precache_model("models/onslaught/generator_dmg7.md3");
+ precache_model("models/onslaught/generator_dmg8.md3");
+ precache_model("models/onslaught/generator_dmg9.md3");
precache_model("models/onslaught/generator_dead.md3");
+ precache_model("models/onslaught/boom.md3");
+ precache_model("models/onslaught/shockwave.md3");
+ precache_model("models/onslaught/shockwavetransring.md3");
+ precache_model("models/onslaught/gen_gib1.md3");
+ precache_model("models/onslaught/gen_gib2.md3");
+ precache_model("models/onslaught/gen_gib3.md3");
precache_sound("onslaught/generator_decay.wav");
precache_sound("weapons/grenade_impact.wav");
precache_sound("weapons/rocket_impact.wav");
precache_sound("onslaught/generator_underattack.wav");
+ precache_sound("onslaught/shockwave.wav");
if (!self.team)
objerror("team must be set");
self.team_saved = self.team;
@@ -916,7 +1086,7 @@
self.enemy.colormap = self.colormap;
self.think = self.enemy.think = SUB_Null;
self.nextthink = 0; // don't like SUB_Null :P
-
+
onslaught_updatelinks();
activator = self;
Modified: branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_items.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_items.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -1,3 +1,8 @@
+#define ITEM_RESPAWNTIME(i) ((i).respawntime + crandom() * (i).respawntimejitter)
+ // range: respawntime - respawntimejitter .. respawntime + respawntimejitter
+#define ITEM_RESPAWNTIME_INITIAL(i) (10 + random() * ((i).respawntime + (i).respawntimejitter - 10))
+ // range: 10 .. respawntime + respawntimejitter
+
floatfield Item_CounterField(float it)
{
switch(it)
@@ -45,6 +50,83 @@
pointparticles(particleeffectnum("item_respawn"), self.origin + 0.5 * (self.mins + self.maxs), '0 0 0', 1);
}
+void Item_RespawnCountdown (void)
+{
+ if(self.count >= 5)
+ {
+ if(self.waypointsprite_attached)
+ WaypointSprite_Kill(self.waypointsprite_attached);
+ Item_Respawn();
+ }
+ else
+ {
+ self.nextthink = time + 1;
+ self.count += 1;
+ if(self.count == 1)
+ {
+ string name;
+ vector rgb;
+ name = string_null;
+ if(g_minstagib)
+ {
+ switch(self.items)
+ {
+ case IT_STRENGTH: name = "item-invis"; rgb = '0 0 1'; break;
+ case IT_NAILS: name = "item-extralife"; rgb = '1 0 0'; break;
+ case IT_INVINCIBLE: name = "item-speed"; rgb = '1 0 1'; break;
+ }
+ }
+ else
+ {
+ switch(self.items)
+ {
+ case IT_STRENGTH: name = "item-strength"; rgb = '0 0 1'; break;
+ case IT_INVINCIBLE: name = "item-shield"; rgb = '1 0 1'; break;
+ }
+ }
+ switch(self.items)
+ {
+ case IT_FUEL_REGEN: name = "item-fuelregen"; rgb = '1 0.5 0'; break;
+ case IT_JETPACK: name = "item-jetpack"; rgb = '0.5 0.5 0.5'; break;
+ }
+ if(name)
+ {
+ WaypointSprite_Spawn(name, 0, 0, self, '0 0 64', world, 0, self, waypointsprite_attached, FALSE);
+ if(self.waypointsprite_attached)
+ WaypointSprite_UpdateTeamRadar(self.waypointsprite_attached, RADARICON_POWERUP, rgb);
+ }
+ }
+ sound (self, CHAN_TRIGGER, "misc/itemrespawncountdown.wav", VOL_BASE, ATTN_NORM); // play respawn sound
+ if(self.waypointsprite_attached)
+ WaypointSprite_Ping(self.waypointsprite_attached);
+ }
+}
+
+void Item_ScheduleRespawnIn(entity e, float t)
+{
+ if(e.flags & FL_POWERUP)
+ {
+ e.think = Item_RespawnCountdown;
+ e.nextthink = time + max(0, t - 5);
+ e.count = 0;
+ }
+ else
+ {
+ e.think = Item_Respawn;
+ e.nextthink = time + t;
+ }
+}
+
+void Item_ScheduleRespawn(entity e)
+{
+ Item_ScheduleRespawnIn(e, ITEM_RESPAWNTIME(e));
+}
+
+void Item_ScheduleInitialRespawn(entity e)
+{
+ Item_ScheduleRespawnIn(e, ITEM_RESPAWNTIME_INITIAL(e));
+}
+
float Item_GiveTo(entity item, entity player)
{
float _switchweapon;
@@ -59,6 +141,20 @@
if (g_minstagib)
{
+ if (item.ammo_fuel)
+ if (player.ammo_fuel < g_pickup_fuel_max)
+ {
+ pickedup = TRUE;
+ player.ammo_fuel = min(player.ammo_fuel + item.ammo_fuel, g_pickup_fuel_max);
+ player.pauserotfuel_finished = max(player.pauserotfuel_finished, time + cvar("g_balance_pause_fuel_rot"));
+ }
+ if((it = (item.items - (item.items & player.items)) & IT_PICKUPMASK))
+ {
+ pickedup = TRUE;
+ player.items |= it;
+ sprint (player, strcat("You got the ^2", item.netname, "\n"));
+ }
+
_switchweapon = TRUE;
if (item.ammo_cells)
{
@@ -107,6 +203,15 @@
// play2(player, "announce/robotic/speed.wav");
player.invincible_finished = max(player.invincible_finished, time) + cvar("g_balance_powerup_strength_time");
}
+
+ if (item.ammo_fuel)
+ if (player.ammo_fuel < g_pickup_fuel_max)
+ {
+ pickedup = TRUE;
+ player.ammo_fuel = min(player.ammo_fuel + item.ammo_fuel, g_pickup_fuel_max);
+ player.pauserotfuel_finished = max(player.pauserotfuel_finished, time + cvar("g_balance_pause_fuel_rot"));
+ }
+
}
else
{
@@ -184,6 +289,7 @@
{
pickedup = TRUE;
player.items |= it;
+ sprint (player, strcat("You got the ^2", item.netname, "\n"));
}
if (item.strength_finished)
@@ -278,8 +384,7 @@
}
else
e = self;
- e.nextthink = time + self.respawntime;
- e.think = Item_Respawn;
+ Item_ScheduleRespawn(e);
}
}
@@ -306,8 +411,15 @@
head.model = string_null;
head.state = 1; // state 1 = initially hidden item
}
- head.effects = head.effects - (head.effects & EF_NODRAW);
+ head.effects &~= EF_NODRAW;
}
+
+ if(e.flags & FL_POWERUP) // do not spawn powerups initially!
+ {
+ e.solid = SOLID_NOT;
+ e.model = string_null;
+ Item_ScheduleInitialRespawn(e);
+ }
}
}
@@ -326,6 +438,13 @@
setorigin (self, self.origin);
self.think = SUB_Null;
self.nextthink = 0;
+
+ if(self.flags & FL_POWERUP) // do not spawn powerups initially!
+ {
+ self.solid = SOLID_NOT;
+ self.model = string_null;
+ Item_ScheduleInitialRespawn(self);
+ }
}
// Savage: used for item garbage-collection
@@ -379,7 +498,7 @@
.float is_item;
-void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, string itemname, float itemid, float weaponid, float itemflags, float(entity player, entity item) pickupevalfunc, float pickupbasevalue)
+void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, float defaultrespawntimejitter, string itemname, float itemid, float weaponid, float itemflags, float(entity player, entity item) pickupevalfunc, float pickupbasevalue)
{
startitem_failed = FALSE;
@@ -521,6 +640,7 @@
precache_model (itemmodel);
precache_sound (pickupsound);
precache_sound ("misc/itemrespawn.wav");
+ precache_sound ("misc/itemrespawncountdown.wav");
if((itemid & (IT_STRENGTH | IT_INVINCIBLE | IT_HEALTH | IT_ARMOR | IT_KEY1 | IT_KEY2)) || (weaponid & WEPBIT_ALL))
self.target = "###item###"; // for finding the nearest item using find()
@@ -532,8 +652,11 @@
self.mdl = itemmodel;
self.item_pickupsound = pickupsound;
// let mappers override respawntime
- if (!self.respawntime)
+ if(!self.respawntime) // both set
+ {
self.respawntime = defaultrespawntime;
+ self.respawntimejitter = defaultrespawntimejitter;
+ }
self.netname = itemname;
self.items = itemid;
self.weapons = weaponid;
@@ -566,6 +689,12 @@
self.effects = self.effects | EF_NODRAW; // marker for item team search
InitializeEntity(self, Item_FindTeam, INITPRIO_FINDTARGET);
}
+ else if(self.flags & FL_POWERUP) // do not spawn powerups initially!
+ {
+ self.solid = SOLID_NOT;
+ self.model = string_null;
+ Item_ScheduleInitialRespawn(self);
+ }
}
/* replace items in minstagib
@@ -580,7 +709,7 @@
{
self.ammo_cells = 25;
StartItem ("models/weapons/g_nex.md3",
- "weapons/weaponpickup.wav", 15,
+ "weapons/weaponpickup.wav", 15, 0,
"MinstaNex", 0, WEPBIT_MINSTANEX, FL_WEAPON, generic_pickupevalfunc, 1000);
return;
}
@@ -593,7 +722,7 @@
{
self.ammo_cells = 1;
StartItem ("models/items/a_cells.md3",
- "misc/itempickup.wav", 45,
+ "misc/itempickup.wav", 45, 0,
"Nex Ammo", IT_CELLS, 0, 0, generic_pickupevalfunc, 100);
return;
}
@@ -613,7 +742,7 @@
self.effects = EF_ADDITIVE;
self.strength_finished = 30;
StartItem ("models/items/g_strength.md3",
- "misc/powerup.wav", g_pickup_respawntime_powerup,
+ "misc/powerup.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup,
"Invisibility", IT_STRENGTH, 0, FL_POWERUP, generic_pickupevalfunc, BOT_PICKUP_RATING_MID);
}
// replace with extra lives
@@ -621,7 +750,7 @@
{
self.max_health = 1;
StartItem ("models/items/g_h100.md3",
- "misc/megahealth.wav", g_pickup_respawntime_powerup,
+ "misc/megahealth.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup,
"Extralife", IT_NAILS, 0, FL_POWERUP, generic_pickupevalfunc, BOT_PICKUP_RATING_HIGH);
}
@@ -631,7 +760,7 @@
self.effects = EF_ADDITIVE;
self.invincible_finished = 30;
StartItem ("models/items/g_invincible.md3",
- "misc/powerup_shield.wav", g_pickup_respawntime_powerup,
+ "misc/powerup_shield.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup,
"Speed", IT_INVINCIBLE, 0, FL_POWERUP, generic_pickupevalfunc, BOT_PICKUP_RATING_MID);
}
@@ -656,13 +785,20 @@
float i, j;
// set the respawntime in advance (so replaced weapons can copy it)
+
if(!self.respawntime)
{
e = get_weaponinfo(wpn);
if(e.items == IT_SUPERWEAPON)
+ {
self.respawntime = g_pickup_respawntime_powerup;
+ self.respawntimejitter = g_pickup_respawntimejitter_powerup;
+ }
else
+ {
self.respawntime = g_pickup_respawntime_weapon;
+ self.respawntimejitter = g_pickup_respawntimejitter_weapon;
+ }
}
if(self.classname != "droppedweapon" && self.classname != "replacedweapon")
@@ -732,9 +868,15 @@
if(e.items && e.items != IT_SUPERWEAPON)
{
- ammofield = Item_CounterField(e.items);
- if(!self.ammofield)
- self.ammofield = cvar(strcat("g_pickup_", Item_CounterFieldName(e.items)));
+ for(i = 0, j = 1; i < 24; ++i, j *= 2)
+ {
+ if(e.items & j)
+ {
+ ammofield = Item_CounterField(j);
+ if(!self.ammofield)
+ self.ammofield = cvar(strcat("g_pickup_", Item_CounterFieldName(j)));
+ }
+ }
}
else
{
@@ -755,7 +897,7 @@
// initialize all ammo types to the pickup ammo unless set by g_start_ammo_*
}
- StartItem(e.model, "weapons/weaponpickup.wav", self.respawntime, e.message, 0, e.weapons, FL_WEAPON, weapon_pickupevalfunc, e.bot_pickupbasevalue);
+ StartItem(e.model, "weapons/weaponpickup.wav", self.respawntime, self.respawntimejitter, e.message, 0, e.weapons, FL_WEAPON, weapon_pickupevalfunc, e.bot_pickupbasevalue);
if (self.modelindex) // don't precache if self was removed
weapon_action(e.weapon, WR_PRECACHE);
}
@@ -820,7 +962,7 @@
void spawnfunc_item_rockets (void) {
if(!self.ammo_rockets)
self.ammo_rockets = g_pickup_rockets;
- StartItem ("models/items/a_rockets.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, "rockets", IT_ROCKETS, 0, 0, commodity_pickupevalfunc, 3000);
+ StartItem ("models/items/a_rockets.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "rockets", IT_ROCKETS, 0, 0, commodity_pickupevalfunc, 3000);
}
void spawnfunc_item_shells (void);
@@ -837,13 +979,13 @@
if(!self.ammo_nails)
self.ammo_nails = g_pickup_nails;
- StartItem ("models/items/a_bullets.mdl", "misc/itempickup.wav", g_pickup_respawntime_ammo, "bullets", IT_NAILS, 0, 0, commodity_pickupevalfunc, 2000);
+ StartItem ("models/items/a_bullets.mdl", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "bullets", IT_NAILS, 0, 0, commodity_pickupevalfunc, 2000);
}
void spawnfunc_item_cells (void) {
if(!self.ammo_cells)
self.ammo_cells = g_pickup_cells;
- StartItem ("models/items/a_cells.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, "cells", IT_CELLS, 0, 0, commodity_pickupevalfunc, 2000);
+ StartItem ("models/items/a_cells.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "cells", IT_CELLS, 0, 0, commodity_pickupevalfunc, 2000);
}
void spawnfunc_item_shells (void) {
@@ -859,7 +1001,7 @@
if(!self.ammo_shells)
self.ammo_shells = g_pickup_shells;
- StartItem ("models/items/a_shells.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, "shells", IT_SHELLS, 0, 0, commodity_pickupevalfunc, 500);
+ StartItem ("models/items/a_shells.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "shells", IT_SHELLS, 0, 0, commodity_pickupevalfunc, 500);
}
void spawnfunc_item_armor_small (void) {
@@ -867,7 +1009,7 @@
self.armorvalue = g_pickup_armorsmall;
if(!self.max_armorvalue)
self.max_armorvalue = g_pickup_armorsmall_max;
- StartItem ("models/items/g_a1.md3", "misc/armor1.wav", g_pickup_respawntime_short, "5 Armor", IT_ARMOR_SHARD, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
+ StartItem ("models/items/g_a1.md3", "misc/armor1.wav", g_pickup_respawntime_short, g_pickup_respawntimejitter_short, "5 Armor", IT_ARMOR_SHARD, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
}
void spawnfunc_item_armor_medium (void) {
@@ -875,7 +1017,7 @@
self.armorvalue = g_pickup_armormedium;
if(!self.max_armorvalue)
self.max_armorvalue = g_pickup_armormedium_max;
- StartItem ("models/items/g_armormedium.md3", "misc/armor10.wav", g_pickup_respawntime_medium, "25 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID);
+ StartItem ("models/items/g_armormedium.md3", "misc/armor10.wav", g_pickup_respawntime_medium, g_pickup_respawntimejitter_medium, "25 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID);
}
void spawnfunc_item_armor_big (void) {
@@ -883,7 +1025,7 @@
self.armorvalue = g_pickup_armorbig;
if(!self.max_armorvalue)
self.max_armorvalue = g_pickup_armorbig_max;
- StartItem ("models/items/g_a50.md3", "misc/armor17_5.wav", g_pickup_respawntime_long, "50 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, 20000);
+ StartItem ("models/items/g_a50.md3", "misc/armor17_5.wav", g_pickup_respawntime_long, g_pickup_respawntimejitter_long, "50 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, 20000);
}
void spawnfunc_item_armor_large (void) {
@@ -891,7 +1033,7 @@
self.armorvalue = g_pickup_armorlarge;
if(!self.max_armorvalue)
self.max_armorvalue = g_pickup_armorlarge_max;
- StartItem ("models/items/g_a25.md3", "misc/armor25.wav", g_pickup_respawntime_long, "100 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_HIGH);
+ StartItem ("models/items/g_a25.md3", "misc/armor25.wav", g_pickup_respawntime_long, g_pickup_respawntimejitter_long, "100 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_HIGH);
}
void spawnfunc_item_health_small (void) {
@@ -899,7 +1041,7 @@
self.max_health = g_pickup_healthsmall_max;
if(!self.health)
self.health = g_pickup_healthsmall;
- StartItem ("models/items/g_h1.md3", "misc/minihealth.wav", g_pickup_respawntime_short, "5 Health", IT_5HP, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
+ StartItem ("models/items/g_h1.md3", "misc/minihealth.wav", g_pickup_respawntime_short, g_pickup_respawntimejitter_short, "5 Health", IT_5HP, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
}
void spawnfunc_item_health_medium (void) {
@@ -907,7 +1049,7 @@
self.max_health = g_pickup_healthmedium_max;
if(!self.health)
self.health = g_pickup_healthmedium;
- StartItem ("models/items/g_h25.md3", "misc/mediumhealth.wav", g_pickup_respawntime_short, "25 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID);
+ StartItem ("models/items/g_h25.md3", "misc/mediumhealth.wav", g_pickup_respawntime_short, g_pickup_respawntimejitter_short, "25 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID);
}
void spawnfunc_item_health_large (void) {
@@ -915,7 +1057,7 @@
self.max_health = g_pickup_healthlarge_max;
if(!self.health)
self.health = g_pickup_healthlarge;
- StartItem ("models/items/g_h50.md3", "misc/mediumhealth.wav", g_pickup_respawntime_medium, "50 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID);
+ StartItem ("models/items/g_h50.md3", "misc/mediumhealth.wav", g_pickup_respawntime_medium, g_pickup_respawntimejitter_medium, "50 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID);
}
void spawnfunc_item_health_mega (void) {
@@ -932,7 +1074,7 @@
self.max_health = g_pickup_healthmega_max;
if(!self.health)
self.health = g_pickup_healthmega;
- StartItem ("models/items/g_h100.md3", "misc/megahealth.wav", g_pickup_respawntime_long, "100 Health", IT_HEALTH, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_HIGH);
+ StartItem ("models/items/g_h100.md3", "misc/megahealth.wav", g_pickup_respawntime_long, g_pickup_respawntimejitter_long, "100 Health", IT_HEALTH, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_HIGH);
}
}
@@ -956,7 +1098,7 @@
precache_sound("weapons/strength_fire.wav");
self.strength_finished = 30;
self.effects = EF_ADDITIVE;
- StartItem ("models/items/g_strength.md3", "misc/powerup.wav", g_pickup_respawntime_powerup, "Strength Powerup", IT_STRENGTH, 0, FL_POWERUP, generic_pickupevalfunc, 100000);
+ StartItem ("models/items/g_strength.md3", "misc/powerup.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Strength Powerup", IT_STRENGTH, 0, FL_POWERUP, generic_pickupevalfunc, 100000);
}
}
@@ -972,7 +1114,7 @@
} else {
self.invincible_finished = 30;
self.effects = EF_ADDITIVE;
- StartItem ("models/items/g_invincible.md3", "misc/powerup_shield.wav", g_pickup_respawntime_powerup, "Invulnerability", IT_INVINCIBLE, 0, FL_POWERUP, generic_pickupevalfunc, 100000);
+ StartItem ("models/items/g_invincible.md3", "misc/powerup_shield.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Shield", IT_INVINCIBLE, 0, FL_POWERUP, generic_pickupevalfunc, 100000);
}
}
@@ -1248,19 +1390,29 @@
{
if(!self.ammo_fuel)
self.ammo_fuel = g_pickup_fuel;
- StartItem ("models/items/g_fuel.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, "Fuel", IT_FUEL, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
+ StartItem ("models/items/g_fuel.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "Fuel", IT_FUEL, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
}
void spawnfunc_item_fuel_regen(void)
{
- StartItem ("models/items/g_fuelregen.md3", "misc/itempickup.wav", g_pickup_respawntime_powerup, "Fuel regenerator", IT_FUEL_REGEN, 0, FL_POWERUP, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
+ if(start_items & IT_FUEL_REGEN)
+ {
+ spawnfunc_item_fuel();
+ return;
+ }
+ StartItem ("models/items/g_fuelregen.md3", "misc/itempickup.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Fuel regenerator", IT_FUEL_REGEN, 0, FL_POWERUP, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
}
void spawnfunc_item_jetpack(void)
{
if(g_grappling_hook)
- return; // sorry, but these two can't coexist (same button)
+ return; // sorry, but these two can't coexist (same button); spawn fuel instead
if(!self.ammo_fuel)
self.ammo_fuel = g_pickup_fuel_jetpack;
- StartItem ("models/items/g_jetpack.md3", "misc/itempickup.wav", g_pickup_respawntime_powerup, "Jet pack", IT_JETPACK, 0, FL_POWERUP, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
+ if(start_items & IT_JETPACK)
+ {
+ spawnfunc_item_fuel();
+ return;
+ }
+ StartItem ("models/items/g_jetpack.md3", "misc/itempickup.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Jet pack", IT_JETPACK, 0, FL_POWERUP, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_campingrifle.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_campingrifle.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_campingrifle.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -52,9 +52,9 @@
self.ammo_nails -= pAmmo;
if(deathtype & HITTYPE_SECONDARY)
- W_SetupShot (self, FALSE, 2, "weapons/campingrifle_fire2.wav");
+ W_SetupShot (self, TRUE, 2, "weapons/campingrifle_fire2.wav");
else
- W_SetupShot (self, FALSE, 2, "weapons/campingrifle_fire.wav");
+ W_SetupShot (self, TRUE, 2, "weapons/campingrifle_fire.wav");
pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 2000, 1);
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hook.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -7,7 +7,7 @@
.float dmg_last;
.float hook_refire;
.float hook_time_hooked;
-.float hook_time_ammodecrease;
+.float hook_time_fueldecrease;
void W_Hook_ExplodeThink (void)
{
@@ -103,7 +103,7 @@
float w_hook(float req)
{
- float hooked_time_max, hooked_ammodecrease_delay;
+ float hooked_time_max, hooked_fuel;
if (req == WR_AIM)
{
@@ -115,11 +115,12 @@
{
if(!self.hook)
if not(self.hook_state & HOOK_WAITING_FOR_RELEASE)
+ if not(self.hook_state & HOOK_FIRING)
if (time > self.hook_refire)
if (weapon_prepareattack(0, -1))
{
if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
- self.ammo_cells = self.ammo_cells - cvar("g_balance_hook_primary_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);
}
@@ -138,6 +139,10 @@
{
// if hooked, no bombs, and increase the timer
self.hook_refire = max(self.hook_refire, time + cvar("g_balance_hook_primary_refire"));
+
+ // hook also inhibits health regeneration, but only for 1 second
+ if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
+ self.pauseregen_finished = max(self.pauseregen_finished, time + cvar("g_balance_pause_fuel_regen"));
}
if(self.hook && self.hook.state == 1)
@@ -149,20 +154,22 @@
self.hook_state |= HOOK_REMOVING;
}
- hooked_ammodecrease_delay = cvar("g_balance_hook_primary_hooked_ammodecrease_delay");
- if (hooked_ammodecrease_delay > 0)
+ hooked_fuel = cvar("g_balance_hook_primary_hooked_fuel");
+ if (hooked_fuel > 0)
{
- if ( time > self.hook_time_ammodecrease )
+ if ( time > self.hook_time_fueldecrease )
{
if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
{
- if ( self.ammo_cells >= frametime / hooked_ammodecrease_delay )
+ if ( self.ammo_fuel >= (time - self.hook_time_fueldecrease) * hooked_fuel )
{
- self.ammo_cells -= frametime / hooked_ammodecrease_delay;
+ self.ammo_fuel -= (time - self.hook_time_fueldecrease) * hooked_fuel;
+ self.hook_time_fueldecrease = time;
// decrease next frame again
}
else
{
+ self.ammo_fuel = 0;
self.hook_state |= HOOK_REMOVING;
W_SwitchWeapon_Force(self, w_getbestweapon(self));
}
@@ -173,7 +180,7 @@
else
{
self.hook_time_hooked = time;
- self.hook_time_ammodecrease = time + cvar("g_balance_hook_primary_hooked_time_free");
+ self.hook_time_fueldecrease = time + cvar("g_balance_hook_primary_hooked_time_free");
}
if (self.BUTTON_CROUCH)
@@ -218,7 +225,10 @@
}
else if (req == WR_CHECKAMMO1)
{
- return self.ammo_cells >= cvar("g_balance_hook_primary_ammo");
+ if(self.hook)
+ return self.ammo_fuel > 0;
+ else
+ return self.ammo_fuel >= cvar("g_balance_hook_primary_fuel");
}
else if (req == WR_CHECKAMMO2)
{
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc 2009-05-24 09:17:59 UTC (rev 6762)
@@ -15,7 +15,7 @@
remove(self);
}
-float W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo);
+string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo);
void W_Porto_Fail (float failhard)
{
if(self.owner == world)
Modified: branches/nexuiz-2.0/data/scripts/entities.def
===================================================================
--- branches/nexuiz-2.0/data/scripts/entities.def 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/scripts/entities.def 2009-05-24 09:17:59 UTC (rev 6762)
@@ -56,6 +56,7 @@
debristimejitter: time till the debris fades (random part)
debrisfadetime: how long debris takes to fade
debrisdamageforcescale: how much debris is affected by damage force (e.g. explosions)
+debrisskin: skin number of debris
*/
/*QUAKED func_assault_wall (.5 0 .5) ?
@@ -1435,6 +1436,7 @@
debristimejitter: time till the debris fades (random part)
debrisfadetime: how long debris takes to fade
debrisdamageforcescale: how much debris is affected by damage force (e.g. explosions)
+debrisskin: skin number of debris
-------- SPAWNFLAGS --------
DISABLED: do not allow damaging this until it is first activated
INDICATE: indicate amount of damage already taken by coloring
Modified: branches/nexuiz-2.0/data/scripts/onslaught.shader
===================================================================
--- branches/nexuiz-2.0/data/scripts/onslaught.shader 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/scripts/onslaught.shader 2009-05-24 09:17:59 UTC (rev 6762)
@@ -7,4 +7,83 @@
tcMod scroll 0.03 0.001
tcGen environment
}
+}
+
+ons_pad_text
+{
+ cull none
+ {
+ map textures/ons_text.tga
+ tcMod scroll 0.1 0
+ blendfunc add
+
+ }
+}
+
+ons_icon_text
+{
+ {
+ map textures/ons_text.tga
+ tcMod scroll 0.1 0
+ }
+}
+
+ons_icon_thrust
+{
+ {
+ map textures/ons_icon_thrust.tga
+ tcMod scroll 3 0
+ tcMod rotate 10
+ }
+}
+ons_gen_spark
+{
+ cull none
+ {
+ animmap 9 textures/generator_lightning.tga textures/generator_lightning2.tga
+ tcMod scroll 0.5 0
+ blendfunc add
+
+ }
+}
+ons_fire
+{
+ {
+ map textures/ons_boom1.tga
+ tcMod scroll 0.05 0.1
+ tcMod rotate 0.01
+ blendfunc add
+
+ }
+}
+ons_smoke
+{
+ deformVertexes wave sin 1 3 2 0.2
+ {
+ map textures/ons_smoke1.tga
+ tcMod scroll 0.01 0.04
+ tcMod rotate 0.01
+ alphaFunc GE128
+
+ }
+}
+ons_shockwave
+{
+ cull none
+ {
+ map textures/ons_shockwave1.tga
+ tcMod scroll 0.2 0
+ blendfunc add
+
+ }
+}
+ons_shockwave2
+{
+ {
+ map textures/ons_shockwave2.tga
+ tcMod rotate 85
+ tcMod scroll 0.03 0.6
+ tcGen environment
+ blendfunc add
+ }
}
\ No newline at end of file
Copied: branches/nexuiz-2.0/data/sound/misc/itemrespawncountdown.ogg (from rev 6721, trunk/data/sound/misc/itemrespawncountdown.ogg)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/sound/onslaught/shockwave.ogg (from rev 6746, trunk/data/sound/onslaught/shockwave.ogg)
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/core.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/core_dmg1.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/core_dmg1_glow.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/core_dmg2.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/core_dmg2_glow.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/core_gloss.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/core_glow.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/generator.tga (from rev 6746, trunk/data/textures/generator.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/generator_destroyed.tga (from rev 6746, trunk/data/textures/generator_destroyed.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/generator_gloss.tga (from rev 6746, trunk/data/textures/generator_gloss.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/generator_glow.tga (from rev 6746, trunk/data/textures/generator_glow.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/generator_lightning.tga (from rev 6746, trunk/data/textures/generator_lightning.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/generator_lightning2.tga (from rev 6746, trunk/data/textures/generator_lightning2.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/generator_norm.tga (from rev 6746, trunk/data/textures/generator_norm.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/generator_pants.tga (from rev 6746, trunk/data/textures/generator_pants.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/ons_boom1.tga (from rev 6746, trunk/data/textures/ons_boom1.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/ons_gengib.tga (from rev 6746, trunk/data/textures/ons_gengib.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/ons_shockwave1.tga (from rev 6746, trunk/data/textures/ons_shockwave1.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/ons_shockwave2.tga (from rev 6746, trunk/data/textures/ons_shockwave2.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/textures/ons_smoke1.tga (from rev 6746, trunk/data/textures/ons_smoke1.tga)
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor.jpg
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor_dead.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor_dmg1.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor_dmg1_glow.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor_dmg1_shirt.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor_dmg2.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor_dmg2_glow.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor_dmg2_shirt.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor_glow.tga
===================================================================
(Binary files differ)
Deleted: branches/nexuiz-2.0/data/textures/reactor_shirt.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/weapons.cfg
===================================================================
--- branches/nexuiz-2.0/data/weapons.cfg 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/weapons.cfg 2009-05-24 09:17:59 UTC (rev 6762)
@@ -3,7 +3,7 @@
//
// And... don't forget to edit weaponsHavoc.cfg too.
-set cvar_check_weapons 00219e78f5d78d7d8a1600c4f4c73aa5
+set cvar_check_weapons c5b3e579a14c45d555550b08f203a607
// NOTE: this only replaces weapons on the map
// use g_start_weapon_* to also replace the on-startup weapons!
@@ -79,6 +79,12 @@
set g_pickup_respawntime_powerup 120
set g_pickup_respawntime_weapon 15
set g_pickup_respawntime_ammo 15
+set g_pickup_respawntimejitter_short 0
+set g_pickup_respawntimejitter_medium 0
+set g_pickup_respawntimejitter_long 0
+set g_pickup_respawntimejitter_powerup 10
+set g_pickup_respawntimejitter_weapon 0
+set g_pickup_respawntimejitter_ammo 0
set g_balance_laser_primary_damage 35
set g_balance_laser_primary_edgedamage 10
@@ -272,12 +278,12 @@
set g_balance_portal_health 200 // these get recharged whenever the portal is used
set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
-set g_balance_hook_primary_ammo 2 // hook monkeys set 0
+set g_balance_hook_primary_fuel 10 // hook monkeys set 0
set g_balance_hook_primary_refire 0 // hook monkeys set 0
set g_balance_hook_primary_animtime 0.3 // good shoot anim
set g_balance_hook_primary_hooked_time_max 0 // infinite
set g_balance_hook_primary_hooked_time_free 2 // 2s being hooked are free
-set g_balance_hook_primary_hooked_ammodecrease_delay 0.5 // remove one cell every 0.5 seconds
+set g_balance_hook_primary_hooked_fuel 8 // fuel per second hooked
set g_balance_hook_secondary_damage 25 // not much
set g_balance_hook_secondary_edgedamage 5 // not much
set g_balance_hook_secondary_radius 500 // LOTS
Modified: branches/nexuiz-2.0/data/weaponsHavoc.cfg
===================================================================
--- branches/nexuiz-2.0/data/weaponsHavoc.cfg 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/data/weaponsHavoc.cfg 2009-05-24 09:17:59 UTC (rev 6762)
@@ -1,4 +1,4 @@
-set cvar_check_weapons 00219e78f5d78d7d8a1600c4f4c73aa5
+set cvar_check_weapons c5b3e579a14c45d555550b08f203a607
// NOTE: this only replaces weapons on the map
// use g_start_weapon_* to also replace the on-startup weapons!
@@ -74,6 +74,12 @@
set g_pickup_respawntime_powerup 120
set g_pickup_respawntime_weapon 15
set g_pickup_respawntime_ammo 15
+set g_pickup_respawntimejitter_short 0
+set g_pickup_respawntimejitter_medium 0
+set g_pickup_respawntimejitter_long 0
+set g_pickup_respawntimejitter_powerup 0
+set g_pickup_respawntimejitter_weapon 0
+set g_pickup_respawntimejitter_ammo 0
set g_balance_laser_primary_damage 5
set g_balance_laser_primary_edgedamage 5
@@ -267,12 +273,12 @@
set g_balance_portal_health 200 // these get recharged whenever the portal is used
set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
-set g_balance_hook_primary_ammo 2 // hook monkeys set 0
+set g_balance_hook_primary_fuel 10 // hook monkeys set 0
set g_balance_hook_primary_refire 0 // hook monkeys set 0
set g_balance_hook_primary_animtime 0.3 // good shoot anim
set g_balance_hook_primary_hooked_time_max 0 // infinite
set g_balance_hook_primary_hooked_time_free 2 // 2s being hooked are free
-set g_balance_hook_primary_hooked_ammodecrease_delay 0.5 // remove one cell every 0.5 seconds
+set g_balance_hook_primary_hooked_fuel 8 // fuel per second hooked
set g_balance_hook_secondary_damage 25 // not much
set g_balance_hook_secondary_edgedamage 5 // not much
set g_balance_hook_secondary_radius 500 // LOTS
Copied: branches/nexuiz-2.0/misc/mediasource/sb_str_inv.xcf (from rev 6746, trunk/misc/mediasource/sb_str_inv.xcf)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/misc/netradiant-NexuizPack/nexuiz.game/data/entities.def
===================================================================
--- branches/nexuiz-2.0/misc/netradiant-NexuizPack/nexuiz.game/data/entities.def 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/misc/netradiant-NexuizPack/nexuiz.game/data/entities.def 2009-05-24 09:17:59 UTC (rev 6762)
@@ -56,6 +56,7 @@
debristimejitter: time till the debris fades (random part)
debrisfadetime: how long debris takes to fade
debrisdamageforcescale: how much debris is affected by damage force (e.g. explosions)
+debrisskin: skin number of debris
*/
/*QUAKED func_assault_wall (.5 0 .5) ?
@@ -1435,6 +1436,7 @@
debristimejitter: time till the debris fades (random part)
debrisfadetime: how long debris takes to fade
debrisdamageforcescale: how much debris is affected by damage force (e.g. explosions)
+debrisskin: skin number of debris
-------- SPAWNFLAGS --------
DISABLED: do not allow damaging this until it is first activated
INDICATE: indicate amount of damage already taken by coloring
Copied: branches/nexuiz-2.0/misc/tools/hitplot2tga.c (from rev 6721, trunk/misc/tools/hitplot2tga.c)
===================================================================
--- branches/nexuiz-2.0/misc/tools/hitplot2tga.c (rev 0)
+++ branches/nexuiz-2.0/misc/tools/hitplot2tga.c 2009-05-24 09:17:59 UTC (rev 6762)
@@ -0,0 +1,182 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <math.h>
+#include <stdarg.h>
+#include <errno.h>
+
+void err(int ex, const char *fmt, ...)
+{
+ va_list list;
+ int e = errno;
+ va_start(list, fmt);
+ vfprintf(stderr, fmt, list);
+ fputs(": ", stderr);
+ fputs(strerror(e), stderr);
+ fputs("\n", stderr);
+ exit(ex);
+}
+
+void errx(int ex, const char *fmt, ...)
+{
+ va_list list;
+ va_start(list, fmt);
+ vfprintf(stderr, fmt, list);
+ fputs("\n", stderr);
+ exit(ex);
+}
+
+typedef void (*colorfunc_t) (double x, double y, double dx, double dy, double *r, double *g, double *b);
+
+double rnd()
+{
+ return rand() / (RAND_MAX + 1.0);
+}
+
+double softclip(double x, double a)
+{
+ // don't ask what this does - but it works
+ double cse = (2*a*x - x - a + 1) * x;
+ return cse / (cse + (1 - a));
+}
+
+void writepic(colorfunc_t f, const char *fn, int width, int height)
+{
+ int x, y;
+ uint8_t tga[18];
+
+ FILE *file = fopen(fn, "wb");
+ if(!file)
+ err(1, "fopen >%s", fn);
+
+ memset(tga, 0, sizeof(tga));
+ tga[2] = 2; // uncompressed type
+ tga[12] = (width >> 0) & 0xFF;
+ tga[13] = (width >> 8) & 0xFF;
+ tga[14] = (height >> 0) & 0xFF;
+ tga[15] = (height >> 8) & 0xFF;
+ tga[16] = 24; // pixel size
+
+ if(fwrite(&tga, sizeof(tga), 1, file) != 1)
+ err(1, "fwrite >%s", fn);
+ //for(y = height-1; y >= 0; --y)
+ for(y = 0; y < height; ++y)
+ for(x = 0; x < width; ++x)
+ {
+ uint8_t rgb[3];
+ double rr, gg, bb;
+ double xx, yy;
+ xx = (x + 0.5) / width;
+ yy = (y + 0.5) / height;
+ f(xx, yy, 0.5 / width, 0.5 / height, &rr, &gg, &bb);
+ rgb[2] = floor(rnd() + rr * 255);
+ rgb[1] = floor(rnd() + gg * 255);
+ rgb[0] = floor(rnd() + bb * 255);
+ if(fwrite(rgb, sizeof(rgb), 1, file) != 1)
+ err(1, "fwrite >%s", fn);
+ }
+
+ fclose(file);
+}
+
+typedef struct
+{
+ double x, y, dist;
+ int weapon;
+}
+plotpoint_t;
+
+plotpoint_t *plotpoints;
+size_t nPlotpoints, allocatedPlotpoints;
+
+void readpoints(const char *fn)
+{
+ char buf[1024];
+
+ FILE *infile = fopen(fn, "r");
+ if(!infile)
+ err(1, "fopen <%s", fn);
+
+ nPlotpoints = allocatedPlotpoints = 0;
+ plotpoints = NULL;
+
+ while(fgets(buf, sizeof(buf), infile))
+ {
+ if(*buf == '#')
+ {
+ fputs(buf + 1, stdout);
+ continue;
+ }
+ if(nPlotpoints >= allocatedPlotpoints)
+ {
+ if(allocatedPlotpoints == 0)
+ allocatedPlotpoints = 1024;
+ else
+ allocatedPlotpoints = nPlotpoints * 2;
+ plotpoints = (plotpoint_t *) realloc(plotpoints, allocatedPlotpoints * sizeof(*plotpoints));
+ }
+ if(sscanf(buf, "%lf %lf %lf %d", &plotpoints[nPlotpoints].x, &plotpoints[nPlotpoints].y, &plotpoints[nPlotpoints].dist, &plotpoints[nPlotpoints].weapon) != 4)
+ continue;
+ ++nPlotpoints;
+ }
+}
+
+void calcplot1(double x, double y, double *out, double sigma2)
+{
+ size_t i;
+ double dist2;
+ double val, totalval = 0, weight, totalweight = 0;
+
+ for(i = 0; i < nPlotpoints; ++i)
+ {
+ dist2 = (x - plotpoints[i].x) * (x - plotpoints[i].x) + (y - plotpoints[i].y) * (y - plotpoints[i].y);
+ weight = 1; // / plotpoints[i].dist;
+ val = exp(-dist2 / sigma2);
+
+ totalweight += weight;
+ totalval += weight * val;
+ }
+
+ *out = softclip(totalval / (totalweight * sqrt(sigma2 * 2 * M_PI)), 0.8);
+}
+
+void calcplotp(double x, double y, double dx, double dy, double *out)
+{
+ size_t i;
+ double distx, disty;
+
+ for(i = 0; i < nPlotpoints; ++i)
+ {
+ distx = x - plotpoints[i].x;
+ disty = y - plotpoints[i].y;
+
+ if(distx < dx)
+ if(distx > -dx)
+ if(disty < dy)
+ if(disty > -dy)
+ {
+ *out = 1;
+ break;
+ }
+ }
+}
+
+void calcplot(double x, double y, double dx, double dy, double *r, double *g, double *b)
+{
+ calcplot1(x, y, r, 1/64.0);
+ calcplot1(x, y, g, 1/512.0);
+ calcplot1(x, y, b, 1/4096.0);
+ calcplotp(x, y, dx, dy, b);
+}
+
+int main(int argc, char **argv)
+{
+ if(argc != 3)
+ errx(1, "Usage: %s infile.plot outfile.tga", *argv);
+
+ readpoints(argv[1]);
+ writepic(calcplot, argv[2], 512, 512);
+
+ return 0;
+}
Modified: branches/nexuiz-2.0/server/rcon2irc/rbiserver.pl
===================================================================
--- branches/nexuiz-2.0/server/rcon2irc/rbiserver.pl 2009-05-24 09:11:30 UTC (rev 6761)
+++ branches/nexuiz-2.0/server/rcon2irc/rbiserver.pl 2009-05-24 09:17:59 UTC (rev 6762)
@@ -80,6 +80,18 @@
out irc => 0, "PRIVMSG $config{irc_channel} :\001ACTION thinks $nick is $status\001";
return 0;
} ],
+[ dp => q{pure: \*DETAIL_MISMATCH (.*) (\S+)$} => sub {
+ my ($nick, $file) = @_;
+ $nick = color_dp2irc $nick;
+ out irc => 0, "PRIVMSG $config{irc_channel} :\001ACTION thinks $nick has a modified $file\001";
+ return 0;
+} ],
+[ dp => q{pure: \*DETAIL_TIMEOUT (.*)} => sub {
+ my ($nick) = @_;
+ $nick = color_dp2irc $nick;
+ out irc => 0, "PRIVMSG $config{irc_channel} :\001ACTION thinks $nick refuses to tell us which file is modified\001";
+ return 0;
+} ],
[ dp => q{:recordset:(\d+):.*} => sub {
my ($id) = @_;
my $ip = $store{"playerip_byid_$id"};
@@ -89,7 +101,7 @@
my $map = $store{map};
$map =~ s/^[a-z]*_//;
$ip =~ s/\./-/g;
- my $pattern = "/nexuiz/data/home-$name/data/sv_autodemos/????-??-??_??-??_${map}_${slot}_${ip}-*.dem";
+ my $pattern = "/home/nexuiz/home-$name/data/sv_autodemos/????-??-??_??-??_${map}_${slot}_${ip}-*.dem";
if(my @result = glob $pattern)
{
for(@result)
@@ -114,7 +126,7 @@
[ dp => q{:end} => sub {
my $name = $config{irc_nick};
$name =~ s/Nex//; # haggerNexCTF -> haggerCTF
- my $pattern = "/nexuiz/data/home-$name/data/sv_autodemos/*.dem";
+ my $pattern = "/home/nexuiz/data/home-$name/data/sv_autodemos/*.dem";
print "Checking $pattern...\n";
for(glob $pattern)
{
More information about the nexuiz-commits
mailing list