r4120 - in branches/nexuiz-2.0: . data data/gfx data/gfx/menu/default data/gfx/menu/silver data/gfx/menu/simplygray data/gfx/menu/wickedblack data/gfx/menu/wickedblue data/gfx/menu/wickedgreen data/gfx/menu/wickedred data/gfx/menu/wickedwhite data/gfx/menu/wickedyellow data/gfx/menu/xaw data/maps data/models/sprites data/qcsrc/client data/qcsrc/common data/qcsrc/menu data/qcsrc/menu/item data/qcsrc/menu/nexuiz data/qcsrc/server data/scripts
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Tue Aug 12 08:20:45 EDT 2008
Author: div0
Date: 2008-08-12 08:20:43 -0400 (Tue, 12 Aug 2008)
New Revision: 4120
Added:
branches/nexuiz-2.0/data/gfx/menu/default/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/default/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/default/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/default/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/default/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/default/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/default/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/default/bigbuttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/silver/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/silver/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/silver/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/silver/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/silver/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/silver/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/silver/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/silver/bigbuttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbuttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbuttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbuttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbuttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbuttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbuttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbuttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/xaw/bigbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/xaw/bigbutton_d.tga
branches/nexuiz-2.0/data/gfx/menu/xaw/bigbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/xaw/bigbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/xaw/bigbuttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/xaw/bigbuttongray_d.tga
branches/nexuiz-2.0/data/gfx/menu/xaw/bigbuttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/xaw/bigbuttongray_n.tga
branches/nexuiz-2.0/data/models/sprites/race-checkpoint.sp2
branches/nexuiz-2.0/data/models/sprites/race-finish.sp2
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/bigbutton.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/bigcommandbutton.c
branches/nexuiz-2.0/data/qcsrc/server/race.qc
branches/nexuiz-2.0/data/qcsrc/server/race.qh
Modified:
branches/nexuiz-2.0/.patchsets
branches/nexuiz-2.0/data/defaultNexuiz.cfg
branches/nexuiz-2.0/data/gfx/colormap_palette.lmp
branches/nexuiz-2.0/data/gfx/menu/default/skinvalues.txt
branches/nexuiz-2.0/data/gfx/menu/silver/skinvalues.txt
branches/nexuiz-2.0/data/gfx/menu/simplygray/skinvalues.txt
branches/nexuiz-2.0/data/gfx/menu/wickedblack/border.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/button_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/button_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/button_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/buttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/buttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/buttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/charmapbutton.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkmark.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/closebutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/closebutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/closebutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/colorbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/colorbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/crosshairbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/crosshairbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/crosshairbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/cursor.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/inputbox_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/inputbox_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/scrollbar_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/scrollbar_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/scrollbar_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/scrollbar_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/skinvalues.txt
branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/background_ingame.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/border.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/button_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/button_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/button_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/buttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/buttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/buttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/charmapbutton.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkmark.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/closebutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/closebutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/closebutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/colorbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/colorbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/crosshairbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/crosshairbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/crosshairbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/cursor.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/inputbox_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/inputbox_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/scrollbar_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/scrollbar_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/scrollbar_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/scrollbar_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/skinvalues.txt
branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/border.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/button_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/button_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/button_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/buttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/buttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/buttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/charmapbutton.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkmark.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/closebutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/closebutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/closebutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/colorbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/colorbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/crosshairbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/crosshairbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/crosshairbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/cursor.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/inputbox_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/inputbox_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/scrollbar_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/scrollbar_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/scrollbar_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/scrollbar_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/skinvalues.txt
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/background_ingame.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/border.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/button_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/button_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/button_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/buttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/buttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/buttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/charmapbutton.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/checkmark.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/closebutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/closebutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/closebutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/colorbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/colorbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/crosshairbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/crosshairbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/crosshairbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/cursor.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/inputbox_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/inputbox_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/scrollbar_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/scrollbar_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/scrollbar_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/scrollbar_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/skinvalues.txt
branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/border.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/button_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/button_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/button_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/buttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/buttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/buttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/charmapbutton.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkmark.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/closebutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/closebutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/closebutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/colorbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/colorbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/crosshairbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/crosshairbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/crosshairbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/cursor.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/inputbox_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/inputbox_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/scrollbar_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/scrollbar_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/scrollbar_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/scrollbar_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/skinvalues.txt
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/background.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/background_ingame.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/border.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/button_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/button_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/button_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/buttongray_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/buttongray_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/buttongray_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/charmapbutton.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkmark.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/closebutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/closebutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/closebutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/colorbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/colorbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/crosshairbutton_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/crosshairbutton_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/crosshairbutton_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/cursor.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/inputbox_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/inputbox_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_c0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_c1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_d0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_d1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_f0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_f1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_n0.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_n1.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/scrollbar_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/scrollbar_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/scrollbar_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/scrollbar_s.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/skinvalues.txt
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_c.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_d.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_f.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_n.tga
branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_s.tga
branches/nexuiz-2.0/data/gfx/menu/xaw/skinvalues.txt
branches/nexuiz-2.0/data/maps/reslimed.ent
branches/nexuiz-2.0/data/models/sprites/danger.sp2
branches/nexuiz-2.0/data/models/sprites/helpme.sp2
branches/nexuiz-2.0/data/models/sprites/here.sp2
branches/nexuiz-2.0/data/models/sprites/keycarrier-finish.sp2
branches/nexuiz-2.0/data/models/sprites/make-sprites.sh
branches/nexuiz-2.0/data/models/sprites/redbase.sp2
branches/nexuiz-2.0/data/qcsrc/client/Defs.qc
branches/nexuiz-2.0/data/qcsrc/client/Main.qc
branches/nexuiz-2.0/data/qcsrc/client/mapvoting.qc
branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc
branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
branches/nexuiz-2.0/data/qcsrc/client/sortlist.qc
branches/nexuiz-2.0/data/qcsrc/common/constants.qh
branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qc
branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qh
branches/nexuiz-2.0/data/qcsrc/common/util.qc
branches/nexuiz-2.0/data/qcsrc/common/util.qh
branches/nexuiz-2.0/data/qcsrc/menu/classes.c
branches/nexuiz-2.0/data/qcsrc/menu/item/borderimage.c
branches/nexuiz-2.0/data/qcsrc/menu/item/label.c
branches/nexuiz-2.0/data/qcsrc/menu/msys.qh
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_misc.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_singleplayer.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_teamselect.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/gametypebutton.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/inputbox.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/util.qc
branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/util.qh
branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc
branches/nexuiz-2.0/data/qcsrc/server/arena.qc
branches/nexuiz-2.0/data/qcsrc/server/bots.qc
branches/nexuiz-2.0/data/qcsrc/server/campaign.qc
branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
branches/nexuiz-2.0/data/qcsrc/server/cl_physics.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/ctf.qc
branches/nexuiz-2.0/data/qcsrc/server/defs.qh
branches/nexuiz-2.0/data/qcsrc/server/domination.qc
branches/nexuiz-2.0/data/qcsrc/server/extensions.qh
branches/nexuiz-2.0/data/qcsrc/server/g_casings.qc
branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
branches/nexuiz-2.0/data/qcsrc/server/g_hook.qc
branches/nexuiz-2.0/data/qcsrc/server/g_lights.qc
branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc
branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc
branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc
branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
branches/nexuiz-2.0/data/qcsrc/server/gamecommand.qc
branches/nexuiz-2.0/data/qcsrc/server/havocbot.qc
branches/nexuiz-2.0/data/qcsrc/server/havocbot_roles.qc
branches/nexuiz-2.0/data/qcsrc/server/keyhunt.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/progs.src
branches/nexuiz-2.0/data/qcsrc/server/scores.qc
branches/nexuiz-2.0/data/qcsrc/server/scores.qh
branches/nexuiz-2.0/data/qcsrc/server/scores_rules.qc
branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc
branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
branches/nexuiz-2.0/data/qcsrc/server/t_jumppads.qc
branches/nexuiz-2.0/data/qcsrc/server/t_plats.qc
branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc
branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc
branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc
branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc
branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc
branches/nexuiz-2.0/data/qcsrc/server/w_nex.qc
branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
branches/nexuiz-2.0/data/scripts/entities.def
Log:
- New sounds
- CSQC scoreboard improvements
- Reworked landing sound conditions
- Less distracting fog at close range in reslimed
- New sound channel assignment; channel mixer in menu
- changed margin spec of input boxes to use chars, not relative size (fixed weird short inputboxes)
- add extra types for big buttons, fitting skin changes
- use DP_SV_QCSTATUS to show frags to qstat again; make menu aware of player lists (currently they are not shown, but they can be searched); add a game type column
- g_spawnpoints_auto_move_out_of_solid cvar
- "race" game mode
- HEIGHT_DIALOGBORDER
- trigger_teleport: setmodel only if it is not "". Then a teleporter can be manually added to an .ent by setting mins and maxs.
- make mins/maxs only triggers work
- wicked menuskins 2.0 plus bigbuttons (copyd from normal buttons). I still call them wicked instead of wicked2, I don't know if that's good or bad.
- new command "allready" (for vcall/vdo); fix shootable buttons in independent players mode
- make ENTER also save the cvar of the current input box
Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/.patchsets 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,2 +1,2 @@
master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-4023
+revisions_applied = 1-4119
Modified: branches/nexuiz-2.0/data/defaultNexuiz.cfg
===================================================================
--- branches/nexuiz-2.0/data/defaultNexuiz.cfg 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/defaultNexuiz.cfg 2008-08-12 12:20:43 UTC (rev 4120)
@@ -286,6 +286,7 @@
set g_spawnshieldtime 0
set g_spawnsound 1
set g_spawnpoints_autodrop 0
+set g_spawnpoints_auto_move_out_of_solid 0
set g_forced_respawn 0
set g_fullbrightplayers 0
set g_fullbrightitems 0
@@ -324,6 +325,7 @@
seta g_domination_point_limit -1
seta g_runematch_point_limit -1
seta g_keyhunt_point_limit -1
+seta g_race_laps_limit -1
seta g_ctf_win_mode 2 // 0: captures only, 1: captures, then points, 2: points only
@@ -482,6 +484,15 @@
// assault
set g_assault 0
+// race
+set g_race 0
+set g_race_qualifying 1
+// Qualifying uses timelimit, and the one with the best time wins. Fraglimit is nonfunctional then.
+// Normal race uses fraglimit as a limit for the laps.
+// Special mode: g_race_qualifying 2. First runs a qualifying, after
+// ready-restart it turns into a race. TODO not done yet (e.g. timing display)
+set g_race_teams 0 // when 2, 3, or 4, the race is played as a team game (the team members can add up their laps)
+
// server game balance settings
set g_balance_armor_regen 0
set g_balance_armor_rot 0.1
@@ -677,7 +688,7 @@
bind kp_minus "+userbind 15"
// these commands can be voted
-set sv_vote_commands "restart timelimit fraglimit chmap gotomap g_grappling_hook sv_defaultplayer_fbskin_green sv_defaultplayer_fbskin_red sv_defaultplayer_fbskin_orange sv_defaultplayer_fbskin_off endmatch reducematchtime extendmatchtime"
+set sv_vote_commands "restart timelimit fraglimit chmap gotomap g_grappling_hook sv_defaultplayer_fbskin_green sv_defaultplayer_fbskin_red sv_defaultplayer_fbskin_orange sv_defaultplayer_fbskin_off endmatch reducematchtime extendmatchtime allready"
// users can call a vote for the above commands
set sv_vote_call 1
// users can call a vote to become master
@@ -1065,3 +1076,5 @@
sv_allowdownloads_inarchive 1 // for csprogs.dat
set g_jump_grunt 0 // Do you make a grunting noise every time you jump? Is it the same grunting noise every time?
+
+alias allready "sv_cmd allready"
Modified: branches/nexuiz-2.0/data/gfx/colormap_palette.lmp
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/default/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/default/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/default/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/default/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/default/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/default/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/default/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/default/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/default/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/default/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/default/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/default/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/default/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/default/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/default/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/default/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/default/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/default/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/default/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -41,6 +41,8 @@
// item: button
// uses "button" images
// uses "buttongray" images
+// uses "bigbutton" images
+// uses "bigbuttongray" images
COLOR_BUTTON_N '1 1 1'
COLOR_BUTTON_C '1 1 1'
COLOR_BUTTON_F '1 1 1'
@@ -84,12 +86,13 @@
MARGIN_RIGHT 8
MARGIN_COLUMNS 4
MARGIN_ROWS 4
+HEIGHT_DIALOGBORDER 1
// item: input box
// uses "inputbox" images
COLOR_INPUTBOX_N '1 1 1'
COLOR_INPUTBOX_F '1 1 1'
-MARGIN_INPUTBOX 0.02
+MARGIN_INPUTBOX_CHARS 1
// item: key grabber
COLOR_KEYGRABBER_TITLES '1 1 1'
Copied: branches/nexuiz-2.0/data/gfx/menu/silver/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/silver/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/silver/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/silver/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/silver/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/silver/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/silver/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/silver/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/silver/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/silver/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/silver/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/silver/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/silver/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/silver/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/silver/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/silver/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/silver/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/silver/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/silver/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -41,6 +41,8 @@
// item: button
// uses "button" images
// uses "buttongray" images
+// uses "bigbutton" images
+// uses "bigbuttongray" images
COLOR_BUTTON_N '1 1 1'
COLOR_BUTTON_C '1 1 1'
COLOR_BUTTON_F '1 1 1'
@@ -89,7 +91,7 @@
// uses "inputbox" images
COLOR_INPUTBOX_N '1 1 1'
COLOR_INPUTBOX_F '1 1 1'
-MARGIN_INPUTBOX 0.02
+MARGIN_INPUTBOX_CHARS 1
// item: key grabber
COLOR_KEYGRABBER_TITLES '1 1 1'
Copied: branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/simplygray/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/simplygray/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/simplygray/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/simplygray/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/simplygray/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/simplygray/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/simplygray/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/simplygray/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/simplygray/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/simplygray/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/simplygray/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/simplygray/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -41,6 +41,8 @@
// item: button
// uses "button" images
// uses "buttongray" images
+// uses "bigbutton" images
+// uses "bigbuttongray" images
COLOR_BUTTON_N '1 1 1'
COLOR_BUTTON_C '1 1 1'
COLOR_BUTTON_F '1 1 1'
@@ -89,7 +91,7 @@
// uses "inputbox" images
COLOR_INPUTBOX_N '1 1 1'
COLOR_INPUTBOX_F '1 1 1'
-MARGIN_INPUTBOX 0.02
+MARGIN_INPUTBOX_CHARS 1
// item: key grabber
COLOR_KEYGRABBER_TITLES '1 1 1'
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/wickedblack/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/wickedblack/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/wickedblack/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/wickedblack/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/wickedblack/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/wickedblack/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/wickedblack/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblack/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/wickedblack/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/border.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/button_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/button_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/button_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/buttongray_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/buttongray_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/buttongray_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/charmapbutton.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkbox_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/checkmark.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/closebutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/closebutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/closebutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/colorbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/colorbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/crosshairbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/crosshairbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/crosshairbutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/cursor.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/inputbox_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/inputbox_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/radiobutton_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/scrollbar_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/scrollbar_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/scrollbar_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/scrollbar_s.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedblack/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedblack/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,4 +1,4 @@
-// Values for Wicked Black by sev
+// Values for Wicked 2 Black by sev
// font sizes (used for everything)
FONTSIZE_NORMAL 12
@@ -50,18 +50,18 @@
// item: campaign
ALPHA_CAMPAIGN_SELECTABLE 0.8
-COLOR_CAMPAIGN_SELECTABLE '1 1 1'
+COLOR_CAMPAIGN_SELECTABLE '0.75 0.75 0.75'
ALPHA_CAMPAIGN_CURRENT 1
-COLOR_CAMPAIGN_CURRENT '1 1 1'
+COLOR_CAMPAIGN_CURRENT '0.75 0.75 0.75'
ALPHA_CAMPAIGN_FUTURE 0.2
-COLOR_CAMPAIGN_FUTURE '1 1 1'
+COLOR_CAMPAIGN_FUTURE '0.75 0.75 0.75'
ALPHA_CAMPAIGN_DESCRIPTION 0.7
// item: checkbox
// uses "checkbox" images
COLOR_CHECKBOX_N '1 1 1'
COLOR_CHECKBOX_C '1 1 1'
-COLOR_CHECKBOX_F '1 1 1'
+COLOR_CHECKBOX_F '0.75 0.75 0.75'
COLOR_CHECKBOX_D '1 1 1'
// item: credits list
@@ -100,15 +100,15 @@
ALPHA_KEYGRABBER_KEYS 0.7
// item: list box
-COLOR_LISTBOX_SELECTED '1 1 1'
+COLOR_LISTBOX_SELECTED '0.875 0.875 0.875'
ALPHA_LISTBOX_SELECTED 1
-COLOR_LISTBOX_WAITING '1 1 1'
+COLOR_LISTBOX_WAITING '0.875 0.875 0.875'
ALPHA_LISTBOX_WAITING 0.5
// item: map list
COLOR_MAPLIST_TITLE '1 1 1'
COLOR_MAPLIST_AUTHOR '0.75 0.75 0.75'
-COLOR_MAPLIST_INCLUDEDBG '1 1 1'
+COLOR_MAPLIST_INCLUDEDBG '0.75 0.75 0.75'
ALPHA_MAPLIST_INCLUDEDFG 1
ALPHA_MAPLIST_INCLUDEDBG 0.25
ALPHA_MAPLIST_NOTINCLUDEDFG 0.25
@@ -132,14 +132,14 @@
// uses "radiobutton" images
COLOR_RADIOBUTTON_N '1 1 1'
COLOR_RADIOBUTTON_C '1 1 1'
-COLOR_RADIOBUTTON_F '1 1 1'
+COLOR_RADIOBUTTON_F '0.75 0.75 0.75'
COLOR_RADIOBUTTON_D '1 1 1'
// item: scrollbar
// uses "scrollbar" images
COLOR_SCROLLBAR_N '1 1 1'
COLOR_SCROLLBAR_C '1 1 1'
-COLOR_SCROLLBAR_F '1 1 1'
+COLOR_SCROLLBAR_F '0.75 0.75 0.75'
COLOR_SCROLLBAR_S '1 1 1'
WIDTH_SCROLLBAR 16
@@ -155,7 +155,7 @@
// uses "slider" images
COLOR_SLIDER_N '1 1 1'
COLOR_SLIDER_C '1 1 1'
-COLOR_SLIDER_F '1 1 1'
+COLOR_SLIDER_F '0.75 0.75 0.75'
COLOR_SLIDER_D '1 1 1'
COLOR_SLIDER_S '1 1 1'
WIDTH_SLIDERTEXT 0.333333333333
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_d.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/slider_s.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/background_ingame.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/wickedblue/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/wickedblue/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/wickedblue/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/wickedblue/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/wickedblue/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/wickedblue/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/wickedblue/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedblue/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/wickedblue/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/border.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/button_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/button_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/button_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/buttongray_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/buttongray_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/buttongray_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/charmapbutton.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkbox_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/checkmark.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/closebutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/closebutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/closebutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/colorbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/colorbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/crosshairbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/crosshairbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/crosshairbutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/cursor.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/inputbox_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/inputbox_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/radiobutton_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/scrollbar_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/scrollbar_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/scrollbar_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/scrollbar_s.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedblue/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedblue/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,4 +1,4 @@
-// Values for Wicked Blue by sev
+// Values for Wicked 2 Blue by sev
// font sizes (used for everything)
FONTSIZE_NORMAL 12
@@ -43,10 +43,10 @@
// item: button
// uses "button" images
// uses "buttongray" images
-COLOR_BUTTON_N '0 0.375 0.75'
-COLOR_BUTTON_C '0 0.375 0.75'
-COLOR_BUTTON_F '0 0.375 0.75'
-COLOR_BUTTON_D '0 0.375 0.75'
+COLOR_BUTTON_N '0.5 0.75 1'
+COLOR_BUTTON_C '0.5 0.75 1'
+COLOR_BUTTON_F '0.5 0.75 1'
+COLOR_BUTTON_D '0.5 0.75 1'
// item: campaign
ALPHA_CAMPAIGN_SELECTABLE 0.8
@@ -59,17 +59,17 @@
// item: checkbox
// uses "checkbox" images
-COLOR_CHECKBOX_N '0 0.375 0.75'
-COLOR_CHECKBOX_C '0 0.375 0.75'
-COLOR_CHECKBOX_F '0 0.375 0.75'
-COLOR_CHECKBOX_D '0 0.375 0.75'
+COLOR_CHECKBOX_N '0.5 0.75 1'
+COLOR_CHECKBOX_C '0.5 0.75 1'
+COLOR_CHECKBOX_F '0.25 0.5 0.75'
+COLOR_CHECKBOX_D '0.5 0.75 1'
// item: credits list
COLOR_CREDITS_TITLE '1 1 1'
ALPHA_CREDITS_TITLE 1
COLOR_CREDITS_FUNCTION '1 1 1'
ALPHA_CREDITS_FUNCTION 0.7
-COLOR_CREDITS_PERSON '0 0.375 0.75'
+COLOR_CREDITS_PERSON '0.5 0.75 1'
ALPHA_CREDITS_PERSON 1
ROWS_CREDITS 20
WIDTH_CREDITS 0.5
@@ -89,8 +89,8 @@
// item: input box
// uses "inputbox" images
-COLOR_INPUTBOX_N '0 0.375 0.75'
-COLOR_INPUTBOX_F '0 0.375 0.75'
+COLOR_INPUTBOX_N '0.5 0.75 1'
+COLOR_INPUTBOX_F '0.5 0.75 1'
MARGIN_INPUTBOX 0.02
// item: key grabber
@@ -100,15 +100,15 @@
ALPHA_KEYGRABBER_KEYS 0.7
// item: list box
-COLOR_LISTBOX_SELECTED '0 0.375 0.75'
+COLOR_LISTBOX_SELECTED '0.5 0.75 1'
ALPHA_LISTBOX_SELECTED 1
-COLOR_LISTBOX_WAITING '0 0.375 0.75'
+COLOR_LISTBOX_WAITING '0.5 0.75 1'
ALPHA_LISTBOX_WAITING 0.5
// item: map list
COLOR_MAPLIST_TITLE '1 1 1'
COLOR_MAPLIST_AUTHOR '0.75 0.75 0.75'
-COLOR_MAPLIST_INCLUDEDBG '0 0 0'
+COLOR_MAPLIST_INCLUDEDBG '0.25 0.5 0.75'
ALPHA_MAPLIST_INCLUDEDFG 1
ALPHA_MAPLIST_INCLUDEDBG 0.375
ALPHA_MAPLIST_NOTINCLUDEDFG 0.25
@@ -130,17 +130,17 @@
// item: radio button
// uses "radiobutton" images
-COLOR_RADIOBUTTON_N '0 0.375 0.75'
-COLOR_RADIOBUTTON_C '0 0.375 0.75'
-COLOR_RADIOBUTTON_F '0 0.375 0.75'
-COLOR_RADIOBUTTON_D '0 0.375 0.75'
+COLOR_RADIOBUTTON_N '0.5 0.75 1'
+COLOR_RADIOBUTTON_C '0.5 0.75 1'
+COLOR_RADIOBUTTON_F '0.25 0.5 0.75'
+COLOR_RADIOBUTTON_D '0.5 0.75 1'
// item: scrollbar
// uses "scrollbar" images
-COLOR_SCROLLBAR_N '0 0.375 0.75'
-COLOR_SCROLLBAR_C '0 0.375 0.75'
-COLOR_SCROLLBAR_F '0 0.375 0.75'
-COLOR_SCROLLBAR_S '0 0.375 0.75'
+COLOR_SCROLLBAR_N '0.5 0.75 1'
+COLOR_SCROLLBAR_C '0.5 0.75 1'
+COLOR_SCROLLBAR_F '0.25 0.5 0.75'
+COLOR_SCROLLBAR_S '0.5 0.75 1'
WIDTH_SCROLLBAR 16
// item: server list
@@ -153,10 +153,10 @@
// item: slider
// uses "slider" images
-COLOR_SLIDER_N '0 0.375 0.75'
-COLOR_SLIDER_C '0 0.375 0.75'
-COLOR_SLIDER_F '0 0.375 0.75'
-COLOR_SLIDER_D '0 0.375 0.75'
-COLOR_SLIDER_S '0 0.375 0.75'
+COLOR_SLIDER_N '0.5 0.75 1'
+COLOR_SLIDER_C '0.5 0.75 1'
+COLOR_SLIDER_F '0.25 0.5 0.75'
+COLOR_SLIDER_D '0.5 0.75 1'
+COLOR_SLIDER_S '0.5 0.75 1'
WIDTH_SLIDERTEXT 0.333333333333
TOLERANCE_SLIDER '0.2 2 0'
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_d.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/slider_s.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/wickedgreen/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/wickedgreen/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/wickedgreen/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/wickedgreen/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/wickedgreen/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/wickedgreen/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/wickedgreen/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/wickedgreen/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/border.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/button_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/button_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/button_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/buttongray_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/buttongray_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/buttongray_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/charmapbutton.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkbox_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/checkmark.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/closebutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/closebutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/closebutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/colorbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/colorbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/crosshairbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/crosshairbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/crosshairbutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/cursor.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/inputbox_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/inputbox_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/radiobutton_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/scrollbar_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/scrollbar_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/scrollbar_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/scrollbar_s.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedgreen/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedgreen/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,4 +1,4 @@
-// Values for Wicked Green by sev
+// Values for Wicked 2 Green by sev
// font sizes (used for everything)
FONTSIZE_NORMAL 12
@@ -8,15 +8,15 @@
HEIGHT_ZOOMEDTITLE -1
// the individual dialog background colors
-COLOR_DIALOG_MULTIPLAYER '0.75 1 0.5'
-COLOR_DIALOG_SETTINGS '0.75 1 0.5'
-COLOR_DIALOG_TEAMSELECT '0.75 1 0.5'
+COLOR_DIALOG_MULTIPLAYER '0.5 1 0'
+COLOR_DIALOG_SETTINGS '0.5 1 0'
+COLOR_DIALOG_TEAMSELECT '0.5 1 0'
COLOR_DIALOG_QUIT '0.75 0 0'
-COLOR_DIALOG_MUTATORS '0.75 1 0.5'
-COLOR_DIALOG_MAPINFO '0.75 1 0.5'
-COLOR_DIALOG_USERBIND '0.75 1 0.5'
-COLOR_DIALOG_SINGLEPLAYER '0.75 1 0.5'
-COLOR_DIALOG_CREDITS '0.75 1 0.5'
+COLOR_DIALOG_MUTATORS '0.5 1 0'
+COLOR_DIALOG_MAPINFO '0.5 1 0'
+COLOR_DIALOG_USERBIND '0.5 1 0'
+COLOR_DIALOG_SINGLEPLAYER '0.5 1 0'
+COLOR_DIALOG_CREDITS '0.5 1 0'
// nexposee positions of windows (they are the scale transformation
// centers, NOT the actual positions of the windows!)
@@ -61,7 +61,7 @@
// uses "checkbox" images
COLOR_CHECKBOX_N '0.5 1 0'
COLOR_CHECKBOX_C '0.5 1 0'
-COLOR_CHECKBOX_F '0.5 1 0'
+COLOR_CHECKBOX_F '0.25 0.75 0'
COLOR_CHECKBOX_D '0.5 1 0'
// item: credits list
@@ -108,9 +108,9 @@
// item: map list
COLOR_MAPLIST_TITLE '1 1 1'
COLOR_MAPLIST_AUTHOR '0.75 0.75 0.75'
-COLOR_MAPLIST_INCLUDEDBG '0.5 1 0'
+COLOR_MAPLIST_INCLUDEDBG '0.25 0.75 0'
ALPHA_MAPLIST_INCLUDEDFG 1
-ALPHA_MAPLIST_INCLUDEDBG 0.25
+ALPHA_MAPLIST_INCLUDEDBG 0.375
ALPHA_MAPLIST_NOTINCLUDEDFG 0.25
// item: nexposee
@@ -132,14 +132,14 @@
// uses "radiobutton" images
COLOR_RADIOBUTTON_N '0.5 1 0'
COLOR_RADIOBUTTON_C '0.5 1 0'
-COLOR_RADIOBUTTON_F '0.5 1 0'
+COLOR_RADIOBUTTON_F '0.25 0.75 0'
COLOR_RADIOBUTTON_D '0.5 1 0'
// item: scrollbar
// uses "scrollbar" images
COLOR_SCROLLBAR_N '0.5 1 0'
COLOR_SCROLLBAR_C '0.5 1 0'
-COLOR_SCROLLBAR_F '0.5 1 0'
+COLOR_SCROLLBAR_F '0.25 0.75 0'
COLOR_SCROLLBAR_S '0.5 1 0'
WIDTH_SCROLLBAR 16
@@ -155,7 +155,7 @@
// uses "slider" images
COLOR_SLIDER_N '0.5 1 0'
COLOR_SLIDER_C '0.5 1 0'
-COLOR_SLIDER_F '0.5 1 0'
+COLOR_SLIDER_F '0.25 0.75 0'
COLOR_SLIDER_D '0.5 1 0'
COLOR_SLIDER_S '0.5 1 0'
WIDTH_SLIDERTEXT 0.333333333333
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_d.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/slider_s.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/background_ingame.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/wickedred/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/wickedred/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/wickedred/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/wickedred/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/wickedred/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/wickedred/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/wickedred/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedred/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/wickedred/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/border.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/button_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/button_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/button_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/buttongray_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/buttongray_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/buttongray_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/charmapbutton.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/checkbox_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/checkmark.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/closebutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/closebutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/closebutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/colorbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/colorbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/crosshairbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/crosshairbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/crosshairbutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/cursor.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/inputbox_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/inputbox_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/radiobutton_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/scrollbar_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/scrollbar_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/scrollbar_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/scrollbar_s.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedred/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedred/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,4 +1,4 @@
-// Values for Wicked Red by sev
+// Values for Wicked 2 Red by sev
// font sizes (used for everything)
FONTSIZE_NORMAL 12
@@ -8,15 +8,15 @@
HEIGHT_ZOOMEDTITLE -1
// the individual dialog background colors
-COLOR_DIALOG_MULTIPLAYER '0.75 0.5 0.5'
-COLOR_DIALOG_SETTINGS '0.75 0.5 0.5'
-COLOR_DIALOG_TEAMSELECT '0.75 0.5 0.5'
+COLOR_DIALOG_MULTIPLAYER '1 0 0'
+COLOR_DIALOG_SETTINGS '1 0 0'
+COLOR_DIALOG_TEAMSELECT '1 0 0'
COLOR_DIALOG_QUIT '0.75 0 0'
-COLOR_DIALOG_MUTATORS '0.75 0.5 0.5'
-COLOR_DIALOG_MAPINFO '0.75 0.5 0.5'
-COLOR_DIALOG_USERBIND '0.75 0.5 0.5'
-COLOR_DIALOG_SINGLEPLAYER '0.75 0.5 0.5'
-COLOR_DIALOG_CREDITS '0.75 0.5 0.5'
+COLOR_DIALOG_MUTATORS '1 0 0'
+COLOR_DIALOG_MAPINFO '1 0 0'
+COLOR_DIALOG_USERBIND '1 0 0'
+COLOR_DIALOG_SINGLEPLAYER '1 0 0'
+COLOR_DIALOG_CREDITS '1 0 0'
// nexposee positions of windows (they are the scale transformation
// centers, NOT the actual positions of the windows!)
@@ -43,10 +43,10 @@
// item: button
// uses "button" images
// uses "buttongray" images
-COLOR_BUTTON_N '0.75 0 0'
-COLOR_BUTTON_C '0.75 0 0'
-COLOR_BUTTON_F '0.75 0 0'
-COLOR_BUTTON_D '0.75 0 0'
+COLOR_BUTTON_N '1 0 0'
+COLOR_BUTTON_C '1 0 0'
+COLOR_BUTTON_F '1 0 0'
+COLOR_BUTTON_D '1 0 0'
// item: campaign
ALPHA_CAMPAIGN_SELECTABLE 0.8
@@ -59,17 +59,17 @@
// item: checkbox
// uses "checkbox" images
-COLOR_CHECKBOX_N '0.75 0 0'
-COLOR_CHECKBOX_C '0.75 0 0'
+COLOR_CHECKBOX_N '1 0 0'
+COLOR_CHECKBOX_C '1 0 0'
COLOR_CHECKBOX_F '0.75 0 0'
-COLOR_CHECKBOX_D '0.75 0 0'
+COLOR_CHECKBOX_D '1 0 0'
// item: credits list
COLOR_CREDITS_TITLE '1 1 1'
ALPHA_CREDITS_TITLE 1
COLOR_CREDITS_FUNCTION '1 1 1'
ALPHA_CREDITS_FUNCTION 0.7
-COLOR_CREDITS_PERSON '0.75 0 0'
+COLOR_CREDITS_PERSON '1 0 0'
ALPHA_CREDITS_PERSON 1
ROWS_CREDITS 20
WIDTH_CREDITS 0.5
@@ -89,8 +89,8 @@
// item: input box
// uses "inputbox" images
-COLOR_INPUTBOX_N '0.75 0 0'
-COLOR_INPUTBOX_F '0.75 0 0'
+COLOR_INPUTBOX_N '1 0 0'
+COLOR_INPUTBOX_F '1 0 0'
MARGIN_INPUTBOX 0.02
// item: key grabber
@@ -100,9 +100,9 @@
ALPHA_KEYGRABBER_KEYS 0.7
// item: list box
-COLOR_LISTBOX_SELECTED '0.75 0 0'
+COLOR_LISTBOX_SELECTED '1 0 0'
ALPHA_LISTBOX_SELECTED 1
-COLOR_LISTBOX_WAITING '0.75 0 0'
+COLOR_LISTBOX_WAITING '1 0 0'
ALPHA_LISTBOX_WAITING 0.5
// item: map list
@@ -110,7 +110,7 @@
COLOR_MAPLIST_AUTHOR '0.75 0.75 0.75'
COLOR_MAPLIST_INCLUDEDBG '0.75 0 0'
ALPHA_MAPLIST_INCLUDEDFG 1
-ALPHA_MAPLIST_INCLUDEDBG 0.25
+ALPHA_MAPLIST_INCLUDEDBG 0.375
ALPHA_MAPLIST_NOTINCLUDEDFG 0.25
// item: nexposee
@@ -130,17 +130,17 @@
// item: radio button
// uses "radiobutton" images
-COLOR_RADIOBUTTON_N '0.75 0 0'
-COLOR_RADIOBUTTON_C '0.75 0 0'
+COLOR_RADIOBUTTON_N '1 0 0'
+COLOR_RADIOBUTTON_C '1 0 0'
COLOR_RADIOBUTTON_F '0.75 0 0'
-COLOR_RADIOBUTTON_D '0.75 0 0'
+COLOR_RADIOBUTTON_D '1 0 0'
// item: scrollbar
// uses "scrollbar" images
-COLOR_SCROLLBAR_N '0.75 0 0'
-COLOR_SCROLLBAR_C '0.75 0 0'
+COLOR_SCROLLBAR_N '1 0 0'
+COLOR_SCROLLBAR_C '1 0 0'
COLOR_SCROLLBAR_F '0.75 0 0'
-COLOR_SCROLLBAR_S '0.75 0 0'
+COLOR_SCROLLBAR_S '1 0 0'
WIDTH_SCROLLBAR 16
// item: server list
@@ -153,10 +153,10 @@
// item: slider
// uses "slider" images
-COLOR_SLIDER_N '0.75 0 0'
-COLOR_SLIDER_C '0.75 0 0'
+COLOR_SLIDER_N '1 0 0'
+COLOR_SLIDER_C '1 0 0'
COLOR_SLIDER_F '0.75 0 0'
-COLOR_SLIDER_D '0.75 0 0'
-COLOR_SLIDER_S '0.75 0 0'
+COLOR_SLIDER_D '1 0 0'
+COLOR_SLIDER_S '1 0 0'
WIDTH_SLIDERTEXT 0.333333333333
TOLERANCE_SLIDER '0.2 2 0'
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_d.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/slider_s.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/wickedwhite/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/wickedwhite/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/wickedwhite/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/wickedwhite/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/wickedwhite/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/wickedwhite/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/wickedwhite/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/wickedwhite/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/border.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/button_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/button_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/button_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/buttongray_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/buttongray_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/buttongray_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/charmapbutton.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkbox_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/checkmark.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/closebutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/closebutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/closebutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/colorbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/colorbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/crosshairbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/crosshairbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/crosshairbutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/cursor.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/inputbox_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/inputbox_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/radiobutton_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/scrollbar_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/scrollbar_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/scrollbar_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/scrollbar_s.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedwhite/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedwhite/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,4 +1,4 @@
-// Values for Wicked White by sev
+// Values for Wicked 2 White by sev
// font sizes (used for everything)
FONTSIZE_NORMAL 12
@@ -50,18 +50,18 @@
// item: campaign
ALPHA_CAMPAIGN_SELECTABLE 0.8
-COLOR_CAMPAIGN_SELECTABLE '1 1 1'
+COLOR_CAMPAIGN_SELECTABLE '0.75 0.75 0.75'
ALPHA_CAMPAIGN_CURRENT 1
-COLOR_CAMPAIGN_CURRENT '1 1 1'
+COLOR_CAMPAIGN_CURRENT '0.75 0.75 0.75'
ALPHA_CAMPAIGN_FUTURE 0.2
-COLOR_CAMPAIGN_FUTURE '1 1 1'
+COLOR_CAMPAIGN_FUTURE '0.75 0.75 0.75'
ALPHA_CAMPAIGN_DESCRIPTION 0.7
// item: checkbox
// uses "checkbox" images
COLOR_CHECKBOX_N '1 1 1'
COLOR_CHECKBOX_C '1 1 1'
-COLOR_CHECKBOX_F '1 1 1'
+COLOR_CHECKBOX_F '0.75 0.75 0.75'
COLOR_CHECKBOX_D '1 1 1'
// item: credits list
@@ -100,15 +100,15 @@
ALPHA_KEYGRABBER_KEYS 0.7
// item: list box
-COLOR_LISTBOX_SELECTED '1 1 1'
+COLOR_LISTBOX_SELECTED '0.875 0.875 0.875'
ALPHA_LISTBOX_SELECTED 1
-COLOR_LISTBOX_WAITING '1 1 1'
+COLOR_LISTBOX_WAITING '0.875 0.875 0.875'
ALPHA_LISTBOX_WAITING 0.5
// item: map list
COLOR_MAPLIST_TITLE '1 1 1'
COLOR_MAPLIST_AUTHOR '0.75 0.75 0.75'
-COLOR_MAPLIST_INCLUDEDBG '1 1 1'
+COLOR_MAPLIST_INCLUDEDBG '0.75 0.75 0.75'
ALPHA_MAPLIST_INCLUDEDFG 1
ALPHA_MAPLIST_INCLUDEDBG 0.25
ALPHA_MAPLIST_NOTINCLUDEDFG 0.25
@@ -132,14 +132,14 @@
// uses "radiobutton" images
COLOR_RADIOBUTTON_N '1 1 1'
COLOR_RADIOBUTTON_C '1 1 1'
-COLOR_RADIOBUTTON_F '1 1 1'
+COLOR_RADIOBUTTON_F '0.75 0.75 0.75'
COLOR_RADIOBUTTON_D '1 1 1'
// item: scrollbar
// uses "scrollbar" images
COLOR_SCROLLBAR_N '1 1 1'
COLOR_SCROLLBAR_C '1 1 1'
-COLOR_SCROLLBAR_F '1 1 1'
+COLOR_SCROLLBAR_F '0.75 0.75 0.75'
COLOR_SCROLLBAR_S '1 1 1'
WIDTH_SCROLLBAR 16
@@ -155,7 +155,7 @@
// uses "slider" images
COLOR_SLIDER_N '1 1 1'
COLOR_SLIDER_C '1 1 1'
-COLOR_SLIDER_F '1 1 1'
+COLOR_SLIDER_F '0.75 0.75 0.75'
COLOR_SLIDER_D '1 1 1'
COLOR_SLIDER_S '1 1 1'
WIDTH_SLIDERTEXT 0.333333333333
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_d.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/slider_s.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/background.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/background_ingame.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/wickedyellow/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/wickedyellow/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/wickedyellow/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/wickedyellow/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/wickedyellow/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/wickedyellow/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/wickedyellow/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/wickedyellow/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/border.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/button_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/button_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/button_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/buttongray_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/buttongray_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/buttongray_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/charmapbutton.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkbox_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/checkmark.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/closebutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/closebutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/closebutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/colorbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/colorbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/crosshairbutton_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/crosshairbutton_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/crosshairbutton_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/cursor.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/inputbox_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/inputbox_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_c0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_c1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_d0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_d1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_f0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_f1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_n0.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/radiobutton_n1.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/scrollbar_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/scrollbar_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/scrollbar_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/scrollbar_s.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/wickedyellow/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/wickedyellow/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,4 +1,4 @@
-// Values for Wicked Red by sev
+// Values for Wicked 2 Yellow by sev
// font sizes (used for everything)
FONTSIZE_NORMAL 12
@@ -8,15 +8,15 @@
HEIGHT_ZOOMEDTITLE -1
// the individual dialog background colors
-COLOR_DIALOG_MULTIPLAYER '1 0.875 0.5'
-COLOR_DIALOG_SETTINGS '1 0.875 0.5'
-COLOR_DIALOG_TEAMSELECT '1 0.875 0.5'
+COLOR_DIALOG_MULTIPLAYER '1 0.875 0'
+COLOR_DIALOG_SETTINGS '1 0.875 0'
+COLOR_DIALOG_TEAMSELECT '1 0.875 0'
COLOR_DIALOG_QUIT '0.75 0 0'
-COLOR_DIALOG_MUTATORS '1 0.875 0.5'
-COLOR_DIALOG_MAPINFO '1 0.875 0.5'
-COLOR_DIALOG_USERBIND '1 0.875 0.5'
-COLOR_DIALOG_SINGLEPLAYER '1 0.875 0.5'
-COLOR_DIALOG_CREDITS '1 0.875 0.5'
+COLOR_DIALOG_MUTATORS '1 0.875 0'
+COLOR_DIALOG_MAPINFO '1 0.875 0'
+COLOR_DIALOG_USERBIND '1 0.875 0'
+COLOR_DIALOG_SINGLEPLAYER '1 0.875 0'
+COLOR_DIALOG_CREDITS '1 0.875 0'
// nexposee positions of windows (they are the scale transformation
// centers, NOT the actual positions of the windows!)
@@ -43,10 +43,10 @@
// item: button
// uses "button" images
// uses "buttongray" images
-COLOR_BUTTON_N '1 0.75 0'
-COLOR_BUTTON_C '1 0.75 0'
-COLOR_BUTTON_F '1 0.75 0'
-COLOR_BUTTON_D '1 0.75 0'
+COLOR_BUTTON_N '1 0.875 0'
+COLOR_BUTTON_C '1 0.875 0'
+COLOR_BUTTON_F '1 0.875 0'
+COLOR_BUTTON_D '1 0.875 0'
// item: campaign
ALPHA_CAMPAIGN_SELECTABLE 0.8
@@ -59,17 +59,17 @@
// item: checkbox
// uses "checkbox" images
-COLOR_CHECKBOX_N '1 0.75 0'
-COLOR_CHECKBOX_C '1 0.75 0'
+COLOR_CHECKBOX_N '1 0.875 0'
+COLOR_CHECKBOX_C '1 0.875 0'
COLOR_CHECKBOX_F '1 0.75 0'
-COLOR_CHECKBOX_D '1 0.75 0'
+COLOR_CHECKBOX_D '1 0.875 0'
// item: credits list
COLOR_CREDITS_TITLE '1 1 1'
ALPHA_CREDITS_TITLE 1
COLOR_CREDITS_FUNCTION '1 1 1'
ALPHA_CREDITS_FUNCTION 0.7
-COLOR_CREDITS_PERSON '1 0.75 0'
+COLOR_CREDITS_PERSON '1 0.875 0'
ALPHA_CREDITS_PERSON 1
ROWS_CREDITS 20
WIDTH_CREDITS 0.5
@@ -89,8 +89,8 @@
// item: input box
// uses "inputbox" images
-COLOR_INPUTBOX_N '1 0.75 0'
-COLOR_INPUTBOX_F '1 0.75 0'
+COLOR_INPUTBOX_N '1 0.875 0'
+COLOR_INPUTBOX_F '1 0.875 0'
MARGIN_INPUTBOX 0.02
// item: key grabber
@@ -100,9 +100,9 @@
ALPHA_KEYGRABBER_KEYS 0.7
// item: list box
-COLOR_LISTBOX_SELECTED '1 0.75 0'
+COLOR_LISTBOX_SELECTED '1 0.875 0'
ALPHA_LISTBOX_SELECTED 1
-COLOR_LISTBOX_WAITING '1 0.75 0'
+COLOR_LISTBOX_WAITING '1 0.875 0'
ALPHA_LISTBOX_WAITING 0.5
// item: map list
@@ -110,7 +110,7 @@
COLOR_MAPLIST_AUTHOR '0.75 0.75 0.75'
COLOR_MAPLIST_INCLUDEDBG '1 0.75 0'
ALPHA_MAPLIST_INCLUDEDFG 1
-ALPHA_MAPLIST_INCLUDEDBG 0.25
+ALPHA_MAPLIST_INCLUDEDBG 0.375
ALPHA_MAPLIST_NOTINCLUDEDFG 0.25
// item: nexposee
@@ -130,33 +130,33 @@
// item: radio button
// uses "radiobutton" images
-COLOR_RADIOBUTTON_N '1 0.75 0'
-COLOR_RADIOBUTTON_C '1 0.75 0'
+COLOR_RADIOBUTTON_N '1 0.875 0'
+COLOR_RADIOBUTTON_C '1 0.875 0'
COLOR_RADIOBUTTON_F '1 0.75 0'
-COLOR_RADIOBUTTON_D '1 0.75 0'
+COLOR_RADIOBUTTON_D '1 0.875 0'
// item: scrollbar
// uses "scrollbar" images
-COLOR_SCROLLBAR_N '1 0.75 0'
-COLOR_SCROLLBAR_C '1 0.75 0'
+COLOR_SCROLLBAR_N '1 0.875 0'
+COLOR_SCROLLBAR_C '1 0.875 0'
COLOR_SCROLLBAR_F '1 0.75 0'
-COLOR_SCROLLBAR_S '1 0.75 0'
+COLOR_SCROLLBAR_S '1 0.875 0'
WIDTH_SCROLLBAR 16
// item: server list
ALPHA_SERVERLIST_FULL 0.4
ALPHA_SERVERLIST_EMPTY 0.7
COLOR_SERVERLIST_LOWPING '0 1 0'
-COLOR_SERVERLIST_MEDPING '1 0.75 0'
+COLOR_SERVERLIST_MEDPING '1 0.875 0'
COLOR_SERVERLIST_HIGHPING '1 0 0'
ALPHA_SERVERLIST_HIGHPING 0.4
// item: slider
// uses "slider" images
-COLOR_SLIDER_N '1 0.75 0'
-COLOR_SLIDER_C '1 0.75 0'
+COLOR_SLIDER_N '1 0.875 0'
+COLOR_SLIDER_C '1 0.875 0'
COLOR_SLIDER_F '1 0.75 0'
-COLOR_SLIDER_D '1 0.75 0'
-COLOR_SLIDER_S '1 0.75 0'
+COLOR_SLIDER_D '1 0.875 0'
+COLOR_SLIDER_S '1 0.875 0'
WIDTH_SLIDERTEXT 0.333333333333
TOLERANCE_SLIDER '0.2 2 0'
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_c.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_d.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_f.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_n.tga
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/slider_s.tga
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/xaw/bigbutton_c.tga (from rev 4119, trunk/data/gfx/menu/xaw/bigbutton_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/xaw/bigbutton_d.tga (from rev 4119, trunk/data/gfx/menu/xaw/bigbutton_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/xaw/bigbutton_f.tga (from rev 4119, trunk/data/gfx/menu/xaw/bigbutton_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/xaw/bigbutton_n.tga (from rev 4119, trunk/data/gfx/menu/xaw/bigbutton_n.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/xaw/bigbuttongray_c.tga (from rev 4119, trunk/data/gfx/menu/xaw/bigbuttongray_c.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/xaw/bigbuttongray_d.tga (from rev 4119, trunk/data/gfx/menu/xaw/bigbuttongray_d.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/xaw/bigbuttongray_f.tga (from rev 4119, trunk/data/gfx/menu/xaw/bigbuttongray_f.tga)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/gfx/menu/xaw/bigbuttongray_n.tga (from rev 4119, trunk/data/gfx/menu/xaw/bigbuttongray_n.tga)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/gfx/menu/xaw/skinvalues.txt
===================================================================
--- branches/nexuiz-2.0/data/gfx/menu/xaw/skinvalues.txt 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/gfx/menu/xaw/skinvalues.txt 2008-08-12 12:20:43 UTC (rev 4120)
@@ -41,6 +41,8 @@
// item: button
// uses button.tga
// uses buttongray.tga
+// uses bigbutton.tga
+// uses bigbuttongray.tga
COLOR_BUTTON_N '1 1 1'
COLOR_BUTTON_C '1 1 1'
COLOR_BUTTON_F '1 1 1'
@@ -89,7 +91,7 @@
// uses inputbox.tga
COLOR_INPUTBOX_N '1 1 1'
COLOR_INPUTBOX_F '1 1 1'
-MARGIN_INPUTBOX 0.02
+MARGIN_INPUTBOX_CHARS 1
// item: key grabber
COLOR_KEYGRABBER_TITLES '1 1 1'
Modified: branches/nexuiz-2.0/data/maps/reslimed.ent
===================================================================
--- branches/nexuiz-2.0/data/maps/reslimed.ent 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/maps/reslimed.ent 2008-08-12 12:20:43 UTC (rev 4120)
@@ -3,7 +3,7 @@
"classname" "worldspawn"
"message" "Slimepit Revisited"
"gridsize" "128 128 256"
-"fog" "0.2 0.3 1 0 0.5 0 1024"
+"fog" "0.2 0.3 1 0 0.5 400 1024"
}
{
"classname" "func_rotating"
Modified: branches/nexuiz-2.0/data/models/sprites/danger.sp2
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/sprites/helpme.sp2
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/sprites/here.sp2
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/sprites/keycarrier-finish.sp2
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/sprites/make-sprites.sh
===================================================================
--- branches/nexuiz-2.0/data/models/sprites/make-sprites.sh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/models/sprites/make-sprites.sh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -161,3 +161,5 @@
sprite ons-cp-atck-blue "CONTROL POINT" 0000ff 000000 0.5 0000ff ffff00 0.5
sprite ons-cp-dfnd-red "CONTROL POINT" ff0000 000000 0.5 ff0000 ffffff 0.5
sprite ons-cp-dfnd-blue "CONTROL POINT" 0000ff 000000 0.5 0000ff ffffff 0.5
+sprite race-checkpoint "CHECKPOINT" ff8000 000000 0.0
+sprite race-finish "FINISH" ff8000 000000 0.0
Copied: branches/nexuiz-2.0/data/models/sprites/race-checkpoint.sp2 (from rev 4119, trunk/data/models/sprites/race-checkpoint.sp2)
===================================================================
(Binary files differ)
Copied: branches/nexuiz-2.0/data/models/sprites/race-finish.sp2 (from rev 4119, trunk/data/models/sprites/race-finish.sp2)
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/models/sprites/redbase.sp2
===================================================================
(Binary files differ)
Modified: branches/nexuiz-2.0/data/qcsrc/client/Defs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/Defs.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/client/Defs.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -151,18 +151,20 @@
float intermission;
float sb_showscores;
.string message;
-float coop;
-float deathmatch;
+// float coop;
+// float deathmatch;
-float dmg_take;
-float dmg_save;
-vector dmg_origin;
+// float dmg_take;
+// float dmg_save;
+// vector dmg_origin;
// Darkplaces Render Modifications
+#if 0
.float alpha;
.float renderflags;
.vector colormod;
.float scale;
+#endif
// Basic variables
.float enttype; // entity type sent from server
@@ -171,6 +173,29 @@
.float team_size;
float vid_conwidth, vid_conheight;
-float caps_team1, caps_team2;
float configdb;
string shortmapname;
+
+// QUALIFYING
+float race_checkpoint;
+float race_time;
+float race_laptime;
+float race_checkpointtime;
+float race_previousbesttime;
+string race_previousbestname;
+float race_nextcheckpoint;
+float race_nextbesttime;
+string race_nextbestname;
+
+// RACE
+float race_mycheckpoint;
+float race_mycheckpointtime;
+float race_mycheckpointdelta;
+float race_mycheckpointlapsdelta;
+string race_mycheckpointenemy;
+float race_othercheckpoint;
+float race_othercheckpointtime;
+float race_othercheckpointdelta;
+float race_othercheckpointlapsdelta;
+string race_othercheckpointenemy;
+float sb_showscores_force;
Modified: branches/nexuiz-2.0/data/qcsrc/client/Main.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/Main.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/client/Main.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -141,7 +141,6 @@
void Playerchecker_Think()
{
- entity pl;
float i;
for(i = 0; i < maxclients; ++i)
{
@@ -178,8 +177,6 @@
void PostInit(void)
{
- float i;
-
print(strcat("PostInit\n maxclients = ", ftos(maxclients), "\n"));
localcmd(strcat("\nsbar_columns_set ", cvar_string("sbar_columns"), ";\n"));
@@ -304,10 +301,11 @@
}
}
-void Ent_ReadPlayerScore(float isNew)
+void Ent_ReadPlayerScore()
{
float i, Team;
- entity tm, o;
+ float isNew;
+ entity o;
// damnit -.- don't want to go change every single .sv_entnum in sbar.qc AGAIN
// (no I've never heard of M-x replace-string, sed, or anything like that)
@@ -331,7 +329,7 @@
Sbar_UpdatePlayerPos(o);
}
-void Ent_ReadTeamScore(float isNew)
+void Ent_ReadTeamScore()
{
float i;
entity o;
@@ -347,10 +345,15 @@
// CSQC_Ent_Update : Called every frame that the server has indicated an update to the SSQC / CSQC entity has occured.
// The only parameter reflects if the entity is "new" to the client, meaning it just came into the client's PVS.
+void Ent_Remove();
void(float bIsNewEntity) CSQC_Ent_Update =
{
- float msg;
- self.enttype = ReadByte();
+ float msg, t;
+ t = ReadByte();
+ if(self.enttype)
+ if(t != self.enttype)
+ Ent_Remove();
+ self.enttype = t;
if(self.enttype == ENT_CLIENT_ENTCS)
{
self.sv_entnum = ReadByte()-1;
@@ -367,15 +370,17 @@
}
}
else if(self.enttype == ENT_CLIENT_SCORES)
- Ent_ReadPlayerScore(bIsNewEntity);
+ Ent_ReadPlayerScore();
else if(self.enttype == ENT_CLIENT_TEAMSCORES)
- Ent_ReadTeamScore(bIsNewEntity);
+ Ent_ReadTeamScore();
else
error("unknown entity type in CSQC_Ent_Update\n");
};
-// CSQC_Ent_Remove : Called when the server requests a SSQC / CSQC entity to be removed. Essentially call remove(self) as well.
-void CSQC_Ent_Remove()
+// Destructor, but does NOT deallocate the entity by calling remove(). Also
+// used when an entity changes its type. For an entity that someone interacts
+// with others, make sure it can no longer do so.
+void Ent_Remove()
{
if(self.enttype == ENT_CLIENT_ENTCS)
{
@@ -396,11 +401,11 @@
}
} else if(self.enttype == ENT_CLIENT_SCORES)
{
- entity tm;
if(self.owner)
{
SetTeam(self.owner, -1);
- RemovePlayer(self.owner);
+ if(self.owner.sort_prev)
+ RemovePlayer(self.owner);
self.owner.sort_prev = NULL;
}
} else if(self.enttype == ENT_CLIENT_TEAMSCORES)
@@ -412,6 +417,16 @@
// we don't NEED to remove them... they won't display anyway
// plus, svqc never does this anyway
}
+
+ self.enttype = 0;
+ self.classname = "";
+ // TODO possibly set more stuff to defaults
+}
+// CSQC_Ent_Remove : Called when the server requests a SSQC / CSQC entity to be removed. Essentially call remove(self) as well.
+void CSQC_Ent_Remove()
+{
+ if(self.enttype)
+ Ent_Remove();
remove(self);
}
@@ -547,6 +562,69 @@
db_put(configdb, strcat("/s/", key), "1");
}
+void Net_ReadRace()
+{
+ float b;
+
+ b = ReadByte();
+
+ switch(b)
+ {
+ case RACE_NET_CHECKPOINT_HIT_QUALIFYING:
+ race_checkpoint = ReadByte();
+ race_time = ReadShort();
+ race_previousbesttime = ReadShort();
+ if(race_previousbestname)
+ strunzone(race_previousbestname);
+ race_previousbestname = strzone(ReadString());
+
+ race_checkpointtime = time;
+
+ if(race_checkpoint == 0)
+ race_laptime = time; // valid
+
+ break;
+
+ case RACE_NET_CHECKPOINT_CLEAR:
+ race_laptime = 0;
+ race_checkpointtime = 0;
+ break;
+
+ case RACE_NET_CHECKPOINT_NEXT_QUALIFYING:
+ race_nextcheckpoint = ReadByte();
+
+ race_nextbesttime = ReadShort();
+ if(race_nextbestname)
+ strunzone(race_nextbestname);
+ race_nextbestname = strzone(ReadString());
+ break;
+
+ case RACE_NET_CHECKPOINT_HIT_RACE:
+ race_mycheckpoint = ReadByte();
+ race_mycheckpointtime = time;
+ race_mycheckpointdelta = ReadShort();
+ race_mycheckpointlapsdelta = ReadByte();
+ if(race_mycheckpointlapsdelta >= 128)
+ race_mycheckpointlapsdelta -= 256;
+ if(race_mycheckpointenemy)
+ strunzone(race_mycheckpointenemy);
+ race_mycheckpointenemy = strzone(ReadString());
+ break;
+
+ case RACE_NET_CHECKPOINT_HIT_RACE_BY_OPPONENT:
+ race_othercheckpoint = ReadByte();
+ race_othercheckpointtime = time;
+ race_othercheckpointdelta = ReadShort();
+ race_othercheckpointlapsdelta = ReadByte();
+ if(race_othercheckpointlapsdelta >= 128)
+ race_othercheckpointlapsdelta -= 256;
+ if(race_othercheckpointenemy)
+ strunzone(race_othercheckpointenemy);
+ race_othercheckpointenemy = strzone(ReadString());
+ break;
+ }
+}
+
// CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer.
// You must ALWAYS first acquire the temporary ID, which is sent as a byte.
// Return value should be 1 if CSQC handled the temporary entity, otherwise return 0 to have the engine process the event.
@@ -577,6 +655,14 @@
Net_ReadScoresInfo();
bHandled = true;
break;
+ case TE_CSQC_RACE:
+ Net_ReadRace();
+ bHandled = true;
+ break;
+ case TE_CSQC_FORCESCOREBOARD:
+ sb_showscores_force = true;
+ bHandled = true;
+ break;
default:
// No special logic for this temporary entity; return 0 so the engine can handle it
bHandled = false;
@@ -590,13 +676,6 @@
}
// COMMIT-TODO: Update if necessare, before committing
-float csqc_svn_map[CSQC_REVISION] =
-{
- 3812, // 3795,
- 3820 // mapvote protocol changed from there
-};
-
-// COMMIT-TODO: Update if necessare, before committing
void CSQC_CheckRevision()
{
if(csqc_revision == CSQC_REVISION)
@@ -604,9 +683,6 @@
print("^2SVQC and CSQC revisions are compatible.\n");
} else if(csqc_revision < CSQC_REVISION) {
print("^1Your csprogs.dat (CSQC) version is newer than the one on the server.\n");
- print("^1The last known svn revision for the server's CSQC is: ^7");
- print(ftos(csqc_svn_map[csqc_revision])); // don't use strcat, fteqcc loves screwing up arrays...
- print("\n");
} else if(csqc_revision > CSQC_REVISION) {
print("^1Your csprogs.dat (CSQC) is too old for this server.\n");
print("^1Please update to a newer version.\n");
Modified: branches/nexuiz-2.0/data/qcsrc/client/mapvoting.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/mapvoting.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/client/mapvoting.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -77,7 +77,6 @@
void MapVote_DrawAbstain(vector pos, float isize, float tsize, float count, float id)
{
- vector img_size;
vector rgb;
float text_size;
string label;
Modified: branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,4 +1,3 @@
-float databuf;
var float(string text, float handleColors) stringwidth;
entity players;
@@ -27,7 +26,7 @@
if(!pl)
{
- print("Trying to remove a player which is not in the playerlist!");
+ error("Trying to remove a player which is not in the playerlist!");
return;
}
parent.sort_next = player.sort_next;
Modified: branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/sbar.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/client/sbar.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -8,15 +8,7 @@
vector sbar;
float sbar_alpha_fg;
float sbar_hudselector;
-/*
-entity sortedPlayers;
-entity sortedTeams;
-.float sb_frags;
-.float sb_team;
-.float sb_player;
-.float sb_caps;
-*/
float ps_primary, ps_secondary;
float ts_primary, ts_secondary;
@@ -131,7 +123,7 @@
void Cmd_Sbar_SetFields(float argc);
void Sbar_InitScores()
{
- float i, f, primary_prio, secondary_prio;
+ float i, f;
ps_primary = ps_secondary = ts_primary = ts_secondary = -1;
for(i = 0; i < MAX_SCORE; ++i)
@@ -212,6 +204,13 @@
vl = left.scores[ps_primary];
vr = right.scores[ps_primary];
+ if(scores_flags[ps_primary] & SFL_ZERO_IS_WORST)
+ {
+ if(vl == 0 && vr != 0)
+ return 1;
+ if(vl != 0 && vr == 0)
+ return 0;
+ }
if(vl > vr)
return IS_INCREASING(scores_flags[ps_primary]);
if(vl < vr)
@@ -219,6 +218,13 @@
vl = left.scores[ps_secondary];
vr = right.scores[ps_secondary];
+ if(scores_flags[ps_secondary] & SFL_ZERO_IS_WORST)
+ {
+ if(vl == 0 && vr != 0)
+ return 1;
+ if(vl != 0 && vr == 0)
+ return 0;
+ }
if(vl > vr)
return IS_INCREASING(scores_flags[ps_secondary]);
if(vl < vr)
@@ -556,7 +562,7 @@
else
sbar_field_rgb = '1 1 1';
if(!tmp)
- if(f & (SFL_HIDE_ZERO | SFL_RANK))
+ if(f & (SFL_HIDE_ZERO | SFL_RANK | SFL_TIME))
return "";
if(f & SFL_RANK)
{
@@ -573,6 +579,10 @@
else
return strcat(str, "th");
}
+ else if(f & SFL_TIME)
+ {
+ return mmsss(tmp);
+ }
return ftos(tmp);
}
//return "error";
@@ -924,6 +934,71 @@
sbar = sbar_save;
}
+string MakeRaceString(float cp, float mytime, float histime, float lapdelta, string hisname)
+{
+ string col;
+ string timestr;
+ string cpname;
+ string lapstr;
+ lapstr = "";
+
+ if(histime == 0) // goal hit
+ {
+ if(mytime > 0)
+ {
+ timestr = strcat("+", ftos_decimals(+mytime, 1));
+ col = "^1";
+ }
+ else if(mytime == 0)
+ {
+ timestr = "+0.0";
+ col = "^3";
+ }
+ else
+ {
+ timestr = strcat("-", ftos_decimals(-mytime, 1));
+ col = "^2";
+ }
+
+ if(lapdelta > 0)
+ {
+ lapstr = strcat(" (-", ftos(lapdelta), "L)");
+ col = "^2";
+ }
+ else if(lapdelta < 0)
+ {
+ lapstr = strcat(" (+", ftos(-lapdelta), "L)");
+ col = "^1";
+ }
+ }
+ else if(histime > 0) // anticipation
+ {
+ if(mytime >= histime)
+ timestr = strcat("+", ftos_decimals(mytime - histime, 1));
+ else
+ timestr = mmsss(histime * 10);
+ col = "^3";
+ }
+ else
+ col = "^7";
+
+ if(cp)
+ cpname = strcat("Intermediate ", ftos(cp));
+ else
+ cpname = "Finish line";
+
+ if(histime < 0)
+ return strcat(col, cpname);
+ else if(hisname == "")
+ return strcat(col, cpname, " (", timestr, ")");
+ else
+ return strcat(col, cpname, " (", timestr, " ", strcat(hisname, col, lapstr), ")");
+}
+
+void dummyfunction(float a1, float a2, float a3, float a4, float a5, float a6, float a7, float a8)
+{
+}
+
void Sbar_Score(float margin)
{
float timelimit, timeleft, minutes, seconds, distribution, myplace, score;
@@ -1025,6 +1100,74 @@
drawpic(sbar + '-36 32 0', "gfx/num_colon", '12 12 0', '1 1 1', sbar_alpha_fg, 0);
Sbar_DrawXNum('-24 32 0', seconds, -2, 12, '1 1 1', 1, DRAWFLAG_NORMAL);
}
+
+ if(gametype == GAME_RACE)
+ {
+ drawfont = sbar_bigfont;
+ float a;
+ vector m;
+ string s;
+
+ m = '0.5 0 0' * vid_conwidth + '0 0.25 0' * vid_conheight;
+
+ if(race_checkpointtime)
+ {
+
+ a = bound(0, 2 - (time - race_checkpointtime), 1);
+ s = "";
+ if(a > 0) // just hit a checkpoint?
+ {
+ if(race_time && race_previousbesttime)
+ s = MakeRaceString(race_checkpoint, race_time / 10 - race_previousbesttime / 10, 0, 0, race_previousbestname);
+ else
+ s = MakeRaceString(race_checkpoint, 0, -1, 0, race_previousbestname);
+ }
+ else
+ {
+ if(race_laptime && race_nextbesttime)
+ {
+ a = bound(0, 2 - ((race_laptime + race_nextbesttime/10) - time), 1);
+ if(a > 0) // next one?
+ {
+ s = MakeRaceString(race_nextcheckpoint, time - race_laptime, race_nextbesttime / 10, 0, race_nextbestname);
+ }
+ }
+ }
+
+ if(s != "")
+ if(a > 0)
+ {
+ dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
+ drawcolorcodedstring(m - '0 16 0' - '8 0 0' * stringwidth(s, TRUE), s, '16 16 0', sbar_alpha_fg * a, 0);
+ }
+
+ if(race_laptime)
+ {
+ s = mmsss(10*(time - race_laptime));
+ drawstring(m - '0 0 0' - '16 0 0' * stringwidth(s, FALSE), s, '32 32 0', '1 1 1', sbar_alpha_fg, 0);
+ }
+ }
+ else
+ {
+ if(race_mycheckpointtime)
+ {
+ a = bound(0, 2 - (time - race_mycheckpointtime), 1);
+ s = MakeRaceString(race_mycheckpoint, race_mycheckpointdelta / 10, -!race_mycheckpointenemy, race_mycheckpointlapsdelta, race_mycheckpointenemy);
+ dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
+ drawcolorcodedstring(m - '0 16 0' - '8 0 0' * stringwidth(s, TRUE), s, '16 16 0', sbar_alpha_fg * a, 0);
+ }
+ if(race_othercheckpointtime && race_othercheckpointenemy != "")
+ {
+ a = bound(0, 2 - (time - race_othercheckpointtime), 1);
+ s = MakeRaceString(race_othercheckpoint, -race_othercheckpointdelta / 10, -!race_othercheckpointenemy, race_othercheckpointlapsdelta, race_othercheckpointenemy);
+ dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
+ drawcolorcodedstring(m - '0 0 0' - '8 0 0' * stringwidth(s, TRUE), s, '16 16 0', sbar_alpha_fg * a, 0);
+ }
+ }
+
+ drawfont = sbar_font;
+ }
+
sbar = sbar_save;
}
@@ -1183,7 +1326,7 @@
Sbar_FinaleOverlay();
else
{
- if (sb_showscores || (getstati(STAT_HEALTH) <= 0 && cvar("cl_deathscoreboard")))
+ if (sb_showscores || sb_showscores_force || (getstati(STAT_HEALTH) <= 0 && cvar("cl_deathscoreboard")))
{
sbar_x = (vid_conwidth - 640.0)*0.5;
sbar_y = vid_conheight - 47;
Modified: branches/nexuiz-2.0/data/qcsrc/client/sortlist.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/sortlist.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/client/sortlist.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,4 +1,4 @@
-.float(entity,entity) sort_cmp;
+//.float(entity,entity) sort_cmp;
.entity sort_next, sort_prev;
entity Sort_Spawn()
@@ -9,7 +9,7 @@
sort.chain = sort;
return sort;
}
-
+/*
entity Sort_New(float(entity,entity) cmp)
{
entity sort;
@@ -96,6 +96,7 @@
sort = sort.sort_next;
return sort;
}
+*/
/**
* Swap two neighbours in a sortlist.
@@ -110,6 +111,7 @@
a.sort_prev = b; \
b.sort_next = a
+/*
void Sort_Erase(entity ent)
{
ent.sort_prev.sort_next = ent.sort_next;
@@ -130,3 +132,4 @@
}
}
}
+*/
Modified: branches/nexuiz-2.0/data/qcsrc/common/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/constants.qh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/common/constants.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -6,7 +6,10 @@
// Revision 5: mapvote time fix
// Revision 6: more robust against packet loss/delays, also show not yet connected clients
// Revision 7: packet loss column
-#define CSQC_REVISION 7
+// Revision 8: race
+// Revision 9: race delta
+// Revision 10: scoreboard force
+#define CSQC_REVISION 9
// probably put these in common/
// so server/ and client/ can be synced better
@@ -20,6 +23,7 @@
const float GAME_KEYHUNT = 8;
const float GAME_ASSAULT = 9;
const float GAME_ONSLAUGHT = 10;
+const float GAME_RACE = 11;
const float AS_STRING = 1;
const float AS_INT = 2;
@@ -183,6 +187,8 @@
const float TE_CSQC_MAPVOTE = 106;
const float TE_CSQC_CONFIG = 107;
const float TE_CSQC_SCORESINFO = 108;
+const float TE_CSQC_RACE = 109;
+const float TE_CSQC_FORCESCOREBOARD = 110;
const float STAT_KH_KEYS = 32;
const float STAT_CTF_STATE = 33;
@@ -198,6 +204,12 @@
const float MAPVOTE_NET_PIC = 2;
const float MAPVOTE_NET_OWNVOTE = 3;
+const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder
+const float RACE_NET_CHECKPOINT_CLEAR = 1;
+const float RACE_NET_CHECKPOINT_NEXT_QUALIFYING = 2; // byte nextcheckpoint, short recordtime, string recordholder
+const float RACE_NET_CHECKPOINT_HIT_RACE = 3; // byte checkpoint, short delta, byte lapsdelta, string opponent
+const float RACE_NET_CHECKPOINT_HIT_RACE_BY_OPPONENT = 4; // byte checkpoint, short delta, byte lapsdelta, string opponent
+
/**
* Lower scores are better (e.g. suicides)
*/
@@ -219,6 +231,14 @@
#define SFL_RANK 32
/**
+ * Display as mm:ss.s, value is stored as 10ths of a second (AND 0 is the worst possible value!)
+ */
+#define SFL_TIME 64
+
+// not an extra constant yet
+#define SFL_ZERO_IS_WORST SFL_TIME
+
+/**
* Scoring priority (NOTE: PRIMARY is used for fraglimit)
*/
#define SFL_SORT_PRIO_SECONDARY 4
Modified: branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -421,6 +421,8 @@
++spawnpoints;
else if(v == "info_player_deathmatch")
++spawnpoints;
+ else if(v == "trigger_race_checkpoint")
+ MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_RACE;
else if(v == "weapon_nex")
{ }
else if(v == "weapon_railgun")
@@ -437,7 +439,7 @@
}
diameter = vlen(mapMaxs - mapMins);
- twoBaseModes = MapInfo_Map_supportedGametypes & (MAPINFO_TYPE_CTF | MAPINFO_TYPE_ASSAULT);
+ twoBaseModes = MapInfo_Map_supportedGametypes & (MAPINFO_TYPE_CTF | MAPINFO_TYPE_ASSAULT | MAPINFO_TYPE_RACE);
if(twoBaseModes && (MapInfo_Map_supportedGametypes == twoBaseModes))
{
// we have a CTF-only or Assault-only map. Don't add other modes then,
@@ -508,6 +510,14 @@
cvar_set("fraglimit", sa);
s = cdr(s);
}
+
+ if(pWantedType == MAPINFO_TYPE_RACE)
+ {
+ sa = car(s); if(sa == "") sa = cvar_string("fraglimit");
+ if(cvar("g_race_teams"))
+ cvar_set("fraglimit", sa);
+ s = cdr(s);
+ }
}
float MapInfo_Type_FromString(string t)
@@ -522,6 +532,7 @@
else if(t == "kh") return MAPINFO_TYPE_KEYHUNT;
else if(t == "as") return MAPINFO_TYPE_ASSAULT;
else if(t == "ons") return MAPINFO_TYPE_ONSLAUGHT;
+ else if(t == "race") return MAPINFO_TYPE_RACE;
else if(t == "all") return MAPINFO_TYPE_ALL;
else return 0;
}
@@ -567,6 +578,7 @@
if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ARENA) fputs(fh, "type arena 10 20\n");
if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_KEYHUNT) fputs(fh, "type kh 1000 20 3\n");
if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ASSAULT) fputs(fh, "type as 20\n");
+ if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE) fputs(fh, "type race 5 20 15\n");
if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT) fputs(fh, "type ons 20\n");
fh2 = fopen(strcat("scripts/", pFilename, ".arena"), FILE_READ);
@@ -727,7 +739,7 @@
{
float req;
req = 0;
- if(!(cvar("g_lms") || cvar("g_instagib") || cvar("g_minstagib") || cvar("g_nixnex") || cvar("g_rocketarena")))
+ if(!(cvar("g_lms") || cvar("g_instagib") || cvar("g_minstagib") || cvar("g_nixnex") || cvar("g_rocketarena") || !cvar("g_pickup_items")))
req |= MAPINFO_FEATURE_WEAPONS;
return req;
}
@@ -752,6 +764,8 @@
return MAPINFO_TYPE_KEYHUNT;
else if(cvar("g_onslaught"))
return MAPINFO_TYPE_ONSLAUGHT;
+ else if(cvar("g_race"))
+ return MAPINFO_TYPE_RACE;
else
return MAPINFO_TYPE_DEATHMATCH;
}
@@ -788,6 +802,7 @@
cvar_set("g_keyhunt", (t == MAPINFO_TYPE_KEYHUNT) ? "1" : "0");
cvar_set("g_assault", (t == MAPINFO_TYPE_ASSAULT) ? "1" : "0");
cvar_set("g_onslaught", (t == MAPINFO_TYPE_ONSLAUGHT) ? "1" : "0");
+ cvar_set("g_race", (t == MAPINFO_TYPE_RACE) ? "1" : "0");
}
void MapInfo_LoadMap(string s)
Modified: branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,13 +1,14 @@
-float MAPINFO_TYPE_DEATHMATCH = 1;
-float MAPINFO_TYPE_TEAM_DEATHMATCH = 2;
-float MAPINFO_TYPE_DOMINATION = 4;
-float MAPINFO_TYPE_CTF = 8;
-float MAPINFO_TYPE_RUNEMATCH = 16;
-float MAPINFO_TYPE_LMS = 32;
-float MAPINFO_TYPE_ARENA = 64;
-float MAPINFO_TYPE_KEYHUNT = 128;
-float MAPINFO_TYPE_ASSAULT = 256;
-float MAPINFO_TYPE_ONSLAUGHT = 512;
+float MAPINFO_TYPE_CTF = 1;
+float MAPINFO_TYPE_ASSAULT = 2;
+float MAPINFO_TYPE_ONSLAUGHT = 4;
+float MAPINFO_TYPE_RACE = 8;
+float MAPINFO_TYPE_DEATHMATCH = 16;
+float MAPINFO_TYPE_TEAM_DEATHMATCH = 32;
+float MAPINFO_TYPE_DOMINATION = 64;
+float MAPINFO_TYPE_RUNEMATCH = 128;
+float MAPINFO_TYPE_LMS = 256;
+float MAPINFO_TYPE_ARENA = 512;
+float MAPINFO_TYPE_KEYHUNT = 1024;
float MAPINFO_TYPE_ALL = 65535; // this has to include all above bits
float MAPINFO_FEATURE_WEAPONS = 1; // not defined for minstagib-only maps
Modified: branches/nexuiz-2.0/data/qcsrc/common/util.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/util.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/common/util.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -418,9 +418,21 @@
else if (g == GAME_CTF) return "ctf";
else if (g == GAME_RUNEMATCH) return "rune";
else if (g == GAME_LMS) return "lms";
+ else if (g == GAME_ARENA) return "arena";
else if (g == GAME_KEYHUNT) return "kh";
else if (g == GAME_ONSLAUGHT) return "ons";
else if (g == GAME_ASSAULT) return "as";
+ else if (g == GAME_RACE) return "race";
return "dm";
}
+string mmsss(float tenths)
+{
+ float minutes;
+ string s;
+ tenths = floor(tenths + 0.5);
+ minutes = floor(tenths / 600);
+ tenths -= minutes * 600;
+ s = ftos(1000 + tenths);
+ return strcat(ftos(minutes), ":", substring(s, 1, 2), ".", substring(s, 3, 1));
+}
Modified: branches/nexuiz-2.0/data/qcsrc/common/util.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/util.qh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/common/util.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -57,3 +57,4 @@
#endif
string GametypeNameFromType(float g);
+string mmsss(float t);
Modified: branches/nexuiz-2.0/data/qcsrc/menu/classes.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/classes.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/classes.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -20,7 +20,9 @@
#include "nexuiz/tab.c"
#include "nexuiz/mainwindow.c"
#include "nexuiz/button.c"
+#include "nexuiz/bigbutton.c"
#include "nexuiz/commandbutton.c"
+#include "nexuiz/bigcommandbutton.c"
#include "nexuiz/dialog_teamselect.c"
#include "nexuiz/dialog_settings.c"
#include "nexuiz/dialog_settings_video.c"
Modified: branches/nexuiz-2.0/data/qcsrc/menu/item/borderimage.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/item/borderimage.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/item/borderimage.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -13,6 +13,7 @@
ATTRIB(BorderImage, isNexposeeTitleBar, float, 0)
ATTRIB(BorderImage, zoomedOutTitleBarPosition, float, 0)
ATTRIB(BorderImage, zoomedOutTitleBar, float, 0)
+ ATTRIB(BorderImage, borderLines, float, 1)
ENDCLASS(BorderImage)
#endif
@@ -59,7 +60,7 @@
//print(vtos(me.borderVec), "\n");
if(me.src)
- draw_BorderPicture('0 0 0', me.src, '1 1 0', me.color, 1, me.borderVec);
+ draw_BorderPicture('0 0 0', me.src, '1 1 0', me.color, 1, me.borderLines * me.borderVec);
if(me.fontSize > 0)
{
vector ro, rf;
Modified: branches/nexuiz-2.0/data/qcsrc/menu/item/label.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/item/label.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/item/label.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -11,6 +11,8 @@
ATTRIB(Label, allowCut, float, 0)
ATTRIB(Label, keepspaceLeft, float, 0) // for use by subclasses (radiobuttons for example)
ATTRIB(Label, keepspaceRight, float, 0)
+ ATTRIB(Label, marginLeft, float, 0) // alternate way to specify keepspace* (in characters from the font)
+ ATTRIB(Label, marginRight, float, 0)
ATTRIB(Label, realFontSize, vector, '0 0 0')
ATTRIB(Label, realOrigin, vector, '0 0 0')
ATTRIB(Label, alpha, float, 0.7)
@@ -36,6 +38,10 @@
// absSize_y is height of label
me.realFontSize_y = me.fontSize / absSize_y;
me.realFontSize_x = me.fontSize / absSize_x;
+ if(me.marginLeft)
+ me.keepspaceLeft = me.marginLeft * me.realFontSize_x;
+ if(me.marginRight)
+ me.keepspaceRight = me.marginRight * me.realFontSize_x;
me.realOrigin_x = me.align * (1 - me.keepspaceLeft - me.keepspaceRight - min(me.realFontSize_x * draw_TextWidth(me.text, 0), (1 - me.keepspaceLeft - me.keepspaceRight))) + me.keepspaceLeft;
me.realOrigin_y = 0.5 * (1 - me.realFontSize_y);
}
Modified: branches/nexuiz-2.0/data/qcsrc/menu/msys.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/msys.qh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/msys.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -106,6 +106,8 @@
float SLIST_TEST_GREATER = 5;
float SLIST_TEST_GREATEREQUAL = 6;
float SLIST_TEST_NOTEQUAL = 7;
+float SLIST_TEST_STARTSWITH = 8;
+float SLIST_TEST_NOTSTARTSWITH = 9;
float SLIST_MASK_AND = 0;
float SLIST_MASK_OR = 512;
Copied: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/bigbutton.c (from rev 4119, trunk/data/qcsrc/menu/nexuiz/bigbutton.c)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/bigbutton.c (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/bigbutton.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -0,0 +1,23 @@
+#ifdef INTERFACE
+CLASS(NexuizBigButton) EXTENDS(NexuizButton)
+ METHOD(NexuizBigButton, configureNexuizBigButton, void(entity, string, vector))
+ ATTRIB(NexuizBigButton, image, string, SKINGFX_BUTTON_BIG)
+ ATTRIB(NexuizBigButton, grayImage, string, SKINGFX_BUTTON_BIG_GRAY)
+ENDCLASS(NexuizButton)
+entity makeNexuizButton(string theText, vector theColor);
+#endif
+
+#ifdef IMPLEMENTATION
+entity makeNexuizBigButton(string theText, vector theColor)
+{
+ entity me;
+ me = spawnNexuizBigButton();
+ me.configureNexuizBigButton(me, theText, theColor);
+ return me;
+}
+
+void configureNexuizBigButtonNexuizBigButton(entity me, string theText, vector theColor)
+{
+ me.configureNexuizButton(me, theText, theColor);
+}
+#endif
Copied: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/bigcommandbutton.c (from rev 4119, trunk/data/qcsrc/menu/nexuiz/bigcommandbutton.c)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/bigcommandbutton.c (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/bigcommandbutton.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -0,0 +1,23 @@
+#ifdef INTERFACE
+CLASS(NexuizBigCommandButton) EXTENDS(NexuizCommandButton)
+ METHOD(NexuizBigCommandButton, configureNexuizBigCommandButton, void(entity, string, vector, string, float))
+ ATTRIB(NexuizBigCommandButton, image, string, SKINGFX_BUTTON_BIG)
+ ATTRIB(NexuizBigCommandButton, grayImage, string, SKINGFX_BUTTON_BIG_GRAY)
+ENDCLASS(NexuizCommandButton)
+entity makeNexuizBigCommandButton(string theText, vector theColor, string theCommand, float closesMenu);
+#endif
+
+#ifdef IMPLEMENTATION
+entity makeNexuizBigCommandButton(string theText, vector theColor, string theCommand, float theFlags)
+{
+ entity me;
+ me = spawnNexuizBigCommandButton();
+ me.configureNexuizBigCommandButton(me, theText, theColor, theCommand, theFlags);
+ return me;
+}
+
+void configureNexuizBigCommandButtonNexuizBigCommandButton(entity me, string theText, vector theColor, string theCommand, float theFlags)
+{
+ me.configureNexuizCommandButton(me, theText, theColor, theCommand, theFlags);
+}
+#endif
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -20,6 +20,7 @@
ATTRIB(NexuizDialog, titleFontSize, float, SKINFONTSIZE_TITLE) // pixels
ATTRIB(NexuizDialog, backgroundImage, string, SKINGFX_DIALOGBORDER)
+ ATTRIB(NexuizDialog, borderLines, float, SKINHEIGHT_DIALOGBORDER)
ATTRIB(NexuizDialog, closeButtonImage, string, SKINGFX_CLOSEBUTTON)
ATTRIB(NexuizDialog, zoomedOutTitleBarPosition, float, SKINHEIGHT_ZOOMEDTITLE * 0.5 - 0.5)
ATTRIB(NexuizDialog, zoomedOutTitleBar, float, SKINHEIGHT_ZOOMEDTITLE != 0)
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -31,7 +31,7 @@
float n;
me.TR(me);
- n = 9 + 1 * !!cvar("developer");
+ n = 10 + 1 * !!cvar("developer");
// NOTE: not using ?: due to fteqcc bug
// this actually means: cvar("developer") ? 10 : 9
me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_dm", "DM"));
@@ -57,6 +57,8 @@
}
me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_onslaught", "Onslaught"));
if(e.checked) e0 = NULL;
+ me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_race", "Race"));
+ if(e.checked) e0 = NULL;
if(e0)
{
//print("NO CHECK\n");
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -24,6 +24,7 @@
ATTRIB(NexuizMapInfoDialog, typeCTFLabel, entity, NULL)
ATTRIB(NexuizMapInfoDialog, typeAssaultLabel, entity, NULL)
ATTRIB(NexuizMapInfoDialog, typeOnslaughtLabel, entity, NULL)
+ ATTRIB(NexuizMapInfoDialog, typeRaceLabel, entity, NULL)
ATTRIB(NexuizMapInfoDialog, currentMapIndex, float, 0)
ATTRIB(NexuizMapInfoDialog, currentMapBSPName, string, string_null)
@@ -73,10 +74,9 @@
me.typeRuneLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RUNEMATCH);
me.typeKeyHuntLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_KEYHUNT);
me.typeCTFLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTF);
- if(me.typeAssaultLabel)
- me.typeAssaultLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ASSAULT);
- if(me.typeOnslaughtLabel)
- me.typeOnslaughtLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT);
+ me.typeAssaultLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ASSAULT);
+ me.typeOnslaughtLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT);
+ me.typeRaceLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE);
MapInfo_ClearTemps();
}
@@ -127,13 +127,12 @@
me.TD(me, 1, w/4, e = makeNexuizTextLabel(0, "CTF"));
me.typeCTFLabel = e;
me.TR(me);
- if(cvar("developer"))
- {
- me.TD(me, 1, w/4, e = makeNexuizTextLabel(0, "Assault"));
- me.typeAssaultLabel = e;
- }
+ me.TD(me, 1, w/4, e = makeNexuizTextLabel(0, "Assault"));
+ me.typeAssaultLabel = e;
me.TD(me, 1, w/4, e = makeNexuizTextLabel(0, "Onslaught"));
me.typeOnslaughtLabel = e;
+ me.TD(me, 1, w/4, e = makeNexuizTextLabel(0, "Race"));
+ me.typeRaceLabel = e;
me.gotoRC(me, me.rows - 2, 0);
me.TD(me, 1, me.columns, e = makeNexuizTextLabel(0.5, ""));
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -48,9 +48,10 @@
me.TD(me, 1, 1, slist.sortButton2 = makeNexuizButton(string_null, '0 0 0'));
me.TD(me, 1, 1, slist.sortButton3 = makeNexuizButton(string_null, '0 0 0'));
me.TD(me, 1, 1, slist.sortButton4 = makeNexuizButton(string_null, '0 0 0'));
+ me.TD(me, 1, 1, slist.sortButton5 = makeNexuizButton(string_null, '0 0 0'));
me.TR(me);
me.TD(me, me.rows - 3, me.columns, slist);
-
+
me.gotoRC(me, me.rows - 1, 0);
me.TD(me, 1, me.columns, e = makeNexuizButton("Join!", '0 0 0'));
e.onClick = ServerList_Connect_Click;
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_misc.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_misc.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_misc.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -33,15 +33,71 @@
me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Music:"));
me.TD(me, 1, 2, s);
me.TR(me);
+ me.TR(me);
s = makeNexuizDecibelsSlider(-20, 0, 0.5, "volume");
- me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Game:"));
+ me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Master:"));
me.TD(me, 1, 2, s);
me.TR(me);
+ me.TDempty(me, 0.2);
s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_staticvolume");
- me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Ambient:"));
+ me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Ambient:"));
me.TD(me, 1, 2, s);
+ setDependentStringNotEqual(e, "volume", "0");
+ setDependentStringNotEqual(s, "volume", "0");
me.TR(me);
+ me.TDempty(me, 0.2);
+ s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_worldchannel0volume");
+ me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Info:"));
+ me.TD(me, 1, 2, s);
+ setDependentStringNotEqual(e, "volume", "0");
+ setDependentStringNotEqual(s, "volume", "0");
me.TR(me);
+ me.TDempty(me, 0.2);
+ s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel3volume");
+ makeMulti(s, "snd_playerchannel0volume snd_playerchannel3volume");
+ me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Items:"));
+ me.TD(me, 1, 2, s);
+ setDependentStringNotEqual(e, "volume", "0");
+ setDependentStringNotEqual(s, "volume", "0");
+ me.TR(me);
+ me.TDempty(me, 0.2);
+ s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_playerchannel6volume");
+ me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Pain:"));
+ me.TD(me, 1, 2, s);
+ setDependentStringNotEqual(e, "volume", "0");
+ setDependentStringNotEqual(s, "volume", "0");
+ me.TR(me);
+ me.TDempty(me, 0.2);
+ s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_playerchannel7volume");
+ makeMulti(s, "snd_entchannel7volume");
+ me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Player:"));
+ me.TD(me, 1, 2, s);
+ setDependentStringNotEqual(e, "volume", "0");
+ setDependentStringNotEqual(s, "volume", "0");
+ me.TR(me);
+ me.TDempty(me, 0.2);
+ s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel4volume");
+ makeMulti(s, "snd_playerchannel4volume");
+ me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Shots:"));
+ me.TD(me, 1, 2, s);
+ setDependentStringNotEqual(e, "volume", "0");
+ setDependentStringNotEqual(s, "volume", "0");
+ me.TR(me);
+ me.TDempty(me, 0.2);
+ s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_playerchannel2volume");
+ me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Voice:"));
+ me.TD(me, 1, 2, s);
+ setDependentStringNotEqual(e, "volume", "0");
+ setDependentStringNotEqual(s, "volume", "0");
+ me.TR(me);
+ me.TDempty(me, 0.2);
+ s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_playerchannel1volume");
+ me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Weapons:"));
+ me.TD(me, 1, 2, s);
+ setDependentStringNotEqual(e, "volume", "0");
+ setDependentStringNotEqual(s, "volume", "0");
+
+ me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Frequency:"));
me.TD(me, 1, 2, e = makeNexuizTextSlider("snd_speed"));
e.addValue(e, "8 kHz", "8000");
@@ -59,8 +115,8 @@
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 2.8, e = makeNexuizCheckBox(0, "snd_swapstereo", "Swap Stereo"));
-
- me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+ me.TR(me);
+ me.TR(me);
me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "cl_autodemo", "Demo recording"));
me.TR(me);
me.TR(me);
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_singleplayer.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_singleplayer.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_singleplayer.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -55,7 +55,7 @@
me.TR(me);
me.TDempty(me, (me.columns - 2) / 2);
- me.TD(me, 2, 2, e = makeNexuizButton("Instant action!", '0 0 0'));
+ me.TD(me, 2, 2, e = makeNexuizBigButton("Instant action!", '0 0 0'));
e.onClick = InstantAction_LoadMap;
e.onClickEntity = NULL;
me.TR(me);
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_teamselect.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_teamselect.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_teamselect.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -19,7 +19,7 @@
entity makeTeamButton(string theName, vector theColor, string commandtheName)
{
entity b;
- b = makeNexuizCommandButton(theName, theColor, commandtheName, 1);
+ b = makeNexuizBigCommandButton(theName, theColor, commandtheName, 1);
return b;
}
@@ -46,7 +46,7 @@
me.TD(me, 2, 1, me.team4 = makeTeamButton("pink", '1 0.5 1', "cmd selectteam pink; cmd join"));
me.TR(me);
me.TR(me);
- me.TD(me, 1, 4, makeTeamButton("spectate", '0 0 0', "cmd spectate"));
+ me.TD(me, 1, 4, makeNexuizCommandButton("spectate", '0 0 0', "cmd spectate", 1));
}
#endif
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/gametypebutton.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/gametypebutton.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/gametypebutton.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -3,7 +3,7 @@
METHOD(NexuizGametypeButton, configureNexuizGametypeButton, void(entity, float, string, string))
METHOD(NexuizGametypeButton, setChecked, void(entity, float))
ATTRIB(NexuizGametypeButton, fontSize, float, SKINFONTSIZE_NORMAL)
- ATTRIB(NexuizGametypeButton, image, string, SKINGFX_BUTTON)
+ ATTRIB(NexuizGametypeButton, image, string, SKINGFX_BUTTON_BIG)
ATTRIB(NexuizGametypeButton, color, vector, SKINCOLOR_BUTTON_N)
ATTRIB(NexuizGametypeButton, colorC, vector, SKINCOLOR_BUTTON_C)
ATTRIB(NexuizGametypeButton, colorF, vector, SKINCOLOR_BUTTON_F)
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/inputbox.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/inputbox.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/inputbox.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -7,8 +7,8 @@
ATTRIB(NexuizInputBox, image, string, SKINGFX_INPUTBOX)
ATTRIB(NexuizInputBox, onChange, void(entity, entity), SUB_Null)
ATTRIB(NexuizInputBox, onChangeEntity, entity, NULL)
- ATTRIB(NexuizInputBox, keepspaceLeft, float, SKINMARGIN_INPUTBOX)
- ATTRIB(NexuizInputBox, keepspaceRight, float, SKINMARGIN_INPUTBOX)
+ ATTRIB(NexuizInputBox, marginLeft, float, SKINMARGIN_INPUTBOX_CHARS)
+ ATTRIB(NexuizInputBox, marginRight, float, SKINMARGIN_INPUTBOX_CHARS)
ATTRIB(NexuizInputBox, color, vector, SKINCOLOR_INPUTBOX_N)
ATTRIB(NexuizInputBox, colorF, vector, SKINCOLOR_INPUTBOX_F)
@@ -17,6 +17,7 @@
ATTRIB(NexuizInputBox, cvarName, string, string_null)
METHOD(NexuizInputBox, loadCvars, void(entity))
METHOD(NexuizInputBox, saveCvars, void(entity))
+ METHOD(NexuizInputBox, keyDown, float(entity, float, float, float))
ENDCLASS(NexuizInputBox)
entity makeNexuizInputBox(float, string);
#endif
@@ -63,4 +64,18 @@
{
cvar_set(me.cvarName, me.text);
}
+float keyDownNexuizInputBox(entity me, float key, float ascii, float shift)
+{
+ float r;
+ r = 0;
+ if(key == K_ENTER)
+ if(me.cvarName)
+ {
+ me.saveCvars(me);
+ r = 1;
+ }
+ if(keyDownInputBox(me, key, ascii, shift))
+ r = 1;
+ return r;
+}
#endif
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c 2008-08-12 12:20:43 UTC (rev 4120)
@@ -16,6 +16,8 @@
ATTRIB(NexuizServerList, columnNameSize, float, 0)
ATTRIB(NexuizServerList, columnMapOrigin, float, 0)
ATTRIB(NexuizServerList, columnMapSize, float, 0)
+ ATTRIB(NexuizServerList, columnTypeOrigin, float, 0)
+ ATTRIB(NexuizServerList, columnTypeSize, float, 0)
ATTRIB(NexuizServerList, columnPlayersOrigin, float, 0)
ATTRIB(NexuizServerList, columnPlayersSize, float, 0)
@@ -35,6 +37,7 @@
ATTRIB(NexuizServerList, sortButton2, entity, NULL)
ATTRIB(NexuizServerList, sortButton3, entity, NULL)
ATTRIB(NexuizServerList, sortButton4, entity, NULL)
+ ATTRIB(NexuizServerList, sortButton5, entity, NULL)
ATTRIB(NexuizServerList, connectButton, entity, NULL)
ATTRIB(NexuizServerList, currentSortOrder, float, 0)
ATTRIB(NexuizServerList, currentSortField, float, -1)
@@ -61,6 +64,8 @@
float SLIST_FIELD_NUMBOTS;
float SLIST_FIELD_PROTOCOL;
float SLIST_FIELD_FREESLOTS;
+float SLIST_FIELD_PLAYERS;
+float SLIST_FIELD_QCSTATUS;
void ServerList_UpdateFieldIDs()
{
SLIST_FIELD_CNAME = gethostcacheindexforkey( "cname" );
@@ -75,6 +80,8 @@
SLIST_FIELD_NUMBOTS = gethostcacheindexforkey( "numbots" );
SLIST_FIELD_PROTOCOL = gethostcacheindexforkey( "protocol" );
SLIST_FIELD_FREESLOTS = gethostcacheindexforkey( "freeslots" );
+ SLIST_FIELD_PLAYERS = gethostcacheindexforkey( "players" );
+ SLIST_FIELD_QCSTATUS = gethostcacheindexforkey( "qcstatus" );
}
entity makeNexuizServerList()
@@ -124,17 +131,35 @@
else */
{
float m;
+ string s, typestr;
+ s = me.filterString;
+
+ m = strstrofs(s, ":", 0);
+ if(m >= 0)
+ {
+ typestr = substring(s, 0, m);
+ s = substring(s, m + 1, strlen(s) - m - 1);
+ while(substring(s, 0, 1) == " ")
+ s = substring(s, 1, strlen(s) - 1);
+ }
+ else
+ typestr = "";
+
m = SLIST_MASK_AND - 1;
resethostcachemasks();
if(!me.filterShowFull)
sethostcachemasknumber(++m, SLIST_FIELD_FREESLOTS, 1, SLIST_TEST_GREATEREQUAL);
if(!me.filterShowEmpty)
sethostcachemasknumber(++m, SLIST_FIELD_NUMHUMANS, 1, SLIST_TEST_GREATEREQUAL);
+ if(typestr != "")
+ sethostcachemaskstring(++m, SLIST_FIELD_QCSTATUS, strcat(typestr, ":"), SLIST_TEST_STARTSWITH);
m = SLIST_MASK_OR - 1;
- if(me.filterString)
+ if(s != "")
{
- sethostcachemaskstring(++m, SLIST_FIELD_NAME, me.filterString, SLIST_TEST_CONTAINS);
- sethostcachemaskstring(++m, SLIST_FIELD_MAP, me.filterString, SLIST_TEST_CONTAINS);
+ sethostcachemaskstring(++m, SLIST_FIELD_NAME, s, SLIST_TEST_CONTAINS);
+ sethostcachemaskstring(++m, SLIST_FIELD_MAP, s, SLIST_TEST_CONTAINS);
+ sethostcachemaskstring(++m, SLIST_FIELD_PLAYERS, s, SLIST_TEST_CONTAINS);
+ sethostcachemaskstring(++m, SLIST_FIELD_QCSTATUS, strcat(s, ":"), SLIST_TEST_STARTSWITH);
}
sethostcachesort(me.currentSortField, me.currentSortOrder < 0);
resorthostcache();
@@ -217,6 +242,52 @@
{
me.setSortOrder(me, SLIST_FIELD_NUMHUMANS, -1);
}
+void ServerList_TypeSort_Click(entity btn, entity me)
+{
+ string s, t;
+ float i, m;
+ s = me.filterString;
+ m = strstrofs(s, ":", 0);
+ if(m >= 0)
+ {
+ s = substring(s, 0, m);
+ while(substring(s, m+1, 1) == " ") // skip spaces
+ ++m;
+ }
+ else
+ s = "";
+
+ for(i = 1; ; ++i) // 20 modes ought to be enough for anyone
+ {
+ t = GametypeNameFromType(i);
+ if(i > 1)
+ if(t == GametypeNameFromType(0)) // it repeats (default case)
+ {
+ // no type was found
+ // choose the first one
+ s = t;
+ break;
+ }
+ if(s == GametypeNameFromType(i))
+ {
+ // the type was found
+ // choose the next one
+ s = GametypeNameFromType(i + 1);
+ if(s == GametypeNameFromType(0))
+ s = "";
+ break;
+ }
+ }
+
+ if(s != "")
+ s = strcat(s, ":");
+ s = strcat(s, substring(me.filterString, m+1, strlen(me.filterString) - m - 1));
+
+ me.controlledTextbox.setText(me.controlledTextbox, s);
+ me.controlledTextbox.keyDown(me.controlledTextbox, K_END, 0, 0);
+ me.controlledTextbox.keyUp(me.controlledTextbox, K_END, 0, 0);
+ //ServerList_Filter_Change(me.controlledTextbox, me);
+}
void ServerList_Filter_Change(entity box, entity me)
{
if(me.filterString)
@@ -246,7 +317,8 @@
me.sortButton1.forcePressed = (field == SLIST_FIELD_PING);
me.sortButton2.forcePressed = (field == SLIST_FIELD_NAME);
me.sortButton3.forcePressed = (field == SLIST_FIELD_MAP);
- me.sortButton4.forcePressed = (field == SLIST_FIELD_NUMHUMANS);
+ me.sortButton4.forcePressed = 0;
+ me.sortButton5.forcePressed = (field == SLIST_FIELD_NUMHUMANS);
me.selectedItem = 0;
if(me.selectedServer)
strunzone(me.selectedServer);
@@ -281,16 +353,19 @@
me.columnPingOrigin = 0;
me.columnPingSize = me.realFontSize_x * 4;
me.columnMapSize = me.realFontSize_x * 12;
+ me.columnTypeSize = me.realFontSize_x * 4;
me.columnPlayersSize = me.realFontSize_x * 6;
- me.columnNameSize = 1 - me.columnPlayersSize - me.columnMapSize - me.columnPingSize - 3 * me.realFontSize_x;
+ me.columnNameSize = 1 - me.columnPlayersSize - me.columnMapSize - me.columnPingSize - me.columnTypeSize - 4 * me.realFontSize_x;
me.columnNameOrigin = me.columnPingOrigin + me.columnPingSize + me.realFontSize_x;
me.columnMapOrigin = me.columnNameOrigin + me.columnNameSize + me.realFontSize_x;
- me.columnPlayersOrigin = me.columnMapOrigin + me.columnMapSize + me.realFontSize_x;
+ me.columnTypeOrigin = me.columnMapOrigin + me.columnMapSize + me.realFontSize_x;
+ me.columnPlayersOrigin = me.columnTypeOrigin + me.columnTypeSize + me.realFontSize_x;
me.positionSortButton(me, me.sortButton1, me.columnPingOrigin, me.columnPingSize, "Ping", ServerList_PingSort_Click);
me.positionSortButton(me, me.sortButton2, me.columnNameOrigin, me.columnNameSize, "Host name", ServerList_NameSort_Click);
me.positionSortButton(me, me.sortButton3, me.columnMapOrigin, me.columnMapSize, "Map", ServerList_MapSort_Click);
- me.positionSortButton(me, me.sortButton4, me.columnPlayersOrigin, me.columnPlayersSize, "Players", ServerList_PlayerSort_Click);
+ me.positionSortButton(me, me.sortButton4, me.columnTypeOrigin, me.columnTypeSize, "Type", ServerList_TypeSort_Click);
+ me.positionSortButton(me, me.sortButton5, me.columnPlayersOrigin, me.columnPlayersSize, "Players", ServerList_PlayerSort_Click);
float f;
f = me.currentSortField;
@@ -352,13 +427,21 @@
theColor = eX;
theAlpha *= SKINALPHA_SERVERLIST_HIGHPING;
}
-
+
s = ftos(p);
draw_Text(me.realUpperMargin * eY + (me.columnPingSize - draw_TextWidth(s, 0) * me.realFontSize_x) * eX, s, me.realFontSize, theColor, theAlpha, 0);
s = draw_TextShortenToWidth(gethostcachestring(SLIST_FIELD_NAME, i), me.columnNameSize / me.realFontSize_x, 0);
draw_Text(me.realUpperMargin * eY + me.columnNameOrigin * eX, s, me.realFontSize, theColor, theAlpha, 0);
s = draw_TextShortenToWidth(gethostcachestring(SLIST_FIELD_MAP, i), me.columnMapSize / me.realFontSize_x, 0);
draw_Text(me.realUpperMargin * eY + (me.columnMapOrigin + (me.columnMapSize - draw_TextWidth(s, 0) * me.realFontSize_x) * 0.5) * eX, s, me.realFontSize, theColor, theAlpha, 0);
+ s = gethostcachestring(SLIST_FIELD_QCSTATUS, i);
+ p = strstrofs(s, ":", 0);
+ if(p >= 0)
+ s = substring(s, 0, p);
+ else
+ s = "";
+ s = draw_TextShortenToWidth(s, me.columnMapSize / me.realFontSize_x, 0);
+ draw_Text(me.realUpperMargin * eY + (me.columnTypeOrigin + (me.columnTypeSize - draw_TextWidth(s, 0) * me.realFontSize_x) * 0.5) * eX, s, me.realFontSize, theColor, theAlpha, 0);
s = strcat(ftos(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i)), "/", ftos(gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i)));
draw_Text(me.realUpperMargin * eY + (me.columnPlayersOrigin + (me.columnPlayersSize - draw_TextWidth(s, 0) * me.realFontSize_x) * 0.5) * eX, s, me.realFontSize, theColor, theAlpha, 0);
}
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/util.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/util.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/util.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -26,6 +26,28 @@
forAllDescendants(root, loadCvarsOf, SUB_Null_ee, NULL);
}
+.string cvarNames_Multi;
+.void(entity me) saveCvars_Multi;
+void saveCvarsMulti(entity me)
+{
+ float n, i;
+ string s;
+
+ me.saveCvars_Multi(me);
+ s = cvar_string(me.cvarName);
+
+ n = tokenize(me.cvarNames_Multi);
+ for(i = 0; i < n; ++i)
+ cvar_set(argv(i), s);
+}
+
+void makeMulti(entity e, string otherCvars)
+{
+ e.cvarNames_Multi = otherCvars;
+ e.saveCvars_Multi = e.saveCvars;
+ e.saveCvars = saveCvarsMulti;
+}
+
.void(entity) draw_setDependent;
.string cvar_setDependent;
.float cvarMin_setDependent;
Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/util.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/util.qh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/util.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -2,6 +2,8 @@
void saveAllCvars(entity root);
void loadAllCvars(entity root);
+void makeMulti(entity me, string otherCvars);
+
void setDependent(entity e, string theCvarName, float theCvarMin, float theCvarMax);
void setDependentAND(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max);
void setDependentOR(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max);
Modified: branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -73,6 +73,8 @@
// item: button
SKINSTRING(GFX_BUTTON, "button");
SKINSTRING(GFX_BUTTON_GRAY, "buttongray");
+ SKINSTRING(GFX_BUTTON_BIG, "bigbutton");
+ SKINSTRING(GFX_BUTTON_BIG_GRAY, "bigbuttongray");
SKINVECTOR(COLOR_BUTTON_N, '1 1 1');
SKINVECTOR(COLOR_BUTTON_C, '1 1 1');
SKINVECTOR(COLOR_BUTTON_F, '1 1 1');
@@ -116,12 +118,13 @@
SKINFLOAT(MARGIN_RIGHT, 8);
SKINFLOAT(MARGIN_COLUMNS, 4);
SKINFLOAT(MARGIN_ROWS, 4);
+ SKINFLOAT(HEIGHT_DIALOGBORDER, 1);
// item: input box
SKINSTRING(GFX_INPUTBOX, "inputbox");
SKINVECTOR(COLOR_INPUTBOX_N, '1 1 1');
SKINVECTOR(COLOR_INPUTBOX_F, '1 1 1');
- SKINFLOAT(MARGIN_INPUTBOX, 0.02);
+ SKINFLOAT(MARGIN_INPUTBOX_CHARS, 1);
// item: key grabber
SKINVECTOR(COLOR_KEYGRABBER_TITLES, '1 1 1');
Modified: branches/nexuiz-2.0/data/qcsrc/server/arena.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/arena.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/arena.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -28,10 +28,12 @@
if(g_arena)
if(cvar("g_arena_warmup"))
warmup = time + cvar("g_arena_warmup");
-
+
lms_lowest_lives = 999;
lms_next_place = player_count;
+ race_ReadyRestart();
+
self = nextent(world);
while(self)
{
@@ -79,7 +81,7 @@
}
else if(self.flags & FL_PROJECTILE) // remove any projectiles left
{
- sound(self, CHAN_BODY, "misc/null.wav", 1, ATTN_NORM);
+ sound(self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM);
remove(self);
}
else if(self.isdecor)
@@ -148,6 +150,8 @@
if(g_arena)
if(champion)
UpdateFrags(champion, +1);
+
+ Score_ClearAll();
}
void Spawnqueue_Insert(entity e)
Modified: branches/nexuiz-2.0/data/qcsrc/server/bots.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/bots.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/bots.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1240,6 +1240,7 @@
e.nearestwaypointtimeout = time + random() * 3 + 5;
}
//dprint(e.classname, " ", ftos(f));
+ //dprint("-- checking ", e.classname, " (with cost ", ftos(e.nearestwaypoint.wpcost), ")\n");
if (e.nearestwaypoint)
if (e.nearestwaypoint.wpcost < 10000000)
{
Modified: branches/nexuiz-2.0/data/qcsrc/server/campaign.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/campaign.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/campaign.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -81,8 +81,6 @@
{
while((l = fgets(fh)))
{
- cvarname = strcat1(cvarname);
- contents = strcat1(contents);
len = tokenize(l);
if(len != 3)
continue;
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -43,16 +43,45 @@
if(spot.team != teamcheck)
return -1;
+ if(race_spawns)
+ if(spot.target == "")
+ return -1;
+
// filter out spots for assault
if(spot.target != "") {
local entity ent;
+ float good;
ent = find(world, targetname, spot.target);
while(ent) {
if(ent.classname == "target_objective")
+ {
if(ent.health < 0 || ent.health >= ASSAULT_VALUE_INACTIVE)
return -1;
+ good = 1;
+ }
+ else if(ent.classname == "trigger_race_checkpoint")
+ {
+ if(self.classname == "player") // spectators may spawn everywhere
+ {
+ if(ent.race_checkpoint != race_PreviousCheckpoint(self.race_checkpoint))
+ return -1;
+ float pl;
+ pl = self.race_place;
+ if(pl > race_highest_place_spawn)
+ pl = 0;
+ if(spot.race_place != pl)
+ return -1;
+ }
+ good = 1;
+ }
+ else
+ {
+ }
ent = find(ent, targetname, spot.target);
}
+
+ if(!good)
+ return -1;
}
player = playerlist;
@@ -354,6 +383,9 @@
void PutObserverInServer (void)
{
entity spot;
+
+ race_PreSpawnObserver();
+
spot = SelectSpawnPoint (TRUE);
if(!spot)
error("No spawnpoints for observers?!?\n");
@@ -446,15 +478,14 @@
if(g_arena)
{
- if(self.frags != -2)
+ if(self.version_mismatch)
{
- Spawnqueue_Insert(self);
- // FIXME what IS this?
+ Spawnqueue_Unmark(self);
+ Spawnqueue_Remove(self);
}
else
{
- Spawnqueue_Unmark(self);
- Spawnqueue_Remove(self);
+ Spawnqueue_Insert(self);
}
}
else if(g_lms)
@@ -568,6 +599,8 @@
if(self.classname == "player") {
entity spot;
+ race_PreSpawn();
+
spot = SelectSpawnPoint (FALSE);
if(!spot)
{
@@ -581,6 +614,8 @@
self.iscreature = TRUE;
self.movetype = MOVETYPE_WALK;
self.solid = SOLID_SLIDEBOX;
+ if(independent_players)
+ MAKE_INDEPENDENT_PLAYER(self);
self.flags = FL_CLIENT;
self.takedamage = DAMAGE_AIM;
if(g_minstagib)
@@ -692,6 +727,8 @@
self.lms_traveled_distance = 0;
self.speedrunning = FALSE;
+ race_PostSpawn(spot);
+
if(cvar("spawn_debug"))
{
sprint(self, strcat("spawnpoint origin: ", vtos(spot.origin), "\n"));
@@ -702,7 +739,7 @@
//stuffcmd(self, "set viewsize $tmpviewsize \n");
if (cvar("g_spawnsound"))
- sound (self, CHAN_AUTO, "misc/spawn.wav", 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, "misc/spawn.wav", VOL_BASE, ATTN_NORM);
if(g_assault) {
if(self.team == assault_attacker_team)
@@ -830,7 +867,7 @@
if(clienttype(self.owner) == CLIENTTYPE_REAL)
{
if(self.cnt <= 10)
- play2(self.owner, strcat("announcer/robotic/", ftos(self.cnt), ".ogg"));
+ announce(self.owner, strcat("announcer/robotic/", ftos(self.cnt), ".ogg"));
if(self.owner.killindicator_teamchange)
{
if(self.owner.killindicator_teamchange == -1)
@@ -1022,6 +1059,8 @@
bot_clientconnect();
+ race_PreSpawnObserver();
+
//if(g_domination)
// dom_player_join_team(self);
@@ -1175,6 +1214,7 @@
void(entity e) DropFlag;
.entity chatbubbleentity;
.entity teambubbleentity;
+void ReadyCount();
//void() ctf_clientdisconnect;
void ClientDisconnect (void)
{
@@ -1253,6 +1293,8 @@
// free cvars
GetCvars(-1);
self.playerid = 0;
+
+ ReadyCount();
}
.float BUTTON_CHAT;
@@ -1696,7 +1738,7 @@
{
self.respawn_countdown = number - 1;
if(ceil(self.death_time - (time + 0.5)) == number) // only say it if it is the same number even in 0.5s; to prevent overlapping sounds
- play2(self, strcat("announcer/robotic/", ftos(number), ".ogg"));
+ announce(self, strcat("announcer/robotic/", ftos(number), ".ogg"));
}
}
}
@@ -1808,12 +1850,12 @@
void ObserverThink()
{
if (self.flags & FL_JUMPRELEASED) {
- if (self.BUTTON_JUMP && self.version == cvar("gameversion")) {
+ if (self.BUTTON_JUMP && !self.version_mismatch) {
self.welcomemessage_time = 0;
self.flags = self.flags - FL_JUMPRELEASED;
LeaveSpectatorMode();
return;
- } else if(self.BUTTON_ATCK && self.version == cvar("gameversion")) {
+ } else if(self.BUTTON_ATCK && !self.version_mismatch) {
self.welcomemessage_time = 0;
self.flags = self.flags - FL_JUMPRELEASED;
if(SpectateNext() == 1) {
@@ -1834,7 +1876,7 @@
void SpectatorThink()
{
if (self.flags & FL_JUMPRELEASED) {
- if (self.BUTTON_JUMP && self.version == cvar("gameversion")) {
+ if (self.BUTTON_JUMP && !self.version_mismatch) {
self.welcomemessage_time = 0;
self.flags = self.flags - FL_JUMPRELEASED;
LeaveSpectatorMode();
@@ -2156,6 +2198,8 @@
=============
*/
.float idlekick_lasttimeleft;
+.float race_penalty;
+.float race_penalty_nagged;
void PlayerPostThink (void)
{
// Savage: Check for nameless players
@@ -2171,7 +2215,7 @@
if(timeleft <= 0)
{
bprint("^3", self.netname, "^3 was kicked for idling.\n");
- play2(self, "announcer/robotic/terminated.ogg");
+ announce(self, "announcer/robotic/terminated.ogg");
dropclient(self);
return;
}
@@ -2180,7 +2224,7 @@
if(timeleft != self.idlekick_lasttimeleft)
{
centerprint_atprio(self, CENTERPRIO_IDLEKICK, strcat("^3Stop idling!\n^3Disconnecting in ", ftos(timeleft), "..."));
- play2(self, strcat("announcer/robotic/", ftos(timeleft), ".ogg"));
+ announce(self, strcat("announcer/robotic/", ftos(timeleft), ".ogg"));
}
}
else
@@ -2207,12 +2251,35 @@
if(time < restart_countdown) {
if (!cvar("sv_ready_restart_after_countdown"))
{
+ if(self.movement != '0 0 0' && g_race && !g_race_qualifying)
+ {
+ if(time < restart_countdown - 2)
+ {
+ if(!self.race_penalty_nagged)
+ {
+ centerprint_atprio(self, CENTERPRIO_IDLEKICK, "^1DO NOT MOVE DURING THE COUNTDOWN.");
+ self.race_penalty_nagged = 1;
+ }
+ }
+ else if(!self.race_penalty)
+ {
+ centerprint_atprio(self, CENTERPRIO_IDLEKICK, "^1FIVE SECONDS PENALTY.");
+ self.race_penalty = time + 5;
+ }
+ }
self.movetype = MOVETYPE_NONE;
self.velocity = '0 0 0';
self.avelocity = '0 0 0';
self.movement = '0 0 0';
}
}
+ else if (time < self.race_penalty)
+ {
+ self.movetype = MOVETYPE_NONE;
+ self.velocity = '0 0 0';
+ self.avelocity = '0 0 0';
+ self.movement = '0 0 0';
+ }
else
{
//allow the player to move again if sv_ready_restart_after_countdown is not used and countdown is over
@@ -2222,6 +2289,8 @@
{
self.movetype = MOVETYPE_WALK;
}
+ self.race_penalty = 0;
+ self.race_penalty_nagged = 0;
}
}
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -13,6 +13,7 @@
.float swamp_slowdown;
.float lastflags;
.float lastground;
+.float wasFlying;
#define SHTEST_DELTA 15
.float shtest_next;
@@ -82,7 +83,7 @@
player_setanim(self.anim_jump, FALSE, TRUE, TRUE);
if(g_jump_grunt)
- PlayerSound(playersound_jump, CHAN_AUTO, 0);
+ PlayerSound(playersound_jump, CHAN_PLAYER, 0);
}
void CheckWaterJump()
@@ -234,7 +235,13 @@
}
if(self.flags & FL_ONGROUND)
- if not(self.lastflags & FL_ONGROUND)
+ if(self.wasFlying)
+ {
+ self.wasFlying = 0;
+
+ if(self.waterlevel < 2)
+ if(time >= self.ladder_time)
+ if not(self.hook)
{
self.nextstep = time + 0.3 + random() * 0.1;
trace_dphitq3surfaceflags = 0;
@@ -242,12 +249,16 @@
if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
{
if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
- GlobalSound(globalsound_metalfall, CHAN_AUTO, 0);
+ GlobalSound(globalsound_metalfall, CHAN_PLAYER, 0);
else
- GlobalSound(globalsound_fall, CHAN_AUTO, 0);
+ GlobalSound(globalsound_fall, CHAN_PLAYER, 0);
}
}
+ }
+ if(IsFlying(self))
+ self.wasFlying = 1;
+
if(self.classname == "player")
{
if(sv_doublejump)
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -267,11 +267,11 @@
take = bound(0, damage - save, damage);
if (save > 10)
- sound (self, CHAN_IMPACT, "misc/armorimpact.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM);
else if (take > 30)
- sound (self, CHAN_IMPACT, "misc/bodyimpact2.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM);
else if (take > 10)
- sound (self, CHAN_IMPACT, "misc/bodyimpact1.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM);
if(sv_gentle < 1) {
if (take > 50)
@@ -344,7 +344,7 @@
TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
}
- sound (self, CHAN_VOICE, "misc/gib.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PLAYER, "misc/gib.wav", VOL_BASE, ATTN_NORM);
}
}
}
@@ -354,7 +354,6 @@
void PlayerDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
{
local float take, save, waves, sdelay;
- float painsequence;
damage = damage * bound(1.0, self.cvar_cl_handicap, 100.0);
if(sv_gentle > 0) {
@@ -379,11 +378,11 @@
}
if (save > 10)
- sound (self, CHAN_IMPACT, "misc/armorimpact.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM);
else if (take > 30)
- sound (self, CHAN_IMPACT, "misc/bodyimpact2.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM);
else if (take > 10)
- sound (self, CHAN_IMPACT, "misc/bodyimpact1.wav", 1, ATTN_NORM); // FIXME possibly remove them?
+ sound (self, CHAN_PROJECTILE, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM); // FIXME possibly remove them?
if (take > 50)
TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.1,1);
@@ -413,13 +412,13 @@
// exclude pain sounds for laserjumps as long as you aren't REALLY low on health and would die of the next two
{
if(self.health > 75) // TODO make a "gentle" version?
- PlayerSound(playersound_pain100, CHAN_AUTO, 0);
+ PlayerSound(playersound_pain100, CHAN_PAIN, 0);
else if(self.health > 50)
- PlayerSound(playersound_pain75, CHAN_AUTO, 0);
+ PlayerSound(playersound_pain75, CHAN_PAIN, 0);
else if(self.health > 25)
- PlayerSound(playersound_pain50, CHAN_AUTO, 0);
+ PlayerSound(playersound_pain50, CHAN_PAIN, 0);
else if(self.health > 1)
- PlayerSound(playersound_pain25, CHAN_AUTO, 0);
+ PlayerSound(playersound_pain25, CHAN_PAIN, 0);
}
}
@@ -464,9 +463,9 @@
if(sv_gentle < 1) // TODO make a "gentle" version?
{
if(deathtype == DEATH_DROWN)
- PlayerSound(playersound_drown, CHAN_AUTO, 0);
+ PlayerSound(playersound_drown, CHAN_PAIN, 0);
else
- PlayerSound(playersound_death, CHAN_AUTO, 0);
+ PlayerSound(playersound_death, CHAN_PAIN, 0);
}
// get rid of kill indicator
@@ -732,26 +731,6 @@
self.last_selected_player = self.selected_player;
}
-float precache_sound_index (string s) = #19;
-void soundto(entity e, entity sounddest, float chan, string samp, float vol, float atten)
-{
- vector o;
- if(clienttype(sounddest) != CLIENTTYPE_REAL)
- return;
- o = e.origin + 0.5 * (e.mins + e.maxs);
- msg_entity = sounddest;
- WriteByte(MSG_ONE, 6);
- WriteByte(MSG_ONE, 27); // all bits except SND_LOOPING
- WriteByte(MSG_ONE, vol * 255);
- WriteByte(MSG_ONE, atten * 64);
- WriteEntity(MSG_ONE, e);
- WriteByte(MSG_ONE, chan);
- WriteShort(MSG_ONE, precache_sound_index(samp));
- WriteCoord(MSG_ONE, o_x);
- WriteCoord(MSG_ONE, o_y);
- WriteCoord(MSG_ONE, o_z);
-}
-
float GetVoiceMessageTeamsayType(string type)
{
if(type == "taunt")
@@ -882,7 +861,7 @@
field = GetVoiceMessageSampleField(argv(0));
if(GetPlayerSoundSampleField_notFound)
continue;
- if not(GetPlayerSoundSampleField_fixed)
+ if(GetPlayerSoundSampleField_fixed)
if not(first)
continue;
if(self.field)
@@ -923,21 +902,33 @@
if(self.pusher)
if(self.pusher.team == self.team)
{
- soundto(self, self.pusher, chan, sample, 1, ATTN_NONE);
- soundto(self, self, chan, sample, 1, ATTN_NONE);
+ msg_entity = self.pusher;
+ soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE);
+ msg_entity = self;
+ soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE);
}
}
else if(teamsay == 0) // to everyone
{
// broadcast the sound, but it's directional
- sound(self, chan, sample, 1, ATTN_NORM);
+ sound(self, chan, sample, VOL_BASE, ATTN_NORM);
}
else if(teamsay == 1) // to the same team
{
- entity e;
- FOR_EACH_REALCLIENT(e)
- if(!teams_matter || e.team == self.team)
- soundto(self, e, chan, sample, 1, ATTN_NONE);
+ if(teams_matter)
+ {
+ entity e;
+ FOR_EACH_REALCLIENT(e)
+ if(!teams_matter || e.team == self.team)
+ {
+ msg_entity = e;
+ soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE);
+ }
+ }
+ else
+ {
+ sound(self, chan, sample, VOL_BASE, ATTN_NONE);
+ }
}
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -252,7 +252,7 @@
}
else if (self.weaponentity.state == WS_READY)
{
- sound (self, CHAN_WEAPON, "weapons/weapon_switch.wav", 1, ATTN_NORM);
+ sound (self, CHAN_WEAPON, "weapons/weapon_switch.wav", VOL_BASE, ATTN_NORM);
self.weaponentity.state = WS_DROP;
// set up weapon switch think in the future, and start drop anim
weapon_thinkf(WFRAME_IDLE, cvar("g_balance_weaponswitchdelay"), w_clear);
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -119,11 +119,11 @@
self.punchangle_x = recoil * -1;
if (snd != "")
- sound (self, CHAN_WEAPON, snd, 1, ATTN_NORM);
+ sound (self, CHAN_WEAPON, snd, VOL_BASE, ATTN_NORM);
if (self.items & IT_STRENGTH)
if (!g_minstagib)
- sound (self, CHAN_AUTO, "weapons/strength_fire.wav", 1, ATTN_NORM);
+ sound (self, CHAN_AUTO, "weapons/strength_fire.wav", VOL_BASE, ATTN_NORM);
};
void LaserTarget_Think()
@@ -422,12 +422,13 @@
};
// perform weapon to attack (weaponstate and attack_finished check is here)
+.float race_penalty;
float weapon_prepareattack(float secondary, float attacktime)
{
//if sv_ready_restart_after_countdown is set, don't allow the player to shoot
//if all players readied up and the countdown is running
if (cvar("sv_ready_restart_after_countdown"))
- if(time < restart_countdown) {
+ if(time < restart_countdown || time < self.race_penalty) {
return FALSE;
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -197,7 +197,7 @@
if(self.version != cvar("gameversion"))
{
self.classname = "observer";
- self.frags = -2;
+ self.version_mismatch = 1;
PutClientInServer();
} else if(cvar("g_campaign") || cvar("g_balance_teams") || cvar("g_balance_teams_force")) {
//JoinBestTeam(self, FALSE, TRUE);
@@ -378,44 +378,14 @@
}
}
-/**
- * Counts how many players are ready. If not enough players are ready, the function
- * does nothing. If all players are ready, the timelimit will be extended and the
- * restart_countdown variable is set to allow other functions like PlayerPostThink
- * to detect that the countdown is now active. If the cvar sv_ready_restart_after_countdown
- * is not set the map will be resetted.
- *
- * Function is called after the server receives a 'ready' sign from a player.
- */
-void ReadyCount()
+void ReadyRestart()
{
local entity e;
- local float r, p;
- FOR_EACH_REALPLAYER(e)
- {
- p += 1;
- if(e.ready)
- r += 1;
- }
-
- if(cvar("sv_ready_restart_nag")) {
- if(!readyNagActive) {
- readyNagger = spawn();
- readyNagger.think = readyNagger_Think;
- readyNagger.cnt = cvar("sv_ready_restart_nag_duration");
- readyNagger.nextthink = time;
- readyNagActive = 1;
- }
- }
-
- if(!p || r < p)
- return;
-
bprint("^1Server is restarting...\n");
// no arena, assault support yet...
- if(g_arena | g_assault | gameover | intermission_running)
+ if(g_arena | g_assault | gameover | intermission_running | race_completing)
localcmd("restart\n");
if(readyNagActive) { //if every player is ready, remove the ready-nagger again
@@ -435,7 +405,6 @@
start_health = cvar("g_balance_health_start");
start_armorvalue = cvar("g_balance_armor_start");
}
-
restart_countdown = time + RESTART_COUNTDOWN;
restart_mapalreadyrestarted = 0; //reset this var, needed when cvar sv_ready_restart_repeatable is in use
//reset the .ready status of all players (also spectators)
@@ -452,6 +421,7 @@
if(timelimit_orig)
cvar_set("timelimit", ftos(timelimit_orig + ceil(restart_countdown)/60));
}
+
if(cvar("teamplay_lockonrestart") && teams_matter) {
lockteams = 1;
bprint("^1The teams are now locked.\n");
@@ -473,20 +443,54 @@
}
//play the prepareforbattle sound to everyone
- sound(world, CHAN_AUTO, "announcer/robotic/prepareforbattle.wav", 1, ATTN_NONE);
+ play2all("announcer/robotic/prepareforbattle.wav");
//reset map immediately if this cvar is not set
if (!cvar("sv_ready_restart_after_countdown"))
- {
reset_map();
- Score_ClearAll();
- }
if(cvar("sv_eventlog"))
GameLogEcho(":restart", FALSE);
}
/**
+ * Counts how many players are ready. If not enough players are ready, the function
+ * does nothing. If all players are ready, the timelimit will be extended and the
+ * restart_countdown variable is set to allow other functions like PlayerPostThink
+ * to detect that the countdown is now active. If the cvar sv_ready_restart_after_countdown
+ * is not set the map will be resetted.
+ *
+ * Function is called after the server receives a 'ready' sign from a player.
+ */
+void ReadyCount()
+{
+ local entity e;
+ local float r, p;
+
+ FOR_EACH_REALPLAYER(e)
+ {
+ p += 1;
+ if(e.ready)
+ r += 1;
+ }
+
+ if(cvar("sv_ready_restart_nag")) {
+ if(!readyNagActive) {
+ readyNagger = spawn();
+ readyNagger.think = readyNagger_Think;
+ readyNagger.cnt = cvar("sv_ready_restart_nag_duration");
+ readyNagger.nextthink = time;
+ readyNagActive = 1;
+ }
+ }
+
+ if(!p || r < p)
+ return;
+
+ ReadyRestart();
+}
+
+/**
* Centerprints the information to all players who didn't ready up yet to do so.
*/
void readyNagger_Think() {
@@ -541,7 +545,7 @@
centerprint(plr, s);
}
}
- sound(world, CHAN_AUTO, "announcer/robotic/begin.wav", 1, ATTN_NONE);
+ play2all("announcer/robotic/begin.wav");
remove(self);
return;
@@ -555,7 +559,7 @@
}
if(self.cnt <= 3) {
- sound(world, CHAN_AUTO, strcat("announcer/robotic/", ftos(self.cnt), ".ogg"), 1, ATTN_NONE);
+ play2all(strcat("announcer/robotic/", ftos(self.cnt), ".ogg"));
}
self.nextthink = time + 1;
self.cnt -= 1;
@@ -612,7 +616,7 @@
timeoutHandler.nextthink = time; //always let the entity think asap
//inform all connected clients about the timeout call
- sound(world, CHAN_AUTO, "announcer/robotic/timeoutcalled.wav", 1, ATTN_NONE);
+ play2all("announcer/robotic/timeoutcalled.wav");
}
/**
Modified: branches/nexuiz-2.0/data/qcsrc/server/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -106,12 +106,13 @@
float TE_LAVASPLASH = 10;
float TE_TELEPORT = 11;
-float CHAN_AUTO = 0;
-float CHAN_WEAPON = 1;
-float CHAN_VOICE = 2;
-float CHAN_ITEM = 3;
-float CHAN_BODY = 4;
-float CHAN_IMPACT = 5;
+float CHAN_AUTO = 0; // Announcer/Chat, on player: Triggers/Items
+float CHAN_WEAPON = 1; // Weapon fire
+float CHAN_VOICE = 2; // Voice/Radio
+float CHAN_TRIGGER = 3; // Triggers/Items
+float CHAN_PROJECTILE = 4; // Projectiles
+float CHAN_PAIN = 6; // Pain
+float CHAN_PLAYER = 7; // Player body
float ATTN_NONE = 0;
float ATTN_NORM = 0.5;
Modified: branches/nexuiz-2.0/data/qcsrc/server/ctf.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/ctf.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/ctf.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -214,7 +214,7 @@
if (time > self.pain_finished)
{
bprint("The ", self.netname, " has returned to base\n");
- sound (e, CHAN_AUTO, self.noise3, 1, ATTN_NONE);
+ sound (self, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NONE);
LogCTF("returned", self.team, world);
ReturnFlag(self);
}
@@ -294,7 +294,7 @@
if (head.team == self.team)
UpdateFrags(head, cvar("g_ctf_flagscore_capture_team"));
- sound (self, CHAN_AUTO, self.noise2, 1, ATTN_NONE);
+ sound (other, CHAN_AUTO, self.noise2, VOL_BASE, ATTN_NONE);
WaypointSprite_DetachCarrier(other);
if(self.speedrunning)
FakeTimeLimit(other, -1);
@@ -325,7 +325,7 @@
UpdateFrags(other, cvar("g_ctf_flagscore_pickup"));
PlayerScore_Add(other, SP_CTF_PICKUPS, 1);
LogCTF("steal", self.team, other);
- sound (self, CHAN_AUTO, self.noise, 1, ATTN_NONE);
+ sound (other, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NONE);
FOR_EACH_PLAYER(player)
if(player.team == self.team)
@@ -352,7 +352,7 @@
UpdateFrags(other, cvar("g_ctf_flagscore_return_rogue"));
PlayerScore_Add(other, SP_CTF_RETURNS, 1);
LogCTF("return", self.team, other);
- sound (self, CHAN_AUTO, self.noise1, 1, ATTN_NONE);
+ sound (other, CHAN_AUTO, self.noise1, VOL_BASE, ATTN_NONE);
ReturnFlag(self);
}
else if (!other.flagcarried)
@@ -366,7 +366,7 @@
bprint(other.netname, "^7 picked up the ", self.netname, "\n");
UpdateFrags(other, cvar("g_ctf_flagscore_pickup"));
LogCTF("pickup", self.team, other);
- sound (self, CHAN_AUTO, self.noise, 1, ATTN_NONE);
+ sound (other, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NONE);
FOR_EACH_PLAYER(player)
if(player.team == self.team)
Modified: branches/nexuiz-2.0/data/qcsrc/server/defs.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/defs.qh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/defs.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -11,12 +11,15 @@
#define BUTTON_CHAT buttonchat
#define BUTTON_USE buttonuse
+#define VOL_BASE 0.7
+
// Globals
-float g_domination, g_ctf, g_tdm, g_keyhunt, g_onslaught, g_assault, g_arena, g_lms, g_runematch;
+float g_domination, g_ctf, g_tdm, g_keyhunt, g_onslaught, g_assault, g_arena, g_lms, g_runematch, g_race;
float g_cloaked, g_footsteps, g_jump_grunt, g_grappling_hook, g_instagib, g_laserguided_missile, g_midair, g_minstagib, g_nixnex, g_nixnex_with_laser, g_norecoil, g_rocketarena, g_vampire, g_minstagib_invis_alpha;
float g_tourney;
float g_ctf_win_mode;
+float g_race_qualifying;
float tourneyInMatchStage;
float sv_cheats;
@@ -477,3 +480,9 @@
void PlayerSound(.string samplefield, float channel, float teamsay); // 0 is normal, 1 is team, 2 is last attacker
void GlobalSound(string samplestring, float channel, float teamsay); // 0 is normal, 1 is team, 2 is last attacker
void VoiceMessage(string type);
+
+.float version_mismatch;
+
+float independent_players;
+#define IS_INDEPENDENT_PLAYER(e) ((e).solid == SOLID_TRIGGER)
+#define MAKE_INDEPENDENT_PLAYER(e) ((e).solid = SOLID_TRIGGER)
Modified: branches/nexuiz-2.0/data/qcsrc/server/domination.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/domination.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/domination.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -68,9 +68,12 @@
self.enemy = world;
if (head.noise != "")
- sound(self, CHAN_BODY, head.noise, 1, ATTN_NORM);
+ if(self.enemy)
+ sound(self.enemy, CHAN_AUTO, head.noise, VOL_BASE, ATTN_NORM);
+ else
+ sound(self, CHAN_TRIGGER, head.noise, VOL_BASE, ATTN_NORM);
if (head.noise1 != "")
- sound(self, CHAN_VOICE, head.noise1, 1, ATTN_NONE);
+ play2all(head.noise1);
//self.nextthink = time + cvar("g_domination_point_rate");
//self.think = dompointthink;
@@ -106,7 +109,6 @@
void dompointthink()
{
- local entity head;
local float waittime;
local float fragamt;
Modified: branches/nexuiz-2.0/data/qcsrc/server/extensions.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/extensions.qh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/extensions.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1235,6 +1235,14 @@
//description:
//this extension allows precache_model and precache_sound (and any variants) to be used during the game (with automatic messages to clients to precache the new model/sound indices), also setmodel/sound/ambientsound can be called without precaching first (they will cause an automatic precache).
+//DP_SV_QCSTATUS
+//idea: div0
+//darkplaces implementation: div0
+//Fields whose contents are used instead of frags, or set as "qcstatus" field
+//in the getstatus/getinfo response.
+string worldstatus;
+.string clientstatus;
+
//DP_SV_ROTATINGBMODEL
//idea: id Software
//darkplaces implementation: LordHavoc
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_casings.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_casings.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_casings.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -8,7 +8,7 @@
if (other.solid == SOLID_BSP)
if (vlen(self.velocity) >= 50)
if (time >= self.attack_finished_single)
- sound (self, CHAN_IMPACT, "weapons/tink1.wav", 0.5, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/tink1.wav", 0.5 * VOL_BASE, ATTN_NORM);
self.attack_finished_single = time + 0.2;
//self.touch = SUB_Null; // one tink is enough
//self.dest = self.origin - self.groundentity.origin;
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -1,17 +1,7 @@
float checkrules_firstblood;
-.float announcetime;
float yoda;
-void announce(entity player, string msg)
-{
- if(time > player.announcetime)
- if(clienttype(player) == CLIENTTYPE_REAL)
- {
- player.announcetime = time + 0.3;
- play2(player, msg);
- }
-}
float IsDifferentTeam(entity a, entity b)
{
@@ -226,7 +216,6 @@
else if (deathtype == DEATH_NOAMMO)
{
bprint ("^7",s, " ^7committed suicide. What's the point of living without ammo?\n");
- //sound (self, CHAN_BODY, "minstagib/mockery.wav", 1, ATTN_NONE);
}
else if (deathtype == DEATH_CAMP)
bprint ("^1",s, "^1 thought he found a nice camping ground\n");
@@ -277,9 +266,6 @@
if (!checkrules_firstblood)
{
checkrules_firstblood = TRUE;
- //sound(world, CHAN_AUTO, "announcer/firstblood.wav", 1, ATTN_NONE);
- //if (g_minstagib)
- //sound(world, CHAN_AUTO, "announce/male/mapkill1.wav", 1, ATTN_NONE);
if(sv_gentle)
bprint("^1",a, "^1 was the first to score", "\n");
else
@@ -527,37 +513,43 @@
// nullify damage if teamplay is on
if(deathtype != DEATH_TELEFRAG)
- if(attacker.team == targ.team)
if(attacker.classname == "player")
{
- if(teamplay == 1)
+ if(targ.classname == "player" && targ != attacker && (IS_INDEPENDENT_PLAYER(attacker) || IS_INDEPENDENT_PLAYER(targ)))
+ {
damage = 0;
- else if(attacker != targ)
+ force = '0 0 0';
+ }
+ else if(attacker.team == targ.team)
{
- if(teamplay == 3)
+ if(teamplay == 1)
damage = 0;
- else if(teamplay == 4)
+ else if(attacker != targ)
{
- if(targ.classname == "player" && targ.deadflag == DEAD_NO)
+ if(teamplay == 3)
+ damage = 0;
+ else if(teamplay == 4)
{
- mirrordamage = cvar("g_mirrordamage") * damage;
- mirrorforce = cvar("g_mirrordamage") * vlen(force);
- if(g_minstagib)
+ if(targ.classname == "player" && targ.deadflag == DEAD_NO)
{
- if(cvar("g_friendlyfire") == 0)
- damage = 0;
+ mirrordamage = cvar("g_mirrordamage") * damage;
+ mirrorforce = cvar("g_mirrordamage") * vlen(force);
+ if(g_minstagib)
+ {
+ if(cvar("g_friendlyfire") == 0)
+ damage = 0;
+ }
+ else
+ damage = cvar("g_friendlyfire") * damage;
+ // mirrordamage will be used LATER
}
else
- damage = cvar("g_friendlyfire") * damage;
- // mirrordamage will be used LATER
+ damage = 0;
}
- else
- damage = 0;
}
}
}
- if(g_lms)
if(targ.classname == "player")
if(attacker.classname == "player")
if(attacker != targ)
@@ -669,6 +661,7 @@
self.flags = self.flags - (self.flags & FL_ONGROUND);
}
// apply damage
+ if (damage != 0)
if (self.event_damage)
self.event_damage (inflictor, attacker, damage, deathtype, hitloc, force);
self = oldself;
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_hook.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_hook.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_hook.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -185,7 +185,7 @@
}
pointparticles(particleeffectnum("grapple_impact"), self.origin, '0 0 0', 1);
- sound (self, CHAN_BODY, "weapons/hook_impact.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/hook_impact.wav", VOL_BASE, ATTN_NORM);
self.state = 1;
self.think = GrapplingHookThink;
@@ -225,7 +225,7 @@
makevectors(self.v_angle);
- sound (self, CHAN_WEAPON, "weapons/hook_fire.wav", 1, ATTN_NORM);
+ sound (self, CHAN_WEAPON, "weapons/hook_fire.wav", VOL_BASE, ATTN_NORM);
org = self.origin + self.view_ofs + v_forward * 8 - v_right * 8 + '0 0 -12';
pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1);
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_lights.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_lights.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_lights.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -66,7 +66,7 @@
else
self.light_lev = 0;
};
-void dynlight()
+void spawnfunc_dynlight()
{
local entity targ;
@@ -117,4 +117,4 @@
self.nextthink = self.ltime + 0.1;
self.think = dynlight_find_path;
}
-};
\ No newline at end of file
+};
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -205,25 +205,6 @@
}
-// Sound functions
-
-/*
-==================
-PointSound
-
-Play a sound at the given location
-==================
-*/
-void PointSound (vector org, string snd, float vol, float attn)
-{
- entity speaker;
-
- speaker = spawn ();
- setorigin (speaker, org);
- sound (speaker, CHAN_BODY, snd, vol, attn);
- remove (speaker);
-}
-
// Misc
/*
@@ -398,7 +379,14 @@
if (self.angles != '0 0 0')
SetMovedir ();
self.solid = SOLID_TRIGGER;
- setmodel (self, self.model); // set size and link into world, no precision needed
+ if(self.model != "")
+ setmodel (self, self.model); // set size and link into world, no precision needed
+ else
+ {
+ // force relinking
+ setorigin(self, self.origin);
+ setsize (self, self.mins, self.maxs);
+ }
self.movetype = MOVETYPE_NONE;
self.modelindex = 0;
self.model = "";
@@ -412,7 +400,14 @@
if (self.angles != '0 0 0')
SetMovedir ();
self.solid = SOLID_BSP;
- setmodel (self, self.model); // set size and link into world, no precision needed
+ if(self.model != "")
+ setmodel (self, self.model); // set size and link into world, no precision needed
+ else
+ {
+ // force relinking
+ setorigin(self, self.origin);
+ setsize (self, self.mins, self.maxs);
+ }
self.movetype = MOVETYPE_PUSH;
// self.modelindex = 0;
self.model = "";
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -56,7 +56,7 @@
{
centerprint (activator, self.message);
if (!self.noise)
- sound (activator, CHAN_VOICE, "misc/talk.wav", 1, ATTN_NORM);
+ play2(activator, "misc/talk.wav");
}
//
@@ -140,7 +140,7 @@
}
if (self.noise)
- sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
+ sound (self.enemy, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NORM);
// don't trigger again until reset
self.takedamage = DAMAGE_NO;
@@ -458,7 +458,7 @@
}
-void target_speaker_use() {sound(self, CHAN_VOICE, self.noise, 1, 1);}
+void target_speaker_use() {sound(self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM);}
void spawnfunc_target_speaker()
{
@@ -467,7 +467,7 @@
if(self.targetname)
self.use = target_speaker_use;
else
- ambientsound (self.origin, self.noise, 1, ATTN_STATIC);
+ ambientsound (self.origin, self.noise, VOL_BASE, ATTN_STATIC);
};
@@ -506,7 +506,7 @@
// sound
if(self.noise) {
precache_sound (self.noise);
- ambientsound (self.origin, self.noise, 1, ATTN_STATIC);
+ ambientsound (self.origin, self.noise, VOL_BASE, ATTN_STATIC);
}
}
*/
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_violence.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -3,13 +3,13 @@
float r;
r = random ();
if (r < 0.60)
- sound (self, CHAN_IMPACT, "misc/gib_splat01.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/gib_splat01.wav", VOL_BASE, ATTN_NORM);
else if (r < 0.65)
- sound (self, CHAN_IMPACT, "misc/gib_splat02.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/gib_splat02.wav", VOL_BASE, ATTN_NORM);
else if (r < 0.70)
- sound (self, CHAN_IMPACT, "misc/gib_splat03.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/gib_splat03.wav", VOL_BASE, ATTN_NORM);
else if (r < 0.75)
- sound (self, CHAN_IMPACT, "misc/gib_splat04.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/gib_splat04.wav", VOL_BASE, ATTN_NORM);
if(sv_gentle < 1)
pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10);
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_world.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_world.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -98,7 +98,7 @@
}
}
if(remainingTimeoutTime == cvar("sv_timeout_resumetime")) { //play a warning sound when only <sv_timeout_resumetime> seconds are left
- sound(world, CHAN_AUTO, "announcer/robotic/prepareforbattle.wav", 1, ATTN_NONE);
+ play2all("announcer/robotic/prepareforbattle.wav");
}
remainingTimeoutTime -= 1;
self.nextthink = time + TIMEOUT_SLOWMO_VALUE;
@@ -262,8 +262,8 @@
if(cvar("g_campaign"))
CampaignPreInit();
+ readlevelcvars();
InitGameplayMode();
- readlevelcvars();
precache();
WaypointSprite_Init();
@@ -975,7 +975,7 @@
fputs(file, strcat(s, "\n"));
}
- s = strcat(":labels:player:", GetPlayerScoreString(world));
+ s = strcat(":labels:player:", GetPlayerScoreString(world, 0));
if(to_console)
ServerConsoleEcho(s, TRUE);
if(to_eventlog)
@@ -985,12 +985,11 @@
FOR_EACH_CLIENT(other)
{
- // FIXME make this use the new score system
if ((clienttype(other) == CLIENTTYPE_REAL) || (clienttype(other) == CLIENTTYPE_BOT && cvar("sv_logscores_bots")))
{
- s = strcat(":player:see-labels:", GetPlayerScoreString(other), ":");
+ s = strcat(":player:see-labels:", GetPlayerScoreString(other, 0), ":");
s = strcat(s, ftos(rint(time - other.jointime)), ":");
- if(other.classname == "player")
+ if(other.classname == "player" || g_arena || g_lms)
s = strcat(s, ftos(other.team), ":");
else
s = strcat(s, "spectator:");
@@ -1006,7 +1005,7 @@
if(teamplay)
{
- s = strcat(":labels:teamscores:", GetTeamScoreString(0));
+ s = strcat(":labels:teamscores:", GetTeamScoreString(0, 0));
if(to_console)
ServerConsoleEcho(s, TRUE);
if(to_eventlog)
@@ -1016,7 +1015,7 @@
for(i = 1; i < 16; ++i)
{
- s = strcat(":teamscores:see-labels:", GetTeamScoreString(i));
+ s = strcat(":teamscores:see-labels:", GetTeamScoreString(i, 0));
s = strcat(s, ":", ftos(i));
if(to_console)
ServerConsoleEcho(s, TRUE);
@@ -1173,8 +1172,6 @@
};
float checkrules_oneminutewarning;
-float checkrules_leaderfrags;
-float tdm_max_score, tdm_old_score;
float checkrules_equality;
float checkrules_overtimewarning;
@@ -1489,9 +1486,70 @@
if(WinningConditionHelper_topscore == 0)
WinningConditionHelper_equality = 0;
- return GetWinningCode(limit && (WinningConditionHelper_topscore >= limit), WinningConditionHelper_equality);
+ if(WinningConditionHelper_lowerisbetter)
+ {
+ WinningConditionHelper_topscore = -WinningConditionHelper_topscore;
+ limit = -limit;
+ }
+
+ return GetWinningCode(limit && WinningConditionHelper_topscore && (WinningConditionHelper_topscore >= limit), WinningConditionHelper_equality);
}
+float WinningCondition_Race(float fraglimit)
+{
+ float wc;
+ entity p;
+ wc = WinningCondition_Scores(fraglimit);
+
+ // ALWAYS initiate overtime, unless EVERYONE has finished the race!
+ if(wc == WINNING_YES || wc == WINNING_STARTOVERTIME)
+ // do NOT support equality when the laps are all raced!
+ {
+ FOR_EACH_PLAYER(p)
+ if not(p.race_completed)
+ return WINNING_STARTOVERTIME;
+ return WINNING_YES;
+ }
+ return wc;
+}
+
+void ReadyRestart();
+float WinningCondition_QualifyingThenRace()
+{
+ float wc;
+ wc = WinningCondition_Scores(0);
+
+ // NEVER initiate overtime
+ if(wc == WINNING_YES || wc == WINNING_STARTOVERTIME)
+ // do NOT support equality when the laps are all raced!
+ {
+ float totalplayers;
+ float playerswithlaps;
+ entity head;
+ totalplayers = playerswithlaps = 0;
+ FOR_EACH_PLAYER(head)
+ {
+ ++totalplayers;
+ if(PlayerScore_Add(head, SP_RACE_FASTEST, 0))
+ ++playerswithlaps;
+ }
+
+ // at least 2/3 of the players have completed a lap: start the RACE
+ // otherwise, the players should end the qualifying on their own
+ if(totalplayers >= 3)
+ if(playerswithlaps >= totalplayers * 2 / 3)
+ {
+ checkrules_overtimeend = 0;
+ ReadyRestart();
+ return WINNING_NEVER;
+ }
+
+ return WINNING_YES;
+ }
+
+ return wc;
+}
+
float WinningCondition_RanOutOfSpawns()
{
entity head;
@@ -1603,8 +1661,11 @@
if(!checkrules_overtimewarning)
{
checkrules_overtimewarning = TRUE;
- //sound(world, CHAN_AUTO, "announcer/robotic/1minuteremains.wav", 1, ATTN_NONE);
- bcenterprint("^3Now playing ^1OVERTIME^3!\n\n^3Keep fragging until we have a ^1winner^3!");
+ //announceall("announcer/robotic/1minuteremains.wav");
+ if(!g_race_qualifying)
+ bcenterprint("^3Everyone, finish your lap! The race is over!");
+ else
+ bcenterprint("^3Now playing ^1OVERTIME^3!\n\n^3Keep fragging until we have a ^1winner^3!");
}
}
else
@@ -1622,7 +1683,7 @@
if (!checkrules_oneminutewarning && timelimit > 0 && time > timelimit - 60)
{
checkrules_oneminutewarning = TRUE;
- sound(world, CHAN_AUTO, "announcer/robotic/1minuteremains.wav", 1, ATTN_NONE);
+ play2all("announcer/robotic/1minuteremains.wav");
}
status = WinningCondition_RanOutOfSpawns();
@@ -1630,6 +1691,14 @@
{
bprint("Hey! Someone ran out of spawns!\n");
}
+ else if(g_race && !g_race_qualifying && timelimit >= 0)
+ {
+ status = WinningCondition_Race(fraglimit);
+ }
+ else if(g_race && g_race_qualifying == 2 && timelimit >= 0)
+ {
+ status = WinningCondition_QualifyingThenRace();
+ }
else if(g_assault)
{
status = WinningCondition_Assault(); // TODO remove this?
Modified: branches/nexuiz-2.0/data/qcsrc/server/gamecommand.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/gamecommand.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/gamecommand.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -206,6 +206,10 @@
{
Score_DebugPrint();
}
+ if (argv(0) == "allready")
+ {
+ ReadyRestart();
+ }
print("Invalid command. For a list of supported commands, try sv_cmd help.\n");
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/havocbot.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/havocbot.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/havocbot.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -258,7 +258,7 @@
local entity head, best;
local float rating, bestrating;
local vector eye, v;
- if (cvar("bot_nofire"))
+ if (cvar("bot_nofire") || IS_INDEPENDENT_PLAYER(self))
{
self.enemy = world;
return;
@@ -457,7 +457,7 @@
if (self.bot_aimtarg)
{
weapon_action(self.weapon, WR_AIM);
- if (cvar("bot_nofire"))
+ if (cvar("bot_nofire") || IS_INDEPENDENT_PLAYER(self))
{
self.BUTTON_ATCK = FALSE;
self.BUTTON_ATCK2 = FALSE;
Modified: branches/nexuiz-2.0/data/qcsrc/server/havocbot_roles.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/havocbot_roles.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/havocbot_roles.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -532,11 +532,47 @@
}
};
+//Race:
+//go to next checkpoint, and annoy enemies
+.float race_checkpoint;
+void havocbot_role_race()
+{
+ entity e;
+ if (self.bot_strategytime < time)
+ {
+ self.bot_strategytime = time + cvar("bot_ai_strategyinterval");
+ navigation_goalrating_start();
+ /*
+ havocbot_goalrating_items(100, self.origin, 10000);
+ havocbot_goalrating_enemyplayers(500, self.origin, 20000);
+ */
+
+ for(e = world; (e = find(e, classname, "trigger_race_checkpoint")) != world; )
+ {
+ if(e.cnt == self.race_checkpoint)
+ {
+ navigation_routerating(e, 1000000, 5000);
+ }
+ else if(self.race_checkpoint == -1)
+ {
+ navigation_routerating(e, 1000000, 5000);
+ }
+ }
+
+ navigation_goalrating_end();
+ }
+};
+
void havocbot_chooserole_dm()
{
self.havocbot_role = havocbot_role_dm;
};
+void havocbot_chooserole_race()
+{
+ self.havocbot_role = havocbot_role_race;
+};
+
void havocbot_chooserole_dom()
{
self.havocbot_role = havocbot_role_dom;
@@ -759,6 +795,8 @@
havocbot_chooserole_dom();
else if (g_keyhunt)
havocbot_chooserole_kh();
+ else if (g_race)
+ havocbot_chooserole_race();
else // assume anything else is deathmatch
havocbot_chooserole_dm();
};
Modified: branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -435,7 +435,7 @@
void kh_Key_Collect(entity key, entity player) //a player picks up a dropped key
{
- sound(player, CHAN_AUTO, kh_sound_collect, 1, ATTN_NORM);
+ sound(player, CHAN_AUTO, kh_sound_collect, VOL_BASE, ATTN_NORM);
if(key.kh_dropperteam != player.team)
{
@@ -477,7 +477,7 @@
if(suicide)
key.kh_dropperteam = player.team;
}
- sound(player, CHAN_AUTO, kh_sound_drop, 1, ATTN_NORM);
+ sound(player, CHAN_AUTO, kh_sound_drop, VOL_BASE, ATTN_NORM);
}
}
@@ -542,7 +542,7 @@
self.pusher = world;
kh_Scores_Event(self.owner, self, "dropkey", 0, 0);
bprint(self.owner.netname, "^7 dropped the ", self.netname, "\n");
- sound(self.owner, CHAN_AUTO, kh_sound_drop, 1, ATTN_NORM);
+ sound(self.owner, CHAN_AUTO, kh_sound_drop, VOL_BASE, ATTN_NORM);
makevectors(self.owner.v_angle);
self.velocity = W_CalculateProjectileVelocity(self.owner.velocity, cvar("g_balance_keyhunt_throwvelocity") * v_forward);
kh_Key_AssignTo(self, world);
@@ -561,7 +561,7 @@
{
if(self.siren_time < time)
{
- sound(world, CHAN_AUTO, kh_sound_alarm, 1, ATTN_NORM); // play a simple alarm
+ sound(self.owner, CHAN_AUTO, kh_sound_alarm, VOL_BASE, ATTN_NORM); // play a simple alarm
self.siren_time = time + 2.5; // repeat every 2.5 seconds
}
@@ -647,7 +647,7 @@
midpoint = midpoint * (1 / kh_teams);
te_customflash(midpoint, 1000, 1, TeamColor(teem) * 0.5 + '0.5 0.5 0.5'); // make the color >=0.5 in each component
- sound(world, CHAN_AUTO, kh_sound_capture, 1, ATTN_NONE);
+ play2all(kh_sound_capture);
kh_FinishRound();
}
@@ -736,7 +736,7 @@
bprint("The ", ColoredTeamName(teem), "^7 could not take care of the ", lostkey.netname, "\n");
}
- sound(world, CHAN_AUTO, kh_sound_destroy, 1, ATTN_NONE);
+ play2all(kh_sound_destroy);
te_tarexplosion(lostkey.origin);
kh_FinishRound();
Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -124,10 +124,8 @@
#define FOR_EACH_REALPLAYER(v) FOR_EACH_REALCLIENT(v) if(v.classname == STR_PLAYER)
#endif
-// change that to actually calling strcat when running on an engine without
-// unlimited tempstrings:
-// string strcat1(string s) = #115; // FRIK_FILE
-#define strcat1(s) (s)
+// copies a string to a tempstring (so one can strunzone it)
+string strcat1(string s) = #115; // FRIK_FILE
float logfile_open;
float logfile;
@@ -215,6 +213,7 @@
}
}
+float spawnpoint_nag;
void relocate_spawnpoint()
{
// nudge off the floor
@@ -223,8 +222,28 @@
tracebox(self.origin, PL_MIN, PL_MAX, self.origin, TRUE, self);
if (trace_startsolid)
{
- objerror("player spawn point in solid, mapper sucks!\n");
- return;
+ vector o;
+ o = self.origin;
+ self.mins = PL_MIN;
+ self.maxs = PL_MAX;
+ move_out_of_solid(self);
+ print("^1NOTE: this map needs FIXING. Spawnpoint at ", vtos(o - '0 0 1'));
+ print(" needs to be moved out of solid, e.g. by '", ftos(self.origin_x - o_x));
+ print(" ", ftos(self.origin_y - o_y));
+ print(" ", ftos(self.origin_z - o_z), "'\n");
+ if(cvar("g_spawnpoints_auto_move_out_of_solid"))
+ {
+ if(!spawnpoint_nag)
+ print("\{1}^1NOTE: this map needs FIXING (it contains spawnpoints in solid, see server log)\n");
+ spawnpoint_nag = 1;
+ }
+ else
+ {
+ self.origin = o;
+ self.mins = self.maxs = '0 0 0';
+ objerror("player spawn point in solid, mapper sucks!\n");
+ return;
+ }
}
if(cvar("g_spawnpoints_autodrop"))
@@ -241,6 +260,18 @@
if(g_ctf || g_assault || g_onslaught || g_domination)
if(self.team)
have_team_spawns = 1;
+
+ if(cvar("r_showbboxes"))
+ {
+ // show where spawnpoints point at too
+ makevectors(self.angles);
+ entity e;
+ e = spawn();
+ e.classname = "info_player_foo";
+ setorigin(e, self.origin + v_forward * 24);
+ setsize(e, '-8 -8 -8', '8 8 8');
+ e.solid = SOLID_TRIGGER;
+ }
}
#define strstr strstrofs
@@ -573,62 +604,6 @@
return "neutral";
}
-/*
-string decolorize(string s)
-{
- string out;
- out = "";
- while(s != "")
- {
- float n;
- string ch1, ch2;
- n = 1;
- ch1 = substring(s, 0, 1);
- ch2 = substring(s, 1, 1);
- if(ch1 == "^")
- {
- n = 2;
- if(ch2 == "^")
- out = strcat(out, "^^");
- else if(ch2 == "0")
- out = strcat1(out);
- else if(ch2 == "1")
- out = strcat1(out);
- else if(ch2 == "2")
- out = strcat1(out);
- else if(ch2 == "3")
- out = strcat1(out);
- else if(ch2 == "4")
- out = strcat1(out);
- else if(ch2 == "5")
- out = strcat1(out);
- else if(ch2 == "6")
- out = strcat1(out);
- else if(ch2 == "7")
- out = strcat1(out);
- else if(ch2 == "8")
- out = strcat1(out);
- else if(ch2 == "9")
- out = strcat1(out);
- else
- {
- n = 1;
- out = strcat(out, "^^");
- }
- s = substring(s, n, strlen(s) - n);
- }
- else
- {
- s = substring(s, 1, strlen(s) - 1);
- out = strcat(out, ch1);
- }
- }
- return out;
-}
-#define strdecolorize(s) decolorize(s)
-#define strlennocol(s) strlen(decolorize(s))
-*/
-
#define CENTERPRIO_POINT 1
#define CENTERPRIO_SPAM 2
#define CENTERPRIO_REBALANCE 2
@@ -756,6 +731,7 @@
sv_pogostick = cvar("sv_pogostick");
sv_doublejump = cvar("sv_doublejump");
g_ctf_win_mode = cvar("g_ctf_win_mode");
+ g_race_qualifying = cvar("g_race_qualifying");
g_pickup_shells = cvar("g_pickup_shells");
g_pickup_shells_max = cvar("g_pickup_shells_max");
@@ -927,13 +903,53 @@
}
*/
+// Sound functions
string precache_sound (string s) = #19;
void(entity e, float chan, string samp, float vol, float atten) sound = #8;
+float precache_sound_index (string s) = #19;
+
+void soundtoat(float dest, entity e, vector o, float chan, string samp, float vol, float atten)
+{
+ WriteByte(dest, 6);
+ WriteByte(dest, 27); // all bits except SND_LOOPING
+ WriteByte(dest, vol * 255);
+ WriteByte(dest, atten * 64);
+ WriteEntity(dest, e);
+ WriteByte(dest, chan);
+ WriteShort(dest, precache_sound_index(samp));
+ WriteCoord(dest, o_x);
+ WriteCoord(dest, o_y);
+ WriteCoord(dest, o_z);
+}
+void soundto(float dest, entity e, float chan, string samp, float vol, float atten)
+{
+ vector o;
+ o = e.origin + 0.5 * (e.mins + e.maxs);
+ soundtoat(dest, e, o, chan, samp, vol, atten);
+}
+void soundat(entity e, vector o, float chan, string samp, float vol, float atten)
+{
+ soundtoat(MSG_BROADCAST, e, o, chan, samp, vol, atten);
+}
+
void play2(entity e, string filename)
{
- stuffcmd(e, strcat("play2 ", filename, "\n"));
+ //stuffcmd(e, strcat("play2 ", filename, "\n"));
+ msg_entity = e;
+ soundtoat(MSG_ONE, world, '0 0 0', CHAN_AUTO, filename, VOL_BASE, ATTN_NONE);
}
+.float announcetime;
+void announce(entity player, string msg)
+{
+ if(time > player.announcetime)
+ if(clienttype(player) == CLIENTTYPE_REAL)
+ {
+ player.announcetime = time + 0.3;
+ play2(player, msg);
+ }
+}
+
void play2team(float t, string filename)
{
local entity head;
@@ -944,6 +960,11 @@
}
}
+void play2all(string samp)
+{
+ sound(world, CHAN_AUTO, samp, VOL_BASE, ATTN_NONE);
+}
+
void PrecachePlayerSounds(string f);
void precache_all_models(string pattern)
{
@@ -1113,6 +1134,6 @@
if (self.noise)
{
precache_sound (self.noise);
- ambientsound ('0 0 0', self.noise, 1.00, ATTN_NONE);
+ ambientsound ('0 0 0', self.noise, VOL_BASE, ATTN_NONE);
}
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -319,7 +319,7 @@
{
// self.max_health / 300 gives 5 minutes of overtime.
// control points reduce the overtime duration.
- sound(self, CHAN_AUTO, "sound/onslaught/generator_decay.wav", 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, "sound/onslaught/generator_decay.wav", VOL_BASE, ATTN_NORM);
d = 1;
e = findchain(classname, "onslaught_controlpoint");
while (e)
@@ -343,13 +343,13 @@
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);
- sound(self, CHAN_AUTO, "sound/weapons/grenade_impact.wav", 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, "sound/weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
}
else
{
org = self.origin;
pointparticles(particleeffectnum("onslaught_generator_finalexplosion"), org, '0 0 0', 1);
- sound(self, CHAN_AUTO, "sound/weapons/rocket_impact.wav", 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, "sound/weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
}
};
@@ -622,7 +622,7 @@
self.colormod = '2 2 2';
if (self.health < 0)
{
- sound(self, CHAN_AUTO, "sound/weapons/grenade_impact.wav", 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, "sound/weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
pointparticles(particleeffectnum("onslaught_controlpoint_explosion"), self.origin, '0 0 0', 1);
{
string t;
@@ -672,7 +672,7 @@
self.health = self.max_health;
self.count = self.count * 0.2; // slow repair rate from now on
self.think = onslaught_controlpoint_icon_think;
- sound(self, CHAN_BODY, "sound/onslaught/controlpoint_built.wav", 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, "sound/onslaught/controlpoint_built.wav", VOL_BASE, ATTN_NORM);
bprint(ColoredTeamName(self.team), " captured ", self.owner.message, " control point\n");
self.owner.iscaptured = TRUE;
onslaught_updatelinks();
@@ -719,7 +719,7 @@
e.think = onslaught_controlpoint_icon_buildthink;
e.nextthink = time + 0.1;
e.count = e.max_health / 50; // how long it takes to build
- sound(e, CHAN_BODY, "sound/onslaught/controlpoint_build.wav", 1, ATTN_NORM);
+ sound(e, CHAN_TRIGGER, "sound/onslaught/controlpoint_build.wav", VOL_BASE, ATTN_NORM);
self.team = e.team;
self.colormap = e.colormap;
};
Modified: branches/nexuiz-2.0/data/qcsrc/server/progs.src
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/progs.src 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/progs.src 2008-08-12 12:20:43 UTC (rev 4120)
@@ -22,6 +22,8 @@
ipban.qh
+race.qh
+
keyhunt.qh
antilag.qh
@@ -122,7 +124,9 @@
t_halflife.qc
t_quake.qc
+race.qc
+
//// tZork Turrets ////
tturrets/include/turret_tturrets.qh
Copied: branches/nexuiz-2.0/data/qcsrc/server/race.qc (from rev 4119, trunk/data/qcsrc/server/race.qc)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/race.qc (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/server/race.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -0,0 +1,460 @@
+#define MAX_CHECKPOINTS 255
+
+.float race_checkpoint; // player: next checkpoint that has to be reached
+.float race_laptime;
+
+.entity sprite;
+
+float race_checkpoint_records[MAX_CHECKPOINTS];
+string race_checkpoint_recordholders[MAX_CHECKPOINTS];
+float race_checkpoint_lasttimes[MAX_CHECKPOINTS];
+float race_checkpoint_lastlaps[MAX_CHECKPOINTS];
+entity race_checkpoint_lastplayers[MAX_CHECKPOINTS];
+
+float race_highest_checkpoint;
+float race_highest_place_spawn;
+
+float race_NextCheckpoint(float f)
+{
+ if(f >= race_highest_checkpoint)
+ return 0;
+ else
+ return f + 1;
+}
+
+float race_PreviousCheckpoint(float f)
+{
+ if(f == -1)
+ return 0;
+ else if(f == 0)
+ return race_highest_checkpoint;
+ else
+ return f - 1;
+}
+
+void race_SendNextCheckpoint(entity e)
+{
+ float recordtime;
+ string recordholder;
+ float cp;
+
+ if(clienttype(e) != CLIENTTYPE_REAL)
+ return;
+
+ if(!e.race_laptime)
+ return;
+
+ cp = e.race_checkpoint;
+ recordtime = race_checkpoint_records[cp];
+ recordholder = race_checkpoint_recordholders[cp];
+ /*
+ recordtime = stof(db_get(ServerProgsDB, strcat(GetMapname(), "/racerecord/", ftos(cp), "/time")));
+ recordholder = db_get(ServerProgsDB, strcat(GetMapname(), "/racerecord/", ftos(cp), "/netname"));
+ */
+ if(recordholder == e.netname)
+ recordholder = "";
+
+ msg_entity = e;
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_RACE);
+ WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_NEXT_QUALIFYING);
+ WriteByte(MSG_ONE, cp); // checkpoint the player will be at next
+ WriteShort(MSG_ONE, recordtime);
+ WriteString(MSG_ONE, recordholder);
+}
+
+void race_SendTime(entity e, float cp, float t, float tvalid)
+{
+ float snew, l;
+ t = floor(0.5 + 10 * t); // make integer
+
+ if(tvalid)
+ if(cp == 0) // finish line
+ if not(e.race_completed)
+ {
+ float s;
+ if(g_race_qualifying)
+ {
+ s = PlayerScore_Add(e, SP_RACE_FASTEST, 0);
+ if(!s || t < s)
+ PlayerScore_Add(e, SP_RACE_FASTEST, t - s);
+ }
+ else
+ {
+ s = PlayerScore_Add(e, SP_RACE_TIME, 0);
+ snew = floor(0.5 + 10 * (time - restart_countdown));
+ PlayerScore_Add(e, SP_RACE_TIME, snew - s);
+ l = PlayerTeamScore_Add(e, SP_RACE_LAPS, ST_RACE_LAPS, 1);
+
+ if(cvar("fraglimit"))
+ if(l >= cvar("fraglimit"))
+ race_completing = 1;
+
+ if(race_completing)
+ {
+ e.race_completed = 1;
+ MAKE_INDEPENDENT_PLAYER(e);
+ bprint(e.netname, "^7 has finished the race.\n");
+ if(clienttype(e) == CLIENTTYPE_REAL)
+ {
+ msg_entity = e;
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_FORCESCOREBOARD);
+ // he can still move, but will see the scoreboard now
+ }
+ }
+ }
+ }
+
+ float recordtime;
+ string recordholder;
+
+ if(g_race_qualifying)
+ {
+ if(tvalid)
+ {
+ recordtime = race_checkpoint_records[cp];
+ recordholder = strcat1(race_checkpoint_recordholders[cp]); // make a tempstring copy, as we'll possibly strunzone it!
+ if(recordholder == e.netname)
+ recordholder = "";
+
+ if(t < recordtime || recordtime == 0)
+ {
+ race_checkpoint_records[cp] = t;
+ if(race_checkpoint_recordholders[cp])
+ strunzone(race_checkpoint_recordholders[cp]);
+ race_checkpoint_recordholders[cp] = strzone(e.netname);
+ if(cp == 0)
+ {
+ float grecordtime;
+ string grecordholder;
+ grecordtime = stof(db_get(ServerProgsDB, strcat(GetMapname(), "/racerecord/time")));
+ grecordholder = db_get(ServerProgsDB, strcat(GetMapname(), "/racerecord/netname"));
+ if(grecordholder == e.netname)
+ grecordholder = "";
+ if(grecordtime == 0)
+ {
+ bprint(e.netname, "^7 set the all-time fastest lap record with ", mmsss(t), "\n");
+ db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/time"), ftos(t));
+ db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/netname"), e.netname);
+ }
+ else if(t < grecordtime)
+ {
+ if(grecordholder == "")
+ bprint(e.netname, "^7 broke his all-time fastest lap record with ", mmsss(t), "\n");
+ else
+ bprint(e.netname, "^7 broke ", grecordholder, "^7's all-time fastest lap record with ", mmsss(t), "\n");
+ db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/time"), ftos(t));
+ db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/netname"), e.netname);
+ }
+ else
+ {
+ if(grecordholder == "")
+ bprint(e.netname, "^7's new fastest lap could not break his all-time fastest lap record of ", mmsss(grecordtime), "\n");
+ else
+ bprint(e.netname, "^7's new fastest lap could not break ", grecordholder, "^7's all-time fastest lap record of ", mmsss(grecordtime), "\n");
+ }
+ }
+
+ if(g_race_qualifying)
+ {
+ entity p;
+ FOR_EACH_REALPLAYER(p)
+ if(p.race_checkpoint == cp)
+ race_SendNextCheckpoint(p);
+ }
+ }
+ }
+ else
+ {
+ // dummies
+ t = 0;
+ recordtime = 0;
+ recordholder = "";
+ }
+
+ if(clienttype(e) == CLIENTTYPE_REAL)
+ {
+ msg_entity = e;
+ if(g_race_qualifying)
+ {
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_RACE);
+ WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_HIT_QUALIFYING);
+ WriteByte(MSG_ONE, cp); // checkpoint the player now is at
+ WriteShort(MSG_ONE, t); // time to that intermediate
+ WriteShort(MSG_ONE, recordtime); // previously best time
+ WriteString(MSG_ONE, recordholder); // record holder
+ }
+ }
+ }
+ else // RACE! Not Qualifying
+ {
+ float lself, lother, othtime;
+ entity oth;
+ oth = race_checkpoint_lastplayers[cp];
+ if(oth)
+ {
+ lself = PlayerScore_Add(e, SP_RACE_LAPS, 0);
+ lother = race_checkpoint_lastlaps[cp];
+ othtime = race_checkpoint_lasttimes[cp];
+ }
+ else
+ lself = lother = othtime = 0;
+
+ if(clienttype(e) == CLIENTTYPE_REAL)
+ {
+ msg_entity = e;
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_RACE);
+ WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_HIT_RACE);
+ WriteByte(MSG_ONE, cp); // checkpoint the player now is at
+ if(e == oth)
+ {
+ WriteShort(MSG_ONE, 0);
+ WriteByte(MSG_ONE, 0);
+ WriteString(MSG_ONE, "");
+ }
+ else
+ {
+ WriteShort(MSG_ONE, floor(10 * (time - race_checkpoint_lasttimes[cp]) + 0.5));
+ WriteByte(MSG_ONE, lself - lother);
+ WriteString(MSG_ONE, oth.netname); // record holder
+ }
+ }
+
+ race_checkpoint_lastplayers[cp] = e;
+ race_checkpoint_lasttimes[cp] = time;
+ race_checkpoint_lastlaps[cp] = lself;
+
+ if(clienttype(oth) == CLIENTTYPE_REAL)
+ {
+ msg_entity = oth;
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_RACE);
+ WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_HIT_RACE_BY_OPPONENT);
+ WriteByte(MSG_ONE, cp); // checkpoint the player now is at
+ if(e == oth)
+ {
+ WriteShort(MSG_ONE, 0);
+ WriteByte(MSG_ONE, 0);
+ WriteString(MSG_ONE, "");
+ }
+ else
+ {
+ WriteShort(MSG_ONE, floor(10 * (time - othtime) + 0.5));
+ WriteByte(MSG_ONE, lother - lself);
+ WriteString(MSG_ONE, e.netname); // record holder
+ }
+ }
+ }
+}
+
+void race_ClearTime(entity e)
+{
+ e.race_checkpoint = -1;
+ e.race_laptime = 0;
+
+ if(clienttype(e) != CLIENTTYPE_REAL)
+ return;
+
+ msg_entity = e;
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_RACE);
+ WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_CLEAR); // next
+}
+
+void checkpoint_touch()
+{
+ if(other.classname != "player")
+ return;
+
+ if(other.race_checkpoint == -1 || other.race_checkpoint == self.race_checkpoint)
+ {
+ other.race_checkpoint = race_NextCheckpoint(self.race_checkpoint);
+
+ race_SendTime(other, self.race_checkpoint, time - other.race_laptime, !!other.race_laptime);
+
+ if(!self.race_checkpoint) // finish line
+ other.race_laptime = time;
+
+ if(g_race_qualifying)
+ race_SendNextCheckpoint(other);
+ }
+ else if(other.race_checkpoint == race_NextCheckpoint(self.race_checkpoint))
+ {
+ // ignored
+ }
+ else
+ {
+ if(self.spawnflags & 4)
+ Damage (other, self, self, 10000, DEATH_HURTTRIGGER, other.origin, '0 0 0');
+ }
+}
+
+void checkpoint_use()
+{
+ other = activator;
+ checkpoint_touch();
+}
+
+float race_waypointsprite_for_player(entity e)
+{
+ if(e.race_checkpoint == -1)
+ return self.modelindex;
+ else if(e.race_checkpoint == self.owner.race_checkpoint)
+ return self.modelindex;
+ else
+ return FALSE;
+}
+
+void spawnfunc_trigger_race_checkpoint()
+{
+ vector o;
+ if(!g_race)
+ {
+ remove(self);
+ return;
+ }
+ InitTrigger();
+ self.use = checkpoint_use;
+ if not(self.spawnflags & 1)
+ self.touch = checkpoint_touch;
+
+ o = (self.absmin + self.absmax) * 0.5;
+ tracebox(o, PL_MIN, PL_MAX, o - '0 0 1' * (o_z - self.absmin_z), MOVE_NORMAL, self);
+ self.nearestwaypoint = waypoint_spawn(trace_endpos, trace_endpos, WAYPOINTFLAG_GENERATED);
+ self.nearestwaypointtimeout = time + 1000000000;
+
+ if(!self.message)
+ self.message = "went backwards";
+
+ self.race_checkpoint = self.cnt;
+
+ if(self.race_checkpoint > race_highest_checkpoint)
+ race_highest_checkpoint = self.race_checkpoint;
+
+ if(self.race_checkpoint)
+ {
+ precache_model("models/sprites/race-checkpoint.sp2");
+ WaypointSprite_SpawnFixed("race-checkpoint", o, self, sprite);
+ }
+ else
+ {
+ precache_model("models/sprites/race-finish.sp2");
+ WaypointSprite_SpawnFixed("race-finish", o, self, sprite);
+ }
+ self.sprite.waypointsprite_for_player = race_waypointsprite_for_player;
+}
+
+void race_PreparePlayer()
+{
+ race_ClearTime(self);
+ self.race_place = 0;
+}
+
+void race_RetractPlayer()
+{
+ if(!g_race)
+ return;
+ self.race_checkpoint = race_PreviousCheckpoint(self.race_checkpoint);
+ if(self.race_checkpoint == 0)
+ {
+ race_ClearTime(self);
+ self.race_checkpoint = 0;
+ }
+}
+
+void race_PreSpawn()
+{
+ if(!g_race)
+ return;
+ if(self.killcount == -666 || g_race_qualifying)
+ race_PreparePlayer();
+
+ if(race_completing)
+ {
+ self.race_completed = 1;
+ MAKE_INDEPENDENT_PLAYER(self);
+ bprint(self.netname, "^7 has abandoned the race.\n");
+ if(clienttype(self) == CLIENTTYPE_REAL)
+ {
+ msg_entity = self;
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_FORCESCOREBOARD);
+ // he can still move, but will see the scoreboard now
+ }
+ }
+}
+
+void race_PostSpawn(entity spot)
+{
+ if(!g_race)
+ return;
+ if(self.killcount != -666 && !g_race_qualifying)
+ {
+ if(spot.target == "")
+ // let the player run without timing, if he did not spawn at a targetting spawnpoint
+ race_PreparePlayer();
+ else
+ race_RetractPlayer();
+ }
+
+ if(spot.target != "" && self.race_checkpoint == -1)
+ self.race_checkpoint = 0;
+
+ self.race_place = 0;
+}
+
+void race_PreSpawnObserver()
+{
+ if(!g_race)
+ return;
+ race_PreparePlayer();
+}
+
+void spawnfunc_info_player_race (void)
+{
+ if(!g_race)
+ {
+ remove(self);
+ return;
+ }
+ ++race_spawns;
+ spawnfunc_info_player_deathmatch();
+
+ if(self.race_place > race_highest_place_spawn)
+ race_highest_place_spawn = self.race_place;
+}
+
+void race_ClearRecords()
+{
+ float i;
+ entity e;
+
+ for(i = 0; i < MAX_CHECKPOINTS; ++i)
+ {
+ race_checkpoint_records[i] = 0;
+ if(race_checkpoint_recordholders[i])
+ strunzone(race_checkpoint_recordholders[i]);
+ race_checkpoint_recordholders[i] = string_null;
+ }
+
+ FOR_EACH_CLIENT(e)
+ race_ClearTime(e);
+}
+
+void race_ReadyRestart()
+{
+ race_ClearRecords();
+
+ if(g_race_qualifying == 2)
+ {
+ g_race_qualifying = 0;
+ independent_players = 0;
+ cvar_set("fraglimit", ftos(race_fraglimit));
+ ScoreRules_race();
+ }
+
+ PlayerScore_Sort(race_place);
+}
Copied: branches/nexuiz-2.0/data/qcsrc/server/race.qh (from rev 4119, trunk/data/qcsrc/server/race.qh)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/race.qh (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/server/race.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -0,0 +1,13 @@
+void race_PreSpawnObserver();
+void race_PreSpawn();
+void race_PostSpawn(entity spot);
+void race_ReadyRestart();
+float race_teams;
+float race_spawns;
+float race_PreviousCheckpoint(float f);
+float race_NextCheckpoint(float f);
+float race_highest_place_spawn;
+float race_fraglimit;
+.float race_place;
+.float race_completed;
+float race_completing;
Modified: branches/nexuiz-2.0/data/qcsrc/server/scores.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/scores.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/scores.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -10,6 +10,8 @@
float teamscores_entities_count;
var .float scores_primary;
var .float teamscores_primary;
+float scores_flags_primary;
+float teamscores_flags_primary;
void Net_LinkEntity(entity e)
{
@@ -29,6 +31,20 @@
previous_y = fieldflags & SFL_SORT_PRIO_MASK;
+ if(fieldflags & SFL_ZERO_IS_WORST)
+ {
+ if(t1.field == 0)
+ {
+ previous_x = -1;
+ return previous;
+ }
+ else if(t2.field == 0)
+ {
+ previous_x = +1;
+ return previous;
+ }
+ }
+
if(fieldflags & SFL_LOWER_IS_BETTER)
previous_x = (t2.field - t1.field);
else
@@ -110,7 +126,10 @@
scores_label[i] = label;
scores_flags[i] = scoreflags;
if(scoreflags & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY)
+ {
scores_primary = scores[i];
+ scores_flags_primary = scoreflags;
+ }
}
void ScoreInfo_SetLabel_TeamScore(float i, string label, float scoreflags)
@@ -118,7 +137,10 @@
teamscores_label[i] = label;
teamscores_flags[i] = scoreflags;
if(scoreflags & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY)
+ {
teamscores_primary = teamscores[i];
+ teamscores_flags_primary = scoreflags;
+ }
}
void ScoreInfo_Write(float targ)
@@ -143,7 +165,6 @@
void ScoreInfo_Init(float teams)
{
- entity pl;
scores_initialized = 1;
if(teams >= 1)
TeamScore_Spawn(COLOR_TEAM1, "Red");
@@ -180,10 +201,9 @@
if(teamscores_entities_count)
return;
- if(g_lms)
- return;
- if(g_arena)
- return;
+ if(g_lms) return;
+ if(g_arena) return;
+ if(g_race) return;
//print("clear clear clear... HAHA\n");
sk = player.scorekeeper;
@@ -249,11 +269,13 @@
return (s.(scores[scorefield]) += score);
}
-void PlayerTeamScore_Add(entity player, float pscorefield, float tscorefield, float score)
+float PlayerTeamScore_Add(entity player, float pscorefield, float tscorefield, float score)
{
- PlayerScore_Add(player, pscorefield, score);
+ float r;
+ r = PlayerScore_Add(player, pscorefield, score);
if(teamscores_entities_count) // only for teamplay
- TeamScore_Add(player, tscorefield, score);
+ r = TeamScore_Add(player, tscorefield, score);
+ return r;
}
float PlayerScore_Compare(entity t1, entity t2)
@@ -274,10 +296,21 @@
void WinningConditionHelper()
{
float c;
+ string s;
+ entity p;
+ s = GetGametype();
+ s = strcat(s, ":", GetPlayerScoreString(world, 2)); // make this 1 once we can
+
if(teamscores_entities_count)
{
float t;
- WinningConditionHelper_equality = 1;
+
+ s = strcat(s, ":", GetTeamScoreString(0, 1));
+ for(t = 0; t < 16; ++t)
+ if(teamscorekeepers[t])
+ s = strcat(s, ":", ftos(t+1), ":", GetTeamScoreString(t+1, 1));
+
+ WinningConditionHelper_equality = 0;
WinningConditionHelper_winnerteam = 0;
for(t = 1; t < 16; ++t)
{
@@ -295,6 +328,10 @@
}
WinningConditionHelper_topscore = teamscorekeepers[WinningConditionHelper_winnerteam].teamscores_primary;
+ WinningConditionHelper_lowerisbetter = (teamscores_flags_primary & SFL_LOWER_IS_BETTER);
+ WinningConditionHelper_zeroisworst = (teamscores_flags_primary & SFL_ZERO_IS_WORST);
+ if(teamscores_flags_primary & SFL_TIME)
+ WinningConditionHelper_topscore /= 10;
WinningConditionHelper_winner = world;
if(WinningConditionHelper_equality)
@@ -304,8 +341,7 @@
}
else
{
- entity p;
- WinningConditionHelper_equality = 1;
+ WinningConditionHelper_equality = 0;
WinningConditionHelper_winner = world;
FOR_EACH_PLAYER(p)
{
@@ -320,11 +356,49 @@
}
WinningConditionHelper_topscore = WinningConditionHelper_winner.scorekeeper.scores_primary;
+ WinningConditionHelper_lowerisbetter = (scores_flags_primary & SFL_LOWER_IS_BETTER);
+ if(scores_flags_primary & SFL_ZERO_IS_WORST)
+ if(WinningConditionHelper_topscore == 0)
+ {
+ if(WinningConditionHelper_lowerisbetter)
+ WinningConditionHelper_topscore = 999999999;
+ else
+ WinningConditionHelper_topscore = -999999999;
+ }
+ if(teamscores_flags_primary & SFL_TIME)
+ WinningConditionHelper_topscore /= 10;
if(WinningConditionHelper_equality)
WinningConditionHelper_winner = world;
WinningConditionHelper_winnerteam = -1;
}
+
+ if(worldstatus)
+ strunzone(worldstatus);
+ worldstatus = strzone(s);
+
+ FOR_EACH_CLIENT(p)
+ {
+ /* this breaks qstat :( find a way to make qstat parse this at least as an int first
+ s = GetPlayerScoreString(p, 1);
+ if(clienttype(p) == CLIENTTYPE_REAL)
+ s = strcat(s, ":human");
+ else
+ s = strcat(s, ":bot");
+ if(p.classname == "player" || g_arena || g_lms)
+ s = strcat(s, ":", ftos(p.team));
+ else
+ s = strcat(s, ":spectator");
+ */
+ if(p.classname == "player" || g_arena || g_lms)
+ s = "-666";
+ else
+ s = GetPlayerScoreString(p, 2);
+
+ if(p.clientstatus)
+ strunzone(p.clientstatus);
+ p.clientstatus = strzone(s);
+ }
}
void Score_DebugPrint()
@@ -373,7 +447,7 @@
return label;
}
-string GetPlayerScoreString(entity pl)
+string GetPlayerScoreString(entity pl, float shortString)
{
string out;
entity sk;
@@ -391,6 +465,7 @@
l = scores_label[i];
out = strcat(out, GetScoreLogLabel(l, f), ",");
}
+ if(shortString < 2)
for(i = 0; i < MAX_SCORE; ++i)
if(scores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_SECONDARY)
{
@@ -398,6 +473,7 @@
l = scores_label[i];
out = strcat(out, GetScoreLogLabel(l, f), ",");
}
+ if(shortString < 1)
for(i = 0; i < MAX_SCORE; ++i)
if(scores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_PRIMARY)
if(scores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_SECONDARY)
@@ -413,9 +489,11 @@
for(i = 0; i < MAX_SCORE; ++i)
if(scores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY)
out = strcat(out, ftos(sk.(scores[i])), ",");
+ if(shortString < 2)
for(i = 0; i < MAX_SCORE; ++i)
if(scores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_SECONDARY)
out = strcat(out, ftos(sk.(scores[i])), ",");
+ if(shortString < 1)
for(i = 0; i < MAX_SCORE; ++i)
if(scores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_PRIMARY)
if(scores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_SECONDARY)
@@ -425,7 +503,7 @@
return out;
}
-string GetTeamScoreString(float tm)
+string GetTeamScoreString(float tm, float shortString)
{
string out;
entity sk;
@@ -443,6 +521,7 @@
l = teamscores_label[i];
out = strcat(out, GetScoreLogLabel(l, f), ",");
}
+ if(shortString < 2)
for(i = 0; i < MAX_SCORE; ++i)
if(teamscores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_SECONDARY)
{
@@ -450,6 +529,7 @@
l = teamscores_label[i];
out = strcat(out, GetScoreLogLabel(l, f), ",");
}
+ if(shortString < 1)
for(i = 0; i < MAX_SCORE; ++i)
if(teamscores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_PRIMARY)
if(teamscores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_SECONDARY)
@@ -465,9 +545,11 @@
for(i = 0; i < MAX_TEAMSCORE; ++i)
if(teamscores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY)
out = strcat(out, ftos(sk.(teamscores[i])), ",");
+ if(shortString < 2)
for(i = 0; i < MAX_TEAMSCORE; ++i)
if(teamscores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_SECONDARY)
out = strcat(out, ftos(sk.(teamscores[i])), ",");
+ if(shortString < 1)
for(i = 0; i < MAX_TEAMSCORE; ++i)
if(teamscores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_PRIMARY)
if(teamscores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_SECONDARY)
@@ -476,3 +558,61 @@
}
return out;
}
+
+float PlayerTeamScore_Compare(entity p1, entity p2)
+{
+ if(teamscores_entities_count)
+ if(p1.team != p2.team)
+ {
+ entity t1, t2;
+ t1 = teamscorekeepers[p1.team];
+ t2 = teamscorekeepers[p2.team];
+ return TeamScore_Compare(t1, t2);
+ }
+
+ return PlayerScore_Compare(p1.scorekeeper, p2.scorekeeper);
+}
+
+float PlayerScore_Sort(.float field)
+{
+ entity p, plist, pprev, pbest, pbestprev;
+ float i;
+ plist = world;
+
+ FOR_EACH_CLIENT(p)
+ p.field = 0;
+
+ FOR_EACH_PLAYER(p) if(p.scorekeeper)
+ {
+ p.chain = plist;
+ plist = p;
+ }
+ // Now plist points to the whole list.
+
+ i = 0;
+ while(plist)
+ {
+ pprev = pbestprev = world;
+ pbest = plist;
+ for(p = plist; (p = p.chain); )
+ {
+ if(PlayerTeamScore_Compare(p, pbest) > 0)
+ {
+ pbest = p;
+ pbestprev = pprev;
+ }
+ pprev = p;
+ }
+
+ // remove pbest out of the chain
+ if(pbestprev == world)
+ plist = pbest.chain;
+ else
+ pbestprev.chain = pbest.chain;
+ pbest.chain = world;
+
+ pbest.field = ++i;
+ }
+
+ return i;
+}
Modified: branches/nexuiz-2.0/data/qcsrc/server/scores.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/scores.qh 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/scores.qh 2008-08-12 12:20:43 UTC (rev 4120)
@@ -41,9 +41,10 @@
float TeamScore_AddToTeam(float t, float scorefield, float score);
/**
- * Adds a score to both the player and the team.
+ * Adds a score to both the player and the team. Returns the team score if
+ * possible, otherwise the player score.
*/
-void PlayerTeamScore_Add(entity player, float pscorefield, float tscorefield, float score);
+float PlayerTeamScore_Add(entity player, float pscorefield, float tscorefield, float score);
/**
* Adds to the generic score fields for both the player and the team.
@@ -90,6 +91,9 @@
float WinningConditionHelper_equality; ///< 1 if and only if the top two have equal scores
float WinningConditionHelper_winnerteam; ///< the color of the winning team, or -1 if none
entity WinningConditionHelper_winner; ///< the winning player, or world if none
+float WinningConditionHelper_lowerisbetter; ///< lower is better, duh
+float WinningConditionHelper_zeroisworst; ///< zero is worst, duh
+#define WINNINGCONDITIONHELPER_LOWERISBETTER_WORST 999999999
/**
* Returns score strings for eventlog etc.
@@ -100,6 +104,13 @@
* Labels get an appended < if the scores are better if smaller (e.g. deaths).
* High priorities always come first.
* Example label string: score!!,kills,deaths<,suicides<
+ * If shortString is set, only the sort keys are returned.
*/
-string GetPlayerScoreString(entity pl);
-string GetTeamScoreString(float tm);
+string GetPlayerScoreString(entity pl, float shortString);
+string GetTeamScoreString(float tm, float shortString);
+
+/**
+ * Sorts the players and stores their place in the given field, starting with
+ * 1. Non-players get 0 written into that field.
+ */
+float PlayerScore_Sort(.float field);
Modified: branches/nexuiz-2.0/data/qcsrc/server/scores_rules.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/scores_rules.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/scores_rules.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -119,3 +119,32 @@
ScoreInfo_SetLabel_PlayerScore(SP_KH_LOSSES, "losses", SFL_LOWER_IS_BETTER);
ScoreRules_basics_end();
}
+
+// Race stuff
+#define ST_RACE_LAPS 1
+#define SP_RACE_LAPS 4
+#define SP_RACE_FASTEST 5
+#define SP_RACE_TIME 5
+void ScoreRules_race()
+{
+ ScoreRules_basics(race_teams, 0);
+ if(race_teams)
+ {
+ ScoreInfo_SetLabel_TeamScore( ST_RACE_LAPS, "laps", SFL_SORT_PRIO_PRIMARY);
+ ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS, "laps", SFL_SORT_PRIO_PRIMARY);
+ ScoreInfo_SetLabel_PlayerScore(SP_RACE_TIME, "time", SFL_SORT_PRIO_SECONDARY | SFL_LOWER_IS_BETTER | SFL_TIME);
+ }
+ else if(g_race_qualifying)
+ {
+ ScoreInfo_SetLabel_TeamScore( ST_RACE_LAPS, "laps", 0);
+ ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS, "laps", 0);
+ ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest", SFL_SORT_PRIO_PRIMARY | SFL_LOWER_IS_BETTER | SFL_TIME);
+ }
+ else
+ {
+ ScoreInfo_SetLabel_TeamScore( ST_RACE_LAPS, "laps", 0);
+ ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS, "laps", SFL_SORT_PRIO_PRIMARY);
+ ScoreInfo_SetLabel_PlayerScore(SP_RACE_TIME, "time", SFL_SORT_PRIO_SECONDARY | SFL_LOWER_IS_BETTER | SFL_TIME);
+ }
+ ScoreRules_basics_end();
+}
Modified: branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -13,19 +13,13 @@
{
if (!(self.flags & FL_INWATER))
{
- //if (self.watertype == CONTENT_LAVA)
- // sound (self, CHAN_BODY, "player/inlava.wav", 1, ATTN_NORM);
- //if (self.watertype == CONTENT_WATER)
- // sound (self, CHAN_BODY, "player/inh2o.wav", 1, ATTN_NORM);
- //if (self.watertype == CONTENT_SLIME)
- // sound (self, CHAN_BODY, "player/slimbrn2.wav", 1, ATTN_NORM);
self.flags = self.flags + FL_INWATER;
self.dmgtime = 0;
}
if (self.waterlevel != 3)
{
if(self.air_finished < time + 9)
- PlayerSound(playersound_gasp, CHAN_AUTO, 0);
+ PlayerSound(playersound_gasp, CHAN_PLAYER, 0);
self.air_finished = time + 12;
self.dmg = 2;
}
@@ -46,7 +40,7 @@
if (self.watersound_finished < time)
{
self.watersound_finished = time + 0.5;
- sound (self, CHAN_BODY, "player/lava.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PLAYER, "player/lava.wav", VOL_BASE, ATTN_NORM);
}
Damage (self, world, world, 6 * self.waterlevel, DEATH_LAVA, self.origin, '0 0 0');
}
@@ -55,7 +49,7 @@
if (self.watersound_finished < time)
{
self.watersound_finished = time + 0.5;
- sound (self, CHAN_BODY, "player/slime.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PLAYER, "player/slime.wav", VOL_BASE, ATTN_NORM);
}
Damage (self, world, world, 2 * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0');
}
@@ -111,9 +105,9 @@
if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
{
if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
- GlobalSound(globalsound_metalstep, CHAN_AUTO, 0);
+ GlobalSound(globalsound_metalstep, CHAN_PLAYER, 0);
else
- GlobalSound(globalsound_step, CHAN_AUTO, 0);
+ GlobalSound(globalsound_step, CHAN_PLAYER, 0);
}
}
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_items.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_items.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -5,7 +5,7 @@
{
self.model = self.mdl; // restore original model
self.solid = SOLID_TRIGGER; // allow it to be touched again
- sound (self, CHAN_VOICE, "misc/itemrespawn.wav", 1, ATTN_NORM); // play respawn sound
+ sound (self, CHAN_TRIGGER, "misc/itemrespawn.wav", VOL_BASE, ATTN_NORM); // play respawn sound
setorigin (self, self.origin);
//pointparticles(particleeffectnum("item_respawn"), self.origin + self.mins_z * '0 0 1' + '0 0 48', '0 0 0', 1);
@@ -185,8 +185,7 @@
if (!pickedup)
return;
- sound (self, CHAN_BODY, self.noise, 1, ATTN_NORM);
- sound (other, CHAN_AUTO, self.item_pickupsound, 1, ATTN_NORM);
+ sound (other, CHAN_AUTO, self.item_pickupsound, VOL_BASE, ATTN_NORM);
oldself = self;
self = other;
@@ -414,7 +413,6 @@
self.bot_pickupevalfunc = pickupevalfunc;
self.bot_pickupbasevalue = pickupbasevalue;
self.mdl = itemmodel;
- //self.noise = pickupsound;
self.item_pickupsound = pickupsound;
// let mappers override respawntime
if (!self.respawntime)
Modified: branches/nexuiz-2.0/data/qcsrc/server/t_jumppads.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_jumppads.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_jumppads.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -4,6 +4,8 @@
.float pushltime;
.float height;
+void() SUB_UseTargets;
+
float trigger_push_calculatevelocity_flighttime;
/*
@@ -131,7 +133,7 @@
{
// flash when activated
pointparticles(particleeffectnum("jumppad_activate"), other.origin, other.velocity, 1);
- sound (other, CHAN_ITEM, self.noise, 1, ATTN_NORM);
+ sound (other, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NORM);
self.pushltime = time + 0.2;
}
if(clienttype(other) == CLIENTTYPE_REAL)
@@ -155,6 +157,16 @@
centerprint(other, self.message);
}
+ if(self.enemy.target)
+ {
+ entity oldself;
+ oldself = self;
+ activator = other;
+ self = self.enemy;
+ SUB_UseTargets();
+ self = oldself;
+ }
+
// reset tracking of who pushed you into a hazard (for kill credit)
other.pushltime = 0;
Modified: branches/nexuiz-2.0/data/qcsrc/server/t_plats.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_plats.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_plats.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -49,7 +49,7 @@
void plat_hit_top()
{
- sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM);
self.state = 1;
self.think = plat_go_down;
self.nextthink = self.ltime + 3;
@@ -57,20 +57,20 @@
void plat_hit_bottom()
{
- sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM);
self.state = 2;
};
void plat_go_down()
{
- sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM);
self.state = 3;
SUB_CalcMove (self.pos2, self.speed, plat_hit_bottom);
};
void plat_go_up()
{
- sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM);
self.state = 4;
SUB_CalcMove (self.pos1, self.speed, plat_hit_top);
};
@@ -246,7 +246,7 @@
if (self.wait)
{
self.nextthink = self.ltime + self.wait;
- sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM);
}
else
self.nextthink = self.ltime + 0.1;
@@ -266,7 +266,7 @@
self.wait = targ.wait;
else
self.wait = 0;
- sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM);
SUB_CalcMove (targ.origin - self.mins, self.speed, train_wait);
};
@@ -413,7 +413,7 @@
if (self.noise)
{
precache_sound(self.noise);
- ambientsound(self.origin, self.noise, 1, ATTN_IDLE);
+ ambientsound(self.origin, self.noise, VOL_BASE, ATTN_IDLE);
}
if (!self.speed)
self.speed = 100;
@@ -485,7 +485,7 @@
if (self.noise)
{
precache_sound(self.noise);
- ambientsound(self.origin, self.noise, 1, ATTN_IDLE);
+ ambientsound(self.origin, self.noise, VOL_BASE, ATTN_IDLE);
}
if (!self.speed)
self.speed = 4;
@@ -577,7 +577,7 @@
return;
if (self.noise != "")
- sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM);
self.state = STATE_UP;
SUB_CalcMove (self.pos2, self.speed, button_wait);
@@ -754,7 +754,7 @@
void door_hit_top()
{
if (self.noise1 != "")
- sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM);
self.state = STATE_TOP;
if (self.spawnflags & DOOR_TOGGLE)
return; // don't come down automatically
@@ -765,14 +765,14 @@
void door_hit_bottom()
{
if (self.noise1 != "")
- sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM);
self.state = STATE_BOTTOM;
};
void door_go_down()
{
if (self.noise2 != "")
- sound (self, CHAN_VOICE, self.noise2, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM);
if (self.max_health)
{
self.takedamage = DAMAGE_YES;
@@ -795,7 +795,7 @@
}
if (self.noise2 != "")
- sound (self, CHAN_VOICE, self.noise2, 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM);
self.state = STATE_UP;
SUB_CalcMove (self.pos2, self.speed, door_hit_top);
@@ -920,7 +920,7 @@
{
if (other.flags & FL_CLIENT)
centerprint (other, self.owner.message);
- sound (other, CHAN_VOICE, "misc/talk.wav", 1, ATTN_NORM);
+ play2(other, "misc/talk.wav");
}
};
@@ -1201,7 +1201,7 @@
// Make a sound, wait a little...
if (self.noise1 != "")
- sound(self, CHAN_VOICE, self.noise1, 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM);
self.nextthink = self.ltime + 0.1;
temp = 1 - (self.spawnflags & SECRET_1ST_LEFT); // 1 or -1
@@ -1226,7 +1226,7 @@
self.dest2 = self.dest1 + v_forward * self.t_length;
SUB_CalcMove(self.dest1, self.speed, fd_secret_move1);
if (self.noise2 != "")
- sound(self, CHAN_VOICE, self.noise2, 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM);
};
// Wait after first movement...
@@ -1235,14 +1235,14 @@
self.nextthink = self.ltime + 1.0;
self.think = fd_secret_move2;
if (self.noise3 != "")
- sound(self, CHAN_VOICE, self.noise3, 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NORM);
};
// Start moving sideways w/sound...
void fd_secret_move2()
{
if (self.noise2 != "")
- sound(self, CHAN_VOICE, self.noise2, 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM);
SUB_CalcMove(self.dest2, self.speed, fd_secret_move3);
};
@@ -1250,7 +1250,7 @@
void fd_secret_move3()
{
if (self.noise3 != "")
- sound(self, CHAN_VOICE, self.noise3, 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NORM);
if (!(self.spawnflags & SECRET_OPEN_ONCE))
{
self.nextthink = self.ltime + self.wait;
@@ -1262,7 +1262,7 @@
void fd_secret_move4()
{
if (self.noise2 != "")
- sound(self, CHAN_VOICE, self.noise2, 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM);
SUB_CalcMove(self.dest1, self.speed, fd_secret_move5);
};
@@ -1272,13 +1272,13 @@
self.nextthink = self.ltime + 1.0;
self.think = fd_secret_move6;
if (self.noise3 != "")
- sound(self, CHAN_VOICE, self.noise3, 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NORM);
};
void fd_secret_move6()
{
if (self.noise2 != "")
- sound(self, CHAN_VOICE, self.noise2, 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM);
SUB_CalcMove(self.oldorigin, self.speed, fd_secret_done);
};
@@ -1291,7 +1291,7 @@
//self.th_pain = fd_secret_use;
}
if (self.noise3 != "")
- sound(self, CHAN_VOICE, self.noise3, 1, ATTN_NORM);
+ sound(self, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NORM);
};
void secret_blocked()
@@ -1322,7 +1322,7 @@
{
if (other.flags & FL_CLIENT)
centerprint (other, self.message);
- sound (other, CHAN_BODY, "misc/talk.wav", 1, ATTN_NORM);
+ play2(other, "misc/talk.wav");
}
};
Modified: branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -56,18 +56,25 @@
void Teleport_Touch (void)
{
entity head;
+ entity oldself;
if (other.health < 1)
return;
if (!other.flags & FL_CLIENT) // FIXME: Make missiles firable through the teleport too
return;
+ sound (other, CHAN_TRIGGER, "misc/teleport.wav", VOL_BASE, ATTN_NORM);
+ pointparticles(particleeffectnum("teleport"), other.origin, '0 0 0', 1);
+
+ /*
// Make teleport effect where the player left
- sound (other, CHAN_ITEM, "misc/teleport.wav", 1, ATTN_NORM);
+ sound (self, CHAN_TRIGGER, "misc/teleport.wav", VOL_BASE, ATTN_NORM);
pointparticles(particleeffectnum("teleport"), other.origin, '0 0 0', 1);
// Make teleport effect where the player arrived
- sound (other, CHAN_ITEM, "misc/teleport.wav", 1, ATTN_NORM);
+ sound (self.enemy, CHAN_TRIGGER, "misc/teleport.wav", VOL_BASE, ATTN_NORM);
+ */
+
makevectors (self.enemy.mangle);
pointparticles(particleeffectnum("teleport"), self.enemy.origin + v_forward * 32, '0 0 0', 1);
@@ -114,12 +121,20 @@
// stop player name display
{
- entity oldself;
oldself = self;
self = other;
ClearSelectedPlayer();
self = oldself;
}
+
+ if(self.enemy.target)
+ {
+ oldself = self;
+ activator = other;
+ self = self.enemy;
+ SUB_UseTargets();
+ self = oldself;
+ }
}
void spawnfunc_info_teleport_destination (void)
@@ -168,7 +183,14 @@
self.solid = SOLID_TRIGGER;
self.movetype = MOVETYPE_NONE;
- setmodel (self, self.model); // no precision needed
+ if(self.model != "")
+ setmodel (self, self.model); // no precision needed
+ else
+ {
+ // force relinking
+ setorigin(self, self.origin);
+ setsize (self, self.mins, self.maxs);
+ }
self.model = "";
self.modelindex = 0;
Modified: branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -97,6 +97,7 @@
cvar_set("g_keyhunt", "0");
cvar_set("g_assault", "0");
cvar_set("g_onslaught", "0");
+ cvar_set("g_race", "0");
cvar_set("teamplay", "0");
}
@@ -263,6 +264,30 @@
gamemode_name = "Onslaught";
teams_matter = 1;
}
+ else if(game == GAME_RACE || cvar("g_race"))
+ {
+ ResetGameCvars();
+ game = GAME_RACE;
+ cvar_set("g_race", "1");
+ fraglimit_override = cvar("g_race_laps_limit");
+ gamemode_name = "Race";
+
+ if(cvar("g_race_teams"))
+ {
+ ActivateTeamplay();
+ teams_matter = 1;
+ race_teams = bound(2, cvar("g_race_teams"), 4);
+ }
+ else
+ {
+ race_teams = 0;
+ teams_matter = 0;
+ if(cvar("g_race_qualifying"))
+ independent_players = 1;
+ }
+
+ ScoreRules_race();
+ }
else
{
// we can only assume...
@@ -298,6 +323,7 @@
g_keyhunt = cvar("g_keyhunt");
g_onslaught = cvar("g_onslaught");
g_assault = cvar("g_assault");
+ g_race = cvar("g_race");
g_arena = cvar("g_arena");
cache_mutatormsg = strzone("");
@@ -318,6 +344,12 @@
cvar_set("timelimit", ftos(timelimit_override));
}
+ if(g_race_qualifying)
+ {
+ race_fraglimit = cvar("fraglimit");
+ cvar_set("fraglimit", "0");
+ }
+
if (game == GAME_DOMINATION)//cvar("g_domination"))
dom_init();
else if (game == GAME_CTF)//cvar("g_ctf"))
@@ -337,13 +369,10 @@
e.think = default_delayedinit;
}
-string GetClientVersionMessage(float v) {
+string GetClientVersionMessage() {
local string versionmsg;
- if (v == 1) {
- versionmsg = "^1client is too old to get versioninfo.\n\n\n### YOU WON'T BE ABLE TO PLAY ON THIS SERVER ###\n\n\nUPDATE!!! (http://www.nexuiz.com)^8";
- // either that or someone wants to be funny
- } else if (v != cvar("gameversion")) {
- if(v < cvar("gameversion")) {
+ if (self.version_mismatch) {
+ if(self.version < cvar("gameversion")) {
versionmsg = "^3Your client version is outdated.\n\n\n### YOU WON'T BE ABLE TO PLAY ON THIS SERVER ###\n\n\nPlease update!!!^8";
} else {
versionmsg = "^3This server is using an outdated Nexuiz version.\n\n\n ### THIS SERVER IS INCOMPATIBLE AND THUS YOU CANNOT JOIN ###.^8";
@@ -357,7 +386,7 @@
void PrintWelcomeMessage(entity pl)
{
- string s, mutator, modifications, padding;
+ string s, mutator, modifications;
float p;
/*if(self.welcomemessage_time > time)
@@ -447,7 +476,7 @@
}
local string versionmessage;
- versionmessage = GetClientVersionMessage(self.version);
+ versionmessage = GetClientVersionMessage();
s = strcat(s, NEWLINES, "This is Nexuiz ", cvar_string("g_nexuizversion"), "\n", versionmessage);
s = strcat(s, "^8\n\nmatch type is ^1", mutator, gamemode_name, "^8\n");
@@ -600,6 +629,8 @@
// cover anything else by treating it like tdm with no teams spawned
if(g_keyhunt)
dm = kh_teams;
+ else if(g_race)
+ dm = race_teams;
else
dm = cvar("g_tdm_teams");
if(dm < 2)
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -15,7 +15,7 @@
pointparticles(particleeffectnum("electro_impact"), org2, '0 0 0', 1);
RadiusDamage (self, self.owner, cvar("g_balance_electro_primary_damage"), cvar("g_balance_electro_primary_edgedamage"), cvar("g_balance_electro_primary_radius"), world, cvar("g_balance_electro_primary_force"), IT_ELECTRO);
}
- sound (self, CHAN_BODY, "weapons/electro_impact.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
remove (self);
}
@@ -26,7 +26,7 @@
org2 = findbetterlocation (self.origin, 8);
pointparticles(particleeffectnum("electro_combo"), org2, '0 0 0', 1);
- sound (self, CHAN_BODY, "weapons/electro_impact_combo.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/electro_impact_combo.wav", VOL_BASE, ATTN_NORM);
self.event_damage = SUB_Null;
RadiusDamage (self, self.owner, cvar("g_balance_electro_combo_damage"), cvar("g_balance_electro_combo_edgedamage"), cvar("g_balance_electro_combo_radius"), world, cvar("g_balance_electro_combo_force"), IT_ELECTRO);
@@ -38,7 +38,7 @@
entity o;
if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
{
- sound (self, CHAN_BODY, "misc/null.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM);
remove(self);
return;
}
@@ -50,7 +50,7 @@
if(IsFlying(other))
announce(o, "announcer/male/electrobitch.ogg");
} else {
- sound (self, CHAN_IMPACT, "weapons/electro_bounce.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/electro_bounce.wav", VOL_BASE, ATTN_NORM);
}
}
@@ -59,7 +59,7 @@
entity o;
if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
{
- sound (self, CHAN_BODY, "misc/null.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM);
remove(self);
return;
}
@@ -122,7 +122,7 @@
setsize(proj, '0 0 0', '0 0 0');
// LordHavoc: disabled because no one likes this sound and it sometimes never stops due to packet loss
- //sound (proj, CHAN_BODY, "weapons/electro_fly.wav", 1, ATTN_NORM);
+ //sound (proj, CHAN_PROJECTILE, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
}
void W_Electro_Attack2()
@@ -161,7 +161,7 @@
proj.flags = FL_PROJECTILE;
// LordHavoc: disabled because no one likes this sound and it sometimes never stops due to packet loss
- //sound (proj, CHAN_BODY, "weapons/electro_fly.wav", 1, ATTN_NORM);
+ //sound (proj, CHAN_PROJECTILE, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
}
.float bot_secondary_electromooth;
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -4,7 +4,7 @@
vector org2;
org2 = findbetterlocation (self.origin, 12);
pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1);
- sound (self, CHAN_BODY, "weapons/grenade_impact.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
self.event_damage = SUB_Null;
RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_primary_damage"), cvar("g_balance_grenadelauncher_primary_edgedamage"), cvar("g_balance_grenadelauncher_primary_radius"), world, cvar("g_balance_grenadelauncher_primary_force"), IT_GRENADE_LAUNCHER);
@@ -17,7 +17,7 @@
vector org2;
org2 = findbetterlocation (self.origin, 12);
pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1);
- sound (self, CHAN_BODY, "weapons/grenade_impact.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
self.event_damage = SUB_Null;
RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_secondary_damage"), cvar("g_balance_grenadelauncher_secondary_edgedamage"), cvar("g_balance_grenadelauncher_secondary_radius"), world, cvar("g_balance_grenadelauncher_secondary_force"), IT_GRENADE_LAUNCHER);
@@ -49,17 +49,17 @@
float r;
r = random() * 6;
if(r < 1)
- sound (self, CHAN_IMPACT, "weapons/grenade_bounce1.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce1.wav", VOL_BASE, ATTN_NORM);
else if(r < 2)
- sound (self, CHAN_IMPACT, "weapons/grenade_bounce2.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce2.wav", VOL_BASE, ATTN_NORM);
else if(r < 3)
- sound (self, CHAN_IMPACT, "weapons/grenade_bounce3.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce3.wav", VOL_BASE, ATTN_NORM);
else if(r < 4)
- sound (self, CHAN_IMPACT, "weapons/grenade_bounce4.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce4.wav", VOL_BASE, ATTN_NORM);
else if(r < 5)
- sound (self, CHAN_IMPACT, "weapons/grenade_bounce5.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce5.wav", VOL_BASE, ATTN_NORM);
else
- sound (self, CHAN_IMPACT, "weapons/grenade_bounce6.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce6.wav", VOL_BASE, ATTN_NORM);
}
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hagar.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -6,11 +6,11 @@
pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
b = crandom();
if (b<-0.7)
- sound (self, CHAN_BODY, "weapons/hagexp1.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM);
else if (b<0.4)
- sound (self, CHAN_BODY, "weapons/hagexp2.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM);
else if (b<1)
- sound (self, CHAN_BODY, "weapons/hagexp3.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM);
self.event_damage = SUB_Null;
RadiusDamage (self, self.realowner, cvar("g_balance_hagar_primary_damage"), cvar("g_balance_hagar_primary_edgedamage"), cvar("g_balance_hagar_primary_radius"), world, cvar("g_balance_hagar_primary_force"), IT_HAGAR);
@@ -26,11 +26,11 @@
pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
b = crandom();
if (b<-0.7)
- sound (self, CHAN_BODY, "weapons/hagexp1.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM);
else if (b<0.4)
- sound (self, CHAN_BODY, "weapons/hagexp2.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM);
else if (b<1)
- sound (self, CHAN_BODY, "weapons/hagexp3.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM);
self.event_damage = SUB_Null;
RadiusDamage (self, self.realowner, cvar("g_balance_hagar_secondary_damage"), cvar("g_balance_hagar_secondary_edgedamage"), cvar("g_balance_hagar_secondary_radius"), world, cvar("g_balance_hagar_secondary_force"), IT_HAGAR);
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_laser.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -27,7 +27,7 @@
RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), IT_LASER);
else
RadiusDamage (self, self.owner, cvar("g_balance_laser_primary_damage"), cvar("g_balance_laser_primary_edgedamage"), cvar("g_balance_laser_primary_radius"), world, cvar("g_balance_laser_primary_force"), IT_LASER);
- sound (self, CHAN_BODY, "weapons/laserimpact.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
remove (self);
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_nex.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_nex.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_nex.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -29,7 +29,7 @@
if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT))
pointparticles(particleeffectnum("nex_impact"), trace_endpos - w_shotdir * 6, '0 0 0', 1);
// play a sound
- PointSound (trace_endpos, "weapons/neximpact.wav", 1, ATTN_NORM);
+ soundat (self, trace_endpos, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
if (cvar("g_use_ammunition") && !g_instagib)
{
Modified: branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc 2008-08-12 12:20:43 UTC (rev 4120)
@@ -5,7 +5,7 @@
void W_Rocket_Explode (void)
{
vector org2;
- sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
org2 = findbetterlocation (self.origin, 16);
pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
@@ -190,7 +190,7 @@
self.owner.lastrocket = world;
if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
{
- sound (self, CHAN_BODY, "misc/null.wav", 1, ATTN_NORM);
+ sound (self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM);
remove(self);
return;
}
@@ -254,7 +254,7 @@
missile.nextthink = time;
missile.cnt = time + cvar("g_balance_rocketlauncher_lifetime");
missile.effects = EF_LOWPRECISION;
- sound (missile, CHAN_BODY, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+ sound (missile, CHAN_PROJECTILE, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
missile.flags = FL_PROJECTILE;
// muzzle flash for 1st person view
@@ -392,7 +392,7 @@
if(time > self.rl_sound)
{
self.rl_sound = time + 1;
- sound (self, CHAN_BODY, "weapons/rocket_det.wav", 0.5, ATTN_NORM);
+ sound (self, CHAN_WEAPON, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM);
}
if (self.BUTTON_ATCK2)
if(g_laserguided_missile)
@@ -400,7 +400,7 @@
{
self.exteriorweaponentity.attack_finished_single = time + 0.4;
self.laser_on = !self.laser_on;
- sound (self, CHAN_AUTO, "weapons/tink1.wav", 1, ATTN_NORM);
+ sound (self, CHAN_WEAPON, "weapons/tink1.wav", VOL_BASE, ATTN_NORM);
}
}
else if (req == WR_PRECACHE)
Modified: branches/nexuiz-2.0/data/scripts/entities.def
===================================================================
--- branches/nexuiz-2.0/data/scripts/entities.def 2008-08-12 07:55:55 UTC (rev 4119)
+++ branches/nexuiz-2.0/data/scripts/entities.def 2008-08-12 12:20:43 UTC (rev 4120)
@@ -559,6 +559,7 @@
Teleport destination location point for trigger_teleport entities. Do not let it touch the floor, but place it slightly higher (like, 16 units above) for better flow when jumping through it.
-------- KEYS --------
targetname: make the trigger_teleporter point to this.
+target: target to activate when a teleporter targeting this is used
angle: direction in which player will look when teleported, OR use
angles: pitch and yaw when coming out of the teleporter (also specifies the direction the player will aim when coming out)
*/
@@ -640,6 +641,7 @@
Aiming target for entities like light and trigger_push.
-------- KEYS --------
targetname: the entity that requires an aiming direction points to this.
+target: target to activate when a jumppad targeting this is used
*/
/*QUAKED target_speaker (0 .7 .7) (-8 -8 -8) (8 8 8)
@@ -885,3 +887,23 @@
_celshader: Sets the cel shader used for this geometry. Note: omit the "textures/" prefix.
*/
+/*QUAKED trigger_race_checkpoint (0 1 0) ? NOTOUCH - CRUSH
+A checkpoint, for the race game mode. Be sure to make them quite long, so they actually catch a player reliably!
+-------- KEYS --------
+cnt: Number of the checkpoint. 0 for finish line, and at least two other checkpoints have to exist. They MUST be touched in sequential order!
+message: Death message, when touching checkpoints in the wrong order.
+targetname: Name of the checkpoint. info_player_race can target this to assign a spawn to a checkpoint. Also used for triggering a checkpoint by an event.
+-------- SPAWNFLAGS --------
+NOTOUCH: the checkpoint will not become active when touched, it HAS to be targeted
+CRUSH: the checkpoint kills when used at the wrong time
+*/
+
+/*QUAKED info_player_race (1 0.5 0) (-16 -16 -24) (16 16 45)
+Race spawn point.
+NOTE for race_place: when the race starts after the qualifying, the player with the fastest map ends up at the info_player_race with race_place 1, and so on. If there are too many players, or if someone comes in later, he will spawn at an info_player_race with race_place not set. So for each trigger_race_checkpoint, there must be at least one corresponding info_player_race with race_place NOT set.
+-------- KEYS --------
+target: this should point to a trigger_race_checkpoint to decide when this spawning point is active. The checkpoint has to be AFTER this spawn.
+cnt: weight of spawn point for random selection. Set to a lower value if you have many spawn points close together. Default value is 1.
+race_place: if target points to the trigger_race_checkpoint with cnt 0 (finish line), this sets which place the spawn corresponds to
+*/
+
More information about the nexuiz-commits
mailing list