Merge branch 'master' of /var/cache/git/xonotic/xonotic-data.pk3dir
authorRudolf Polzer <divverent@alientrap.org>
Sat, 31 Dec 2011 09:16:29 +0000 (10:16 +0100)
committerRudolf Polzer <divverent@alientrap.org>
Sat, 31 Dec 2011 09:16:29 +0000 (10:16 +0100)
66 files changed:
ctfscoring-ai.cfg
ctfscoring-alien.cfg
ctfscoring-alpha.cfg
ctfscoring-div0.cfg
ctfscoring-nex242.cfg
ctfscoring-z-lowdeposit.cfg
ctfscoring-z.cfg
defaultXonotic.cfg
gfx/crosshair21.tga [new file with mode: 0644]
gfx/crosshair22.tga [new file with mode: 0644]
gfx/crosshair23.tga [new file with mode: 0644]
gfx/crosshair24.tga [new file with mode: 0644]
gfx/crosshair25.tga [new file with mode: 0644]
gfx/crosshair26.tga [new file with mode: 0644]
keybinds.txt.hu
menu.dat.hu.po
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/client/csqcmodel_hooks.qc
qcsrc/client/hud.qc
qcsrc/client/main.qh
qcsrc/client/scoreboard.qc
qcsrc/client/tturrets.qc
qcsrc/client/waypointsprites.qc
qcsrc/common/constants.qh
qcsrc/common/csqcmodel_settings.qh
qcsrc/common/gamecommand.qc
qcsrc/common/mapinfo.qc
qcsrc/common/mapinfo.qh
qcsrc/common/util.qc
qcsrc/common/util.qh
qcsrc/csqcmodellib/cl_model.qc
qcsrc/csqcmodellib/cl_model.qh
qcsrc/csqcmodellib/cl_player.qc
qcsrc/dpdefs/dpextensions.qc
qcsrc/dpdefs/menudefs.qc
qcsrc/menu/gamecommand.qc
qcsrc/menu/gamecommand.qh
qcsrc/menu/menu.qc
qcsrc/menu/xonotic/crosshairbutton.c
qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c
qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c
qcsrc/menu/xonotic/gametypelist.c
qcsrc/menu/xonotic/serverlist.c
qcsrc/menu/xonotic/util.qc
qcsrc/menu/xonotic/util.qh
qcsrc/server/autocvars.qh
qcsrc/server/cl_client.qc
qcsrc/server/cl_physics.qc
qcsrc/server/cl_player.qc
qcsrc/server/constants.qh
qcsrc/server/ctf.qc
qcsrc/server/defs.qh
qcsrc/server/g_world.qc
qcsrc/server/progs.src
qcsrc/server/scores.qc
qcsrc/server/scores_rules.qc
qcsrc/server/sv_main.qc
qcsrc/server/t_plats.qc
qcsrc/server/teamplay.qc
qcsrc/server/tturrets/system/system_main.qc
tooltips.db.hu
xonotic-credits.txt
xonotic-credits.txt.fr
xonotic-credits.txt.hu
xonotic-credits.txt.uk

index 28ed89d..7113736 100644 (file)
@@ -1,22 +1,3 @@
-set g_ctf_flagscore_pickup_base                   1
-set g_ctf_flagscore_pickup_dropped_early          0
-set g_ctf_flagscore_pickup_dropped_late           1
-set g_ctf_flagscore_capture                      20
-set g_ctf_flagscore_kill                          2
-set g_ctf_flagpenalty_drop                        0
-set g_ctf_flagpenalty_suicidedrop                 1
-set g_ctf_flagpenalty_returned                    0
-set g_ctf_flagscore_return                        3
-set g_ctf_flagscore_return_rogue                  3
-set g_ctf_flagscore_return_by_killer              5
-set g_ctf_flagscore_return_rogue_by_killer        5
-
-// succeeded capture (pickup capture)            21 (0 for enemy)
-// failed capture (pickup kill drop return)       1 (8 for enemy)
-// failed (shot into void) (pickup kill drop)     1 (2 for enemy)
-// capture retry (kill drop pickup)               0..1 (2 for enemy)
-// suicide, then retake (suicidedrop pickup)     -1 (0 for enemy)
-
 set g_ctf_personalscore_pickup_base                   1
 set g_ctf_personalscore_pickup_dropped_early          0
 set g_ctf_personalscore_pickup_dropped_late           1
index a32ffda..dd5758d 100644 (file)
@@ -1,21 +1,3 @@
-set g_ctf_flagscore_pickup_base                   1
-set g_ctf_flagscore_pickup_dropped_early          1
-set g_ctf_flagscore_pickup_dropped_late           1
-set g_ctf_flagscore_capture                      30
-set g_ctf_flagscore_kill                          1
-set g_ctf_flagpenalty_drop                        2
-set g_ctf_flagpenalty_suicidedrop                 2
-set g_ctf_flagpenalty_returned                    0
-set g_ctf_flagscore_return                        5
-set g_ctf_flagscore_return_rogue                 10
-set g_ctf_flagscore_return_by_killer              6
-set g_ctf_flagscore_return_rogue_by_killer       11
-// succeeded capture (pickup capture)            31 (0 for enemy)
-// failed capture (pickup kill drop return)      -1 (6 or 7 for enemy)
-// failed (shot into void) (pickup kill drop)     1 (1 for enemy)
-// capture retry (kill drop pickup)              -1 (1 for enemy)
-// suicide, then retake (suicidedrop pickup)     -1 (0 for enemy)
-
 set g_ctf_personalscore_pickup_base                   1
 set g_ctf_personalscore_pickup_dropped_early          1
 set g_ctf_personalscore_pickup_dropped_late           1
index a97bd6e..c15cee8 100644 (file)
@@ -1,21 +1,3 @@
-set g_ctf_flagscore_pickup_base                   0
-set g_ctf_flagscore_pickup_dropped_early          0
-set g_ctf_flagscore_pickup_dropped_late           0
-set g_ctf_flagscore_capture                      20
-set g_ctf_flagscore_kill                          0
-set g_ctf_flagpenalty_drop                        0
-set g_ctf_flagpenalty_suicidedrop                 0
-set g_ctf_flagpenalty_returned                    0
-set g_ctf_flagscore_return                        5
-set g_ctf_flagscore_return_rogue                 10
-set g_ctf_flagscore_return_by_killer              5
-set g_ctf_flagscore_return_rogue_by_killer       10
-// succeeded capture (pickup capture)            20 (0 for enemy)
-// failed capture (pickup kill drop return)       0 (5 for enemy)
-// failed (shot into void) (pickup kill drop)     0 (0 for enemy)
-// capture retry (kill drop pickup)               0 (0 for enemy)
-// suicide, then retake (suicidedrop pickup)      0 (0 for enemy)
-
 set g_ctf_personalscore_pickup_base                   0
 set g_ctf_personalscore_pickup_dropped_early          0
 set g_ctf_personalscore_pickup_dropped_late           0
index d36d0ad..33c8ab1 100644 (file)
@@ -1,22 +1,3 @@
-set g_ctf_flagscore_pickup_base                   0
-set g_ctf_flagscore_pickup_dropped_early          1
-set g_ctf_flagscore_pickup_dropped_late           1
-set g_ctf_flagscore_capture                      25
-set g_ctf_flagscore_kill                          3
-set g_ctf_flagpenalty_drop                        2
-set g_ctf_flagpenalty_suicidedrop                 2
-set g_ctf_flagpenalty_returned                    1
-set g_ctf_flagscore_return                        5 // not adjusted as this would suck for team game
-set g_ctf_flagscore_return_rogue                 10
-set g_ctf_flagscore_return_by_killer              5
-set g_ctf_flagscore_return_rogue_by_killer       10
-
-// succeeded capture (pickup capture)            25 (0 for enemy)
-// failed capture (pickup kill drop return)      -3 (8 for enemy)
-// failed (shot into void) (pickup kill drop)    -2 (3 for enemy)
-// capture retry (kill drop pickup)              -1 (3 for enemy)
-// suicide, then retake (suicidedrop pickup)     -1 (0 for enemy)
-
 set g_ctf_personalscore_pickup_base                   0
 set g_ctf_personalscore_pickup_dropped_early          1
 set g_ctf_personalscore_pickup_dropped_late           1
index 193cc18..861ead4 100644 (file)
@@ -1,21 +1,3 @@
-set g_ctf_flagscore_pickup_base                   1
-set g_ctf_flagscore_pickup_dropped_early          1
-set g_ctf_flagscore_pickup_dropped_late           1
-set g_ctf_flagscore_capture                      20
-set g_ctf_flagscore_kill                          1
-set g_ctf_flagpenalty_drop                        0
-set g_ctf_flagpenalty_suicidedrop                 1
-set g_ctf_flagpenalty_returned                    0
-set g_ctf_flagscore_return                        5
-set g_ctf_flagscore_return_rogue                 10
-set g_ctf_flagscore_return_by_killer              5
-set g_ctf_flagscore_return_rogue_by_killer       10
-// succeeded capture (pickup capture)            21 (0 for enemy)
-// failed capture (pickup kill drop return)       1 (6 for enemy)
-// failed (shot into void) (pickup kill drop)     1 (1 for enemy)
-// capture retry (kill drop pickup)               1 (1 for enemy)
-// suicide, then retake (suicidedrop pickup)      0 (0 for enemy)
-
 set g_ctf_personalscore_pickup_base                   1
 set g_ctf_personalscore_pickup_dropped_early          1
 set g_ctf_personalscore_pickup_dropped_late           1
index 52acece..c75b306 100644 (file)
@@ -1,5 +1,3 @@
-exec ctfscoring-ai.cfg // fall back to ai's scoring for flag scores, if g_ctf_win_mode is 2, as this system is highly broken in that mode
-
 set g_ctf_personalscore_pickup_base                  -1
 set g_ctf_personalscore_pickup_dropped_early          5
 set g_ctf_personalscore_pickup_dropped_late           9
index bffe0d0..e45bdd9 100644 (file)
@@ -1,5 +1,3 @@
-exec ctfscoring-ai.cfg // fall back to ai's scoring for flag scores, if g_ctf_win_mode is 2, as this system is highly broken in that mode
-
 set g_ctf_personalscore_pickup_base                  -5
 set g_ctf_personalscore_pickup_dropped_early          1
 set g_ctf_personalscore_pickup_dropped_late           5
index d1b82b6..46f9066 100644 (file)
@@ -38,6 +38,16 @@ alias if_dedicated "${* asis}"
 _if_dedicated alias if_client ""
 if_client alias if_dedicated ""
 
+if_dedicated "alias" qc_cmd_svmenu "sv_cmd $$*"
+if_client    "alias" qc_cmd_svmenu "menu_cmd $$*"
+if_dedicated "alias" qc_cmd_svcl   "sv_cmd $$*"
+if_client    "alias" qc_cmd_svcl   "cl_cmd $$*"
+if_dedicated "alias" qc_cmd_svcmd  "sv_cmd $$*"
+if_client    "alias" qc_cmd_svcmd  "cmd $$*"
+
+// shorthand for the most usual case
+alias qc_cmd "qc_cmd_svmenu $*"
+
 seta g_configversion 0 "Configuration file version (used to upgrade settings) 0: first run, or previous start was <2.4.1  Later, it's overridden by config.cfg, version ranges are defined in config_update.cfg"
 
 // say aliases
@@ -606,8 +616,6 @@ seta fraglimit_override -1  "Frag limit overriding the mapinfo specified one (use
 seta leadlimit_override -1     "Lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
 seta capturelimit_override -1  "Capture limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
 seta captureleadlimit_override -1      "Capture llead imit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_ctf_capture_limit -1    "CTF capture limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_ctf_capture_leadlimit -1        "CTF capture lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
 seta g_arena_point_limit -1    "Arena point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
 seta g_arena_point_leadlimit -1        "Arena point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
 seta g_domination_point_limit -1       "Domination point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
@@ -620,7 +628,6 @@ seta g_race_laps_limit -1   "Race laps limit overriding the mapinfo specified one
 seta g_nexball_goallimit -1 "Nexball goal limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
 seta g_nexball_goalleadlimit -1 "Nexball goal lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
 
-seta g_ctf_win_mode 0  "0: captures only, 1: captures, then points, 2: points only"
 seta g_ctf_ignore_frags 0      "1: regular frags give no points"
 
 set g_freezetag 0 "Freeze Tag: Freeze the opposing team(s) to win, unfreeze teammates by standing next to them"
@@ -1326,7 +1333,6 @@ seta g_waypointsprites_turrets 1 "disable turret waypoints"
 seta g_waypointsprites_turrets_maxdist 4000 "max distace for turret sprites"
 
 // command extension
-alias qc_cmd   "sv_cmd $*" // menu QC will override this to menu_cmd
 alias adminmsg "sv_cmd adminmsg $*"
 alias teamstatus       "cmd teamstatus; sv_cmd teamstatus" // yes, it is broken on listen servers that way, but well, who cares :P
 alias printstats       "sv_cmd printstats" // print status on demand
@@ -1400,14 +1406,8 @@ alias unban "sv_cmd unban $*"     // usage: unban 3 (number from bans)
 r_labelsprites_scale 0.40625 // labels sprites get displayed at 0.5x from 640x480 to 1280x1024, and at 1x from 1600x1200 onwards
 
 // settemp subsystem. Do not touch. Usage: settemp variable value, next map resets it.
-set settemp_list 0
-set settemp_idx 0
-set _settemp_var UNUSED
-alias settemp "_settemp_var \"_settemp_x$settemp_idx\"; qc_cmd rpn /settemp_idx settemp_idx 1 add def; _settemp \"$1\" \"$2\""
-alias _settemp "settemp_list \"1 $1 $_settemp_var $settemp_list\"; set $_settemp_var \"${$1}\"; $1 \"$2\""
-alias settemp_restore "_settemp_restore_${settemp_list asis}"
-alias _settemp_restore_0 "set settemp_var 0; set settemp_list 0"
-alias _settemp_restore_1 "$1 \"${$2}\"; _settemp_restore_${3- asis}"
+alias settemp "qc_cmd_svcl settemp $$*"
+alias settemp_restore "qc_cmd_svcl settemp_restore"
 
 // usercommands. These can be edited and bound by the menu.
 seta "userbind1_press" "say_team quad soon";  seta "userbind1_release" "";  seta "userbind1_description" "team: quad soon"
@@ -1569,6 +1569,8 @@ seta skill 4
 seta gl_finish $gl_finish
 seta v_kicktime $v_kicktime
 seta r_subdivisions_tolerance $r_subdivisions_tolerance
+seta vid_gl20 $vid_gl20
+seta vid_gl13 $vid_gl13
 
 // ticrate
 //sys_ticrate 0.0166667
@@ -1898,7 +1900,7 @@ set sv_pitch_fixyaw 0 "workaround to fix the aiming direction on stupidly made p
 
 set rescan_pending 0 "set to 1 to schedule a fs_rescan at the end of this match"
 
-seta g_mapinfo_allow_unsupported_modes_and_let_stuff_break "0" "set to 1 to be able to force game types using g_ cvars even if the map does not support them"
+set g_mapinfo_allow_unsupported_modes_and_let_stuff_break "0" "set to 1 to be able to force game types using g_ cvars even if the map does not support them"
 
 // weapon accuracy stats
 set sv_accuracy_data_share 1 "1 send weapon accuracy data statistics to spectating clients, depends on cl_accuracy_data_share"
diff --git a/gfx/crosshair21.tga b/gfx/crosshair21.tga
new file mode 100644 (file)
index 0000000..17e186b
Binary files /dev/null and b/gfx/crosshair21.tga differ
diff --git a/gfx/crosshair22.tga b/gfx/crosshair22.tga
new file mode 100644 (file)
index 0000000..4dbecc7
Binary files /dev/null and b/gfx/crosshair22.tga differ
diff --git a/gfx/crosshair23.tga b/gfx/crosshair23.tga
new file mode 100644 (file)
index 0000000..26328f4
Binary files /dev/null and b/gfx/crosshair23.tga differ
diff --git a/gfx/crosshair24.tga b/gfx/crosshair24.tga
new file mode 100644 (file)
index 0000000..94c928f
Binary files /dev/null and b/gfx/crosshair24.tga differ
diff --git a/gfx/crosshair25.tga b/gfx/crosshair25.tga
new file mode 100644 (file)
index 0000000..495ba6b
Binary files /dev/null and b/gfx/crosshair25.tga differ
diff --git a/gfx/crosshair26.tga b/gfx/crosshair26.tga
new file mode 100644 (file)
index 0000000..6d49c7e
Binary files /dev/null and b/gfx/crosshair26.tga differ
index eafed34..d20eec6 100644 (file)
@@ -7,14 +7,14 @@
 "+crouch"                               "guggolás / süllyedés"
 "+hook"                                 "kézi kampó / rakéta puttony"
 ""                                      ""
-""                                      "Lövés"
-"+fire"                                 "Elsödleges"
+""                                      "Tüzelés"
+"+fire"                                 "Elsődleges"
 "+fire2"                                "Másodlagos"
 ""                                      ""
 ""                                      "Fegyverváltás"
-"weapprev"                              "elöző"
+"weapprev"                              "előző"
 "weapnext"                              "következő"
-"weaplast"                              "elözőleg használt"
+"weaplast"                              "előzőleg használt"
 "weapbest"                              "legjobb"
 "reload"                                "újratöltés"
 "weapon_group_1"                        "Lézer"
index 4783835..7d04e23 100644 (file)
@@ -1,16 +1,17 @@
-# SOME DESCRIPTIVE TITLE.
+# SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR: xaN1C4n3 <robalm@freemail.hu>, 2011.01.19
 # corrected by xaN1C4n3, 2011.12.20.
-#      version 2.0
+# further corrected by C.Brutail, 2011.12.28.
+#      version 2.1
 #
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-12 12:24+0200\n"
+"POT-Creation-Date: 2011-09-02 07:51+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -77,10 +78,10 @@ msgstr "egyéni"
 #: qcsrc/menu/menu.qc:29
 #, fuzzy, c-format
 msgid "^4MQC Build information: ^1%s\n"
-msgstr "^4MQC Épitési információ: %s\n"
+msgstr "^4MQC Build információ: %s\n"
 
 #: qcsrc/menu/xonotic/campaign.c:284
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:123
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:134
 msgid "???"
 msgstr "???"
 
@@ -91,7 +92,7 @@ msgstr "Szint %d: %s"
 
 #: qcsrc/menu/xonotic/cvarlist.c:85
 msgid "will be saved to config.cfg"
-msgstr "A config.cfg-ba lesz mentve"
+msgstr "A config.cfg-be lesz mentve"
 
 #: qcsrc/menu/xonotic/cvarlist.c:87
 msgid "will not be saved"
@@ -103,7 +104,7 @@ msgstr "magán"
 
 #: qcsrc/menu/xonotic/cvarlist.c:91
 msgid "engine setting"
-msgstr "motor beállítás"
+msgstr "grafikus motor beállítás"
 
 #: qcsrc/menu/xonotic/cvarlist.c:93
 msgid "read only"
@@ -132,10 +133,9 @@ msgid ""
 "Welcome to Xonotic, please select your language preference and enter your "
 "player name to get started.  You can change these options later through the "
 "menu system."
-msgstr ""
-"Üdvözlünk a Xonotic-ban! Kérjük, a kezdéshez válaszd ki a kívánt nyelvet és "
-"írd be a játékos nevedet! Később ezeket meg is tudod változtatni a "
-"menürendszerben."
+msgstr "Üdvözlünk a Xonotic-ban! Kérjük, a kezdéshez válaszd ki a használni kívánt nyelvet "
+"és írd be a játékos nevedet! Később ezeket meg is tudod változtatni "
+"a menürendszerben."
 
 #: qcsrc/menu/xonotic/dialog_firstrun.c:38
 #: qcsrc/menu/xonotic/dialog_settings_misc.c:35
@@ -150,7 +150,7 @@ msgstr "Név:"
 
 #: qcsrc/menu/xonotic/dialog_firstrun.c:69
 msgid "Save settings"
-msgstr "A beállítások mentése"
+msgstr "Beállítások mentése"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4
 msgid "Ammo Panel"
@@ -198,12 +198,12 @@ msgstr "Színtelítettség:"
 #: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:27
 #, fuzzy
 msgid "Fade time:"
-msgstr "Bejegyzés halványulási idő:"
+msgstr "Bejegyzés elhalványulási ideje:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:31
 #, fuzzy
 msgid "Flip messages order"
-msgstr "Értesítés rend megfordítás"
+msgstr "Értesítési sorrend megfordítása"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:33
 #, fuzzy
@@ -218,7 +218,7 @@ msgstr "Közép"
 #: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:41
 #, fuzzy
 msgid "Font scale:"
-msgstr "Font részletesség:"
+msgstr "Betűméret:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4
 msgid "Chat Panel"
@@ -242,11 +242,11 @@ msgstr "Csevely sípszó"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4
 msgid "Engine Info Panel"
-msgstr "Motor Információs panel"
+msgstr "Grafikus motor információs panel"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22
 msgid "Engine info:"
-msgstr "Motor Információ:"
+msgstr "Grafikus motor Információ:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25
 msgid "Use an averaging algorithm for fps"
@@ -287,19 +287,19 @@ msgstr "Ikon igazítás:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45
 msgid "Flip health and armor positions"
-msgstr "Életerő és páncél poziciójának cseréje"
+msgstr "Életerő és páncél pozíciójának cseréje"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4
 msgid "Info Messages Panel"
-msgstr "Info üzenetek lapja"
+msgstr "Infó üzenetek panel"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22
 msgid "Info messages:"
-msgstr "Info üzenetek:"
+msgstr "Infó üzenetek:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25
 msgid "Flip align"
-msgstr "Forditott igazítás"
+msgstr "Fordított igazítás"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4
 msgid "Mod Icons Panel"
@@ -315,19 +315,19 @@ msgstr "Értesítések:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25
 msgid "Also print notifications to the console"
-msgstr "Az értesítéseket a konzolra is kiirja"
+msgstr "Az értesítéseket a konzolra is kiírja"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28
 msgid "Flip notify order"
-msgstr "Értesítés rend megfordítás"
+msgstr "Értesítési sorrend megfordítása"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31
 msgid "Entry lifetime:"
-msgstr "Bejegyzés élettartam:"
+msgstr "Bejegyzés élettartama:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35
 msgid "Entry fadetime:"
-msgstr "Bejegyzés halványulási idő:"
+msgstr "Bejegyzés elhalványulási ideje:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:4
 #, fuzzy
@@ -343,7 +343,7 @@ msgstr "Panel kikapcsolva"
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:23
 #, fuzzy
 msgid "Panel enabled"
-msgstr "Panel engedélyezés"
+msgstr "Panel engedélyezése"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:24
 #, fuzzy
@@ -392,11 +392,11 @@ msgstr "Sebesség (kB/s):"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:45
 msgid "Include vertical speed"
-msgstr "Függöleges sebesség is"
+msgstr "Függőleges sebességet is"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:56
 msgid "Speed unit:"
-msgstr "Sebesség egység:"
+msgstr "Sebesség mértékegysége:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:58
 msgid "qu/s"
@@ -421,7 +421,7 @@ msgstr "csomó"
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:64
 #, fuzzy
 msgid "Show"
-msgstr "Muta"
+msgstr "Mutasd"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:67
 #, fuzzy
@@ -435,7 +435,7 @@ msgstr "Gyorsulás:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:74
 msgid "Include vertical acceleration"
-msgstr "Függöleges sebesség is"
+msgstr "Függőleges sebességet is"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4
 msgid "Powerups Panel"
@@ -482,7 +482,7 @@ msgstr "Radar:"
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:154
-#: qcsrc/menu/xonotic/util.qc:612
+#: qcsrc/menu/xonotic/util.qc:600
 msgid "Alpha:"
 msgstr "Átlátszóság:"
 
@@ -512,7 +512,7 @@ msgstr "Észak"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46
 msgid "Scale:"
-msgstr "Arány:"
+msgstr "Méret:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50
 msgid "Zoom mode:"
@@ -536,7 +536,7 @@ msgstr "Sohasem nagyított"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4
 msgid "Score Panel"
-msgstr "Ponttáblázat"
+msgstr "Pontjelző panel"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_score.c:22
 msgid "Score:"
@@ -549,7 +549,7 @@ msgstr "Helyezés:"
 #: qcsrc/menu/xonotic/dialog_hudpanel_score.c:26
 #, fuzzy
 msgid "Off"
-msgstr "Off"
+msgstr "Kikapcsolva"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_score.c:27
 msgid "And me"
@@ -561,7 +561,7 @@ msgstr "Tiszta"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4
 msgid "Timer Panel"
-msgstr "Időtáblázat"
+msgstr "Időmérő panel"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22
 msgid "Timer:"
@@ -573,15 +573,15 @@ msgstr "Eltelt idő mutatása"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4
 msgid "Vote Panel"
-msgstr "Szavazati tábla"
+msgstr "Szavazó panel"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22
 msgid "Alpha after voting:"
-msgstr "Átlátszóság a szavazás után:"
+msgstr "Átlátszóság szavazat után:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4
 msgid "Weapons Panel"
-msgstr "Fegyverek lapja"
+msgstr "Fegyver panel"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24
 msgid "Fade out after:"
@@ -599,7 +599,7 @@ msgstr "%ds"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32
 msgid "Fade effect:"
-msgstr "Halványulás hatás:"
+msgstr "Elhalványulás hatása:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35
 msgid "EF^None"
@@ -607,11 +607,11 @@ msgstr "EF^Nincs"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:36
 msgid "Slide"
-msgstr "Csúszka"
+msgstr "Becsúszó"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37
 msgid "Alpha"
-msgstr "Átlátszóság"
+msgstr "Halványuló"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:38
 #, fuzzy
@@ -623,68 +623,63 @@ msgid "Weapon icons:"
 msgstr "Fegyver ikonok:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45
-#, fuzzy
-msgid "Show only owned weapons"
-msgstr "Alap iránypontok mutatása"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:48
 msgid "Show weapon ID as:"
-msgstr "A Fegyver azonosító megjelenítés mint:"
+msgstr "A Fegyver ID megjelenítése mint:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46
 msgid "SHOWAS^None"
-msgstr "Nincs"
+msgstr "Sehogy"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:47
 msgid "Number"
-msgstr "Szám"
+msgstr "Számmal"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:51
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:48
 msgid "Bind"
-msgstr "Hozzárendelés"
+msgstr "Billentyű"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:54
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:51
 msgid "Show Accuracy"
 msgstr "Pontosság mutatása"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:55
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:52
 msgid "Show Ammo"
 msgstr "Lőszer mutatása"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:58
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:55
 msgid "Ammo bar color:"
 msgstr "Lőszer jelző színe:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:64
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:61
 msgid "Ammo bar alpha:"
-msgstr "Jelző átlátszóság:"
+msgstr "Lőszer jelző átlátszósága:"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4
 msgid "Panel HUD Setup"
-msgstr "HUD panel beállítás"
+msgstr "HUD panel beállítása"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21
 msgid "Panel background defaults:"
-msgstr "Alapértelmezett panel háttér :"
+msgstr "Alapértelmezett panel háttér:"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:23 qcsrc/menu/xonotic/util.qc:587
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:23 qcsrc/menu/xonotic/util.qc:575
 msgid "Background:"
 msgstr "Háttér:"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:25
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:37
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:52
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 qcsrc/menu/xonotic/util.qc:590
-#: qcsrc/menu/xonotic/util.qc:606 qcsrc/menu/xonotic/util.qc:623
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 qcsrc/menu/xonotic/util.qc:578
+#: qcsrc/menu/xonotic/util.qc:594 qcsrc/menu/xonotic/util.qc:611
 msgid "Disable"
 msgstr "Letiltás"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:595
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:583
 msgid "Color:"
 msgstr "Szín:"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:603
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:591
 msgid "Border size:"
 msgstr "Keret méret:"
 
@@ -693,21 +688,21 @@ msgstr "Keret méret:"
 msgid "Team color:"
 msgstr "Csapat szín:"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:629
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:617
 msgid "Test team color in configure mode"
-msgstr "Csapat szín ellenörzés konfigurációs módban"
+msgstr "Csapat szín tesztelés beállítás közben"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:632
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:620
 msgid "Padding:"
 msgstr "Kitöltés:"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68
 msgid "HUD Dock:"
-msgstr "HUD rögzítés:"
+msgstr "HUD rögzítők:"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70
 msgid "DOCK^Disabled"
-msgstr "Letiltott"
+msgstr "Letiltva"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71
 msgid "DOCK^Small"
@@ -743,15 +738,15 @@ msgstr "Y:"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117
 msgid "Exit setup"
-msgstr "Kilépés a beállitásokból"
+msgstr "Kilépés a beállításokból"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer.c:4
 msgid "Multiplayer"
-msgstr "Többjátékos"
+msgstr "Többjátékos mód"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer.c:18
 msgid "Servers"
-msgstr "Kiszolgálók"
+msgstr "Szerverek"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer.c:19
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5
@@ -765,11 +760,11 @@ msgstr "Demók"
 #: qcsrc/menu/xonotic/dialog_multiplayer.c:21
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5
 msgid "Player Setup"
-msgstr "Játékos beállítás"
+msgstr "Játékos beállítások"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:34
 msgid "Game type:"
-msgstr "Játék típus:"
+msgstr "Játék típusa:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:46
 msgid "Match settings:"
@@ -777,12 +772,12 @@ msgstr "Meccs beállítások:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:49
 msgid "Time limit:"
-msgstr "Idő határ:"
+msgstr "Időhatár:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:53
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:61
 msgid "Use map specified default"
-msgstr "Térképhez tartozó alapérték használata"
+msgstr "Pályához tartozó alapérték használata"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:56
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155
@@ -792,11 +787,11 @@ msgstr "Térképhez tartozó alapérték használata"
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163
 msgid "Point limit:"
-msgstr "Pont határ:"
+msgstr "Ponthatár:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:64
 msgid "Player slots:"
-msgstr "Összes játékos:"
+msgstr "Maximális játékosszám"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:67
 msgid "Number of bots:"
@@ -817,7 +812,7 @@ msgstr "Kezdő"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76
 msgid "You will win"
-msgstr "Te nyersz"
+msgstr "Te fogsz nyerni"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77
 msgid "You can win"
@@ -825,7 +820,7 @@ msgstr "Nyerhetsz"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78
 msgid "You might win"
-msgstr "Még legyőzheted"
+msgstr "Talán győzhetsz"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79
 msgid "Advanced"
@@ -841,7 +836,7 @@ msgstr "Hivatásos"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82
 msgid "Assassin"
-msgstr "Gyilkos"
+msgstr "Gyilkológép"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83
 msgid "Unhuman"
@@ -849,7 +844,7 @@ msgstr "Embertelen"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84
 msgid "Godlike"
-msgstr "Isteni"
+msgstr "MAGA AZ ISTEN"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:88
 msgid "Mutators..."
@@ -862,7 +857,7 @@ msgstr "Haladó beállítások..."
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:104
 msgid "Map list:"
-msgstr "Térképlista:"
+msgstr "Pályalista:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:110
 msgid "Select all"
@@ -874,11 +869,11 @@ msgstr "Egyik sem"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:119
 msgid "Start Multiplayer!"
-msgstr "Többjátékos indítás"
+msgstr "Többjátékos indítása!"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:154
 msgid "Capture limit:"
-msgstr "Rablás határ:"
+msgstr "Zászlórablások száma:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158
 msgid "Lives:"
@@ -894,15 +889,15 @@ msgstr "Célok:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164
 msgid "Frag limit:"
-msgstr "Frag határérték:"
+msgstr "Gyilok határérték:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6
 msgid "Advanced server settings"
-msgstr "Haladó kiszolgáló beállítások"
+msgstr "Haladó szerver beállítások"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25
 msgid "Game settings:"
-msgstr "Játék beállításai:"
+msgstr "Játék beállítások:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28
 msgid "Allow spectating"
@@ -914,7 +909,7 @@ msgstr "Páncél megjelenés:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36
 msgid "Game speed:"
-msgstr "Játék sebesség:"
+msgstr "Játék sebessége:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40
 msgid "Teamplay settings:"
@@ -922,19 +917,19 @@ msgstr "Csapatjáték beállítások:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43
 msgid "Friendly fire scale:"
-msgstr "Baráti tűz mértéke:"
+msgstr "Csapattárs sebzés mértéke:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47
 msgid "Virtual friendly fire (effect only)"
-msgstr "Látszólagos baráti tűz (csak hatás)"
+msgstr "Látszólagos csapattárs sebzés (csak látvány)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50
 msgid "Friendly fire penalty:"
-msgstr "Baráti tűz büntetése:"
+msgstr "Csapattárs megsebzésének büntetése:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54
 msgid "Virtual penalty (effect only)"
-msgstr "Látszólagos büntetés (csak hatás)"
+msgstr "Látszólagos büntetés (csak látvány)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57
 msgid "Teams:"
@@ -942,7 +937,7 @@ msgstr "Csapatok:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66
 msgid "Map voting:"
-msgstr "Térkép szavazás:"
+msgstr "Pálya szavazás:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68
 msgid "No voting"
@@ -986,7 +981,7 @@ msgstr "Egyszerű többség nyer"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5
 msgid "Map Information"
-msgstr "Térkép Információ"
+msgstr "Pálya Információ"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
 msgid "Full item placement"
@@ -1020,7 +1015,7 @@ msgstr "Bezár"
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:121
 #, fuzzy
 msgid "MAP^Play"
-msgstr "Indít"
+msgstr "Indítás"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7
 msgid "Mutators"
@@ -1042,7 +1037,7 @@ msgstr "%s Aréna"
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167
 msgid "Dodging"
-msgstr "Kitérés"
+msgstr "Félreugrás"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250
@@ -1081,7 +1076,7 @@ msgstr "Kampó"
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173
 msgid "Midair"
-msgstr "Levegőben"
+msgstr "Sebzés csak levegőben"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176
@@ -1114,15 +1109,15 @@ msgstr "Nincs"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164
 msgid "Gameplay mutators:"
-msgstr "Játékmenet mutatorok:"
+msgstr "Játékmenet módosítók:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196
 msgid "Weapon & item mutators:"
-msgstr "Fegyver és tárgy mutatorok:"
+msgstr "Fegyver és tárgy módosítók:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199
 msgid "Grappling hook"
-msgstr "Vonókampó"
+msgstr "Vonóhorog"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215
 msgid "Weapon arenas:"
@@ -1130,7 +1125,7 @@ msgstr "Fegyver Arénák:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218
 msgid "Regular (no arena)"
-msgstr "Hagyományos (nincs aréna)"
+msgstr "Hagyományos (nincs módosítás)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256
@@ -1147,11 +1142,11 @@ msgstr "A legtöbb fegyver"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4
 msgid "Demo"
-msgstr "Demó"
+msgstr "Demók"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28
 msgid "Record demos while playing"
-msgstr "Játék közben rögzitse a demókat"
+msgstr "Játék közben demók rögzítése"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28
@@ -1196,12 +1191,12 @@ msgstr "Cím:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:67
 msgid "Info..."
-msgstr "Info..."
+msgstr "Infó..."
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:72
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317
 msgid "Join!"
-msgstr "Csatlakozz!"
+msgstr "Csatlakozok!"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5
 msgid "Server Information"
@@ -1218,7 +1213,7 @@ msgstr "N/A"
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158
 #, c-format
 msgid "%d/%d, %d free player slots"
-msgstr "%d/%d, %d szabad játékos hely"
+msgstr "%d/%d, %d szabad férőhely"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172
 #, c-format
@@ -1231,39 +1226,39 @@ msgstr "Hivatalos beállítások"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197
 msgid "N/A (can't connect)"
-msgstr "N/A (nem tud csatlakozni)"
+msgstr "N/A (nem tudok csatlakozni)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205
 msgid "not supported (can't connect)"
-msgstr "nem támogatott (nem tud csatlakozni)"
+msgstr "nem támogatott (nem tudok csatlakozni)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207
 msgid "not supported (won't encrypt)"
-msgstr "nem támogatott (nem titkositott)"
+msgstr "nem támogatott (nem titkosított)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211
 msgid "supported (will encrypt)"
-msgstr "támogatott (titkositott)"
+msgstr "támogatott (titkosított)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213
 msgid "supported (won't encrypt)"
-msgstr "támogatott (nem titkositott)"
+msgstr "támogatott (nem titkosított)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217
 msgid "requested (will encrypt)"
-msgstr "kért (titkositott)"
+msgstr "kért (titkosított)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219
 msgid "requested (won't encrypt)"
-msgstr "kért (nem titkositott)"
+msgstr "kért (nem titkosított)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223
 msgid "required (can't connect)"
-msgstr "szükséges (nem tud csatlakozni)"
+msgstr "szükséges (nem tudok csatlakozni)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225
 msgid "required (will encrypt)"
-msgstr "szükséges (titkositott)"
+msgstr "szükséges (titkosított)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269
@@ -1315,25 +1310,29 @@ msgstr "Titkosítás:"
 msgid "Model:"
 msgstr "Modell:"
 
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:87
+msgid "Force player models to mine"
+msgstr "Ellenség modelljeinek kényszerítése az enyémmel megegyezőre"
+
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88
 msgid "Field of view:"
 msgstr "Látómező:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92
 msgid "View bobbing:"
-msgstr "Nézet kitérés:"
+msgstr "Fej biccenés:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96
 msgid "Zoom factor:"
-msgstr "Nagyítás szorzó:"
+msgstr "Nagyítási szorzó:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100
 msgid "Zoom speed:"
-msgstr "Nagyítás sebesség:"
+msgstr "Nagyítás sebessége:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103
 msgid "Weapon settings..."
-msgstr "Fegyver beállítások..."
+msgstr "Fegyverzet beállítások..."
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110
 msgid "Crosshair:"
@@ -1350,7 +1349,7 @@ msgstr "Célkereszt mérete:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134
 msgid "Crosshair alpha:"
-msgstr "Célkereszt átlátszóság:"
+msgstr "Célkereszt átlátszósága:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138
 msgid "Crosshair color:"
@@ -1358,7 +1357,7 @@ msgstr "Célkereszt színe:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:140
 msgid "By health"
-msgstr "Életerőtöl függ"
+msgstr "Életerőtől függ"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143
 #, fuzzy
@@ -1367,7 +1366,7 @@ msgstr "Egyéni"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148
 msgid "Enable center dot"
-msgstr "Közép pont engedélyezés"
+msgstr "Középső pont engedélyezése"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:151
 msgid "Size:"
@@ -1439,12 +1438,11 @@ msgstr "GIBS^Rengeteg"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:191
 msgid "Damage splash:"
-msgstr "Sérülés szórás:"
+msgstr "Sérülési rázkódás:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:195
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:173
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:194
-#: qcsrc/menu/xonotic/dialog_settings_input.c:74
 #: qcsrc/menu/xonotic/dialog_settings_misc.c:30
 #: qcsrc/menu/xonotic/dialog_settings_misc.c:41
 #: qcsrc/menu/xonotic/dialog_settings_video.c:109
@@ -1457,15 +1455,15 @@ msgstr "Iránypontok"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23
 msgid "Show base waypoints"
-msgstr "Alap iránypontok mutatása"
+msgstr "Bázis-iránypontok mutatása"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25
 msgid "Waypoint scale:"
-msgstr "Iránypont részletesség:"
+msgstr "Iránypontok mérete:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29
 msgid "Waypoint alpha:"
-msgstr "Iránypont átlátszóság:"
+msgstr "Iránypontok átlátszósága:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34
 msgid "Show names:"
@@ -1497,7 +1495,7 @@ msgstr "Le"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41
 msgid "Use priority list for weapon cycling"
-msgstr "Az elsőbbségi listát használja a fegyverváltáshoz"
+msgstr "Az elsőbbségi listát használom a fegyverváltáshoz"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43
 msgid "Auto switch weapons on pickup"
@@ -1505,11 +1503,11 @@ msgstr "Automatikus váltás a felvett fegyverre"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45
 msgid "Draw 1st person weapon model"
-msgstr "1.személyű fegyver modell kirajzolása"
+msgstr "Kézben tartott fegyver kirajzolása"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55
 msgid "Flip view horizontally"
-msgstr "A nézet vízszintes dobása"
+msgstr "A képernyő vízszintes tükrözése"
 
 #: qcsrc/menu/xonotic/dialog_news.c:4
 msgid "News"
@@ -1547,7 +1545,7 @@ msgstr "Bemenet"
 #: qcsrc/menu/xonotic/dialog_settings.c:19
 #: qcsrc/menu/xonotic/dialog_settings_video.c:4
 msgid "Video"
-msgstr "Kép"
+msgstr "Videó"
 
 #: qcsrc/menu/xonotic/dialog_settings.c:20
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:4
@@ -1579,7 +1577,7 @@ msgstr "Zene:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:41
 msgid "VOL^Ambient:"
-msgstr "VOL^Környezeti:"
+msgstr "VOL^Háttérzajok:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:48
 msgid "Info:"
@@ -1595,7 +1593,7 @@ msgstr "Fájdalom:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:69
 msgid "Player:"
-msgstr "Játékos:"
+msgstr "Játékosok:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:76
 msgid "Shots:"
@@ -1700,7 +1698,7 @@ msgstr "VOCS^Nincs"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:133
 msgid "VOCS^Taunts"
-msgstr "VOCS^Gúnyok"
+msgstr "VOCS^Gúnyolódás"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:134
 msgid "VOCS^All"
@@ -1708,15 +1706,15 @@ msgstr "VOCS^Minden"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:137
 msgid "Taunt range:"
-msgstr "Gúny terjedés:"
+msgstr "Gúnyolódások hallhatósága:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:140
 msgid "RNG^Very short"
-msgstr "RNG^Nagyon rövid"
+msgstr "RNG^Közvetlen közelről"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:141
 msgid "RNG^Short"
-msgstr "RNG^Rövid"
+msgstr "RNG^Közelről"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:142
 msgid "RNG^Normal"
@@ -1724,23 +1722,23 @@ msgstr "RNG^Normál"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:143
 msgid "RNG^Long"
-msgstr "RNG^Hosszú"
+msgstr "RNG^Távolról is"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:144
 msgid "RNG^Full"
-msgstr "RNG^Teljes"
+msgstr "RNG^Teljes pályán"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:151
 msgid "Automatic taunts"
-msgstr "Automatikus gúnyok"
+msgstr "Automatikus gúnyolódás"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:160
 msgid "Time warning:"
-msgstr "Idő figyelmeztetés:"
+msgstr "Időre figyelmeztetés:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:162
 msgid "WRN^None"
-msgstr "Nincs"
+msgstr "Kikapcsolva"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:163
 msgid "1 minute"
@@ -1764,11 +1762,11 @@ msgstr "Menü hangok"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:38
 msgid "Quality preset:"
-msgstr "Minőség sablon:"
+msgstr "Grafikai részletesség:"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:41
 msgid "PRE^OMG!"
-msgstr "PRE^OMG!"
+msgstr "PRE^ATYAÉG!"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:42
 msgid "PRE^Low"
@@ -1788,7 +1786,7 @@ msgstr "PRE^Magas"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:46
 msgid "PRE^Ultra"
-msgstr "PRE^Szélsőséges"
+msgstr "PRE^Nagyon magas"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:48
 msgid "PRE^Ultimate"
@@ -1796,7 +1794,7 @@ msgstr "PRE^Végső"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:52
 msgid "Geometry detail:"
-msgstr "Geometria részletesség:"
+msgstr "Geometriai részletesség:"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:54
 msgid "DET^Lowest"
@@ -1871,7 +1869,7 @@ msgstr "RES^Legjobb"
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:91
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:94
 msgid "Avoid lossy texture compression"
-msgstr "Kerülje a veszteséges textúra tömörítést"
+msgstr "Veszteséges textúra tömörítés kikapcsolása"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:100
 msgid "Anisotropy:"
@@ -1891,27 +1889,27 @@ msgstr "16x"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:110
 msgid "Particle quality:"
-msgstr "Részecske minőség:"
+msgstr "Részecskék minősége:"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:113
 msgid "Particle distance:"
-msgstr "Részecske távolság:"
+msgstr "Részecskék megjelenítése:"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:117
 msgid "Decals"
-msgstr "Minták"
+msgstr "Vér- és égésnyomok"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:118
 msgid "Decals on models"
-msgstr "Minták a modellen"
+msgstr "Foltok a modelleken"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:122
 msgid "Distance:"
-msgstr "Távolsága:"
+msgstr "Megjelenítés távolsága:"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:128
 msgid "Time:"
-msgstr "Ideje:"
+msgstr "Eltűnés ideje"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:134
 msgid "Use lightmaps"
@@ -1923,7 +1921,7 @@ msgstr "Deluxe mapping"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:137
 msgid "Gloss"
-msgstr "Fényes"
+msgstr "Csillogás"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:140
 msgid "Offset mapping"
@@ -1935,7 +1933,7 @@ msgstr "Relief mapping"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:145
 msgid "Reflections:"
-msgstr "Tükrözödés:"
+msgstr "Tükröződés:"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:148
 msgid "Blurred"
@@ -1959,7 +1957,7 @@ msgstr "Nincsenek dinamikus fények"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:159
 msgid "Flash blend approximation"
-msgstr "Elnagyolt villanás keverés"
+msgstr "Elnagyolt villanások"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:161
 msgid "Realtime dynamic lighting"
@@ -1976,7 +1974,7 @@ msgstr "Valósidejű világ fények"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:170
 msgid "Use normal maps"
-msgstr "Normál map használata"
+msgstr "Normal map használata"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:172
 msgid "Soft shadows"
@@ -1988,7 +1986,7 @@ msgstr "Fényudvarok"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:176
 msgid "Use Occlusion Queries"
-msgstr "Láthatósági ellenörzés"
+msgstr "Láthatósági ellenőrzés"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:178
 msgid "Bloom"
@@ -2000,19 +1998,19 @@ msgstr "Magas dinamika tartomány (HDR)"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:184
 msgid "Motion blur:"
-msgstr "Mozgási elmosás:"
+msgstr "Mozgási elmosódás:"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:189
 msgid "Blur and sharpen postprocessing"
-msgstr "Elmosás és élesítés utófeldolgozás"
+msgstr "Elmosás és élesítés"
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:26
 msgid "Key bindings:"
-msgstr "Billentyű hozzárendelések:"
+msgstr "Billentyűzet-kiosztás:"
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:31
 msgid "Change key..."
-msgstr "Billentyű változtatás..."
+msgstr "Megváltoztatás..."
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:35
 msgid "Edit..."
@@ -2024,11 +2022,11 @@ msgstr "Érzékenység:"
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:51
 msgid "UI mouse speed:"
-msgstr "UI egér sebesség:"
+msgstr "Menü egér sebessége:"
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:55
 msgid "Mouse filter"
-msgstr "Egér simítás"
+msgstr "Egérmozgás simítása"
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:57
 msgid "Invert mouse"
@@ -2048,13 +2046,9 @@ msgstr "OS egér gyorsítás kikapcsolása"
 msgid "\"enter console\" also closes"
 msgstr "\"belépés a konzolba\" zár is"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:72
-msgid "Holding jump key keeps jumping"
-msgstr ""
-
 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5
 msgid "User defined key bind"
-msgstr "Felhasználó által beállított billentyű"
+msgstr "Felhasználó által beállított parancsok"
 
 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42
 msgid "Command when pressed:"
@@ -2082,11 +2076,11 @@ msgstr "Jelenlegi idő mutatása"
 
 #: qcsrc/menu/xonotic/dialog_settings_misc.c:49
 msgid "Show current date"
-msgstr "Jelenlegi dátum mutatása"
+msgstr "Mai dátum mutatása"
 
 #: qcsrc/menu/xonotic/dialog_settings_misc.c:51
 msgid "Show frames per second"
-msgstr "A képkocka/s mutatása"
+msgstr "A képkocka/másodperc mutatása"
 
 #: qcsrc/menu/xonotic/dialog_settings_misc.c:53
 msgid "Minimize input latency"
@@ -2114,7 +2108,7 @@ msgstr "Leírás:"
 
 #: qcsrc/menu/xonotic/dialog_settings_network.c:26
 msgid "Client-side movement prediction"
-msgstr "Kliens-oldali mozgás jóslat"
+msgstr "Kliens-oldali mozgásbecslés"
 
 #: qcsrc/menu/xonotic/dialog_settings_network.c:30
 msgid "Show netgraph"
@@ -2122,7 +2116,7 @@ msgstr "Hálózat forgalom megjelenítése"
 
 #: qcsrc/menu/xonotic/dialog_settings_network.c:33
 msgid "Network speed:"
-msgstr "Hálózat sebesség:"
+msgstr "Hálózat sebessége:"
 
 #: qcsrc/menu/xonotic/dialog_settings_network.c:35
 msgid "56k"
@@ -2170,7 +2164,7 @@ msgstr "Felbontás:"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:29
 msgid "Font/UI size:"
-msgstr "Font/UI méret:"
+msgstr "Betük/Menü mérete:"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:31
 msgid "SZ^Unreadable"
@@ -2218,11 +2212,11 @@ msgstr "Teljes képernyő"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:46
 msgid "Vertical Synchronization"
-msgstr "Szinkonizálás a képfrissítéshez"
+msgstr "Szinkonizálás a képernyő frissítéshez"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:49
 msgid "Use OpenGL 2.0 shaders (GLSL)"
-msgstr "OpenGL 2.0 árnyalók (GLSL) használata"
+msgstr "OpenGL 2.0 shaderek (GLSL) használata"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:52
 msgid "Use GLSL to handle color control"
@@ -2302,15 +2296,15 @@ msgstr "Erősség:"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer.c:4
 msgid "Singleplayer"
-msgstr "Magányos játék"
+msgstr "Egyjátékos mód"
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:116
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:127
 msgid "Instant action! (random map with bots)"
 msgstr "Azonnali játék (véletlenszerű pálya botokkal)"
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:137
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:148
 msgid "Start Singleplayer!"
-msgstr "Magányos játék indítása"
+msgstr "Egyjátékos mód indítása"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4
 msgid "Winner"
@@ -2318,11 +2312,11 @@ msgstr "Győztes"
 
 #: qcsrc/menu/xonotic/dialog_teamselect.c:5
 msgid "Team Selection"
-msgstr "Csapat választás"
+msgstr "Válassz csapatot!"
 
 #: qcsrc/menu/xonotic/dialog_teamselect.c:41
 msgid "join 'best' team (auto-select)"
-msgstr "Csatlakozás a 'legjobb' csapathoz (auto-választás)"
+msgstr "Csatlakozás a 'legjobb' csapathoz (automatikus-választás)"
 
 #: qcsrc/menu/xonotic/dialog_teamselect.c:45
 msgid "red"
@@ -2342,7 +2336,7 @@ msgstr "Rózsaszín"
 
 #: qcsrc/menu/xonotic/dialog_teamselect.c:51
 msgid "spectate"
-msgstr "Néző"
+msgstr "Nézőként csatlakozok"
 
 #: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38
 msgid "Do not press this button again!"
@@ -2352,13 +2346,13 @@ msgstr "Ne nyomd meg újra ezt a gombot!"
 msgid ""
 "Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"
 msgstr ""
-"Jajj? Ezzel nem lehet játszani (m is NULL). Állítsd át a szürést, hogy ne "
+"Jajj? Ezzel nem lehet játszani (m is NULL). Állítsd át a szűrést, hogy ne "
 "ismétlődjön meg!\n"
 
 #: qcsrc/menu/xonotic/maplist.c:286
 #, c-format
 msgid "%s's Xonotic Server"
-msgstr "%s Xonotic kiszolgálója"
+msgstr "%s Xonotic szervere"
 
 #: qcsrc/menu/xonotic/maplist.c:291
 msgid ""
@@ -2366,7 +2360,7 @@ msgid ""
 "again.\n"
 msgstr ""
 "Jajj? Ezzel nem lehet játszani (érvénytelen játék típus). Állítsd át a "
-"szürést, hogy ne ismétlődjön meg!\n"
+"szűrést, hogy ne ismétlődjön meg!\n"
 "."
 
 #: qcsrc/menu/xonotic/playermodel.c:174
@@ -2391,7 +2385,7 @@ msgstr "Gazda név"
 
 #: qcsrc/menu/xonotic/serverlist.c:529
 msgid "Map"
-msgstr "Térkép"
+msgstr "Pálya"
 
 #: qcsrc/menu/xonotic/serverlist.c:530
 msgid "Type"
@@ -2411,11 +2405,11 @@ msgstr "<SZERZŐ>"
 
 #: qcsrc/menu/xonotic/slider_decibels.c:50
 msgid "VOL^OFF"
-msgstr "Hangerő ki"
+msgstr "Kikapcsolva"
 
 #: qcsrc/menu/xonotic/slider_decibels.c:52
 msgid "VOL^MAX"
-msgstr "Hangerő maximum"
+msgstr "Maximum hangerő"
 
 #: qcsrc/menu/xonotic/slider_decibels.c:53
 #, c-format
@@ -2427,25 +2421,25 @@ msgstr "%s dB"
 msgid "%dx%d"
 msgstr "%dx%d"
 
-#: qcsrc/menu/xonotic/util.qc:271
+#: qcsrc/menu/xonotic/util.qc:270
 #, c-format
 msgid "Received HTTP request data for an invalid id %d.\n"
 msgstr "Érvénytelen HTTP adatkérés érkezett id %d.\n"
 
-#: qcsrc/menu/xonotic/util.qc:286
+#: qcsrc/menu/xonotic/util.qc:285
 #, c-format
 msgid "error receiving update notification: status is %d\n"
 msgstr "Frissítési értesítési hiba: az állapota %d\n"
 
-#: qcsrc/menu/xonotic/util.qc:291
+#: qcsrc/menu/xonotic/util.qc:290
 msgid "error: received HTML instead of an update notification\n"
 msgstr "Hiba: frissítési értesítés helyett egy HTML-t kapott\n"
 
-#: qcsrc/menu/xonotic/util.qc:296
+#: qcsrc/menu/xonotic/util.qc:295
 msgid "error: received carriage returns from update notification server\n"
 msgstr "Hiba: a frissítés értesítő szerverről egy 'kocsi vissza'-t kapott\n"
 
-#: qcsrc/menu/xonotic/util.qc:317
+#: qcsrc/menu/xonotic/util.qc:316
 #, c-format
 msgid ""
 "Update can be downloaded at:\n"
@@ -2454,114 +2448,114 @@ msgstr ""
 "Frissítés letölthető: \n"
 "%s -ről\n"
 
-#: qcsrc/menu/xonotic/util.qc:340
+#: qcsrc/menu/xonotic/util.qc:337
 msgid "Autogenerating mapinfo for newly added maps..."
-msgstr "MapInfo készítése az újonnan hozzáadott térképekhez..."
+msgstr "MapInfo készítése az újonnan hozzáadott pályákhoz..."
 
-#: qcsrc/menu/xonotic/util.qc:370
+#: qcsrc/menu/xonotic/util.qc:367
 #, c-format
 msgid "^1%s TEST BUILD"
 msgstr "^1%s TEST BUILD"
 
-#: qcsrc/menu/xonotic/util.qc:428
+#: qcsrc/menu/xonotic/util.qc:432
 #, c-format
 msgid "Update to %s now!"
 msgstr "Most frissítsd %s-re/ra!"
 
-#: qcsrc/menu/xonotic/util.qc:513
+#: qcsrc/menu/xonotic/util.qc:501
 msgid ""
 "^1ERROR: Texture compression is required but not supported.\n"
 "^1Expect visual problems.\n"
 msgstr ""
 "^1Hiba: textúra tömörítés szükséges, de nem támogatott.\n"
-"^1Gondok lehetnek a látvánnyal.\n"
+"^1Gondok lehetnek a megjelenítéssel.\n"
 
-#: qcsrc/menu/xonotic/util.qc:535
+#: qcsrc/menu/xonotic/util.qc:523
 msgid "Arena"
 msgstr "Aréna"
 
-#: qcsrc/menu/xonotic/util.qc:536
+#: qcsrc/menu/xonotic/util.qc:524
 msgid "Assault"
 msgstr "Ostrom"
 
-#: qcsrc/menu/xonotic/util.qc:537
+#: qcsrc/menu/xonotic/util.qc:525
 msgid "Capture The Flag"
-msgstr "Szerezd meg a zászlót"
+msgstr "Zászlórablás"
 
-#: qcsrc/menu/xonotic/util.qc:538
+#: qcsrc/menu/xonotic/util.qc:526
 msgid "Clan Arena"
 msgstr "Klán Aréna"
 
-#: qcsrc/menu/xonotic/util.qc:539
+#: qcsrc/menu/xonotic/util.qc:527
 msgid "Deathmatch"
 msgstr "Haláljátszma"
 
-#: qcsrc/menu/xonotic/util.qc:540
+#: qcsrc/menu/xonotic/util.qc:528
 msgid "Domination"
 msgstr "Uralom"
 
-#: qcsrc/menu/xonotic/util.qc:541
+#: qcsrc/menu/xonotic/util.qc:529
 msgid "Freeze Tag"
 msgstr "Fagyasztás"
 
-#: qcsrc/menu/xonotic/util.qc:542
+#: qcsrc/menu/xonotic/util.qc:530
 msgid "Keepaway"
-msgstr "Távolságtartás"
+msgstr "Önzőség"
 
-#: qcsrc/menu/xonotic/util.qc:543
+#: qcsrc/menu/xonotic/util.qc:531
 msgid "Key Hunt"
 msgstr "Kulcsvadászat"
 
-#: qcsrc/menu/xonotic/util.qc:544
+#: qcsrc/menu/xonotic/util.qc:532
 msgid "Last Man Standing"
 msgstr "Csak egy maradhat"
 
-#: qcsrc/menu/xonotic/util.qc:545
+#: qcsrc/menu/xonotic/util.qc:533
 msgid "Nexball"
 msgstr "Nexball"
 
-#: qcsrc/menu/xonotic/util.qc:546
+#: qcsrc/menu/xonotic/util.qc:534
 msgid "Onslaught"
 msgstr "Támadás"
 
-#: qcsrc/menu/xonotic/util.qc:547
+#: qcsrc/menu/xonotic/util.qc:535
 msgid "Race"
 msgstr "Verseny"
 
-#: qcsrc/menu/xonotic/util.qc:548
+#: qcsrc/menu/xonotic/util.qc:536
 msgid "Race CTS"
 msgstr "Ügyességi verseny"
 
-#: qcsrc/menu/xonotic/util.qc:549
+#: qcsrc/menu/xonotic/util.qc:537
 msgid "Runematch"
 msgstr "Rúnameccs"
 
-#: qcsrc/menu/xonotic/util.qc:550
+#: qcsrc/menu/xonotic/util.qc:538
 msgid "Team Deathmatch"
 msgstr "Csapat[os] öldöklés "
 
-#: qcsrc/menu/xonotic/util.qc:569
+#: qcsrc/menu/xonotic/util.qc:557
 #, c-format
 msgid "@!#%'n Tuba Throwing"
 msgstr "@!#%'n Tuba Dobás"
 
-#: qcsrc/menu/xonotic/util.qc:589 qcsrc/menu/xonotic/util.qc:605
-#: qcsrc/menu/xonotic/util.qc:614 qcsrc/menu/xonotic/util.qc:622
-#: qcsrc/menu/xonotic/util.qc:634
+#: qcsrc/menu/xonotic/util.qc:577 qcsrc/menu/xonotic/util.qc:593
+#: qcsrc/menu/xonotic/util.qc:602 qcsrc/menu/xonotic/util.qc:610
+#: qcsrc/menu/xonotic/util.qc:622
 msgid "Default"
 msgstr "Alapértelmezett"
 
-#: qcsrc/menu/xonotic/util.qc:600
+#: qcsrc/menu/xonotic/util.qc:588
 msgid "Use default"
 msgstr "Alapértékek használata"
 
-#: qcsrc/menu/xonotic/util.qc:620
+#: qcsrc/menu/xonotic/util.qc:608
 msgid "Team Color:"
 msgstr "Csapat színe:"
 
 #: qcsrc/menu/xonotic/util.qh:47
 msgid "Enable panel"
-msgstr "Panel engedélyezés"
+msgstr "Panel engedélyezése"
 
 #: qcsrc/server/w_crylink.qc:2
 msgid "Crylink"
@@ -2575,17 +2569,17 @@ msgstr "%s sikeres öngyikosságot követett el Crylinkkel"
 #: qcsrc/server/w_crylink.qc:671
 #, c-format
 msgid "%s could not hide from %s's Crylink"
-msgstr "%s nem tudott elrejtözni %s Crylinkje elöl"
+msgstr "%s nem menekülhetett %s Crylinkje elől"
 
 #: qcsrc/server/w_crylink.qc:673
 #, c-format
 msgid "%s was too close to %s's Crylink"
-msgstr "%s túl közel volt %s Crylinkjéhez"
+msgstr "%s túl közel hajolt %s Crylinkjéhez"
 
 #: qcsrc/server/w_crylink.qc:675
 #, c-format
 msgid "%s took a close look at %s's Crylink"
-msgstr "%s  közelebbről megnézte %s Crylinkjét"
+msgstr "%s  közelebbről megleste %s Crylinkjét"
 
 #: qcsrc/server/w_electro.qc:2
 msgid "Electro"
@@ -2594,27 +2588,27 @@ msgstr "Electro"
 #: qcsrc/server/w_electro.qc:574
 #, c-format
 msgid "%s could not remember where they put plasma"
-msgstr "%s  nem emlékszik hová rakták a plazmát"
+msgstr "%s nem tudja, hogy mire való a plazma"
 
 #: qcsrc/server/w_electro.qc:576
 #, c-format
 msgid "%s played with plasma"
-msgstr "%s  játszott a plazmával"
+msgstr "%s  plazmával játszadozott"
 
 #: qcsrc/server/w_electro.qc:583
 #, c-format
 msgid "%s just noticed %s's blue ball"
-msgstr "%s csak most vette észre %s kék labdáját"
+msgstr "%s csak most vette észre %s kék golyóját"
 
 #: qcsrc/server/w_electro.qc:585
 #, c-format
 msgid "%s got in touch with %s's blue ball"
-msgstr "%s érintkezésbe került %s kék labdájával"
+msgstr "%s lefejelte %s kék golyóját"
 
 #: qcsrc/server/w_electro.qc:590
 #, c-format
 msgid "%s felt the electrifying air of %s's combo"
-msgstr "%s érezte %s kombójának fetöltödött levegőjét "
+msgstr "%s felvillanyozódott %s kombójától"
 
 #: qcsrc/server/w_electro.qc:592
 #, c-format
@@ -2634,22 +2628,22 @@ msgstr "Tűzgolyó"
 #: qcsrc/server/w_fireball.qc:417
 #, c-format
 msgid "%s forgot about some firemine"
-msgstr "%s megfeledkezett pár tűzaknáról"
+msgstr "%s megfeledkezett pár gyújtóbombáról"
 
 #: qcsrc/server/w_fireball.qc:419 qcsrc/server/w_hlac.qc:240
 #, c-format
 msgid "%s should have used a smaller gun"
-msgstr "%s -nak egy kisebb pisztolyt kellett volna hsaználnia"
+msgstr "%s játszott volna vízipisztollyal "
 
 #: qcsrc/server/w_fireball.qc:426
 #, c-format
 msgid "%s tried to catch %s's firemine"
-msgstr "%s  megpróbálta elkapni %s tűzaknáját"
+msgstr "%s  megpróbálta elkapni %s gyújtóbombáját"
 
 #: qcsrc/server/w_fireball.qc:428
 #, c-format
 msgid "%s fatefully ignored %s's firemine"
-msgstr "%s  végzetesen figyelmen kívül hagyta %s tűzaknájat"
+msgstr "%s már tudja, hogy %s gyújtóbombájának figyelmen kívül hagyása végzetes."
 
 #: qcsrc/server/w_fireball.qc:435
 #, c-format
@@ -2659,12 +2653,12 @@ msgstr "%s nem tudott elbújni %s tűzgolyójától"
 #: qcsrc/server/w_fireball.qc:437
 #, c-format
 msgid "%s saw the pretty lights of %s's fireball"
-msgstr "%s látta %s tűzgolyójának szép fényeit"
+msgstr "%s látthatta %s tűzgolyójának csinos fényeit"
 
 #: qcsrc/server/w_fireball.qc:440
 #, c-format
 msgid "%s got too close to %s's fireball"
-msgstr "%s túl közel volt  %s tűzgolyójához"
+msgstr "%s túl közel merészkedett  %s tűzgolyójához"
 
 #: qcsrc/server/w_fireball.qc:442
 #, c-format
@@ -2694,7 +2688,7 @@ msgstr "%s nem látta %s gránátját"
 #: qcsrc/server/w_grenadelauncher.qc:393
 #, c-format
 msgid "%s almost dodged %s's grenade"
-msgstr "%s majdnem elkerülte %s gránátját"
+msgstr "%s majdnem kicselezte %s gránátját"
 
 #: qcsrc/server/w_grenadelauncher.qc:395
 #, c-format
@@ -2713,12 +2707,12 @@ msgstr "%s  kis rakétákkal játszott"
 #: qcsrc/server/w_hagar.qc:399
 #, c-format
 msgid "%s hoped %s's missiles wouldn't bounce"
-msgstr "%s remélt, hogy %s rakétája nem fog pattani"
+msgstr "%s remélte, hogy %s rakétája nem éri el"
 
 #: qcsrc/server/w_hagar.qc:401 qcsrc/server/w_seeker.qc:661
 #, c-format
 msgid "%s was pummeled by %s"
-msgstr "%s -t  eltalálta %s"
+msgstr "%s -t ledarálta %s Hagarja"
 
 #: qcsrc/server/w_hlac.qc:2
 msgid "Heavy Laser Assault Cannon"
@@ -2737,7 +2731,7 @@ msgstr "Vonóhorog"
 #: qcsrc/server/w_hook.qc:266 qcsrc/server/w_porto.qc:296
 #, c-format
 msgid "%s did the impossible"
-msgstr "%s megtette a lehetetlent"
+msgstr "%s megcsinálta a lehetetlent"
 
 #: qcsrc/server/w_hook.qc:268
 #, c-format
@@ -2752,7 +2746,7 @@ msgstr "Lézer"
 #: qcsrc/server/w_laser.qc:311
 #, c-format
 msgid "%s lasered themself to hell"
-msgstr "%s a pokolba lézerezte magát"
+msgstr "%s magán lézershowja rosszul sült el"
 
 #: qcsrc/server/w_laser.qc:315
 #, c-format
@@ -2762,7 +2756,7 @@ msgstr "%s -t félbevágta %s kesztyűje"
 #: qcsrc/server/w_laser.qc:317
 #, c-format
 msgid "%s was lasered to death by %s"
-msgstr "%s  meghalt %s lézere által"
+msgstr "%s meghalt %s lézere által"
 
 #: qcsrc/server/w_minelayer.qc:2
 #, fuzzy
@@ -2803,7 +2797,7 @@ msgstr "%s most már portálokkal mereng"
 #: qcsrc/server/w_minstanex.qc:295 qcsrc/server/w_nex.qc:255
 #, c-format
 msgid "%s has been vaporized by %s"
-msgstr "%s -t elgőzösítette %s "
+msgstr "%s -t gázzá vált %s által"
 
 #: qcsrc/server/w_nex.qc:2
 #, fuzzy
@@ -2826,22 +2820,22 @@ msgstr "Puska"
 #: qcsrc/server/w_rifle.qc:233
 #, c-format
 msgid "%s shot themself automatically"
-msgstr "%s saját magát lőtte le"
+msgstr "%s saját magát lőtte agyon"
 
 #: qcsrc/server/w_rifle.qc:235
 #, c-format
 msgid "%s sniped themself somehow"
-msgstr "%s-t levadászta magát valahogy"
+msgstr "%s-t levadászta saját magát valahogy"
 
 #: qcsrc/server/w_rifle.qc:242
 #, c-format
 msgid "%s failed to hide from %s's bullet hail"
-msgstr "%s -nak nem sikerült elbújnia %s töltényzápora elöl "
+msgstr "%s -nak nem sikerült elbújnia %s golyózápora elől "
 
 #: qcsrc/server/w_rifle.qc:244
 #, c-format
 msgid "%s died in %s's bullet hail"
-msgstr "%s meghalt %s töltényzáporában"
+msgstr "%s meghalt %s golyózáporában"
 
 #: qcsrc/server/w_rifle.qc:251
 #, c-format
@@ -2870,12 +2864,12 @@ msgstr "%s túl közel kerül %s rakétájához"
 #: qcsrc/server/w_rocketlauncher.qc:507
 #, c-format
 msgid "%s almost dodged %s's rocket"
-msgstr "%s majdnem elkerülte %s rakétáját"
+msgstr "%s majdnem kicselezte %s rakétáját"
 
 #: qcsrc/server/w_rocketlauncher.qc:509
 #, c-format
 msgid "%s ate %s's rocket"
-msgstr "%s bekapta %s rakétáját"
+msgstr "%s megette %s rakétáját"
 
 #: qcsrc/server/w_seeker.qc:2
 msgid "T.A.G. Seeker"
@@ -2894,7 +2888,7 @@ msgstr "Vadászpuska"
 #: qcsrc/server/w_shotgun.qc:219
 #, c-format
 msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"
-msgstr "%2$s ^7slapped %1$s ^7egy kicsit egy nagy ^2shotgun"
+msgstr "%2$s ^7úgy elverte %1$s -t ^7 a ^2puskályával, mintha ^7szívlapáttal csapta volna agyon"
 
 #: qcsrc/server/w_shotgun.qc:221
 #, c-format
@@ -2909,7 +2903,7 @@ msgstr "@!#%'n Tuba Dobás"
 #: qcsrc/server/w_tuba.qc:252
 #, c-format
 msgid "%s hurt his own ears with the @!#%%'n Tuba"
-msgstr "%s saját fülét is sértette a @!#%%'n Tubával"
+msgstr "%s se bírta tovább a @!#%%'n Tuba hangját"
 
 #: qcsrc/server/w_tuba.qc:256
 #, c-format
@@ -2923,35 +2917,35 @@ msgstr "Gépfegyver"
 #: qcsrc/server/w_uzi.qc:323
 #, c-format
 msgid "%s was riddled full of holes by %s"
-msgstr "%s tele lett lyukakkal %s-tól"
+msgstr "%s -t %s szitává lyuggatta"
 
-#~ msgid "%d/%d"
-#~ msgstr "%d/%d"
+#, fuzzy
+#~ msgid "Damage & water blur"
+#~ msgstr "Sérülés és víz elmosás"
 
-#~ msgid "Waypoint settings:"
-#~ msgstr "Iránypont beállítások:"
+#, fuzzy
+#~ msgid "Powerup sharpen"
+#~ msgstr "Powerup élesítés"
 
-#~ msgid ""
-#~ "Please answer a few initial questions to enhance the game experience."
-#~ msgstr ""
-#~ "A jobb játékélmény érdekében, kérlek, válaszolj pár inditó kérdésre!"
+#~ msgid "Speedometer"
+#~ msgstr "Sebességmérő"
 
-#~ msgid "Accelerometer scale:"
-#~ msgstr "Gyorsulásmérő beosztás:"
+#~ msgid "qu/s (hidden)"
+#~ msgstr "qu/s (rejtett)"
 
 #~ msgid "Show accelerometer"
 #~ msgstr "Gyorsulásmérő mutatása"
 
-#~ msgid "qu/s (hidden)"
-#~ msgstr "qu/s (rejtett)"
+#~ msgid "Accelerometer scale:"
+#~ msgstr "Gyorsulásmérő beosztás:"
 
-#~ msgid "Speedometer"
-#~ msgstr "Sebességmérő"
+#~ msgid ""
+#~ "Please answer a few initial questions to enhance the game experience."
+#~ msgstr ""
+#~ "A jobb játékélmény érdekében, kérlek, válaszolj pár inditó kérdésre!"
 
-#, fuzzy
-#~ msgid "Powerup sharpen"
-#~ msgstr "Powerup élesítés"
+#~ msgid "Waypoint settings:"
+#~ msgstr "Iránypont beállítások:"
 
-#, fuzzy
-#~ msgid "Damage & water blur"
-#~ msgstr "Sérülés és víz elmosás"
+#~ msgid "%d/%d"
+#~ msgstr "%d/%d"
index 8c7c6bc..fd8afe1 100644 (file)
@@ -4,27 +4,6 @@
 
 #define DP_CSQC_ENTITY_REMOVE_IS_B0RKED
 
-void cvar_clientsettemp(string cv, string val)
-{
-       entity e;
-       for(e = world; (e = find(e, classname, "saved_cvar_value")); )
-               if(e.netname == cv)
-                       goto saved;
-       e = spawn();
-       e.classname = "saved_cvar_value";
-       e.netname = strzone(cv);
-       e.message = strzone(cvar_string(cv));
-:saved
-       cvar_set(cv, val);
-}
-
-void cvar_clientsettemp_restore()
-{
-       entity e;
-       for(e = world; (e = find(e, classname, "saved_cvar_value")); )
-                       cvar_set(e.netname, e.message);
-}
-
 void menu_show_error()
 {
        drawstring('0 200 0', _("ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"), '8 8 0', '1 0 0', 1, 0);
@@ -176,7 +155,9 @@ void CSQC_Init(void)
 
        GetTeam(COLOR_SPECTATOR, true); // add specs first
 
+       // needs to be done so early because of the constants they create
        RegisterWeapons();
+       RegisterGametypes();
 
        WaypointSprite_Load();
 
@@ -234,7 +215,7 @@ void CSQC_Init(void)
 }
 
 // CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)
-void CSQC_Shutdown(void)
+void Shutdown(void)
 {
 #ifdef USE_FTE
 #pragma TARGET id
@@ -255,8 +236,6 @@ void CSQC_Shutdown(void)
                db_save(ClientProgsDB, "client.db");
        db_close(ClientProgsDB);
 
-       cvar_clientsettemp_restore();
-
        if(camera_active)
                cvar_set("chase_active",ftos(chase_active_backup));
 
@@ -547,7 +526,6 @@ void GameCommand(string msg)
        if(argv(0) == "help" || argc == 0)
        {
                print(_("Usage: cl_cmd COMMAND..., where possible commands are:\n"));
-               print(_("  settemp cvar value\n"));
                print(_("  scoreboard_columns_set ...\n"));
                print(_("  scoreboard_columns_help\n"));
                GameCommand_Generic("help");
@@ -569,9 +547,6 @@ void GameCommand(string msg)
                else
                        hud_panel_radar_maximized = (stof(argv(1)) != 0);
        }
-       else if(cmd == "settemp") {
-               cvar_clientsettemp(argv(1), argv(2));
-       }
        else if(cmd == "scoreboard_columns_set") {
                Cmd_HUD_SetFields(argc);
        }
@@ -1074,7 +1049,7 @@ void CSQC_Ent_Update(float bIsNewEntity)
                case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break;
                case ENT_CLIENT_AUXILIARYXHAIR: Net_AuXair2(bIsNewEntity); break;
                case ENT_CLIENT_TURRET: ent_turret(); break; 
-               case ENT_CLIENT_MODEL: CSQCModel_Read(); break; 
+               case ENT_CLIENT_MODEL: CSQCModel_Read(bIsNewEntity); break; 
                default:
                        //error(strcat(_("unknown entity type in CSQC_Ent_Update: %d\n"), self.enttype));
                        error(sprintf(_("Unknown entity type in CSQC_Ent_Update (enttype: %d, edict: %d, classname: %s)\n"), self.enttype, num_for_edict(self), self.classname));
@@ -1109,7 +1084,7 @@ void Gamemode_Init()
 {
        if not(isdemo())
        {
-               localcmd("\n_cl_hook_gamestart ", GametypeNameFromType(gametype), "\n");
+               localcmd("\n_cl_hook_gamestart ", MapInfo_Type_ToString(gametype), "\n");
                calledhooks |= HOOK_START;
        }
 }
@@ -1145,7 +1120,7 @@ void Ent_ScoresInfo()
 {
        float i;
        self.classname = "ent_client_scores_info";
-       gametype = ReadByte();
+       gametype = ReadInt24_t();
        for(i = 0; i < MAX_SCORE; ++i)
        {
                scores_label[i] = strzone(ReadString());
index ac2f12c..556859a 100644 (file)
@@ -10,7 +10,7 @@ void Porto_Draw()
        vector p, dir, ang, q, nextdir;
        float idx, portal_number, portal1_idx;
 
-       if(activeweapon != WEP_PORTO || spectatee_status || gametype == GAME_NEXBALL)
+       if(activeweapon != WEP_PORTO || spectatee_status || gametype == MAPINFO_TYPE_NEXBALL)
                return;
        if(intermission == 1)
                return;
@@ -961,7 +961,7 @@ void CSQC_UpdateView(float w, float h)
        if(menu_visible)
                menu_show();
 
-       /*if(gametype == GAME_CTF)
+       /*if(gametype == MAPINFO_TYPE_CTF)
          {
          ctf_view();
          } else */
@@ -995,7 +995,7 @@ void CSQC_UpdateView(float w, float h)
 
        //else
        {
-               if(gametype == GAME_FREEZETAG)
+               if(gametype == MAPINFO_TYPE_FREEZETAG)
                {
                        if(getstati(STAT_FROZEN))
                                drawfill('0 0 0', eX * vid_conwidth + eY * vid_conheight, '0.25 0.90 1', autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE);
@@ -1450,7 +1450,7 @@ void CSQC_common_hud(void)
 {
     // do some accuracy var caching
     float i;
-    if(!(gametype == GAME_RACE || gametype == GAME_CTS))
+    if(!(gametype == MAPINFO_TYPE_RACE || gametype == MAPINFO_TYPE_CTS))
     {
         if(autocvar_accuracy_color_levels != acc_color_levels)
         {
index 1ce9a96..33e093a 100644 (file)
@@ -1,4 +1,4 @@
-
+.float isplayermodel;
 
 // FEATURE: LOD
 .float lodmodelindex0;
@@ -148,12 +148,30 @@ void CSQCPlayer_FallbackFrame_PreUpdate(void)
        self.frame3 = self.csqcmodel_saveframe3;
        self.frame4 = self.csqcmodel_saveframe4;
 }
-void CSQCPlayer_FallbackFrame_PostUpdate(void)
+void CSQCPlayer_FallbackFrame_PostUpdate(float isnew)
 {
        self.csqcmodel_saveframe = self.frame;
        self.csqcmodel_saveframe2 = self.frame2;
        self.csqcmodel_saveframe3 = self.frame3;
        self.csqcmodel_saveframe4 = self.frame4;
+
+       // hack for death animations: set their frametime to zero in case a
+       // player "pops in"
+       if(isnew)
+       {
+#define FIX_FRAMETIME(f,ft) \
+               switch(self.f) \
+               { \
+                       case 0: \
+                       case 1: \
+                               self.ft = 0; \
+                               break; \
+               }
+               FIX_FRAMETIME(frame, frame1time)
+               FIX_FRAMETIME(frame2, frame2time)
+               FIX_FRAMETIME(frame3, frame3time)
+               FIX_FRAMETIME(frame4, frame4time)
+       }
 }
 float CSQCPlayer_FallbackFrame(float f)
 {
@@ -366,7 +384,7 @@ void CSQCModel_Hook_PreDraw(float isplayer, float islocalplayer)
        else
                self.drawmask = MASK_NORMAL;
 
-       if(isplayer)
+       if(self.isplayermodel) // this checks if it's a player MODEL!
        {
                CSQCPlayer_GlowMod_Apply();
                CSQCPlayer_ForceModel_Apply(islocalplayer);
@@ -374,30 +392,33 @@ void CSQCModel_Hook_PreDraw(float isplayer, float islocalplayer)
                CSQCPlayer_FallbackFrame_Apply();
        }
 
-       if(!isplayer)
+       if(!isplayer) // this checks if it's a player SLOT!
                CSQCModel_AutoTagIndex_Apply();
 
        CSQCModel_Effects_Apply();
 }
 
-void CSQCModel_Hook_PreUpdate(float isplayer, float islocalplayer)
+void CSQCModel_Hook_PreUpdate(float isnew, float isplayer, float islocalplayer)
 {
+       // revert to values from server
        CSQCModel_Effects_PreUpdate();
-       if(isplayer)
+       if(self.isplayermodel)
        {
-               // revert to values from server
                CSQCPlayer_FallbackFrame_PreUpdate();
                CSQCPlayer_ForceModel_PreUpdate();
        }
 }
 
-void CSQCModel_Hook_PostUpdate(float isplayer, float islocalplayer)
+void CSQCModel_Hook_PostUpdate(float isnew, float isplayer, float islocalplayer)
 {
-       if(isplayer)
+       // is it a player model? (shared state)
+       self.isplayermodel = (substring(self.model, 0, 14) == "models/player/");
+
+       // save values set by server
+       if(self.isplayermodel)
        {
-               // save values set by server
                CSQCPlayer_ForceModel_PostUpdate();
-               CSQCPlayer_FallbackFrame_PostUpdate();
+               CSQCPlayer_FallbackFrame_PostUpdate(isnew);
        }
        CSQCModel_Effects_PostUpdate();
 }
index fcdd736..bf9d7d3 100644 (file)
@@ -1519,7 +1519,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s
        alsoprint = (autocvar_hud_panel_notify_print || !panel_enabled); // print message to console if: notify panel disabled, or cvar to do so enabled
        gentle = (autocvar_cl_gentle || autocvar_cl_gentle_messages);
        
-       if ((msg == MSG_SUICIDE || msg == MSG_KILL || msg == MSG_KILL_ACTION) && gametype == GAME_CTS) // selfkill isn't interesting in CTS and only spams up the notify panel
+       if ((msg == MSG_SUICIDE || msg == MSG_KILL || msg == MSG_KILL_ACTION) && gametype == MAPINFO_TYPE_CTS) // selfkill isn't interesting in CTS and only spams up the notify panel
                return;
 
        if(msg == MSG_SUICIDE) {
@@ -2672,7 +2672,7 @@ void HUD_Score(void)
        if(!autocvar__hud_configure)
        {
                if(!autocvar_hud_panel_score) return;
-               if(spectatee_status == -1 && (gametype == GAME_RACE || gametype == GAME_CTS)) return;
+               if(spectatee_status == -1 && (gametype == MAPINFO_TYPE_RACE || gametype == MAPINFO_TYPE_CTS)) return;
        }
        else
                hud_configure_active_panel = HUD_PANEL_SCORE;
@@ -2860,7 +2860,7 @@ void HUD_RaceTimer (void)
        if(!autocvar__hud_configure)
        {
                if(!autocvar_hud_panel_racetimer) return;
-               if(!(gametype == GAME_RACE || gametype == GAME_CTS)) return;
+               if(!(gametype == MAPINFO_TYPE_RACE || gametype == MAPINFO_TYPE_CTS)) return;
                if(spectatee_status == -1) return;
        }
        else
@@ -3012,7 +3012,7 @@ float vote_change; // "time" when vote_active changed
 
 void HUD_VoteWindow(void) 
 {
-       if(autocvar_cl_allow_uid2name == -1 && (gametype == GAME_CTS || gametype == GAME_RACE || (serverflags & SERVERFLAG_PLAYERSTATS)))
+       if(autocvar_cl_allow_uid2name == -1 && (gametype == MAPINFO_TYPE_CTS || gametype == MAPINFO_TYPE_RACE || (serverflags & SERVERFLAG_PLAYERSTATS)))
        {
                vote_active = 1;
                if (autocvar__hud_configure)
@@ -3583,7 +3583,7 @@ void HUD_Mod_Race(vector pos, vector mySize)
 
        // clientside personal record
        string rr;
-       if(gametype == GAME_CTS)
+       if(gametype == MAPINFO_TYPE_CTS)
                rr = CTS_RECORD;
        else
                rr = RACE_RECORD;
@@ -3811,7 +3811,7 @@ void HUD_ModIcons(void)
        if(!autocvar__hud_configure)
        {
                if(!autocvar_hud_panel_modicons) return;
-               if (gametype != GAME_CTF && gametype != GAME_KEYHUNT && gametype != GAME_NEXBALL && gametype != GAME_CTS && gametype != GAME_RACE && gametype != GAME_CA && gametype != GAME_FREEZETAG && gametype != GAME_KEEPAWAY && gametype != GAME_DOMINATION) return;
+               if (gametype != MAPINFO_TYPE_CTF && gametype != MAPINFO_TYPE_KEYHUNT && gametype != MAPINFO_TYPE_NEXBALL && gametype != MAPINFO_TYPE_CTS && gametype != MAPINFO_TYPE_RACE && gametype != MAPINFO_TYPE_CA && gametype != MAPINFO_TYPE_FREEZETAG && gametype != MAPINFO_TYPE_KEEPAWAY && gametype != MAPINFO_TYPE_DOMINATION) return;
        }
        else
                hud_configure_active_panel = HUD_PANEL_MODICONS;
@@ -3842,19 +3842,19 @@ void HUD_ModIcons(void)
        }
 
        // these MUST be ran in order to update mod_active
-       if(gametype == GAME_KEYHUNT)
+       if(gametype == MAPINFO_TYPE_KEYHUNT)
                HUD_Mod_KH(pos, mySize);
-       else if(gametype == GAME_CTF || autocvar__hud_configure)
+       else if(gametype == MAPINFO_TYPE_CTF || autocvar__hud_configure)
                HUD_Mod_CTF(pos, mySize); // forcealpha only needed for ctf icons, as only they are shown in config mode
-       else if(gametype == GAME_NEXBALL)
+       else if(gametype == MAPINFO_TYPE_NEXBALL)
                HUD_Mod_NexBall(pos, mySize);
-       else if(gametype == GAME_CTS || gametype == GAME_RACE)
+       else if(gametype == MAPINFO_TYPE_CTS || gametype == MAPINFO_TYPE_RACE)
                HUD_Mod_Race(pos, mySize);
-       else if(gametype == GAME_CA || gametype == GAME_FREEZETAG)
+       else if(gametype == MAPINFO_TYPE_CA || gametype == MAPINFO_TYPE_FREEZETAG)
                HUD_Mod_CA(pos, mySize);
-       else if(gametype == GAME_DOMINATION)
+       else if(gametype == MAPINFO_TYPE_DOMINATION)
                HUD_Mod_Dom(pos, mySize);
-       else if(gametype == GAME_KEEPAWAY)
+       else if(gametype == MAPINFO_TYPE_KEEPAWAY)
                HUD_Mod_Keepaway(pos, mySize);
 }
 
@@ -4149,9 +4149,9 @@ void HUD_InfoMessages(void)
                        s = sprintf(_("^1Press ^3%s^1 for gamemode info"), getcommandkey("server info", "+show_info"));
                        drawInfoMessage(s)
 
-                       if(gametype == GAME_ARENA)
+                       if(gametype == MAPINFO_TYPE_ARENA)
                                s = _("^1Wait for your turn to join");
-                       else if(gametype == GAME_LMS)
+                       else if(gametype == MAPINFO_TYPE_LMS)
                        {
                                entity sk;
                                sk = playerslots[player_localnum];
@@ -4212,7 +4212,7 @@ void HUD_InfoMessages(void)
                        drawInfoMessage(s)
                }
 
-               if(teamplay && !intermission && !spectatee_status && gametype != GAME_CA && teamnagger)
+               if(teamplay && !intermission && !spectatee_status && gametype != MAPINFO_TYPE_CA && teamnagger)
                {
                        float ts_min, ts_max;
                        tm = teams.sort_next;
@@ -4263,7 +4263,7 @@ void HUD_Physics(void)
        {
                if(!autocvar_hud_panel_physics) return;
                if(spectatee_status == -1 && (autocvar_hud_panel_physics == 1 || autocvar_hud_panel_physics == 3)) return;
-               if(autocvar_hud_panel_physics == 3 && !(gametype == GAME_RACE || gametype == GAME_CTS)) return;
+               if(autocvar_hud_panel_physics == 3 && !(gametype == MAPINFO_TYPE_RACE || gametype == MAPINFO_TYPE_CTS)) return;
        }
        else
                hud_configure_active_panel = HUD_PANEL_PHYSICS;
@@ -4787,9 +4787,9 @@ Main HUD system
 void HUD_Reset (void)
 {
        // reset gametype specific icons
-       if(gametype == GAME_KEYHUNT)
+       if(gametype == MAPINFO_TYPE_KEYHUNT)
                HUD_Mod_KH_Reset();
-       else if(gametype == GAME_CTF)
+       else if(gametype == MAPINFO_TYPE_CTF)
                HUD_Mod_CTF_Reset();
 }
 
index bd9ffe6..9349d9c 100644 (file)
@@ -158,5 +158,3 @@ entity entcs_receiver[255]; // 255 is the engine limit on maxclients
 
 float hud;
 float view_quality;
-
-void cvar_clientsettemp(string cv, string val);
index 3124b4b..9b93aa8 100644 (file)
@@ -924,7 +924,7 @@ float HUD_WouldDrawScoreboard() {
                return 1;
        else if (intermission == 2)
                return 0;
-       else if (spectatee_status != -1 && getstati(STAT_HEALTH) <= 0 && autocvar_cl_deathscoreboard && gametype != GAME_CTS)
+       else if (spectatee_status != -1 && getstati(STAT_HEALTH) <= 0 && autocvar_cl_deathscoreboard && gametype != MAPINFO_TYPE_CTS)
                return 1;
        else if (scoreboard_showscores_force)
                return 1;
@@ -1263,7 +1263,7 @@ void HUD_DrawScoreboard()
                }
        }
 
-       if(gametype == GAME_CTS || gametype == GAME_RACE) {
+       if(gametype == MAPINFO_TYPE_CTS || gametype == MAPINFO_TYPE_RACE) {
                if(race_speedaward) {
                        drawcolorcodedstring(pos, sprintf(_("Speed award: %d ^7(%s^7)"), race_speedaward, race_speedaward_holder), hud_fontsize, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
                        pos_y += 1.25 * hud_fontsize_y;
@@ -1312,7 +1312,7 @@ void HUD_DrawScoreboard()
        tl = getstatf(STAT_TIMELIMIT);
        fl = getstatf(STAT_FRAGLIMIT);
        ll = getstatf(STAT_LEADLIMIT);
-       if(gametype == GAME_LMS)
+       if(gametype == MAPINFO_TYPE_LMS)
        {
                if(tl > 0)
                        str = strcat(str, sprintf(_(" for up to ^1%1.0f minutes^7"), tl));
index 89f1be7..2b9ec02 100644 (file)
@@ -604,6 +604,9 @@ void ent_turret()
     
     if(sf & TNSF_ANG)
     {
+        if(self.tur_head == world) // aparenly this can happpen before TNSF_SETUP. great.
+            self.tur_head = spawn();
+            
         self.tur_head.move_angles_x = ReadShort();
         self.tur_head.move_angles_y = ReadShort();
         //self.tur_head.angles = self.angles + self.tur_head.move_angles;
@@ -612,6 +615,9 @@ void ent_turret()
     
     if(sf & TNSF_AVEL)
     {
+        if(self.tur_head == world) // aparenly this can happpen before TNSF_SETUP. great.
+            self.tur_head = spawn();
+            
         self.tur_head.move_avelocity_x = ReadShort();
         self.tur_head.move_avelocity_y = ReadShort();            
     }
@@ -643,7 +649,7 @@ void ent_turret()
     if(sf & TNSF_STATUS)
     {
         float _tmp;
-        _tmp = ReadByte();        
+        _tmp = ReadByte();
         if(_tmp != self.team)
         {            
             self.team = _tmp;                
index 6d9b0ee..78ddc8b 100644 (file)
@@ -216,7 +216,7 @@ float spritelookupblinkvalue(string s)
                case "item-extralife":   return 2;
                case "item-speed":       return 2;
                case "item-strength":    return 2;
-               case "item-shueld":      return 2;
+               case "item-shield":      return 2;
                case "item-fuelregen":   return 2;
                case "item-jetpack":     return 2;
                case "tagged-target":    return 2;
index 55834f1..d4d0e3a 100644 (file)
 // Revision 22: hook shot origin
 #define CSQC_REVISION 22
 
-// probably put these in common/
-// so server/ and client/ can be synced better
-const float GAME_DEATHMATCH            = 1;
-const float GAME_TEAM_DEATHMATCH       = 2;
-const float GAME_DOMINATION            = 3;
-const float GAME_CTF                   = 4;
-const float GAME_RUNEMATCH             = 5;
-const float GAME_LMS                   = 6;
-const float GAME_ARENA         = 7;
-const float GAME_KEYHUNT               = 8;
-const float GAME_ASSAULT               = 9;
-const float GAME_ONSLAUGHT     = 10;
-const float GAME_RACE  = 11;
-const float GAME_NEXBALL = 12;
-const float GAME_CTS = 13;
-const float GAME_CA            = 14;
-const float GAME_FREEZETAG             = 15;
-const float GAME_KEEPAWAY              = 16;
-
 const float AS_STRING          = 1;
 const float AS_INT             = 2;
 const float AS_FLOAT_TRUNCATED = 2;
index 2164eca..0f3ca38 100644 (file)
@@ -33,9 +33,9 @@
 
 // add hook function calls here
 #define CSQCMODEL_HOOK_PREUPDATE \
-       CSQCModel_Hook_PreUpdate(isplayer, islocalplayer);
+       CSQCModel_Hook_PreUpdate(isnew, isplayer, islocalplayer);
 #define CSQCMODEL_HOOK_POSTUPDATE \
-       CSQCModel_Hook_PostUpdate(isplayer, islocalplayer);
+       CSQCModel_Hook_PostUpdate(isnew, isplayer, islocalplayer);
 #define CSQCMODEL_HOOK_PREDRAW \
        CSQCModel_Hook_PreDraw(isplayer, islocalplayer);
 #define CSQCPLAYER_HOOK_POSTCAMERASETUP
index 9595ed5..1d21f08 100644 (file)
@@ -206,6 +206,8 @@ float GameCommand_Generic(string command)
                print("  addtolist variable addedvalue\n");
                print("  records\n");
                print("  rankings (map argument optional)\n");
+               print("  settemp cvar value\n");
+               print("  settemp_restore\n");
                return TRUE;
        }
        
@@ -848,6 +850,14 @@ float GameCommand_Generic(string command)
                return TRUE;
 #endif
        }
+       else if(argv(0) == "settemp") {
+               cvar_settemp(argv(1), argv(2));
+               return TRUE;
+       }
+       else if(argv(0) == "settemp_restore") {
+               cvar_settemp_restore();
+               return TRUE;
+       }
 
        return FALSE;
 }
index a419e39..1b32c9d 100644 (file)
@@ -472,8 +472,7 @@ void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType, fl
        {
                sa = car(s);
                if(sa != "")
-                       if(cvar("g_ctf_win_mode") < 2)
-                               cvar_set("fraglimit", sa);
+                       cvar_set("fraglimit", sa);
                s = cdr(s);
        }
 
@@ -535,26 +534,11 @@ void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType, fl
 
 string _MapInfo_GetDefaultEx(float t)
 {
-       switch(t)
-       {
-               case MAPINFO_TYPE_DEATHMATCH:      return "timelimit=20 pointlimit=30 leadlimit=0";
-               case MAPINFO_TYPE_TEAM_DEATHMATCH: return "timelimit=20 pointlimit=50 teams=2 leadlimit=0";
-               case MAPINFO_TYPE_DOMINATION:      return "timelimit=20 pointlimit=200 teams=2 leadlimit=0";
-               case MAPINFO_TYPE_CTF:             return "timelimit=20 pointlimit=300 caplimit=10 leadlimit=0";
-               case MAPINFO_TYPE_RUNEMATCH:       return "timelimit=20 pointlimit=200 leadlimit=0";
-               case MAPINFO_TYPE_LMS:             return "timelimit=20 lives=9 leadlimit=0";
-               case MAPINFO_TYPE_ARENA:           return "timelimit=20 pointlimit=10 leadlimit=0";
-               case MAPINFO_TYPE_CA:              return "timelimit=20 pointlimit=10 leadlimit=0";
-               case MAPINFO_TYPE_KEYHUNT:         return "timelimit=20 pointlimit=1000 teams=3 leadlimit=0";
-               case MAPINFO_TYPE_ASSAULT:         return "timelimit=20";
-               case MAPINFO_TYPE_RACE:            return "timelimit=20 qualifying_timelimit=5 laplimit=7 teamlaplimit=15 leadlimit=0";
-               case MAPINFO_TYPE_ONSLAUGHT:       return "timelimit=20";
-               case MAPINFO_TYPE_NEXBALL:         return "timelimit=20 pointlimit=5 leadlimit=0";
-               case MAPINFO_TYPE_CTS:             return "timelimit=20 skill=-1";
-               case MAPINFO_TYPE_FREEZETAG:       return "timelimit=20 pointlimit=10 teams=2 leadlimit=0";
-               case MAPINFO_TYPE_KEEPAWAY:        return "timelimit=20 pointlimit=30";
-               default:                           return "";
-       }
+       entity e;
+       for(e = MapInfo_Type_first; e; e = e.enemy)
+               if(t == e.weapons)
+                       return e.model2;
+       return "";
 }
 
 void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType)
@@ -562,7 +546,6 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType)
        string sa, k, v;
        float p;
        string fraglimit_normal;
-       string fraglimit_caps;
        string fraglimit_teams;
 
        MapInfo_Map_supportedGametypes |= pThisType;
@@ -580,7 +563,6 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType)
        cvar_set("g_race_qualifying_timelimit", cvar_defstring("g_race_qualifying_timelimit"));
 
        fraglimit_normal = string_null;
-       fraglimit_caps = string_null;
        fraglimit_teams = string_null;
 
        s = strcat(_MapInfo_GetDefaultEx(pWantedType), " ", s);
@@ -612,14 +594,10 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType)
                {
                        cvar_set("leadlimit", v);
                }
-               else if(k == "pointlimit" || k == "fraglimit" || k == "lives" || k == "laplimit")
+               else if(k == "pointlimit" || k == "fraglimit" || k == "lives" || k == "laplimit" || k == "caplimit")
                {
                        fraglimit_normal = v;
                }
-               else if(k == "caplimit")
-               {
-                       fraglimit_caps = v;
-               }
                else if(k == "teampointlimit" || k == "teamlaplimit")
                {
                        fraglimit_teams = v;
@@ -644,12 +622,7 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType)
                }
        }
 
-       if(pWantedType == MAPINFO_TYPE_CTF && cvar("g_ctf_win_mode") < 2)
-       {
-               if(fraglimit_caps)
-                       cvar_set("fraglimit", fraglimit_caps);
-       }
-       else if(pWantedType == MAPINFO_TYPE_RACE && cvar("g_race_teams") >= 2)
+       if(pWantedType == MAPINFO_TYPE_RACE && cvar("g_race_teams") >= 2)
        {
                if(fraglimit_teams)
                        cvar_set("fraglimit", fraglimit_teams);
@@ -663,46 +636,33 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType)
 
 float MapInfo_Type_FromString(string t)
 {
-       if     (t == "dm")      return MAPINFO_TYPE_DEATHMATCH;
-       else if(t == "tdm")     return MAPINFO_TYPE_TEAM_DEATHMATCH;
-       else if(t == "dom")     return MAPINFO_TYPE_DOMINATION;
-       else if(t == "ctf")     return MAPINFO_TYPE_CTF;
-       else if(t == "rune")    return MAPINFO_TYPE_RUNEMATCH;
-       else if(t == "lms")     return MAPINFO_TYPE_LMS;
-       else if(t == "arena")   return MAPINFO_TYPE_ARENA;
-       else if(t == "ca")      return MAPINFO_TYPE_CA;
-       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 == "rc")      return MAPINFO_TYPE_RACE;
-       else if(t == "nexball") return MAPINFO_TYPE_NEXBALL;
-       else if(t == "cts")     return MAPINFO_TYPE_CTS;
-       else if(t == "freezetag")       return MAPINFO_TYPE_FREEZETAG;
-       else if(t == "keepaway") return MAPINFO_TYPE_KEEPAWAY;
-       else if(t == "all")     return MAPINFO_TYPE_ALL;
-       else                    return 0;
+       entity e;
+       if(t == "all")
+               return MAPINFO_TYPE_ALL;
+       for(e = MapInfo_Type_first; e; e = e.enemy)
+               if(t == e.mdl)
+                       return e.weapons;
+       return 0;
 }
 
 string MapInfo_Type_ToString(float t)
 {
-       if     (t == MAPINFO_TYPE_DEATHMATCH)      return "dm";
-       else if(t == MAPINFO_TYPE_TEAM_DEATHMATCH) return "tdm";
-       else if(t == MAPINFO_TYPE_DOMINATION)      return "dom";
-       else if(t == MAPINFO_TYPE_CTF)             return "ctf";
-       else if(t == MAPINFO_TYPE_RUNEMATCH)       return "rune";
-       else if(t == MAPINFO_TYPE_LMS)             return "lms";
-       else if(t == MAPINFO_TYPE_ARENA)           return "arena";
-       else if(t == MAPINFO_TYPE_CA)              return "ca";
-       else if(t == MAPINFO_TYPE_KEYHUNT)         return "kh";
-       else if(t == MAPINFO_TYPE_ASSAULT)         return "as";
-       else if(t == MAPINFO_TYPE_ONSLAUGHT)       return "ons";
-       else if(t == MAPINFO_TYPE_RACE)            return "rc";
-       else if(t == MAPINFO_TYPE_NEXBALL)         return "nexball";
-       else if(t == MAPINFO_TYPE_CTS)             return "cts";
-       else if(t == MAPINFO_TYPE_FREEZETAG)       return "freezetag";
-       else if(t == MAPINFO_TYPE_KEEPAWAY)        return "keepaway";
-       else if(t == MAPINFO_TYPE_ALL)             return "all";
-       else                                       return "";
+       entity e;
+       if(t == MAPINFO_TYPE_ALL)     
+               return "all";
+       for(e = MapInfo_Type_first; e; e = e.enemy)
+               if(t == e.weapons)
+                       return e.mdl;
+       return "";
+}
+
+string MapInfo_Type_ToText(float t)
+{
+       entity e;
+       for(e = MapInfo_Type_first; e; e = e.enemy)
+               if(t == e.weapons)
+                       return e.message;
+       return _("@!#%'n Tuba Throwing");
 }
 
 void _MapInfo_Parse_Settemp(string pFilename, string acl, float type, string s, float recurse)
@@ -1192,38 +1152,16 @@ float MapInfo_CurrentFeatures()
 
 float MapInfo_CurrentGametype()
 {
-       if(cvar("g_domination"))
-               return MAPINFO_TYPE_DOMINATION;
-       else if(cvar("g_ctf"))
-               return MAPINFO_TYPE_CTF;
-       else if(cvar("g_runematch"))
-               return MAPINFO_TYPE_RUNEMATCH;
-       else if(cvar("g_tdm"))
-               return MAPINFO_TYPE_TEAM_DEATHMATCH;
-       else if(cvar("g_assault"))
-               return MAPINFO_TYPE_ASSAULT;
-       else if(cvar("g_lms"))
-               return MAPINFO_TYPE_LMS;
-       else if(cvar("g_arena"))
-               return MAPINFO_TYPE_ARENA;
-       else if(cvar("g_ca"))
-               return MAPINFO_TYPE_CA; 
-       else if(cvar("g_keyhunt"))
-               return MAPINFO_TYPE_KEYHUNT;
-       else if(cvar("g_onslaught"))
-               return MAPINFO_TYPE_ONSLAUGHT;
-       else if(cvar("g_race"))
-               return MAPINFO_TYPE_RACE;
-       else if(cvar("g_nexball"))
-               return MAPINFO_TYPE_NEXBALL;
-       else if(cvar("g_cts"))
-               return MAPINFO_TYPE_CTS;
-       else if(cvar("g_freezetag"))
-               return MAPINFO_TYPE_FREEZETAG;
-       else if(cvar("g_keepaway"))
-               return MAPINFO_TYPE_KEEPAWAY;
-       else
-               return MAPINFO_TYPE_DEATHMATCH;
+       float prev;
+       entity e;
+       prev = cvar("gamecfg");
+       for(e = MapInfo_Type_first; e; e = e.enemy)
+               if(cvar(e.netname))
+                       if(prev != e.weapons)
+                               return e.weapons;
+       if(prev)
+               return prev;
+       return MAPINFO_TYPE_DEATHMATCH;
 }
 
 float _MapInfo_CheckMap(string s) // returns 0 if the map can't be played with the current settings, 1 otherwise
@@ -1245,49 +1183,11 @@ float MapInfo_CheckMap(string s) // returns 0 if the map can't be played with th
        return r;
 }
 
-string MapInfo_GetGameTypeCvar(float t)
-{
-       switch(t)
-       {
-               case MAPINFO_TYPE_DEATHMATCH: return "g_dm";
-               case MAPINFO_TYPE_TEAM_DEATHMATCH: return "g_tdm";
-               case MAPINFO_TYPE_DOMINATION: return "g_domination";
-               case MAPINFO_TYPE_CTF: return "g_ctf";
-               case MAPINFO_TYPE_RUNEMATCH: return "g_runematch";
-               case MAPINFO_TYPE_LMS: return "g_lms";
-               case MAPINFO_TYPE_ARENA: return "g_arena";
-               case MAPINFO_TYPE_CA: return "g_ca";
-               case MAPINFO_TYPE_KEYHUNT: return "g_kh";
-               case MAPINFO_TYPE_ASSAULT: return "g_assault";
-               case MAPINFO_TYPE_ONSLAUGHT: return "g_onslaught";
-               case MAPINFO_TYPE_RACE: return "g_race";
-               case MAPINFO_TYPE_NEXBALL: return "g_nexball";
-               case MAPINFO_TYPE_FREEZETAG: return "g_freezetag";
-               case MAPINFO_TYPE_CTS: return "g_cts";
-               case MAPINFO_TYPE_KEEPAWAY:             return "g_keepaway";
-               default: return "";
-       }
-}
-
 void MapInfo_SwitchGameType(float t)
 {
-       cvar_set("gamecfg",      "0");
-       cvar_set("g_dm",         (t == MAPINFO_TYPE_DEATHMATCH)      ? "1" : "0");
-       cvar_set("g_tdm",        (t == MAPINFO_TYPE_TEAM_DEATHMATCH) ? "1" : "0");
-       cvar_set("g_domination", (t == MAPINFO_TYPE_DOMINATION)      ? "1" : "0");
-       cvar_set("g_ctf",        (t == MAPINFO_TYPE_CTF)             ? "1" : "0");
-       cvar_set("g_runematch",  (t == MAPINFO_TYPE_RUNEMATCH)       ? "1" : "0");
-       cvar_set("g_lms",        (t == MAPINFO_TYPE_LMS)             ? "1" : "0");
-       cvar_set("g_arena",      (t == MAPINFO_TYPE_ARENA)           ? "1" : "0");
-       cvar_set("g_ca",         (t == MAPINFO_TYPE_CA)              ? "1" : "0");
-       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");
-       cvar_set("g_nexball",    (t == MAPINFO_TYPE_NEXBALL)         ? "1" : "0");
-       cvar_set("g_cts",        (t == MAPINFO_TYPE_CTS)             ? "1" : "0");
-       cvar_set("g_freezetag",  (t == MAPINFO_TYPE_FREEZETAG)       ? "1" : "0");
-       cvar_set("g_keepaway",   (t == MAPINFO_TYPE_KEEPAWAY)        ? "1" : "0");
+       entity e;
+       for(e = MapInfo_Type_first; e; e = e.enemy)
+               cvar_set(e.netname, (t == e.weapons) ? "1" : "0");
 }
 
 void MapInfo_LoadMap(string s, float reinit)
@@ -1300,10 +1200,11 @@ void MapInfo_LoadMap(string s, float reinit)
        //      MapInfo_SwitchGameType(MAPINFO_TYPE_DEATHMATCH);
        //}
        
+       cvar_settemp_restore();
        if(reinit)
-               localcmd(strcat("\nsettemp_restore\nmap ", s, "\n"));
+               localcmd(strcat("\nmap ", s, "\n"));
        else
-               localcmd(strcat("\nsettemp_restore\nchangelevel ", s, "\n"));
+               localcmd(strcat("\nchangelevel ", s, "\n"));
 }
 
 string MapInfo_ListAllowedMaps(float pRequiredFlags, float pForbiddenFlags)
@@ -1339,16 +1240,35 @@ string MapInfo_ListAllAllowedMaps(float pRequiredFlags, float pForbiddenFlags)
        return substring(out, 1, strlen(out) - 1);
 }
 
+void MapInfo_LoadMapSettings_SaveGameType(float t)
+{
+       MapInfo_SwitchGameType(t);
+       cvar_set("gamecfg", ftos(t));
+       MapInfo_LoadedGametype = t;
+}
+
 void MapInfo_LoadMapSettings(string s) // to be called from worldspawn
 {
-       float t, t0;
+       float t;
+
+       t = MapInfo_CurrentGametype();
+       MapInfo_LoadMapSettings_SaveGameType(t);
+
        if(!_MapInfo_CheckMap(s)) // with underscore, it keeps temps
        {
+               if(cvar("g_mapinfo_allow_unsupported_modes_and_let_stuff_break"))
+               {
+                       print("EMERGENCY: can't play the selected map in the given game mode. Working with only the override settings.\n");
+                       _MapInfo_Map_ApplyGametypeEx("", t, t);
+                       return; // do not call Get_ByName!
+               }
+
                if(MapInfo_Map_supportedGametypes == 0)
                {
                        print("Mapinfo system is not functional at all. Assuming deathmatch.\n");
                        MapInfo_Map_supportedGametypes = MAPINFO_TYPE_DEATHMATCH;
-                       _MapInfo_Map_ApplyGametypeEx("", t0, t0);
+                       MapInfo_LoadMapSettings_SaveGameType(MAPINFO_TYPE_DEATHMATCH);
+                       _MapInfo_Map_ApplyGametypeEx("", MAPINFO_TYPE_DEATHMATCH, MAPINFO_TYPE_DEATHMATCH);
                        return; // do not call Get_ByName!
                }
 
@@ -1358,23 +1278,12 @@ void MapInfo_LoadMapSettings(string s) // to be called from worldspawn
                        t *= 2;
                        MapInfo_Map_supportedGametypes = floor(MapInfo_Map_supportedGametypes / 2);
                }
+
                // t is now a supported mode!
-               t0 = MapInfo_CurrentGametype();
-               if(cvar("g_mapinfo_allow_unsupported_modes_and_let_stuff_break"))
-               {
-                       print("EMERGENCY: can't play the selected map in the given game mode. Working with only the override settings.\n");
-                       cvar_settemp_restore();
-                       _MapInfo_Map_ApplyGametypeEx("", t0, t0);
-                       return; // do not call Get_ByName!
-               }
-               else
-               {
-                       print("EMERGENCY: can't play the selected map in the given game mode. Falling back to a supported mode.\n");
-                       MapInfo_SwitchGameType(t);
-               }
+               print("EMERGENCY: can't play the selected map in the given game mode. Falling back to a supported mode.\n");
+               MapInfo_LoadMapSettings_SaveGameType(t);
        }
-       cvar_settemp_restore();
-       MapInfo_Get_ByName(s, 1, MapInfo_CurrentGametype());
+       MapInfo_Get_ByName(s, 1, t);
 }
 
 void MapInfo_ClearTemps()
index 4de17c9..e47a283 100644 (file)
@@ -1,20 +1,85 @@
-float MAPINFO_TYPE_DEATHMATCH          = 1;
-float MAPINFO_TYPE_LMS                 = 2;
-float MAPINFO_TYPE_ARENA               = 4;
-float MAPINFO_TYPE_RUNEMATCH           = 8;
-float MAPINFO_TYPE_RACE                        = 16;
-float MAPINFO_TYPE_CTS                 = 32;
-float MAPINFO_TYPE_TEAM_DEATHMATCH     = 64;
-float MAPINFO_TYPE_CTF                 = 128;
-float MAPINFO_TYPE_CA                  = 256;
-float MAPINFO_TYPE_DOMINATION          = 512;
-float MAPINFO_TYPE_KEYHUNT             = 1024;
-float MAPINFO_TYPE_ASSAULT             = 2048;
-float MAPINFO_TYPE_ONSLAUGHT           = 4096;
-float MAPINFO_TYPE_NEXBALL             = 8192;
-float MAPINFO_TYPE_FREEZETAG           = 16384;
-float MAPINFO_TYPE_KEEPAWAY    = 32768;
-float MAPINFO_TYPE_ALL                 = 65535; // this has to include all above bits
+var float MAPINFO_TYPE_ALL = 0;
+entity MapInfo_Type_first;
+entity MapInfo_Type_last;
+.entity enemy; // internal next pointer
+
+.float weapons; // game type ID
+.string netname; // game type name as in cvar (with g_ prefix)
+.string mdl; // game type short name
+.string message; // human readable name
+.string model2; // game type defaults
+
+#define REGISTER_GAMETYPE(hname,sname,g_name,NAME,defaults) \
+       var float MAPINFO_TYPE_##NAME; \
+       var entity MapInfo_Type##g_name; \
+       void RegisterGametypes_##g_name() \
+       { \
+               MAPINFO_TYPE_##NAME = MAPINFO_TYPE_ALL + 1; \
+               MAPINFO_TYPE_ALL |= MAPINFO_TYPE_##NAME; \
+               MapInfo_Type##g_name = spawn(); \
+               MapInfo_Type##g_name.weapons = MAPINFO_TYPE_##NAME; \
+               MapInfo_Type##g_name.netname = #g_name; \
+               MapInfo_Type##g_name.mdl = #sname; \
+               MapInfo_Type##g_name.message = hname; \
+               MapInfo_Type##g_name.model2 = defaults; \
+               if(!MapInfo_Type_first) \
+                       MapInfo_Type_first = MapInfo_Type##g_name; \
+               if(MapInfo_Type_last) \
+                       MapInfo_Type_last.enemy = MapInfo_Type##g_name; \
+               MapInfo_Type_last = MapInfo_Type##g_name; \
+       } \
+       ACCUMULATE_FUNCTION(RegisterGametypes, RegisterGametypes_##g_name)
+
+#define IS_GAMETYPE(NAME) \
+       (MapInfo_LoadedGametype == MAPINFO_TYPE_##NAME)
+
+REGISTER_GAMETYPE(_("Deathmatch"),dm,g_dm,DEATHMATCH,"timelimit=20 pointlimit=30 leadlimit=0")
+#define g_dm IS_GAMETYPE(DEATHMATCH)
+
+REGISTER_GAMETYPE(_("Last Man Standing"),lms,g_lms,LMS,"timelimit=20 lives=9 leadlimit=0")
+#define g_lms IS_GAMETYPE(LMS)
+
+REGISTER_GAMETYPE(_("Arena"),arena,g_arena,ARENA,"timelimit=20 pointlimit=10 leadlimit=0")
+#define g_arena IS_GAMETYPE(ARENA)
+
+REGISTER_GAMETYPE(_("Runematch"),rune,g_runematch,RUNEMATCH,"timelimit=20 pointlimit=200 leadlimit=0")
+#define g_runematch IS_GAMETYPE(RUNEMATCH)
+
+REGISTER_GAMETYPE(_("Race"),rc,g_race,RACE,"timelimit=20 qualifying_timelimit=5 laplimit=7 teamlaplimit=15 leadlimit=0")
+#define g_race IS_GAMETYPE(RACE)
+
+REGISTER_GAMETYPE(_("Race CTS"),cts,g_cts,CTS,"timelimit=20 skill=-1")
+#define g_cts IS_GAMETYPE(CTS)
+
+REGISTER_GAMETYPE(_("Team Deathmatch"),tdm,g_tdm,TEAM_DEATHMATCH,"timelimit=20 pointlimit=50 teams=2 leadlimit=0")
+#define g_tdm IS_GAMETYPE(TEAM_DEATHMATCH)
+
+REGISTER_GAMETYPE(_("Capture the Flag"),ctf,g_ctf,CTF,"timelimit=20 caplimit=10 leadlimit=0")
+#define g_ctf IS_GAMETYPE(CTF)
+
+REGISTER_GAMETYPE(_("Clan Arena"),ca,g_ca,CA,"timelimit=20 pointlimit=10 leadlimit=0")
+#define g_ca IS_GAMETYPE(CA)
+
+REGISTER_GAMETYPE(_("Domination"),dom,g_domination,DOMINATION,"timelimit=20 pointlimit=200 teams=2 leadlimit=0")
+#define g_domination IS_GAMETYPE(DOMINATION)
+
+REGISTER_GAMETYPE(_("Key Hunt"),kh,g_keyhunt,KEYHUNT,"timelimit=20 pointlimit=1000 teams=3 leadlimit=0")
+#define g_keyhunt IS_GAMETYPE(KEYHUNT)
+
+REGISTER_GAMETYPE(_("Assault"),as,g_assault,ASSAULT,"timelimit=20")
+#define g_assault IS_GAMETYPE(ASSAULT)
+
+REGISTER_GAMETYPE(_("Onslaught"),ons,g_onslaught,ONSLAUGHT,"timelimit=20")
+#define g_onslaught IS_GAMETYPE(ONSLAUGHT)
+
+REGISTER_GAMETYPE(_("Nexball"),nexball,g_nexball,NEXBALL,"timelimit=20 pointlimit=5 leadlimit=0")
+#define g_nexball IS_GAMETYPE(NEXBALL)
+
+REGISTER_GAMETYPE(_("Freeze Tag"),freezetag,g_freezetag,FREEZETAG,"timelimit=20 pointlimit=10 teams=2 leadlimit=0")
+#define g_freezetag IS_GAMETYPE(FREEZETAG)
+
+REGISTER_GAMETYPE(_("Keepaway"),keepaway,g_keepaway,KEEPAWAY,"timelimit=20 pointlimit=30")
+#define g_keepaway IS_GAMETYPE(KEEPAWAY)
 
 float MAPINFO_FEATURE_WEAPONS       = 1; // not defined for minstagib-only maps
 float MAPINFO_FEATURE_VEHICLES      = 2;
@@ -77,11 +142,12 @@ string MapInfo_ListAllAllowedMaps(float pFlagsRequired, float pFlagsForbidden);
 // gets a gametype from a string
 float MapInfo_Type_FromString(string t);
 string MapInfo_Type_ToString(float t);
-string MapInfo_GetGameTypeCvar(float t);
+string MapInfo_Type_ToText(float t);
 void MapInfo_SwitchGameType(float t);
 
 // to be called from worldspawn to set up cvars
 void MapInfo_LoadMapSettings(string s);
+float MapInfo_LoadedGametype; // game type that was active during map load
 
 void MapInfo_Cache_Destroy(); // disable caching
 void MapInfo_Cache_Create(); // enable caching
@@ -92,4 +158,4 @@ void MapInfo_ClearTemps(); // call this when done with mapinfo for this frame
 void MapInfo_Shutdown(); // call this in the shutdown handler
 
 #define MAPINFO_SETTEMP_ACL_USER cvar_string("g_mapinfo_settemp_acl")
-#define MAPINFO_SETTEMP_ACL_SYSTEM "-g_mapinfo_* -rcon_* -settemp_* -_* -g_ban* +*"
+#define MAPINFO_SETTEMP_ACL_SYSTEM "-g_mapinfo_* -rcon_* -_* -g_ban* +*"
index 10f77b6..9daab8b 100644 (file)
@@ -396,27 +396,6 @@ void buf_save(float buf, string pFilename)
        fclose(fh);
 }
 
-string GametypeNameFromType(float g)
-{
-       if      (g == GAME_DEATHMATCH) return "dm";
-       else if (g == GAME_TEAM_DEATHMATCH) return "tdm";
-       else if (g == GAME_DOMINATION) return "dom";
-       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_CA) return "ca";
-       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 "rc";
-       else if (g == GAME_NEXBALL) return "nexball";
-       else if (g == GAME_CTS) return "cts";
-       else if (g == GAME_FREEZETAG) return "freezetag";
-       else if (g == GAME_KEEPAWAY) return "ka";
-       return "dm";
-}
-
 string mmsss(float tenths)
 {
        float minutes;
@@ -523,31 +502,31 @@ float invertLengthLog(float x)
 vector decompressShortVector(float data)
 {
        vector out;
-       float pitch, yaw, len;
+       float p, y, len;
        if(data == 0)
                return '0 0 0';
-       pitch = (data & 0xF000) / 0x1000;
-       yaw =   (data & 0x0F80) / 0x80;
-       len =   (data & 0x007F);
+       p   = (data & 0xF000) / 0x1000;
+       y   = (data & 0x0F80) / 0x80;
+       len = (data & 0x007F);
 
-       //print("\ndecompress: pitch ", ftos(pitch)); print("yaw ", ftos(yaw)); print("len ", ftos(len), "\n");
+       //print("\ndecompress: p ", ftos(p)); print("y ", ftos(y)); print("len ", ftos(len), "\n");
 
-       if(pitch == 0)
+       if(p == 0)
        {
                out_x = 0;
                out_y = 0;
-               if(yaw == 31)
+               if(y == 31)
                        out_z = -1;
                else
                        out_z = +1;
        }
        else
        {
-               yaw   = .19634954084936207740 * yaw;
-               pitch = .19634954084936207740 * pitch - 1.57079632679489661922;
-               out_x = cos(yaw) *  cos(pitch);
-               out_y = sin(yaw) *  cos(pitch);
-               out_z =            -sin(pitch);
+               y   = .19634954084936207740 * y;
+               p = .19634954084936207740 * p - 1.57079632679489661922;
+               out_x = cos(y) *  cos(p);
+               out_y = sin(y) *  cos(p);
+               out_z =          -sin(p);
        }
 
        //print("decompressed: ", vtos(out), "\n");
@@ -558,7 +537,7 @@ vector decompressShortVector(float data)
 float compressShortVector(vector vec)
 {
        vector ang;
-       float pitch, yaw, len;
+       float p, y, len;
        if(vlen(vec) == 0)
                return 0;
        //print("compress: ", vtos(vec), "\n");
@@ -570,21 +549,21 @@ float compressShortVector(vector vec)
                error("BOGUS vectoangles");
        //print("angles: ", vtos(ang), "\n");
 
-       pitch = floor(0.5 + (ang_x + 90) * 16 / 180) & 15; // -90..90 to 0..14
-       if(pitch == 0)
+       p = floor(0.5 + (ang_x + 90) * 16 / 180) & 15; // -90..90 to 0..14
+       if(p == 0)
        {
                if(vec_z < 0)
-                       yaw = 31;
+                       y = 31;
                else
-                       yaw = 30;
+                       y = 30;
        }
        else
-               yaw = floor(0.5 + ang_y * 32 / 360)          & 31; // 0..360 to 0..32
+               y = floor(0.5 + ang_y * 32 / 360)          & 31; // 0..360 to 0..32
        len = invertLengthLog(vlen(vec));
 
-       //print("compressed: pitch ", ftos(pitch)); print("yaw ", ftos(yaw)); print("len ", ftos(len), "\n");
+       //print("compressed: p ", ftos(p)); print("y ", ftos(y)); print("len ", ftos(len), "\n");
 
-       return (pitch * 0x1000) + (yaw * 0x80) + len;
+       return (p * 0x1000) + (y * 0x80) + len;
 }
 
 void compressShortVector_init()
@@ -863,45 +842,29 @@ void get_mi_min_max_texcoords(float mode)
 }
 #endif
 
-#ifdef CSQC
-void cvar_settemp(string pKey, string pValue)
-{
-       error("cvar_settemp called from CSQC - use cvar_clientsettemp instead!");
-}
-void cvar_settemp_restore()
-{
-       error("cvar_settemp_restore called from CSQC - use cvar_clientsettemp instead!");
-}
-#else
-void cvar_settemp(string pKey, string pValue)
+void cvar_settemp(string cv, string val)
 {
-       float i;
-       string settemp_var;
-       if(cvar_string(pKey) == pValue)
-               return;
-       i = cvar("settemp_idx");
-       cvar_set("settemp_idx", ftos(i+1));
-       settemp_var = strcat("_settemp_x", ftos(i));
-#ifdef MENUQC
-       registercvar(settemp_var, "", 0);
-#else
-       registercvar(settemp_var, "");
-#endif
-       cvar_set("settemp_list", strcat("1 ", pKey, " ", settemp_var, " ", cvar_string("settemp_list")));
-       cvar_set(settemp_var, cvar_string(pKey));
-       cvar_set(pKey, pValue);
+       entity e;
+       for(e = world; (e = find(e, classname, "saved_cvar_value")); )
+               if(e.netname == cv)
+                       goto saved;
+       e = spawn();
+       e.classname = "saved_cvar_value";
+       e.netname = strzone(cv);
+       e.message = strzone(cvar_string(cv));
+:saved
+       cvar_set(cv, val);
 }
 
 void cvar_settemp_restore()
 {
-       // undo what cvar_settemp did
-       float n, i;
-       n = tokenize_console(cvar_string("settemp_list"));
-       for(i = 0; i < n - 3; i += 3)
-               cvar_set(argv(i + 1), cvar_string(argv(i + 2)));
-       cvar_set("settemp_list", "0");
+       entity e;
+       while((e = find(world, classname, "saved_cvar_value")))
+       {
+               cvar_set(e.netname, e.message);
+               remove(e);
+       }
 }
-#endif
 
 float almost_equals(float a, float b)
 {
@@ -1426,7 +1389,7 @@ string textShortenToLength(string theText, float maxWidth, textLengthUpToLength_
 float isGametypeInFilter(float gt, float tp, float ts, string pattern)
 {
        string subpattern, subpattern2, subpattern3, subpattern4;
-       subpattern = strcat(",", GametypeNameFromType(gt), ",");
+       subpattern = strcat(",", MapInfo_Type_ToString(gt), ",");
        if(tp)
                subpattern2 = ",teams,";
        else
@@ -1435,7 +1398,7 @@ float isGametypeInFilter(float gt, float tp, float ts, string pattern)
                subpattern3 = ",teamspawns,";
        else
                subpattern3 = ",noteamspawns,";
-       if(gt == GAME_RACE || gt == GAME_CTS)
+       if(gt == MAPINFO_TYPE_RACE || gt == MAPINFO_TYPE_CTS)
                subpattern4 = ",race,";
        else
                subpattern4 = string_null;
@@ -1757,11 +1720,11 @@ float ReadInt24_t()
        return v;
 }
 #else
-void WriteInt24_t(float dest, float val)
+void WriteInt24_t(float dst, float val)
 {
        float v;
-       WriteShort(dest, (v = floor(val / 256)));
-       WriteByte(dest, val - v * 256); // 0..255
+       WriteShort(dst, (v = floor(val / 256)));
+       WriteByte(dst, val - v * 256); // 0..255
 }
 #endif
 #endif
@@ -2118,3 +2081,26 @@ entity ReadCSQCEntity()
        return findfloat(world, entnum, f);
 }
 #endif
+
+float shutdown_running;
+#ifdef SVQC
+void SV_Shutdown()
+#endif
+#ifdef CSQC
+void CSQC_Shutdown()
+#endif
+#ifdef MENUQC
+void m_shutdown()
+#endif
+{
+       if(shutdown_running)
+       {
+               print("Recursive shutdown detected! Only restoring cvars...\n");
+       }
+       else
+       {
+               shutdown_running = 1;
+               Shutdown();
+       }
+       cvar_settemp_restore(); // this must be done LAST, but in any case
+}
index e2dfcb3..6d4eb61 100644 (file)
@@ -59,7 +59,6 @@ void buf_save(float buf, string filename);
 float mod(float a, float b) { return a - (floor(a / b) * b); }   
 #endif
 
-string GametypeNameFromType(float g);
 #define TIME_TO_NTHS(t,n) floor((t) * (n) + 0.4)
 string mmsss(float t);
 string mmssss(float t);
@@ -85,6 +84,7 @@ float CheckWireframeBox(entity forent, vector v0, vector dvx, vector dvy, vector
 #endif
 
 string fixPriorityList(string pl, float from, float to, float subtract, float complete);
+string mapPriorityList(string order, string(string) mapfunc);
 string swapInPriorityList(string order, float i, float j);
 
 float cvar_value_issafe(string s);
@@ -271,6 +271,11 @@ float xdecode(string s);
 #define sound(e,c,s,v,a) sound7(e,c,s,v,a,0,0)
 #endif
 
+float lowestbit(float f);
+
 #ifdef CSQC
 entity ReadCSQCEntity()
 #endif
+
+// generic shutdown handler
+void Shutdown();
index 0322661..24f3c60 100644 (file)
@@ -170,7 +170,7 @@ void CSQCModel_Draw()
        self.csqcmodel_teleported = 0;
 }
 
-void CSQCModel_Read()
+void CSQCModel_Read(float isnew)
 {
        float sf;
        sf = ReadShort();
index d386565..e8ea901 100644 (file)
@@ -20,7 +20,7 @@
  * IN THE SOFTWARE.
  */
 
-void CSQCModel_Read();
+void CSQCModel_Read(float isnew);
 
 #define CSQCMODEL_IF(cond)
 #define CSQCMODEL_ENDIF
index 242dc81..66b32be 100644 (file)
@@ -209,6 +209,15 @@ void CSQCPlayer_SetCamera()
        view = CSQCModel_server2csqc(player_localentnum);
 #endif
 
+       if(view != csqcplayer)
+       {
+               entity oldself = self;
+               self = view;
+               InterpolateOrigin_Do();
+               self.view_ofs = '0 0 1' * getstati(STAT_VIEWHEIGHT);
+               self = oldself;
+       }
+
 #ifdef COMPAT_XON050_ENGINE
        if(view && !(checkextension("DP_CSQC_V_CALCREFDEF") || checkextension("DP_CSQC_V_CALCREFDEF_WIP1")))
        {
@@ -245,17 +254,14 @@ void CSQCPlayer_SetCamera()
 
 void CSQCPlayer_Remove()
 {
-       if(self.entnum != player_localnum + 1)
-               return;
        csqcplayer = world;
-       cvar_clientsettemp("cl_movement_replay", "1");
+       cvar_settemp("cl_movement_replay", "1");
 }
 
 float CSQCPlayer_PreUpdate()
 {
-       if(self.entnum != player_localnum + 1)
+       if(self != csqcplayer)
                return 0;
-       cvar_clientsettemp("cl_movement_replay", "0");
        if(csqcplayer_status != CSQCPLAYERSTATUS_FROMSERVER)
                CSQCPlayer_Unpredict();
        return 1;
@@ -263,10 +269,11 @@ float CSQCPlayer_PreUpdate()
 
 float CSQCPlayer_PostUpdate()
 {
-       if(self.entnum != player_localentnum)
+       if(self.entnum != player_localnum + 1)
                return 0;
-       csqcplayer_status = CSQCPLAYERSTATUS_FROMSERVER;
        csqcplayer = self;
+       csqcplayer_status = CSQCPLAYERSTATUS_FROMSERVER;
+       cvar_settemp("cl_movement_replay", "0");
        self.entremove = CSQCPlayer_Remove;
        return 1;
 }
index 9f2911a..b340bae 100644 (file)
@@ -1027,7 +1027,9 @@ string(string format, ...) sprintf = #627;
 //    For conversions s and c, the flag # makes precision and width interpreted
 //      as byte count, by default it is interpreted as character count in UTF-8
 //      enabled engines. No other conversions can create wide characters, and #
-//      has another meaning in these.
+//      has another meaning in these. When in character count mode, color codes
+//      are ignored. To get UTF-8 semantics WITHOUT color code parsing, use
+//      the + flag.
 
 //DP_QC_STRFTIME
 //idea: LordHavoc
@@ -1663,12 +1665,19 @@ void(float effectnum, vector org, vector vel, float howmany) pointparticles = #3
 //globals:
 //new movetypes:
 const float MOVETYPE_PHYSICS = 32; // need to be set before any physics_* builtins applied
-//new solid types:
+//new solid types (deprecated):
 const float SOLID_PHYSICS_BOX = 32;
 const float SOLID_PHYSICS_SPHERE = 33;
 const float SOLID_PHYSICS_CAPSULE = 34;
 const float SOLID_PHYSICS_TRIMESH = 35;
 const float SOLID_PHYSICS_CYLINDER = 36;
+//geometry types:
+const float GEOMTYPE_NULL = 0;
+const float GEOMTYPE_BOX = 1;
+const float GEOMTYPE_SPHERE = 2;
+const float GEOMTYPE_CAPSULE = 3;
+const float GEOMTYPE_TRIMESH = 4;
+const float GEOMTYPE_CYLINDER = 5;
 //SOLID_BSP;
 //joint types:
 const float JOINTTYPE_POINT = 1;
@@ -1690,6 +1699,7 @@ const float JOINTTYPE_FIXED = -1;
 //     movedir_z = stop position (+/-), set to 0 for no stop
 //   note that ODE does not support both in one anyway
 //field definitions:
+.float geomtype; // see GEOMTYPE_*, a more correct way to set collision shape, allows to set SOLID_CORPSE and trimesh collisions
 .float mass; // ODE mass, standart value is 1
 .vector massofs; // offsets a mass center out of object center, if not set a center of model bounds is used
 .float friction;
index 4b56257..1a68489 100644 (file)
@@ -202,7 +202,7 @@ float       stof(string val,...)  = #21;
 entity spawn(void)             = #22;
 void   remove(entity e)        = #23;
 
-entity findstring(entity start, .string field, string match)   = #24;
+entity find(entity start, .string field, string match)         = #24;
 entity findfloat(entity start, .float field, float match)      = #25;
 entity findentity(entity start, .entity field, entity match)   = #25;
 
@@ -356,6 +356,11 @@ string(string serveraddress) crypto_getidfp = #634; // retrieves the cached host
 string(string serveraddress) crypto_getencryptlevel = #635; // 0 if never encrypting, 1 supported, 2 requested, 3 required, appended by list of allowed methods in order of preference ("AES128"), preceded by a space each
 string(float i) crypto_getmykeyfp = #636; // retrieves the CA key fingerprint of a given CA slot, or "" if slot is unused but more to come, or string_null if end of list
 string(float i) crypto_getmyidfp = #637; // retrieves the ID fingerprint of a given CA slot, or "" if slot is unused but more to come, or string_null if end of list
+float CRYPTO_IDSTATUS_OUTOFRANGE = -1;
+float CRYPTO_IDSTATUS_EMPTY = 0;
+float CRYPTO_IDSTATUS_UNSIGNED = 1;
+float CRYPTO_IDSTATUS_SIGNED = 2;
+float(float i) crypto_getmyidstatus = #641; // retrieves the ID's status of a given CA slot, or 0 if slot is unused but more to come, or -1 if end of list
 float(string url, float id, string content_type, string delim, float buf, float keyid) crypto_uri_postbuf = #513;
 //description:
 //use -1 as buffer handle to justs end delim as postdata
index ea2e403..6a140f4 100644 (file)
@@ -1,9 +1,3 @@
-void GameCommand_Init()
-{
-       // make gg call menu QC theCommands
-       localcmd("alias qc_cmd \"menu_cmd $*\"\n");
-}
-
 string _dumptree_space;
 void _dumptree_open(entity pass, entity me)
 {
index 33eb053..7a18fe2 100644 (file)
@@ -1,2 +1 @@
-void GameCommand_Init();
 void GameCommand(string command);
index 2b0a636..536295f 100644 (file)
@@ -50,6 +50,10 @@ void m_init()
                        dprint(s, ": ", getgamedirinfo(i, GETGAMEDIRINFO_DESCRIPTION));
                }
        }
+
+       // needs to be done so early because of the constants they create
+       RegisterWeapons();
+       RegisterGametypes();
 }
 
 float MENU_ASPECT = 1.25; // 1280x1024
@@ -116,9 +120,6 @@ void m_init_delayed()
        if(!preMenuInit())
                return;
        menuInitialized = 1;
-       GameCommand_Init();
-
-       RegisterWeapons();
 
        fh = -1;
        if(cvar_string("menu_skin") != "")
@@ -835,7 +836,7 @@ void m_toggle(float mode)
        }
 }
 
-void m_shutdown()
+void Shutdown()
 {
        entity e;
 
@@ -919,7 +920,7 @@ void m_goto(string itemname)
        }
        else
        {
-               for(e = NULL; (e = findstring(e, name, itemname)); )
+               for(e = NULL; (e = find(e, name, itemname)); )
                        if(e.classname != "vtbl")
                                break;
                if(e)
index caaa123..9456cd6 100644 (file)
@@ -69,12 +69,20 @@ void XonoticCrosshairButton_draw(entity me)
        vector sz, rgb;
        float a;
 
-       rgb = stov(cvar_string("crosshair_color"));
-       a = cvar("crosshair_alpha");
 
-       if(!me.checked && !me.focused && me.cvarValueFloat != -1)
+       if(me.cvarValueFloat == -1)
+       {
+               rgb = stov(cvar_string("crosshair_color"));
+               a = cvar("crosshair_alpha");
+       }
+       else if(me.checked || me.focused)
        {
-               a *= me.disabledAlpha;
+               a = 1;
+               rgb = '1 1 1';
+       }
+       else
+       {
+               a = me.disabledAlpha;
                rgb = '1 1 1';
        }
 
@@ -90,17 +98,23 @@ void XonoticCrosshairButton_draw(entity me)
        SUPER(XonoticCrosshairButton).draw(me);
 
        sz = draw_PictureSize(me.src3);
-       sz = globalToBoxSize(sz, draw_scale);
+       sz = globalToBoxSize(sz, me.size);
        if(me.cvarValueFloat == -1)
        {
-               sz = (6 * '1 1 0' + sz * cvar("crosshair_size")) * 0.08; // (6 * '1 1 0' + ...) * 0.08 here to make visible size changes happen also at bigger sizes
+               sz = sz * cvar("crosshair_size"); // (6 * '1 1 0' + ...) * 0.08 here to make visible size changes happen also at bigger sizes
+               /*
                if(sz_x > 0.95)
                        sz = sz * (0.95 / sz_x);
                if(sz_y > 0.95)
                        sz = sz * (0.95 / sz_y);
+               */
        }
        else // show the crosshair picker at full size
-               sz = '0.95 0.95 0';
+       {
+               sz = sz * (0.95 / sz_x);
+               if(sz_y > 0.95)
+                       sz = sz * (0.95 / sz_y);
+       }
 
        draw_Picture('0.5 0.5 0' - 0.5 * sz, me.src3, sz, rgb, a);
        if(cvar("crosshair_dot"))
index e242b66..31ea3e0 100644 (file)
@@ -103,7 +103,7 @@ void XonoticMapInfoDialog_fill(entity me)
                        me.TR(me);
                        me.TDempty(me, 0.2);
                }
-               me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, GameType_GetName(i)));
+               me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, MapInfo_Type_ToText(GameType_GetID(i))));
                        me.(typeLabels[i]) = e;
        }
 
index 760eff3..d4211de 100644 (file)
@@ -113,8 +113,8 @@ void XonoticPlayerSettingsTab_fill(entity me)
                me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "crosshair_per_weapon", _("Per weapon")));
        me.TR(me);
                me.TDempty(me, 0.2);
-               for(i = 1; i <= 10; ++i) {
-                       me.TDNoMargin(me, 1, 2 / 10, e = makeXonoticCrosshairButton(3, i), '1 1 0');
+               for(i = 1; i <= 13; ++i) {
+                       me.TDNoMargin(me, 1, 2 / 13, e = makeXonoticCrosshairButton(3, i), '1 1 0');
                        setDependent(e, "crosshair_per_weapon", 0, 0);
                }
                // show a larger preview of the selected crosshair
@@ -123,14 +123,14 @@ void XonoticPlayerSettingsTab_fill(entity me)
                setDependent(e, "crosshair_per_weapon", 0, 0);
        me.TR(me);
                me.TDempty(me, 0.2);
-               for(i = 11; i <= 20; ++i) {
-                       me.TDNoMargin(me, 1, 2 / 10, e = makeXonoticCrosshairButton(3, i), '1 1 0');
+               for(i = 14; i <= 26; ++i) {
+                       me.TDNoMargin(me, 1, 2 / 13, e = makeXonoticCrosshairButton(3, i), '1 1 0');
                        setDependent(e, "crosshair_per_weapon", 0, 0);
                }
        me.TR(me);
                me.TDempty(me, 0.2);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair size:")));
-               me.TD(me, 1, 1.8, e = makeXonoticSlider(0.10, 1.5, 0.05, "crosshair_size"));
+               me.TD(me, 1, 1.8, e = makeXonoticSlider(0.1, 1.0, 0.01, "crosshair_size"));
        me.TR(me);
                me.TDempty(me, 0.2);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair alpha:")));
index ec21c65..cbc2399 100644 (file)
@@ -70,7 +70,7 @@ void XonoticGametypeList_drawListBoxItem(entity me, float i, vector absSize, flo
        string s;
        if(isSelected)
                draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
-       s = GameType_GetName(i);
+       s = MapInfo_Type_ToText(GameType_GetID(i));
        draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize)) * 0.5) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
 }
 void XonoticGametypeList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
index b7757f2..82fdbfb 100644 (file)
@@ -427,24 +427,24 @@ void ServerList_TypeSort_Click(entity btn, entity me)
        else
                s = "";
 
-       for(i = 1; ; ++i) // 20 modes ought to be enough for anyone
+       for(i = 1; ; i *= 2) // 20 modes ought to be enough for anyone
        {
-               t = GametypeNameFromType(i);
+               t = MapInfo_Type_ToString(i);
                if(i > 1)
-                       if(t == GametypeNameFromType(0)) // it repeats (default case)
+                       if(t == "") // it repeats (default case)
                        {
                                // no type was found
                                // choose the first one
-                               s = t;
+                               s = MapInfo_Type_ToString(1);
                                break;
                        }
-               if(s == GametypeNameFromType(i))
+               if(s == t)
                {
                        // the type was found
                        // choose the next one
-                       s = GametypeNameFromType(i + 1);
-                       if(s == GametypeNameFromType(0))
-                               s = "";
+                       s = MapInfo_Type_ToString(i * 2);
+                       if(s == "")
+                               s = MapInfo_Type_ToString(1);
                        break;
                }
        }
index b8215d5..74fe810 100644 (file)
@@ -543,47 +543,38 @@ float updateCompression()
 
 // note: include only those that should be in the menu!
 #define GAMETYPES \
-       GAMETYPE(MAPINFO_TYPE_ARENA, _("Arena")) \
-       GAMETYPE(MAPINFO_TYPE_ASSAULT, _("Assault")) \
-       GAMETYPE(MAPINFO_TYPE_CTF, _("Capture The Flag")) \
-       GAMETYPE(MAPINFO_TYPE_CA, _("Clan Arena")) \
-       GAMETYPE(MAPINFO_TYPE_DEATHMATCH, _("Deathmatch")) \
-       GAMETYPE(MAPINFO_TYPE_DOMINATION, _("Domination")) \
-       GAMETYPE(MAPINFO_TYPE_FREEZETAG, _("Freeze Tag")) \
-       GAMETYPE(MAPINFO_TYPE_KEEPAWAY, _("Keepaway")) \
-       GAMETYPE(MAPINFO_TYPE_KEYHUNT, _("Key Hunt")) \
-       GAMETYPE(MAPINFO_TYPE_LMS, _("Last Man Standing")) \
-       GAMETYPE(MAPINFO_TYPE_NEXBALL, _("Nexball")) \
-       GAMETYPE(MAPINFO_TYPE_ONSLAUGHT, _("Onslaught")) \
-       GAMETYPE(MAPINFO_TYPE_RACE, _("Race")) \
-       GAMETYPE(MAPINFO_TYPE_CTS, _("Race CTS")) \
-       GAMETYPE(MAPINFO_TYPE_RUNEMATCH, _("Runematch")) \
-       GAMETYPE(MAPINFO_TYPE_TEAM_DEATHMATCH, _("Team Deathmatch")) \
+       GAMETYPE(MAPINFO_TYPE_ARENA) \
+       GAMETYPE(MAPINFO_TYPE_ASSAULT) \
+       GAMETYPE(MAPINFO_TYPE_CTF) \
+       GAMETYPE(MAPINFO_TYPE_CA) \
+       GAMETYPE(MAPINFO_TYPE_DEATHMATCH) \
+       GAMETYPE(MAPINFO_TYPE_DOMINATION) \
+       GAMETYPE(MAPINFO_TYPE_FREEZETAG) \
+       GAMETYPE(MAPINFO_TYPE_KEEPAWAY) \
+       GAMETYPE(MAPINFO_TYPE_KEYHUNT) \
+       GAMETYPE(MAPINFO_TYPE_LMS) \
+       GAMETYPE(MAPINFO_TYPE_NEXBALL) \
+       GAMETYPE(MAPINFO_TYPE_ONSLAUGHT) \
+       GAMETYPE(MAPINFO_TYPE_RACE) \
+       GAMETYPE(MAPINFO_TYPE_CTS) \
+       GAMETYPE(MAPINFO_TYPE_RUNEMATCH) \
+       GAMETYPE(MAPINFO_TYPE_TEAM_DEATHMATCH) \
        /* nothing */
 
 float GameType_GetID(float cnt)
 {
        float i;
        i = 0;
-#define GAMETYPE(id,name) if(i++ == cnt) return id;
+#define GAMETYPE(id) if(i++ == cnt) return id;
        GAMETYPES
 #undef GAMETYPE
        return 0;
 }
-string GameType_GetName(float cnt)
-{
-       float i;
-       i = 0;
-#define GAMETYPE(id,name) if(i++ == cnt) return name;
-       GAMETYPES
-#undef GAMETYPE
-       return _("@!#%'n Tuba Throwing");
-}
 float GameType_GetCount()
 {
        float i;
        i = 0;
-#define GAMETYPE(id,name) ++i;
+#define GAMETYPE(id) ++i;
        GAMETYPES
 #undef GAMETYPE
        return i;
index d8f66f4..6165fb3 100644 (file)
@@ -37,7 +37,6 @@ void URI_Get_Callback(float id, float status, string data);
 // game type list box stuff (does not NEED to contain all game types, other
 // types stay available via console)
 float GameType_GetID(float cnt);
-string GameType_GetName(float cnt);
 float GameType_GetCount();
 
 void dialog_hudpanel_common_notoggle(entity me, string panelname);
index c6c2981..d418402 100644 (file)
@@ -757,8 +757,6 @@ float autocvar_g_chat_flood_spl_tell;
 float autocvar_g_chat_nospectators;
 float autocvar_g_chat_teamcolors;
 float autocvar_g_ctf_captimerecord_always;
-float autocvar_g_ctf_capture_leadlimit;
-float autocvar_g_ctf_capture_limit;
 float autocvar_g_ctf_dynamiclights;
 string autocvar_g_ctf_flag_blue_model;
 float autocvar_g_ctf_flag_blue_skin;
@@ -1035,7 +1033,6 @@ float autocvar_g_weapon_charge_colormod_red_half;
 float autocvar_g_weapon_throwable;
 #define autocvar_g_weaponarena cvar_string("g_weaponarena")
 string autocvar_g_xonoticversion;
-float autocvar_gamecfg;
 float autocvar_gameversion;
 float autocvar_gameversion_min;
 float autocvar_gameversion_max;
index 9ddcaab..e8ccc07 100644 (file)
@@ -466,7 +466,6 @@ void PutObserverInServer (void)
        self.pauseregen_finished = 0;
        self.damageforcescale = 0;
        self.death_time = 0;
-       self.dead_frame = 0;
        self.alpha = 0;
        self.scale = 0;
        self.fade_time = 0;
@@ -776,7 +775,6 @@ void PutClientInServer (void)
                }
                self.damageforcescale = 2;
                self.death_time = 0;
-               self.dead_frame = 0;
                self.alpha = 0;
                self.scale = 0;
                self.fade_time = 0;
@@ -1504,8 +1502,6 @@ void ClientConnect (void)
        else
                stuffcmd(self, "set _teams_available 0\n");
 
-       stuffcmd(self, strcat("set gametype ", ftos(game), "\n"));
-
        if(g_arena || g_ca)
        {
                self.classname = "observer";
@@ -2923,10 +2919,8 @@ void PlayerPostThink (void)
                stuffcmd(self, strcat("name ", self.netname, substring(ftos(random()), 2, -1), "\n"));
        }
 
-       if(sv_maxidle && frametime)
+       if(sv_maxidle && frametime) // WORKAROUND: only use dropclient in server frames (frametime set). Never use it in cl_movement frames (frametime zero).
        {
-               // WORKAROUND: only use dropclient in server frames (frametime set). Never use it in cl_movement frames (frametime zero).
-               float timeleft;
                if (time - self.parm_idlesince < 1) // instead of (time == self.parm_idlesince) to support sv_maxidle <= 10
                {
                        if(self.idlekick_lasttimeleft)
@@ -2934,34 +2928,37 @@ void PlayerPostThink (void)
                                Send_CSQC_Centerprint_Generic_Expire(self, CPID_DISCONNECT_IDLING);
                                self.idlekick_lasttimeleft = 0;
                        }
-                       return;
-               }
-               timeleft = ceil(sv_maxidle - (time - self.parm_idlesince));
-               if(timeleft == min(10, sv_maxidle - 1)) // - 1 to support sv_maxidle <= 10
-               {
-                       if(!self.idlekick_lasttimeleft)
-                               Send_CSQC_Centerprint_Generic(self, CPID_DISCONNECT_IDLING, "^3Stop idling!\n^3Disconnecting in %d seconds...", 1, timeleft);
-               }
-               if(timeleft <= 0)
-               {
-                       bprint("^3", self.netname, "^3 was kicked for idling.\n");
-                       AnnounceTo(self, "terminated");
-                       dropclient(self);
-                       return;
                }
-               else if(timeleft <= 10)
+               else
                {
-                       if(timeleft != self.idlekick_lasttimeleft)
-                               AnnounceTo(self, ftos(timeleft));
-                       self.idlekick_lasttimeleft = timeleft;
+                       float timeleft;
+                       timeleft = ceil(sv_maxidle - (time - self.parm_idlesince));
+                       if(timeleft == min(10, sv_maxidle - 1)) // - 1 to support sv_maxidle <= 10
+                       {
+                               if(!self.idlekick_lasttimeleft)
+                                       Send_CSQC_Centerprint_Generic(self, CPID_DISCONNECT_IDLING, "^3Stop idling!\n^3Disconnecting in %d seconds...", 1, timeleft);
+                       }
+                       if(timeleft <= 0)
+                       {
+                               bprint("^3", self.netname, "^3 was kicked for idling.\n");
+                               AnnounceTo(self, "terminated");
+                               dropclient(self);
+                               return;
+                       }
+                       else if(timeleft <= 10)
+                       {
+                               if(timeleft != self.idlekick_lasttimeleft)
+                                       AnnounceTo(self, ftos(timeleft));
+                               self.idlekick_lasttimeleft = timeleft;
+                       }
                }
        }
 
 #ifdef TETRIS
        if(self.impulse == 100)
                ImpulseCommands();
-       if (TetrisPostFrame())
-               return;
+       if (!TetrisPostFrame())
+       {
 #endif
 
        CheatFrame();
@@ -2982,6 +2979,10 @@ void PlayerPostThink (void)
                //do nothing
        }
        
+#ifdef TETRIS
+       }
+#endif
+
        /*
        float i;
        for(i = 0; i < 1000; ++i)
index b675c56..79087eb 100644 (file)
@@ -882,6 +882,10 @@ void SV_PlayerPhysics()
                swampspd_mod = self.swamp_slowdown; //cvar("g_balance_swamp_moverate");
        }
 
+       // conveyors: first fix velocity
+       if(self.conveyor.state)
+               self.velocity -= self.conveyor.movedir;
+
        if(self.classname != "player")
        {
                maxspd_mod = autocvar_sv_spectator_speed_multiplier;
@@ -1211,6 +1215,28 @@ void SV_PlayerPhysics()
                                self.velocity = self.velocity * f;
                        else
                                self.velocity = '0 0 0';
+                       /*
+                          Mathematical analysis time!
+
+                          Our goal is to invert this mess.
+
+                          For the two cases we get:
+                               v = v0 * (1 - frametime * (autocvar_sv_stopspeed / v0) * autocvar_sv_friction)
+                                 = v0 - frametime * autocvar_sv_stopspeed * autocvar_sv_friction
+                               v0 = v + frametime * autocvar_sv_stopspeed * autocvar_sv_friction
+                          and
+                               v = v0 * (1 - frametime * autocvar_sv_friction)
+                               v0 = v / (1 - frametime * autocvar_sv_friction)
+
+                          These cases would be chosen ONLY if:
+                               v0 < autocvar_sv_stopspeed
+                               v + frametime * autocvar_sv_stopspeed * autocvar_sv_friction < autocvar_sv_stopspeed
+                               v < autocvar_sv_stopspeed * (1 - frametime * autocvar_sv_friction)
+                          and, respectively:
+                               v0 >= autocvar_sv_stopspeed
+                               v / (1 - frametime * autocvar_sv_friction) >= autocvar_sv_stopspeed
+                               v >= autocvar_sv_stopspeed * (1 - frametime * autocvar_sv_friction)
+                        */
                }
 
                // acceleration
@@ -1339,6 +1365,10 @@ void SV_PlayerPhysics()
        if(self.flags & FL_ONGROUND)
                self.lastground = time;
 
+       // conveyors: then break velocity again
+       if(self.conveyor.state)
+               self.velocity += self.conveyor.movedir;
+
        self.lastflags = self.flags;
        self.lastclassname = self.classname;
 }
index 5b369c2..4d20ed7 100644 (file)
@@ -167,7 +167,6 @@ void CopyBody(float keepvelocity)
        self.animstate_override = oldself.animstate_override;
        self.animstate_looping = oldself.animstate_looping;
        self.frame = oldself.frame;
-       self.dead_frame = oldself.dead_frame;
        self.pain_finished = oldself.pain_finished;
        self.health = oldself.health;
        self.armorvalue = oldself.armorvalue;
@@ -197,7 +196,7 @@ void CopyBody(float keepvelocity)
        Drag_MoveDrag(oldself, self);
 
        if(self.colormap <= maxclients && self.colormap > 0)
-               self.colormap = 1024 + self.clientcolors;
+               self.colormap = 1024 + oldself.clientcolors;
 
        CSQCMODEL_AUTOINIT();
        self.CopyBody_nextthink = oldself.nextthink;
@@ -239,8 +238,8 @@ void player_setupanimsformodel()
        self.anim_runbackwards = animfixfps(self, '14 1 1');
        self.anim_strafeleft = animfixfps(self, '15 1 1');
        self.anim_straferight = animfixfps(self, '16 1 1');
-       self.anim_dead1 = animfixfps(self, '17 1 1');
-       self.anim_dead2 = animfixfps(self, '18 1 1');
+       //self.anim_dead1 = animfixfps(self, '17 1 1');
+       //self.anim_dead2 = animfixfps(self, '18 1 1');
        self.anim_forwardright = animfixfps(self, '19 1 1');
        self.anim_forwardleft = animfixfps(self, '20 1 1');
        self.anim_backright = animfixfps(self, '21 1 1');
@@ -265,18 +264,7 @@ void player_anim (void)
                updateanim(self.weaponentity);
 
        if (self.deadflag != DEAD_NO)
-       {
-               if (time > self.animstate_endtime)
-               {
-                       if (self.maxs_z > 5)
-                       {
-                               self.maxs_z = 5;
-                               setsize(self, self.mins, self.maxs);
-                       }
-                       self.frame = self.dead_frame;
-               }
                return;
-       }
 
        if (!self.animstate_override)
        {
@@ -424,7 +412,6 @@ void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float
        {
                // don't use any animations as a gib
                self.frame = 0;
-               self.dead_frame = 0;
                // view just above the floor
                self.view_ofs = '0 0 4';
 
@@ -778,14 +765,13 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht
                else
                        self.respawn_countdown = -1; // do not count down
                if (random() < 0.5)
-               {
                        setanim(self, self.anim_die1, FALSE, TRUE, TRUE);
-                       self.dead_frame = self.anim_dead1_x;
-               }
                else
-               {
                        setanim(self, self.anim_die2, FALSE, TRUE, TRUE);
-                       self.dead_frame = self.anim_dead2_x;
+               if (self.maxs_z > 5)
+               {
+                       self.maxs_z = 5;
+                       setsize(self, self.mins, self.maxs);
                }
                // set damage function to corpse damage
                self.event_damage = PlayerCorpseDamage;
index 7cefb53..b95c726 100644 (file)
@@ -133,8 +133,6 @@ float       MSG_ENTITY                              = 5; // csqc
 //float        GAME_FULLBRIGHT_PLAYERS                 = 64; /// makes the players model fullbright
 //float        GAME_TEAMS                              = 128; /// Teams, red/green/yellow/blue
 
-float  game;   // set to "gamecfg" on spawnfunc_worldspawn
-
 
 //float        POWERUP_STRENGTH_DAMAGE                 = 2; // damage multiplier for strength powerup
 //float        POWERUP_STRENGTH_FORCE                  = 4; // force multiplier for strength powerup
index 6f7198c..f583537 100644 (file)
@@ -135,10 +135,7 @@ void ctf_flag_spawnstuff()
 
 float ctf_score_value(string parameter)
 {
-       if(g_ctf_win_mode != 2)
-               return cvar(strcat("g_ctf_personal", parameter));
-       else
-               return cvar(strcat("g_ctf_flag", parameter));
+       return cvar(strcat("g_ctf_personal", parameter));
 }
 
 void FakeTimeLimit(entity e, float t)
@@ -1012,11 +1009,6 @@ void ctf_init()
        captureshield_min_negscore = autocvar_g_ctf_shield_min_negscore;
        captureshield_max_ratio = autocvar_g_ctf_shield_max_ratio;
        captureshield_force = autocvar_g_ctf_shield_force;
-
-
-//#NO AUTOCVARS START
-       g_ctf_win_mode = cvar("g_ctf_win_mode");
-//#NO AUTOCVARS END
 }
 
 void ctf_setstatus2(entity flag, float shift)
index 0c06958..62504ef 100644 (file)
@@ -18,12 +18,10 @@ noref float require_spawnfunc_prefix; // if this float exists, only functions wi
 
 float ctf_score_value(string parameter);
 
-float g_dm, g_domination, g_ctf, g_tdm, g_keyhunt, g_onslaught, g_assault, g_arena, g_ca, g_lms, g_runematch, g_race, g_nexball, g_cts, g_freezetag, g_keepaway;
 float g_cloaked, g_footsteps, g_jump_grunt, g_grappling_hook, g_midair, g_minstagib, g_pinata, g_norecoil, g_minstagib_invis_alpha, g_bloodloss;
 float g_warmup_limit;
 float g_warmup_allguns;
 float g_warmup_allow_timeout;
-float g_ctf_win_mode;
 float g_ctf_ignore_frags;
 float g_ctf_reverse;
 float g_race_qualifying;
@@ -107,7 +105,6 @@ float maxclients;
 
 .float play_time;
 .float death_time;
-.float dead_frame;
 .float fade_time;
 .float fade_rate;
 
@@ -142,8 +139,8 @@ float maxclients;
 .vector anim_runbackwards; // player running backward
 .vector anim_strafeleft; // player shuffling left quickly
 .vector anim_straferight; // player shuffling right quickly
-.vector anim_dead1; // player dead (must be identical to last frame of die1)
-.vector anim_dead2; // player dead (must be identical to last frame of die2)
+//.vector anim_dead1; // player dead (must be identical to last frame of die1)
+//.vector anim_dead2; // player dead (must be identical to last frame of die2)
 .vector anim_forwardright; // player running forward and right
 .vector anim_forwardleft; // player running forward and left
 .vector anim_backright; // player running backward and right
@@ -673,3 +670,5 @@ void PlayerUseKey();
 
 typedef vector(entity player, entity spot, vector current) spawn_evalfunc_t;
 .spawn_evalfunc_t spawn_evalfunc;
+
+.entity conveyor;
index 32b6928..e4ed89a 100644 (file)
@@ -302,7 +302,6 @@ void cvar_changes_init()
                BADPREFIX("g_respawn_ghosts");
                BADPREFIX("g_voice_flood_");
                BADPREFIX("rcon_");
-               BADPREFIX("settemp_");
                BADPREFIX("sv_allowdownloads");
                BADPREFIX("sv_autodemo");
                BADPREFIX("sv_curl_");
@@ -373,7 +372,6 @@ void cvar_changes_init()
                BADCVAR("g_balance_kill_delay");
                BADCVAR("g_ca_point_leadlimit");
                BADCVAR("g_ctf_captimerecord_always");
-               BADCVAR("g_ctf_capture_leadlimit");
                BADCVAR("g_ctf_flag_capture_effects");
                BADCVAR("g_ctf_flag_glowtrails");
                BADCVAR("g_ctf_flag_pickup_effects");
@@ -428,9 +426,7 @@ void cvar_changes_init()
                BADCVAR("g_balance_teams_force");
                BADCVAR("g_ban_sync_trusted_servers");
                BADCVAR("g_ban_sync_uri");
-               BADCVAR("g_ctf_capture_limit");
                BADCVAR("g_ctf_ignore_frags");
-               BADCVAR("g_ctf_win_mode");
                BADCVAR("g_domination_point_limit");
                BADCVAR("g_friendlyfire");
                BADCVAR("g_fullbrightitems");
@@ -612,6 +608,10 @@ void spawnfunc___init_dedicated_server(void)
 
        self.classname = "worldspawn"; // safeguard against various stuff ;)
 
+       // needs to be done so early because of the constants they create
+       RegisterWeapons();
+       RegisterGametypes();
+
        MapInfo_Enumerate();
        MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures(), MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags(), 0);
 }
@@ -655,8 +655,9 @@ void spawnfunc_worldspawn (void)
                head = nextent(head);
        }
 
-       // needs to be done so early as they would still spawn
+       // needs to be done so early because of the constants they create
        RegisterWeapons();
+       RegisterGametypes();
 
        ServerProgsDB = db_load(strcat("server.db", autocvar_sessionid));
 
@@ -989,7 +990,7 @@ void spawnfunc_light (void)
 
 string GetGametype()
 {
-       return GametypeNameFromType(game);
+       return MapInfo_Type_ToString(MapInfo_LoadedGametype);
 }
 
 string getmapname_stored;
@@ -1137,15 +1138,8 @@ void Map_Goto_SetFloat(float position)
        Map_Goto_SetStr(argv(position));
 }
 
-void GameResetCfg()
-{
-       // settings persist, except...
-       localcmd("\nsettemp_restore\n");
-}
-
 void Map_Goto(float reinit)
 {
-       GameResetCfg();
        MapInfo_LoadMap(getmapname_stored, reinit);
 }
 
@@ -1321,8 +1315,8 @@ float DoNextMapOverride(float reinit)
                }
        if(autocvar_lastlevel)
        {
-               GameResetCfg();
-               localcmd("set lastlevel 0\ntogglemenu\n");
+               cvar_settemp_restore();
+               localcmd("set lastlevel 0\ntogglemenu 1\n");
                alreadychangedlevel = TRUE;
                return TRUE;
        }
@@ -2960,14 +2954,11 @@ void RestoreGame()
        TargetMusic_RestoreGame();
 }
 
-void SV_Shutdown()
+void Shutdown()
 {
        entity e;
 
-       if(gameover > 1) // shutting down already?
-               return;
-
-       gameover = 2; // 2 = server shutting down
+       gameover = 2;
 
        if(world_initialized > 0)
        {
index 083feb4..a1e9f9e 100644 (file)
@@ -34,7 +34,6 @@ vehicles/vehicles_def.qh
 campaign.qh
 ../common/campaign_common.qh
 ../common/mapinfo.qh
-../common/util.qc
 
 accuracy.qh
 csqcprojectile.qh
@@ -208,4 +207,6 @@ mutators/sandbox.qc
 ../warpzonelib/util_server.qc
 ../warpzonelib/server.qc
 
+../common/util.qc
+
 ../common/if-this-file-errors-scroll-up-and-fix-the-warnings.fteqccfail
index 698e947..b56065d 100644 (file)
@@ -173,7 +173,7 @@ float ScoreInfo_SendEntity(entity to, float sf)
 {
        float i;
        WriteByte(MSG_ENTITY, ENT_CLIENT_SCORES_INFO);
-       WriteByte(MSG_ENTITY, game);
+       WriteInt24_t(MSG_ENTITY, MapInfo_LoadedGametype);
        for(i = 0; i < MAX_SCORE; ++i)
        {
                WriteString(MSG_ENTITY, scores_label[i]);
index eb7205e..806e245 100644 (file)
@@ -53,27 +53,9 @@ void ScoreRules_generic()
 #define SP_CTF_RETURNS 8
 void ScoreRules_ctf()
 {
-       float sp_score, sp_caps;
-       sp_score = sp_caps = 0;
-       switch(g_ctf_win_mode)
-       {
-               case 0: // caps only
-                       sp_caps = SFL_SORT_PRIO_PRIMARY;
-                       break;
-               case 1: // caps, then score
-                       sp_caps = SFL_SORT_PRIO_PRIMARY;
-                       sp_score = SFL_SORT_PRIO_SECONDARY;
-                       break;
-               case 2: // score only
-               default:
-                       sp_caps = SFL_SORT_PRIO_SECONDARY; // looks better ;)
-                       sp_score = SFL_SORT_PRIO_PRIMARY;
-                       break;
-       }
-
        CheckAllowedTeams(world);
-       ScoreRules_basics(2 + (c3>=0), SFL_SORT_PRIO_PRIMARY, sp_score, TRUE); // NOTE this assumes that the rogue team is team 3
-       ScoreInfo_SetLabel_TeamScore  (ST_CTF_CAPS,     "caps",      sp_caps);
+       ScoreRules_basics(2 + (c3>=0), SFL_SORT_PRIO_PRIMARY, 0, TRUE); // NOTE this assumes that the rogue team is team 3
+       ScoreInfo_SetLabel_TeamScore  (ST_CTF_CAPS,     "caps",      SFL_SORT_PRIO_PRIMARY);
        ScoreInfo_SetLabel_PlayerScore(SP_CTF_CAPS,     "caps",      SFL_SORT_PRIO_SECONDARY);
        ScoreInfo_SetLabel_PlayerScore(SP_CTF_PICKUPS,  "pickups",   0);
        ScoreInfo_SetLabel_PlayerScore(SP_CTF_FCKILLS,  "fckills",   0);
index 7ec4b49..cefba03 100644 (file)
@@ -245,8 +245,9 @@ void StartFrame (void)
 float DoesQ3ARemoveThisEntity();
 void SV_OnEntityPreSpawnFunction()
 {
-       if(self.gametypefilter != "")
-       if not(isGametypeInFilter(game, teamplay, have_team_spawns, self.gametypefilter))
+       if (self)
+       if (self.gametypefilter != "")
+       if not(isGametypeInFilter(MapInfo_LoadedGametype, teamplay, have_team_spawns, self.gametypefilter))
        {
                remove(self);
                return;
index f44dcb7..a556d6d 100644 (file)
@@ -175,11 +175,6 @@ void plat_reset()
 void spawnfunc_path_corner() { }
 void spawnfunc_func_plat()
 {
-       if (!self.t_length)
-               self.t_length = 80;
-       if (!self.t_width)
-               self.t_width = 10;
-
        if (self.sounds == 0)
                self.sounds = 2;
 
@@ -231,10 +226,14 @@ void spawnfunc_func_plat()
 
        if (!self.speed)
                self.speed = 150;
+       if (!self.lip)
+               self.lip = 16;
+       if (!self.height)
+               self.height = self.size_z - self.lip;
 
        self.pos1 = self.origin;
        self.pos2 = self.origin;
-       self.pos2_z = self.origin_z - self.size_z + 8;
+       self.pos2_z = self.origin_z - self.height;
 
        plat_spawn_inside_trigger ();   // the "start moving" trigger
 
@@ -2055,3 +2054,91 @@ void spawnfunc_func_vectormamamam()
 
        InitializeEntity(self, func_vectormamamam_findtarget, INITPRIO_FINDTARGET);
 }
+
+void conveyor_think()
+{
+       entity e;
+
+       // set myself as current conveyor where possible
+       for(e = world; (e = findentity(e, conveyor, self)); )
+               e.conveyor = world;
+
+       if(self.state)
+       {
+               for(e = findradius((self.absmin + self.absmax) * 0.5, vlen(self.absmax - self.absmin) * 0.5); e; e = e.chain)
+                       if(!e.conveyor.state)
+                               if(isPushable(e))
+                               {
+                                       vector emin = e.absmin;
+                                       vector emax = e.absmax;
+                                       if(self.solid == SOLID_BSP)
+                                       {
+                                               emin -= '1 1 1';
+                                               emax += '1 1 1';
+                                       }
+                                       if(boxesoverlap(emin, emax, self.absmin, self.absmax)) // quick
+                                               if(WarpZoneLib_BoxTouchesBrush(emin, emax, self, e)) // accurate
+                                                       e.conveyor = self;
+                               }
+
+               for(e = world; (e = findentity(e, conveyor, self)); )
+               {
+                       if(e.flags & FL_CLIENT) // doing it via velocity has quite some advantages
+                               continue; // done in SV_PlayerPhysics
+
+                       setorigin(e, e.origin + self.movedir * sys_frametime);
+                       move_out_of_solid(e);
+                       UpdateCSQCProjectile(e);
+                       /*
+                       // stupid conveyor code
+                       tracebox(e.origin, e.mins, e.maxs, e.origin + self.movedir * sys_frametime, MOVE_NORMAL, e);
+                       if(trace_fraction > 0)
+                               setorigin(e, trace_endpos);
+                       */
+               }
+       }
+
+       self.nextthink = time;
+}
+
+void conveyor_use()
+{
+       self.state = !self.state;
+}
+
+void conveyor_reset()
+{
+       self.state = (self.spawnflags & 1);
+}
+
+void conveyor_init()
+{
+       if (!self.speed)
+               self.speed = 200;
+       self.movedir = self.movedir * self.speed;
+       self.think = conveyor_think;
+       self.nextthink = time;
+       IFTARGETED
+       {
+               self.use = conveyor_use;
+               self.reset = conveyor_reset;
+               conveyor_reset();
+       }
+       else
+               self.state = 1;
+}
+
+void spawnfunc_trigger_conveyor()
+{
+       SetMovedir();
+       EXACTTRIGGER_INIT;
+       conveyor_init();
+}
+
+void spawnfunc_func_conveyor()
+{
+       SetMovedir();
+       InitMovingBrushTrigger();
+       self.movetype = MOVETYPE_NONE;
+       conveyor_init();
+}
index 66e909e..f0ce8fd 100644 (file)
@@ -85,68 +85,6 @@ void LogTeamchange(float player_id, float team_number, float type)
        GameLogEcho(strcat(":team:", ftos(player_id), ":", ftos(team_number), ":", ftos(type)));
 }
 
-void WriteGameCvars()
-{
-       cvar_set("g_dm", ftos(g_dm));
-       cvar_set("g_tdm", ftos(g_tdm));
-       cvar_set("g_domination", ftos(g_domination));
-       cvar_set("g_ctf", ftos(g_ctf));
-       cvar_set("g_runematch", ftos(g_runematch));
-       cvar_set("g_lms", ftos(g_lms));
-       cvar_set("g_arena", ftos(g_arena));
-       cvar_set("g_ca", ftos(g_ca));
-       cvar_set("g_keyhunt", ftos(g_keyhunt));
-       cvar_set("g_assault", ftos(g_assault));
-       cvar_set("g_onslaught", ftos(g_onslaught));
-       cvar_set("g_race", ftos(g_race));
-       cvar_set("g_nexball", ftos(g_nexball));
-       cvar_set("g_cts", ftos(g_cts));
-       cvar_set("g_freezetag", ftos(g_freezetag));
-       cvar_set("g_keepaway", ftos(g_keepaway));
-}
-
-void ReadGameCvars()
-{
-       float found;
-       float prev;
-       float i;
-
-       found = 0;
-       prev = autocvar_gamecfg;
-       for(i = 0; i < 2; ++i)
-       {
-//#NO AUTOCVARS START
-               found += (g_dm = (!found && (prev != GAME_DEATHMATCH) && cvar("g_dm")));
-               found += (g_tdm = (!found && (prev != GAME_TEAM_DEATHMATCH) && cvar("g_tdm")));
-               found += (g_domination = (!found && (prev != GAME_DOMINATION) && cvar("g_domination")));
-               found += (g_ctf = (!found && (prev != GAME_CTF) && cvar("g_ctf")));
-               found += (g_runematch = (!found && (prev != GAME_RUNEMATCH) && cvar("g_runematch")));
-               found += (g_lms = (!found && (prev != GAME_LMS) && cvar("g_lms")));
-               found += (g_arena = (!found && (prev != GAME_ARENA) && cvar("g_arena")));
-               found += (g_ca = (!found && (prev != GAME_CA) && cvar("g_ca")));
-               found += (g_keyhunt = (!found && (prev != GAME_KEYHUNT) && cvar("g_keyhunt")));
-               found += (g_assault = (!found && (prev != GAME_ASSAULT) && cvar("g_assault")));
-               found += (g_onslaught = (!found && (prev != GAME_ONSLAUGHT) && cvar("g_onslaught")));
-               found += (g_race = (!found && (prev != GAME_RACE) && cvar("g_race")));
-               found += (g_nexball = (!found && (prev != GAME_NEXBALL) && cvar("g_nexball")));
-               found += (g_cts = (!found && (prev != GAME_CTS) && cvar("g_cts")));
-               found += (g_freezetag = (!found && (prev != GAME_FREEZETAG) && cvar("g_freezetag")));
-               found += (g_keepaway = (!found && (prev != GAME_KEEPAWAY) && cvar("g_keepaway")));
-//#NO AUTOCVARS END
-
-               if(found)
-                       break;
-
-               prev = -1; // second attempt takes place WITHOUT prev set
-       }
-
-       if(!found)
-               g_dm = 1;
-
-       teamplay = 0;
-       serverflags &~= SERVERFLAG_TEAMPLAY;
-}
-
 void default_delayedinit()
 {
        if(!scores_initialized)
@@ -167,16 +105,14 @@ void InitGameplayMode()
 
        VoteReset();
 
-       // make sure only ONE type is selected
-       ReadGameCvars();
-       WriteGameCvars();
-
        // find out good world mins/maxs bounds, either the static bounds found by looking for solid, or the mapinfo specified bounds
        get_mi_min_max(1);
        world.mins = mi_min;
        world.maxs = mi_max;
 
        MapInfo_LoadMapSettings(mapname);
+       teamplay = 0;
+       serverflags &~= SERVERFLAG_TEAMPLAY;
 
        if not(cvar_value_issafe(world.fog))
        {
@@ -192,24 +128,18 @@ void InitGameplayMode()
 
        MapInfo_ClearTemps();
 
-       // in case mapinfo switched the type
-       ReadGameCvars();
-
        // set both here, gamemode can override it later
        timelimit_override = autocvar_timelimit_override;
        fraglimit_override = autocvar_fraglimit_override;
        leadlimit_override = autocvar_leadlimit_override;
+       gamemode_name = MapInfo_Type_ToText(MapInfo_LoadedGametype);
 
        if(g_dm)
        {
-               game = GAME_DEATHMATCH;
-               gamemode_name = "Deathmatch";
        }
 
        if(g_tdm)
        {
-               game = GAME_TEAM_DEATHMATCH;
-               gamemode_name = "Team Deathmatch";
                ActivateTeamplay();
                tdm_init();
                if(autocvar_g_tdm_team_spawns)
@@ -218,8 +148,6 @@ void InitGameplayMode()
 
        if(g_domination)
        {
-               game = GAME_DOMINATION;
-               gamemode_name = "Domination";
                ActivateTeamplay();
                fraglimit_override = autocvar_g_domination_point_limit;
                leadlimit_override = autocvar_g_domination_point_leadlimit;
@@ -229,28 +157,16 @@ void InitGameplayMode()
 
        if(g_ctf)
        {
-               game = GAME_CTF;
-               gamemode_name = "Capture the Flag";
                ActivateTeamplay();
                g_ctf_ignore_frags = autocvar_g_ctf_ignore_frags;
-               if(g_ctf_win_mode == 2)
-               {
-                       fraglimit_override = autocvar_g_ctf_capture_limit;
-                       leadlimit_override = autocvar_g_ctf_capture_leadlimit;
-               }
-               else
-               {
-                       fraglimit_override = autocvar_capturelimit_override;
-                       leadlimit_override = autocvar_captureleadlimit_override;
-               }
+               fraglimit_override = autocvar_capturelimit_override;
+               leadlimit_override = autocvar_captureleadlimit_override;
                ctf_init();
                have_team_spawns = -1; // request team spawns
        }
 
        if(g_runematch)
        {
-               game = GAME_RUNEMATCH;
-               gamemode_name = "Rune Match";
                // ActivateTeamplay();
                fraglimit_override = autocvar_g_runematch_point_limit;
                leadlimit_override = autocvar_g_runematch_point_leadlimit;
@@ -259,8 +175,6 @@ void InitGameplayMode()
 
        if(g_lms)
        {
-               game = GAME_LMS;
-               gamemode_name = "Last Man Standing";
                fraglimit_override = autocvar_g_lms_lives_override;
                leadlimit_override = 0; // not supported by LMS
                if(fraglimit_override == 0)
@@ -272,8 +186,6 @@ void InitGameplayMode()
 
        if(g_arena)
        {
-               game = GAME_ARENA;
-               gamemode_name = "Arena";
                fraglimit_override = autocvar_g_arena_point_limit;
                leadlimit_override = autocvar_g_arena_point_leadlimit;
                maxspawned = autocvar_g_arena_maxspawned;
@@ -284,8 +196,6 @@ void InitGameplayMode()
 
        if(g_ca)
        {
-               game = GAME_CA;
-               gamemode_name = "Clan Arena";
                ActivateTeamplay();
                fraglimit_override = autocvar_g_ca_point_limit;
                leadlimit_override = autocvar_g_ca_point_leadlimit;
@@ -294,8 +204,6 @@ void InitGameplayMode()
        }
        if(g_keyhunt)
        {
-               game = GAME_KEYHUNT;
-               gamemode_name = "Key Hunt";
                ActivateTeamplay();
                fraglimit_override = autocvar_g_keyhunt_point_limit;
                leadlimit_override = autocvar_g_keyhunt_point_leadlimit;
@@ -304,8 +212,6 @@ void InitGameplayMode()
 
        if(g_freezetag)
        {
-               game = GAME_FREEZETAG;
-               gamemode_name = "Freeze Tag";
                ActivateTeamplay();
                fraglimit_override = autocvar_g_freezetag_point_limit;
                leadlimit_override = autocvar_g_freezetag_point_leadlimit;
@@ -314,8 +220,6 @@ void InitGameplayMode()
 
        if(g_assault)
        {
-               game = GAME_ASSAULT;
-               gamemode_name = "Assault";
                ActivateTeamplay();
                ScoreRules_assault();
                have_team_spawns = -1; // request team spawns
@@ -323,16 +227,12 @@ void InitGameplayMode()
 
        if(g_onslaught)
        {
-               game = GAME_ONSLAUGHT;
-               gamemode_name = "Onslaught";
                ActivateTeamplay();
                have_team_spawns = -1; // request team spawns
        }
 
        if(g_race)
        {
-               game = GAME_RACE;
-               gamemode_name = "Race";
 
                if(autocvar_g_race_teams)
                {
@@ -350,8 +250,6 @@ void InitGameplayMode()
 
        if(g_cts)
        {
-               game = GAME_CTS;
-               gamemode_name = "CTS";
                g_race_qualifying = 1;
                fraglimit_override = 0;
                leadlimit_override = 0;
@@ -359,8 +257,6 @@ void InitGameplayMode()
 
        if(g_nexball)
        {
-               game = GAME_NEXBALL;
-               gamemode_name = "Nexball";
                fraglimit_override = autocvar_g_nexball_goallimit;
                leadlimit_override = autocvar_g_nexball_goalleadlimit;
                ActivateTeamplay();
@@ -370,17 +266,12 @@ void InitGameplayMode()
 
        if(g_keepaway)
        {
-               game = GAME_KEEPAWAY;
-               gamemode_name = "Keepaway";
                MUTATOR_ADD(gamemode_keepaway);
        }
 
        if(teamplay)
                entcs_init();
 
-       // save it (for the next startup)
-       cvar_set("gamecfg", ftos(game));
-
        cache_mutatormsg = strzone("");
        cache_lastmutatormsg = strzone("");
 
index b1a97ba..7247a3a 100644 (file)
@@ -381,7 +381,7 @@ void turret_stdproc_track()
             }
             
             // CSQC
-            self.SendFlags  = TNSF_ANG;
+            self.SendFlags  |= TNSF_ANG;
             
             return;
 
index 56853d6..dffb185 100644 (file)
@@ -1,78 +1,78 @@
 0
-\XonoticSingleplayerDialog\Egyjátékos kampány vagy azonnali meccs botok ellen
+\XonoticSingleplayerDialog\Egyjátékos mód vagy azonnali játék gépi vezérlésű botok ellen
 
 
-\XonoticMultiplayerDialog\Meccsek neten, a barátaid elleni LAN-on, demó nézés, vagy a játékos beállítások finomítása
-\XonoticMultiplayerDialog/Kiszolgálók\Szervereket keresése a játékhoz
+\XonoticMultiplayerDialog\Meccsek neten, a barátaid elleni helyi hálózaton, demó nézés, vagy a karaktered beállításainak finomítása
+\XonoticMultiplayerDialog/Szerverek keresése a játékhoz
 \menu_slist_showempty\Üres szerverek mutatása 
-\menu_slist_showfull\Teli szerverek mutatása, amelyeken nincs már szabad hely
-\net_slist_pause\Megállítja a szerver lista frissítés, hogy ne 'ugráljanak össze-vissza'
+\menu_slist_showfull\Teli szerverek is mutatása, amelyeken nincs már szabad férőhely
+\net_slist_pause\Megállítja a szerver lista frissítését, hogy a szerverek ne 'ugráljanak össze-vissza' a listában
 \XonoticMultiplayerDialog/Adatok...\Több adat az éppen kiválasztott szerverről
 \XonoticMultiplayerDialog/Könyvjelzők\Az éppen kiválasztott szerver megjelölése, hogy a jövőben könnyebben megtalálható legyen
 \XonoticMultiplayerDialog/Létrehozás\Saját játékszerver indítása
 \XonoticMultiplayerDialog/Demók\Demók böngészése és megtekintése
 \XonoticMultiplayerDialog/Játékos beállítások\Játékoskarakter testreszabása 
 
-\XonoticTeamSelectDialog/A 'legjobb' csapathoz csatlakozás (auto-választás)\Önmüködő csapatválasztás (ajánlott)
-\XonoticTeamSelectDialog/piros\Csatlakozás a piros csapathoz
+\XonoticTeamSelectDialog/A 'legjobb' csapathoz csatlakozás (auto-választás)\Önműködő csapatválasztás (ajánlott)
+\XonoticTeamSelectDialog/piros\Csatlakozás a vörös csapathoz
 \XonoticTeamSelectDialog/kék\Csatlakozás a kék csapathoz
 \XonoticTeamSelectDialog/sárga\Csatlakozás a sárga csapathoz
-\XonoticTeamSelectDialog/rózsaszín\Csatlakozás a Rózsaszín csapathoz
+\XonoticTeamSelectDialog/rózsaszín\Csatlakozás a rózsaszín csapathoz
 
 \timelimit_override\Időhatár percben, aminek elérése után vége a meccsnek
-\fraglimit_override\Pontok száma, amit a meccs vége előtt el kell érni
+\fraglimit_override\Gyilokok száma, amit a meccs vége előtt el kell érni
 \menu_maxplayers\A játékosok és botok maximális összszáma, ahányan egyszerre a szerverre csatlakozhatnak
 \bot_number\Botok száma a szervereden
-\skill\A botok tapasztaltságának meghatározása
-\g_maplist_votable\Pályaválasztásnál megjelenő térképek száma egy meccs után
+\skill\A botok ügyességi szintjének meghatározása
+\g_maplist_votable\Pályaválasztásnál megjelenő lehetőségek száma egy meccs után
 \sv_vote_simple_majority_factor\Egyszerű többség nyerjen egy szavazásban
 \XonoticMultiplayerDialog/Haladó beállítások...\Haladó szerverbeállítások
 \XonoticMultiplayerDialog/Módosítók...\Módosítók és fegyverarénák
-\g_dodging\Kitérés engedélyezése
+\g_dodging\El tudsz szökkenni jobbra-balra a lövések elől
 \g_cloaked\Minden játékos majdnem láthatatlan
 \g_footsteps\Lépészaj engedélyezése
-\g_midair\Csak addig lehet sebzés okozni az ellenségen, míg a levegőben van
-\g_vampire\ Annyi pont adódik életerődhöz, amennyi sebzést a másiknak okozol
+\g_midair\Csak addig tudod az ellenséged megsebezni, amíg az levegőben tartózkodik
+\g_vampire\Annyi pont adódik életerődhöz, amennyi sebzést a másiknak okozol
 \g_bloodloss\Életerőpont, ami alatt a játékos elkábul a vérveszteségtől
-\sv_gravity\ A tárgyak lassabban esnek a földre, kisebb érték alacsonyabb gravitációt jelent
-\g_grappling_hook\A játékosok megkapják induláskor a vonókampót
-\g_jetpack\A játékosok megkapják induláskor a sugárhajtóműves hátizsákot
+\sv_gravity\A tárgyak lassabban esnek a földre, kisebb érték alacsonyabb gravitációt jelent
+\g_grappling_hook\A játékosok arzenáljában a vonóhorog is szerepelni fog 
+\g_jetpack\A játékosok hátán sugárhajtóműves hátizsák van
 \g_pinata\A játékosok eldobnak minden fegyvert, amit birtokoltak a haláluk előtt
 \g_weapon_stay\A fegyverek a helyükön maradnak, még azután is, hogy valaki felvette őket
 \g_weaponarena\ A kiválasztott fegyver aréna minden játékosnak ugyanazt a fegyvert biztosítja korlátlan lőszerrel, és letiltja minden más fegyver felvételét
 \menu_weaponarena_with_laser\A lézer is engedélyezett a fegyver arénában
-\g_minstagib\A játékosok egy Minstanex-et kapnak, ami egy railgun végtelen sérülés okozással. Ha a játékos kifogy a lőszerből, van 10 másodperce találni, vagy meghal. A másodlagos tűz mód a lézer, amely nem okoz kárt, de jól  jön trükkök végrehajtásánál
-\g_nix\Xonotic cuccok nélkül – Ahelyett hogy a cuccokat szednék fel, mindenki ugyanazzal a fegyverrel játszik. Egy idő után, egy visszaszámlálás indul, ami után mindenki vált egy másik fegyverre
+\g_minstagib\A játékosok egy Minstanex-et kapnak, ami egy azonnal ölő mesterlövész fegyver. Ha a játékos kifogy a lőszerből, 10 másodperce van muníciót találni, vagy meghal. A másodlagos tűz mód a lézer, amely nem okoz kárt, de jól jön trükkös ugrások végrehajtásánál
+\g_nix\Xonotic felvehető fegyverek nélkül – Mindenki ugyanazzal a fegyverrel játszik. Kis idő után visszaszámlálás indul, amely végén mindenki fegyvert vált
 \g_nix_with_laser\Mindig legyen a lézer a Nix mellett kiegészítésül 
-\XonoticMultiplayerDialog/Mind jelölve\Minden térkép kiválasztása
-\XonoticMultiplayerDialog/Egysem jelölve\Egyik térkép sincs kiválasztva
+\XonoticMultiplayerDialog/Mind jelölve\Minden pálya kiválasztása
+\XonoticMultiplayerDialog/Egyet se jelölj be\Egyik pálya sincs kiválasztva
 
 
-\XonoticMultiplayerDialog/Timedemo\Leméri, hogy a számítógéped milyen gyorsan képes futtatni a kiválasztott demók.
+\XonoticMultiplayerDialog/Timedemo\Leméri, hogy a számítógéped milyen gyorsan képes futtatni a kiválasztott demót. 
 
 \fov\A látószög fokban mérve 60-tól 130-ig, alapérték 90
-\cl_bobcycle\Nézet kilengés gyakorisága, letiltás esetén nincs kilengés
-\cl_zoomfactor\ Mekkora a nagyítási tényező a ráközelítés gomb megnyomása esetén
-\cl_zoomsensitivity\Mennyire változtatja a nagyítás az érzékenységet, 0-tól (kisebb érzékenység) 1-ig (nem változik az érzékenység)
-\cl_zoomspeed\Milyen gyorsan hajtsa végre a nagyítást, eltiltás esetén azonnali nagyítás
-\XonoticMultiplayerDialog/ Fegyver beállítások...\A legkedveltebb fegyver, önműködő fegyverváltás és fegyvermodell beállítások 
+\cl_bobcycle\A megjelenített kép biccentése járás közben.
+\cl_zoomfactor\A nagyítási szorzó a ráközelítés gomb megnyomása esetén
+\cl_zoomsensitivity\Mennyire változtatja a nagyítás az egér érzékenységet, 0-tól (kisebb érzékenység) 1-ig (nem változik az érzékenység)
+\cl_zoomspeed\Milyen gyorsan hajtsa végre a távcső a nagyítást. Tiltás esetén a nagyítás azonnal végbemegy
+\XonoticMultiplayerDialog/Fegyver beállítások...\A legkedveltebb fegyver, önműködő fegyverváltás és fegyvermodell pozíciójának beállításai 
 
-\cl_weaponpriority_useforcycling\ A fenti lista használata, amikor az egérgörgővel lépkedsz a fegyverek között 
+\cl_weaponpriority_useforcycling\A fenti lista használata, amikor az egérgörgővel lépkedsz a fegyverek között 
 \cl_autoswitch\Önmagától átvált az újonnan felvett fegyverekre, ha azok jobbak az addig használtnál
 \r_drawviewmodel\Fegyvermodell kirajzolása
-\cl_gunalign\Fegyvermodell helyzete; újracsatlakozás szükséges
+\cl_gunalign\Fegyvermodell helyzete; játék közben újracsatlakozás szükséges az adott szerverhez
 
-\crosshair_per_weapon\Különböző célkereszt beállítása az éppen tartott fegyverhez; hasznos a fegyvermodell nélküli játékban
-\crosshair_color_per_weapon\A célkereszt színének változtatása az éppen tartott fegyvertől függően
-\crosshair_size\ A célkereszt méretének változtatása
-\crosshair_alpha\A célkereszt átlátszatlanságának változtatása
-\crosshair_color\A célkereszt színének változtatása 
+\crosshair_per_weapon\Különböző célkeresztek beállítása az éppen kézben tartott fegyverhez; hasznos lehet fegyvermodell nélküli játék során
+\crosshair_color_per_weapon\A célkereszt színének változtatása az éppen kézben tartott fegyvertől függően
+\crosshair_size\ A célkereszt méretének megváltoztatása
+\crosshair_alpha\A célkereszt átlátszóságának megváltoztatása
+\crosshair_color\A célkereszt színének megváltoztatása 
 \sbar_hudselector\A régi HUD elrendezés használata
-\XonoticMultiplayerDialog/Iránypont beállítások...\-
+\XonoticMultiplayerDialog/Irányjelzők beállításai...\-
 \_cl_name\A név, amivel szerepelsz a játékban
 
-\XonoticSettingsDialog\A beállítások változtatása
-\XonoticCreditsDialog\A Xonotic készítésében résztvettek
+\XonoticSettingsDialog\A beállítások megváltoztatása
+\XonoticCreditsDialog\A Xonotic készítőinek és segítségnyújtóinak listája
 \XonoticTeamSelectDialog\-
 \XonoticMutatorsDialog\-
 \XonoticMapInfoDialog\-
@@ -89,9 +89,9 @@
 
 \XonoticSettingsDialog/Bemenet\Bemenet szabályozása
 \sensitivity\Egér sebesség többszörözése
-\menu_mouse_speed\Egér sebesség többszörözése a menüben, nincs hatással a játékbeli célzásra
+\menu_mouse_speed\Egér sebessége a menüben, nincs hatással a játékbeli célzásra
 \m_filter\Elsimítja az egérmozgást, de a célzás érzékenység némiképp csökken
-\m_pitch\Forditott egérmozgás az Y-tengely mentén
+\m_pitch\Fordított egérmozgás az Y-tengely mentén
 \vid_dgamouse\Segíti a DGA egér bemenet használatát
 \con_closeontoggleconsole\Lehetővé teszi, hogy a konzolnyitó billentyű, a következő megnyomásra visszazárja azt
 
 \vid_width\Képernyő felbontás
 \vid_bitsperpixel\Hány bit per pixel(BPP)-el jelenítse meg a képet, 32 az ajánlott
 \vid_fullscreen\Teljes képernyős mód engedélyezése (alapértelmezett: engedélyezve)
-\vid_vsync\A függőleges szinkronizáció engedélyezése, hogy  megelőzze a kép szétesést, a másodpercenkénti képkockák számát a képernyő frissítési rátához igazítja (alapértelmezett: letiltva)
+\vid_vsync\A függőleges szinkronizáció engedélyezése, hogy  megelőzze a kép szétesését, a másodpercenkénti képkockák számát a képernyő frissítési rátához igazítja (alapértelmezett: letiltva)
 \r_glsl\Az OpenGL 2.0 pixel árnyalók  alkalmazása a világításhoz (alapértelmezett: engedélyezve)
 \gl_vbo\A statikus geometriákhoz Vertex Buffer Object-eket  használ a videómemóriában a gyorsabb számítás érdekében (alapértelmezett: Csúcspontok és háromszögek)
 \r_depthfirst\Eltávolítja a kép csak a távolban tartozó részeit, mielőtt a normál számítás kezdődne (alapértelmezett: letiltva)
 \gl_texturecompression\Textúrák tömörítése, hogy a videokártyán található memóriából kevesebbet használjon (alapértelmezett: nem)
-\gl_finish\A CPU megvárja amíg a  GPU befejezi a képkockát, ez segít egyes gépeken jelentkező furcsa bemeneti és videó késés elkerülésében (alapértelmezett: letiltva)
+\gl_finish\A CPU megvárja amíg a GPU befejezi a képkockát leképzését, ez segít egyes gépeken jelentkező furcsa bemeneti és videó késés elkerülésében (alapértelmezett: letiltva)
 \v_brightness\A fekete fényessége (alapérték: 0)
 \v_contrast\A fehér fényessége (alapérték: 1)
 \v_gamma\Fordított gamma korrekciós érték, egy fényességi hatás , ami nem befolyásolja a fehéret vagy feketét (alapérték: 1.125)
 ****
 \XonoticSettingsDialog/Hatások\Hatások beállítása
 \r_subdivisions_tolerance\Az ívek finomságának változtatása a pályán (alapértelmezett: normál)
-\gl_picmip\ A textúrák élességének változtatása . Kisebb érték hatásosan csökkenti a textúra memória használatot, de a textúrák megjelenése homályosabb lehet. (alapértelmezett: jó)
+\gl_picmip\ A textúrák élességének változtatása. Kisebb érték hatásosan csökkenti a textúra memória használatot, de a textúrák megjelenése homályosabb lehet. (alapértelmezett: jó)
 \r_picmipworld\Ha ha be van állítva, csak a modellek textúra minősége csökken (alapértelmezett: engedélyezve)
-\mod_q3bsp_nolightmaps\Magas felbontású fény térképek használata, ami szépen fog kinézni, de megemeli a szükséges videó memória mennyiségét (alapértelmezett: engedélyezve)
-\cl_particles_quality\ A részecskék számának megtöbbszörözése. Kisebb érték kevesebb részecskét jelent, ami jobb teljesítményt ad (alapérték: 0,5)
+\mod_q3bsp_nolightmaps\Magas felbontású fény térképek használata, ami szépen néz ki, de megemeli a szükséges videó memória mennyiségét (alapértelmezett: engedélyezve)
+\cl_particles_quality\A részecskék számának megtöbbszörözése. Kisebb érték kevesebb részecskét jelent, ami jobb teljesítményt ad (alapérték: 0,5)
 \r_drawparticles_drawdistance\A részecskék csak eddig a távolsági rajzolódnak ki  (alapérték: 1000)
-\cl_decals\A minták engedélyzése (lövés nyomok és vér)  (alapértelmezett: engedélyezve)
+\cl_decals\Foltok engedélyzése (égési és robbanási nyomok, vérfoltok)  (alapértelmezett: engedélyezve)
 \r_drawdecals_drawdistance\A minták csak eddig a távolsági rajzolódnak ki (alapérték: 300)
-\cl_decals_time\Időtartam másodpercben,ami után a minták sötétülnek (alapérték: 2)
+\cl_decals_time\A foltok eltűnésének kezdetének időtartama másodpercben (alapérték: 2)
 \cl_gentle\Kicseréli a vért és húscafatokat olyan tartalomra, ami nem tartalmaz vérontást (alapértelmezett: letiltva)
 \cl_nogibs\A húscafatok mennyiségének csökkentése vagy teljesen eltávolítása (alapértelmezett: sok)
 \v_kicktime\Mennyi ideig legyen a kép kiütve a  sérülés után (alapérték: 0)
-\gl_texture_anisotropy\Aniszotropikus  szűrés minősége (alapérték: 1x)
+\gl_texture_anisotropy\Anizotropikus  szűrés minősége (alapérték: 1x)
 \r_glsl_deluxemapping\Képpontokkénti világítás hatások használata (alapértelmezett: engedélyezve)
-\r_shadow_gloss\Fényesség térkép használat a textúrákon, amik támogatják azt (alapértelmezett: engedélyezve)
+\r_shadow_gloss\Csillogás a textúrákon, amik támogatják azt (alapértelmezett: engedélyezve)
 \gl_flashblend\A gyorsabb, de csúnyább dinamikus fények engedélyezése a világos fénykörök számításához, a valós dinamikus világítás helyett (alapértelmezett: letiltva)
-\r_shadow_realtime_dlight\A dinamikus világítások engedélyezése,  mint robbanások és rakéták fényei (alapértelmezett: engedélyezve)
+\r_shadow_realtime_dlight\A dinamikus világítások engedélyezése, mint robbanások és rakéták fényei (alapértelmezett: engedélyezve)
 \r_shadow_realtime_dlight_shadows\Árnyékok számítása a dinamikus fényekből (alapértelmezett: letiltva)
 \r_shadow_realtime_world\A teljes valósidejű világ világítások engedélyezése azokon a térképeken, amik támogatják Megjegyzendő, hogy jelentősen csökkenheti a teljesítményt  (alapértelmezett: letiltva)
 \r_shadow_realtime_world_shadows\A valósidejű világ fényekhez tartozó árnyékok engedélyezése (alapértelmezett: letiltva)
 \r_showsurfaces\Textúra összetettség letiltása nagyon lassú gépeken. Ez egy  nagy gyorsulást hozz a teljesítményben, de nagyon csúnyán néz ki. (alapértelmezett: letiltva)
 \r_glsl_offsetmapping\Offset mapping hatás , ami rücskössé teszi a textúrák megjelenését, mintha kiállna a 2D-s felületből (alapértelmezett: letiltva)
 \r_glsl_offsetmapping_reliefmapping\Magasabb minőségű offset mapping, ami szintén óriási hatása van a teljesítményre   (alapértelmezett: letiltva)
-\r_water\Tükröződések és fénytörések minősége, óriási hatással van a teljesítményre azokon a térképeken,ahol vannak tükröződő felületek (alapértelmezett: letiltva)
+\r_water\Tükröződések és fénytörések minősége, óriási hatással van a teljesítményre azokon a pályákon, ahol vannak tükröződő felületek (alapértelmezett: letiltva)
 \r_water_resolutionmultiplier\Tükröződések/fénytörések felbontása (alapértelmezett: jó)
 \r_coronas\A fényudvar engedélyezése bizonyos világítás körül. (alapértelmezett: engedélyezve)
 \r_coronas_occlusionquery\A fényudvar elhalványodik a láthatósága szerint (alapértelmezett: engedélyezve)
 \r_bloom\A bloom hatás engedélyezése, aminél a nagyon világos pixelek növelik a szomszédaik világosságát is. Nagy hatással van a teljesítményre. (alapértelmezett: letiltva)
 \r_hdr\A bloom magas minőségű verziója, ami óriási hatással van a teljesítményre. (alapértelmezett: letiltva)
-\r_motionblur\ Mozgási elmosódás nagysága - ajánlott értéke 0.5
+\r_motionblur\Mozgási elmosódás nagysága - ajánlott értéke 0.5
 \r_damageblur\Mozgási elmosódás mértéke sérülés esetén – ajánlott értéke 0.4 
 
 ****
index 3668971..2e60c67 100644 (file)
@@ -32,6 +32,7 @@ nifrek
 FruitieX
 MirceaKitsune
 Jakob "tZork" Markström Gröhn
+Ruszkai "C.Brutail" Ákos
 
 *Music / Sound FX
 mand1nga
@@ -51,6 +52,7 @@ Jakob "tZork" Markström Gröhn
 *Marketing / PR
 Tyler "-z-" Mulligan
 mand1nga
+Ruszkai "C.Brutail" Ákos
 
 *Legal
 Rudolf "divVerent" Polzer
@@ -81,6 +83,7 @@ Maxime "Taximus" Paradis
 
 *Hungarian
 xaN1C4n3
+Ruszkai "C.Brutail" Ákos
 
 *Italian
 Antonio "terencehill" Piu
@@ -129,7 +132,6 @@ parasti
 Paul Scott
 PlasmaSheep
 Przemysław "atheros" Grzywacz
-Ruszkai "C.Brutail" Ákos
 {SC0RP} - Ian "ID" Dorrell
 Severin "sev" Meyer
 SoulKeeper_p
index 470aaba..ec2d299 100644 (file)
@@ -27,6 +27,7 @@ Pearce "theShadow" Michal
 *Création des cartes
 FruitieX
 MirceaKitsune
+Ruszkai "C.Brutail" Ákos
 
 *Musique / Sons
 mand1nga
@@ -44,6 +45,7 @@ tZork
 *Marketing / Management du Projet
 Tyler "-z-" Mulligan
 mand1nga
+Ruszkai "C.Brutail" Ákos
 
 *Légalité
 Rudolf "divVerent" Polzer
@@ -88,7 +90,6 @@ Kristian "morfar" Johansson
 kojn
 Maik "SavageX" Merten
 MrBougo
-Ruszkai "C.Brutail" Ákos
 Samual Lenks
 Severin "sev" Meyer
 Stephan "esteel" Stahl
index 571964c..faf205b 100644 (file)
@@ -1,4 +1,4 @@
-**Csapat magja
+**A Csapat magja - Team Xonotic
 
 Rudolf "divVerent" Polzer
 Tyler "-z-" Mulligan
@@ -8,7 +8,7 @@ Samual "Ares" Lenks
 Saulo "mand1nga" Gil
 Jakob "tZork" Markström Gröhn
 
-**Feladat felelösök
+**Feladat felelősök
 
 *Művészet
 Sahil "DiaboliK" Singhal
@@ -32,6 +32,7 @@ nifrek
 FruitieX
 MirceaKitsune
 Jakob "tZork" Markström Gröhn
+Ruszkai "C.Brutail" Ákos
 
 *Zene / Hang effekt
 mand1nga
@@ -50,8 +51,9 @@ Jakob "tZork" Markström Gröhn
 *Marketing / PR
 Tyler "-z-" Mulligan
 mand1nga
+Ruszkai "C.Brutail" Ákos
 
-*Engedélyek
+*Jogi engedélyek
 Rudolf "divVerent" Polzer
 Merlijn Hofstra
 
@@ -60,7 +62,7 @@ DarkPlaces
 by Forest "LordHavoc" Hale
 
 
-**Forditók
+**Fordítók
 
 *Finn
 Henry "Exitium" Sanmark
@@ -75,6 +77,7 @@ PinkRobot
 
 *Magyar
 xaN1C4n3
+Ruszkai "C.Brutail" Ákos
 
 *Német
 Rudolf "divVerent" Polzer
@@ -123,7 +126,6 @@ parasti
 Paul Scott
 PlasmaSheep
 Przemysław "atheros" Grzywacz
-Ruszkai "C.Brutail" Ákos
 {SC0RP} - Ian "ID" Dorrell
 Severin "sev" Meyer
 SoulKeeper_p
index d5dccd2..1b3351d 100644 (file)
@@ -32,6 +32,7 @@ nifrek
 FruitieX
 MirceaKitsune
 Jakob "tZork" Markström Gröhn
+Ruszkai "C.Brutail" Ákos
 
 *Музика / Звукові ефекти
 mand1nga
@@ -50,6 +51,7 @@ Jakob "tZork" Markström Gröhn
 *Маркетинг / PR
 Tyler "-z-" Mulligan
 mand1nga
+Ruszkai "C.Brutail" Ákos
 
 *Правові питання
 Rudolf "divVerent" Polzer
@@ -125,7 +127,6 @@ parasti
 Paul Scott
 PlasmaSheep
 Przemysław "atheros" Grzywacz
-Ruszkai "C.Brutail" Ákos
 {SC0RP} - Ian "ID" Dorrell
 Severin "sev" Meyer
 SoulKeeper_p