]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into Mario/rifle_arena
authorMario <mario.mario@y7mail.com>
Wed, 5 Jun 2013 00:01:07 +0000 (10:01 +1000)
committerMario <mario.mario@y7mail.com>
Wed, 5 Jun 2013 00:01:07 +0000 (10:01 +1000)
1  2 
defaultXonotic.cfg
qcsrc/common/notifications.qh
qcsrc/server/autocvars.qh
qcsrc/server/cl_physics.qc
qcsrc/server/mutators/gamemode_freezetag.qc
qcsrc/server/mutators/mutator_dodging.qc
qcsrc/server/mutators/mutator_dodging.qh

diff --combined defaultXonotic.cfg
index 09e3d18527611439296e59692cc4058203f5e857,66ac0b20b23ce711a0efa48b3f022781676ecbe1..9dce045c36bd248748939b343ce808b5f4ec0a5c
@@@ -10,7 -10,7 +10,7 @@@
  // e.g. Xonotic 1.5.1 RC1 will be 15101
  set g_xonoticversion git "Xonotic version (formatted for humans)"
  
- gameversion 600 // 0.6.0
+ gameversion 700 // 0.7.0
  gameversion_min 0 // git builds see all versions
  gameversion_max 65535 // git builds see all versions
  
@@@ -77,7 -77,7 +77,7 @@@ seta cl_unpress_attack_on_weapon_switc
  seta cl_spawn_event_particles 1 "pointparticles effect whenever a player spawns"
  seta cl_spawn_event_sound 1 "sound effect whenever a player spawns"
  //seta cl_spawn_point_model 0 "place a model at all spawn points" // still needs a model
- seta cl_spawn_point_particles 1 "pointparticles effect at all spawn points"
+ seta cl_spawn_point_particles 1 "pointparticles effect at all spawn points" // managed by effects-.cfg files
  
  freelook 1
  sensitivity 6
@@@ -467,6 -467,6 +467,7 @@@ set sv_dodging_ramp_time 0.1 "a ramp s
  set sv_dodging_height_threshold 10 "the maximum height above ground where to allow dodging"
  set sv_dodging_wall_distance_threshold 10 "the maximum distance from a wall that still allows dodging"
  set sv_dodging_sound 1 "if 1 dodging makes a sound. if 0 dodging is silent"
++set sv_dodging_frozen 0 "allow dodging while frozen"
  
  set g_spawn_alloweffects 1 "allow clients to enable spawn point and event effects such as particles and sounds, see cl_spawn_ cvars for more info"
  set g_spawn_furthest 1 "this amount of the spawns shall be far away from any players"
@@@ -566,6 -566,7 +567,7 @@@ cl_particles_smoke 
  vid_gl20 1
  r_glsl_deluxemapping 1
  r_glsl_offsetmapping 0
+ r_glsl_offsetmapping_lod 1
  r_glsl_offsetmapping_reliefmapping 0
  r_glsl_offsetmapping_scale 0.02
  // execute effects-normal.cfg to make sure that all effect settings are reset
@@@ -1550,7 -1551,7 +1552,7 @@@ snd_identicalsoundrandomization_tic
  scr_loadingscreen_background 0
  scr_loadingscreen_barcolor "0 0.5 1"
  scr_loadingscreen_barheight 12
- scr_loadingscreen_count 14
+ scr_loadingscreen_count 1
  scr_loadingscreen_firstforstartup 1
  scr_loadingscreen_scale 999
  scr_loadingscreen_scale_base 1
@@@ -1600,21 -1601,3 +1602,21 @@@ set cl_weapon_stay_color "2 0.5 0.5" "C
  set cl_weapon_stay_alpha 0.75 "Alpha of picked up weapons when g_weapon_stay > 0"
  
  seta g_superspectate 0 "server side, allows extended spectator functions through the cmd interface. followpowerup, followstrength, followstshield or followfc [red|blue] will transfer spectation to the relevent player, if any"
 +
 +set g_riflearena 0
 +set g_riflearena_nades 1
 +set g_riflearena_nade_lifetime 3.5
 +set g_riflearena_nade_damage 225
 +set g_riflearena_nade_edgedamage 90
 +set g_riflearena_nade_radius 300
 +set g_riflearena_nade_force 650
 +set g_riflearena_nade_health 25
 +set g_riflearena_nade_newton_style 0
 +set g_riflearena_nade_minforce 400
 +set g_riflearena_nade_maxforce 2000
 +set g_riflearena_nade_refire 6
 +set g_riflearena_rifle_secondary_spread 0
 +set g_riflearena_rifle_secondary_shots 1
 +set g_riflearena_rifle_secondary_animtime 0.15
 +set g_riflearena_rifle_secondary_refire 0.15
 +set g_riflearena_rifle_secondary_damage 40
index 6b4c339740f8b5e9b4da8f5de15ffcaeaf996dd0,9bd8d5e32f4d3a8fd116054977b071aaf1ae3404..d85c1911e0415f728b8465a03a33da372bface8b
@@@ -236,13 -236,13 +236,13 @@@ void Send_Notification_WOVA
        MSG_ANNCE_NOTIF(2, ANNCE_VOTE_FAIL,                 CH_INFO, "votefail",          VOL_BASEVOICE, ATTN_NONE)
  
  #define MULTITEAM_INFO(default,prefix,teams,strnum,flnum,args,hudargs,icon,normal,gentle) \
-       MSG_INFO_NOTIF(default, prefix##RED, strnum, flnum, args, hudargs, sprintf(icon, strtolower(STATIC_NAME_TEAM_1)), TCR(normal, COL_TEAM_1, strtoupper(STATIC_NAME_TEAM_1)), TCR(gentle, COL_TEAM_1, strtoupper(STATIC_NAME_TEAM_1))) \
-       MSG_INFO_NOTIF(default, prefix##BLUE, strnum, flnum, args, hudargs, sprintf(icon, strtolower(STATIC_NAME_TEAM_2)), TCR(normal, COL_TEAM_2, strtoupper(STATIC_NAME_TEAM_2)), TCR(gentle, COL_TEAM_2, strtoupper(STATIC_NAME_TEAM_2))) \
+       MSG_INFO_NOTIF(default, prefix##RED, strnum, flnum, args, hudargs, sprintf(icon, strtolower(STATIC_NAME_TEAM_1)), TCR(normal, COL_TEAM_1, strtoupper(NAME_TEAM_1)), TCR(gentle, COL_TEAM_1, strtoupper(NAME_TEAM_1))) \
+       MSG_INFO_NOTIF(default, prefix##BLUE, strnum, flnum, args, hudargs, sprintf(icon, strtolower(STATIC_NAME_TEAM_2)), TCR(normal, COL_TEAM_2, strtoupper(NAME_TEAM_2)), TCR(gentle, COL_TEAM_2, strtoupper(NAME_TEAM_2))) \
        #if teams >= 3 \
-               MSG_INFO_NOTIF(default, prefix##YELLOW, strnum, flnum, args, hudargs, sprintf(icon, strtolower(STATIC_NAME_TEAM_3)), TCR(normal, COL_TEAM_3, strtoupper(STATIC_NAME_TEAM_3)), TCR(gentle, COL_TEAM_3, strtoupper(STATIC_NAME_TEAM_3))) \
+               MSG_INFO_NOTIF(default, prefix##YELLOW, strnum, flnum, args, hudargs, sprintf(icon, strtolower(STATIC_NAME_TEAM_3)), TCR(normal, COL_TEAM_3, strtoupper(NAME_TEAM_3)), TCR(gentle, COL_TEAM_3, strtoupper(NAME_TEAM_3))) \
        #endif \
        #if teams >= 4 \
-               MSG_INFO_NOTIF(default, prefix##PINK, strnum, flnum, args, hudargs, sprintf(icon, strtolower(STATIC_NAME_TEAM_4)), TCR(normal, COL_TEAM_4, strtoupper(STATIC_NAME_TEAM_4)), TCR(gentle, COL_TEAM_4, strtoupper(STATIC_NAME_TEAM_4))) \
+               MSG_INFO_NOTIF(default, prefix##PINK, strnum, flnum, args, hudargs, sprintf(icon, strtolower(STATIC_NAME_TEAM_4)), TCR(normal, COL_TEAM_4, strtoupper(NAME_TEAM_4)), TCR(gentle, COL_TEAM_4, strtoupper(NAME_TEAM_4))) \
        #endif
  #define MSG_INFO_NOTIFICATIONS \
        MULTITEAM_INFO(1, INFO_CTF_CAPTURE_, 2,                1, 0, "s1", "s1",                        "notify_%s_captured",   _("^BG%s^BG captured the ^TC^TT^BG flag\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_CHEAT,             3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_death",         _("^BG%s%s^K1 was unfairly eliminated by ^BG%s^K1%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_DROWN,             3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_water",         _("^BG%s%s^K1 was drowned by ^BG%s^K1%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_FALL,              3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_fall",          _("^BG%s%s^K1 was grounded by ^BG%s^K1%s%s\n"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_FIRE,              3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_death",         _("^BG%s%s^K1 was burnt up into a crisp by ^BG%s^K1%s%s\n"), _("^BG%s^K1 felt a little hot from ^BG%s^K1's fire^K1%s%s\n")) \
+       MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_FIRE,              3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_death",         _("^BG%s%s^K1 was burnt up into a crisp by ^BG%s^K1%s%s\n"), _("^BG%s%s^K1 felt a little hot from ^BG%s^K1's fire^K1%s%s\n")) \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_LAVA,              3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_lava",          _("^BG%s%s^K1 was cooked by ^BG%s^K1%s%s\n"), "") \
 +      MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_NADE_NORMAL,       3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_death",         _("^BG%s%s^K1 was blown up by ^BG%s^K1's nade%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_SHOOTING_STAR,     3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_shootingstar",  _("^BG%s%s^K1 was shot into space by ^BG%s^K1%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_SLIME,             3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_slime",         _("^BG%s%s^K1 was slimed by ^BG%s^K1%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_SWAMP,             3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_slime",         _("^BG%s%s^K1 was preserved by ^BG%s^K1%s%s\n"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_TELEFRAG,          3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_telefrag",      _("^BG%s%s^K1 was telefragged by ^BG%s^K1%s%s\n"), _("^BG%s^K1 tried to occupy ^BG%s^K1's teleport destination space%s%s\n")) \
+       MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_TELEFRAG,          3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_telefrag",      _("^BG%s%s^K1 was telefragged by ^BG%s^K1%s%s\n"), _("^BG%s%s^K1 tried to occupy ^BG%s^K1's teleport destination space%s%s\n")) \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_TOUCHEXPLODE,      3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_death",         _("^BG%s%s^K1 died in an accident with ^BG%s^K1%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_VH_BUMB_DEATH,     3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_death",         _("^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Bumblebee exploded%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_VH_BUMB_GUN,       3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "notify_death",         _("^BG%s%s^K1 saw the pretty lights of ^BG%s^K1's Bumblebee gun%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_FIRE,                2, 1, "s1 s2loc spree_lost", "s1",       "notify_death",         _("^BG%s^K1 became a bit too crispy%s%s\n"), _("^BG%s^K1 felt a little hot%s%s\n")) \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_GENERIC,             2, 1, "s1 s2loc spree_lost", "s1",       "notify_selfkill",      _("^BG%s^K1 died%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_LAVA,                2, 1, "s1 s2loc spree_lost", "s1",       "notify_lava",          _("^BG%s^K1 turned into hot slag%s%s\n"), _("^BG%s^K1 found a hot place%s%s\n")) \
 +      MSG_INFO_NOTIF(1, INFO_DEATH_SELF_NADE_NORMAL,             2, 1, "s1 s2loc spree_lost", "",                     "",                                             _("^BG%s^K1 ate their own nade%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_NOAMMO,              2, 1, "s1 s2loc spree_lost", "s1",       "notify_outofammo",     _("^BG%s^K1 died%s%s. What's the point of living without ammo?\n"), _("^BG%s^K1 ran out of ammo%s%s\n")) \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_ROT,                 2, 1, "s1 s2loc spree_lost", "s1",       "notify_death",         _("^BG%s^K1 rotted away%s%s\n"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_SHOOTING_STAR,       2, 1, "s1 s2loc spree_lost", "s1",       "notify_shootingstar",  _("^BG%s^K1 became a shooting star%s%s\n"), "") \
        MSG_INFO_NOTIF(0, INFO_ITEM_WEAPON_PRIMORSEC,          0, 3, "item_wepname f2primsec f3primsec", "",  "",               _("^F1%s %s^BG is unable to fire, but its ^F1%s^BG can\n"), "") \
        MSG_INFO_NOTIF(0, INFO_ITEM_WEAPON_UNAVAILABLE,        0, 1, "item_wepname", "",                      "",               _("^F1%s^BG is ^F4not available^BG on this map\n"), "") \
        MSG_INFO_NOTIF(2, INFO_JOIN_CONNECT,                   1, 0, "s1", "",                          "",                     _("^BG%s^F3 connected%s\n"), "") \
-       MULTITEAM_INFO(2, INFO_JOIN_CONNECT_TEAM_, 4,          1, 0, "s1", "",                          "",                     _("^BG%s^F3 connected and joined the ^TC^TT\n"), "") \
+       MULTITEAM_INFO(2, INFO_JOIN_CONNECT_TEAM_, 4,          1, 0, "s1", "",                          "",                     _("^BG%s^F3 connected and joined the ^TC^TT team\n"), "") \
        MSG_INFO_NOTIF(1, INFO_JOIN_PLAY,                      1, 0, "s1", "",                          "",                     _("^BG%s^F3 is now playing\n"), "") \
        MSG_INFO_NOTIF(1, INFO_KEEPAWAY_DROPPED,               1, 0, "s1", "s1",                        "notify_balldropped",   _("^BG%s^BG has dropped the ball!\n"), "") \
        MSG_INFO_NOTIF(1, INFO_KEEPAWAY_PICKUP,                1, 0, "s1", "s1",                        "notify_ballpickedup",  _("^BG%s^BG has picked up the ball!\n"), "") \
        MSG_INFO_NOTIF(1, INFO_WEAPON_UZI_MURDER_SPRAY,              3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",  "weaponuzi",              _("^BG%s%s^K1 was riddled full of holes by ^BG%s^K1's Machine Gun%s%s\n"), "") 
  
  #define MULTITEAM_CENTER(default,prefix,teams,strnum,flnum,args,cpid,durcnt,normal,gentle) \
-       MSG_CENTER_NOTIF(default, prefix##RED, strnum, flnum, args, cpid, durcnt, TCR(normal, COL_TEAM_1, strtoupper(STATIC_NAME_TEAM_1)), TCR(gentle, COL_TEAM_1, strtoupper(STATIC_NAME_TEAM_1))) \
-       MSG_CENTER_NOTIF(default, prefix##BLUE, strnum, flnum, args, cpid, durcnt, TCR(normal, COL_TEAM_2, strtoupper(STATIC_NAME_TEAM_2)), TCR(gentle, COL_TEAM_2, strtoupper(STATIC_NAME_TEAM_2))) \
+       MSG_CENTER_NOTIF(default, prefix##RED, strnum, flnum, args, cpid, durcnt, TCR(normal, COL_TEAM_1, strtoupper(NAME_TEAM_1)), TCR(gentle, COL_TEAM_1, strtoupper(NAME_TEAM_1))) \
+       MSG_CENTER_NOTIF(default, prefix##BLUE, strnum, flnum, args, cpid, durcnt, TCR(normal, COL_TEAM_2, strtoupper(NAME_TEAM_2)), TCR(gentle, COL_TEAM_2, strtoupper(NAME_TEAM_2))) \
        #if teams >= 3 \
-               MSG_CENTER_NOTIF(default, prefix##YELLOW, strnum, flnum, args, cpid, durcnt, TCR(normal, COL_TEAM_3, strtoupper(STATIC_NAME_TEAM_3)), TCR(gentle, COL_TEAM_3, strtoupper(STATIC_NAME_TEAM_3))) \
+               MSG_CENTER_NOTIF(default, prefix##YELLOW, strnum, flnum, args, cpid, durcnt, TCR(normal, COL_TEAM_3, strtoupper(NAME_TEAM_3)), TCR(gentle, COL_TEAM_3, strtoupper(NAME_TEAM_3))) \
        #endif \
        #if teams >= 4 \
-               MSG_CENTER_NOTIF(default, prefix##PINK, strnum, flnum, args, cpid, durcnt, TCR(normal, COL_TEAM_4, strtoupper(STATIC_NAME_TEAM_4)), TCR(gentle, COL_TEAM_4, strtoupper(STATIC_NAME_TEAM_4))) \
+               MSG_CENTER_NOTIF(default, prefix##PINK, strnum, flnum, args, cpid, durcnt, TCR(normal, COL_TEAM_4, strtoupper(NAME_TEAM_4)), TCR(gentle, COL_TEAM_4, strtoupper(NAME_TEAM_4))) \
        #endif
  #define MSG_CENTER_NOTIFICATIONS \
        MSG_CENTER_NOTIF(1, CENTER_ASSAULT_ATTACKING,           0, 0, "",             CPID_ASSAULT_ROLE,   "0 0", _("^BGYou are attacking!"), "") \
        MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_FIRE,             0, 0, "",             NO_CPID,             "0 0", _("^K1You got a little bit too crispy!"), _("^K1You felt a little too hot!")) \
        MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_GENERIC,          0, 0, "",             NO_CPID,             "0 0", _("^K1You killed your own dumb self!"), _("^K1You need to be more careful!")) \
        MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_LAVA,             0, 0, "",             NO_CPID,             "0 0", _("^K1You couldn't stand the heat!"), "") \
 +      MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_NADE,                             0, 0, "",                         NO_CPID,                         "0 0", _("^K1You ate your own grenade!"), _("^K1Tastes like chicken!")) \
        MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_NOAMMO,           0, 0, "",             NO_CPID,             "0 0", _("^K1You were killed for running out of ammo..."), _("^K1You are respawning for running out of ammo...")) \
        MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_ROT,              0, 0, "",             NO_CPID,             "0 0", _("^K1You grew too old without taking your medicine"), _("^K1You need to preserve your health")) \
        MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_SHOOTING_STAR,    0, 0, "",             NO_CPID,             "0 0", _("^K1You became a shooting star!"), "") \
        MSG_CENTER_NOTIF(1, CENTER_MOTD,                        1, 0, "s1",            CPID_MOTD,             "-1 0", _("^BG%s"), "") \
        MSG_CENTER_NOTIF(1, CENTER_NIX_COUNTDOWN,               0, 2, "item_wepname",  CPID_NIX,              "1 f2", _("^F2^COUNT^BG until weapon change...\nNext weapon: ^F1%s"), "") \
        MSG_CENTER_NOTIF(1, CENTER_NIX_NEWWEAPON,               0, 1, "item_wepname",  CPID_NIX,              "0 0", _("^F2Active weapon: ^F1%s"), "") \
 +      MSG_CENTER_NOTIF(1, CENTER_NADE,                                0, 0, "",              NO_CPID,                   "0 0", _("^BGPress ^F2DROPWEAPON^BG again to toss the grenade!"), "") \
        MSG_CENTER_NOTIF(1, CENTER_OVERTIME_FRAG,               0, 0, "",              CPID_OVERTIME,         "0 0", _("^F2Now playing ^F4OVERTIME^F2!\nKeep fragging until we have a winner!"), _("^F2Now playing ^F4OVERTIME^F2!\nKeep scoring until we have a winner!")) \
        MSG_CENTER_NOTIF(1, CENTER_OVERTIME_TIME,               0, 1, "f1time",        CPID_OVERTIME,         "0 0", _("^F2Now playing ^F4OVERTIME^F2!\n^BGAdded ^F4%s^BG to the game!"), "") \
        MSG_CENTER_NOTIF(1, CENTER_POWERDOWN_INVISIBILITY,      0, 0, "",              CPID_POWERUP,          "0 0", _("^F2Invisibility has worn off"), "") \
        MSG_MULTI_NOTIF(1, DEATH_MURDER_FALL,                    NO_MSG,        INFO_DEATH_MURDER_FALL,                    NO_MSG) \
        MSG_MULTI_NOTIF(1, DEATH_MURDER_FIRE,                    NO_MSG,        INFO_DEATH_MURDER_FIRE,                    NO_MSG) \
        MSG_MULTI_NOTIF(1, DEATH_MURDER_LAVA,                    NO_MSG,        INFO_DEATH_MURDER_LAVA,                    NO_MSG) \
 +      MSG_MULTI_NOTIF(1, DEATH_MURDER_NADE_NORMAL,                     NO_MSG,                INFO_DEATH_MURDER_NADE_NORMAL,                     NO_MSG) \
        MSG_MULTI_NOTIF(1, DEATH_MURDER_SHOOTING_STAR,           NO_MSG,        INFO_DEATH_MURDER_SHOOTING_STAR,           NO_MSG) \
        MSG_MULTI_NOTIF(1, DEATH_MURDER_SLIME,                   NO_MSG,        INFO_DEATH_MURDER_SLIME,                   NO_MSG) \
        MSG_MULTI_NOTIF(1, DEATH_MURDER_SWAMP,                   NO_MSG,        INFO_DEATH_MURDER_SWAMP,                   NO_MSG) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_FIRE,                      NO_MSG,        INFO_DEATH_SELF_FIRE,                      CENTER_DEATH_SELF_FIRE) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_GENERIC,                   NO_MSG,        INFO_DEATH_SELF_GENERIC,                   CENTER_DEATH_SELF_GENERIC) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_LAVA,                      NO_MSG,        INFO_DEATH_SELF_LAVA,                      CENTER_DEATH_SELF_LAVA) \
 +      MSG_MULTI_NOTIF(1, DEATH_SELF_NADE_NORMAL,                               NO_MSG,                INFO_DEATH_SELF_NADE_NORMAL,                       CENTER_DEATH_SELF_NADE) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_NOAMMO,                    NO_MSG,        INFO_DEATH_SELF_NOAMMO,                    CENTER_DEATH_SELF_NOAMMO) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_ROT,                       NO_MSG,        INFO_DEATH_SELF_ROT,                       CENTER_DEATH_SELF_ROT) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_SHOOTING_STAR,             NO_MSG,        INFO_DEATH_SELF_SHOOTING_STAR,             CENTER_DEATH_SELF_SHOOTING_STAR) \
index aef2ece8a755ff96223661fc3c6753ae7f79da3a,e6a242a70454a714e47bfbeeb151a875b45789d4..65fd9b2e9c4b92b256df1385e040f15a88eb4e41
@@@ -1115,6 -1115,6 +1115,7 @@@ float autocvar_sv_dodging_sound
  float autocvar_sv_dodging_up_speed;
  float autocvar_sv_dodging_wall_distance_threshold;
  float autocvar_sv_dodging_wall_dodging;
++float autocvar_sv_dodging_frozen;
  float autocvar_sv_doublejump;
  float autocvar_sv_eventlog;
  float autocvar_sv_eventlog_console;
@@@ -1233,14 -1233,3 +1234,14 @@@ float autocvar_g_touchexplode_radius
  float autocvar_g_touchexplode_damage;
  float autocvar_g_touchexplode_edgedamage;
  float autocvar_g_touchexplode_force;
 +float autocvar_g_riflearena_nades;
 +float autocvar_g_riflearena_nade_lifetime;
 +float autocvar_g_riflearena_nade_damage;
 +float autocvar_g_riflearena_nade_edgedamage;
 +float autocvar_g_riflearena_nade_radius;
 +float autocvar_g_riflearena_nade_force;
 +float autocvar_g_riflearena_nade_health;
 +float autocvar_g_riflearena_nade_newton_style;
 +float autocvar_g_riflearena_nade_minforce;
 +float autocvar_g_riflearena_nade_maxforce;
 +float autocvar_g_riflearena_nade_refire;
index 5ce7b7d475f4d6848442b8fa9761106e5927ed2c,5ce7b7d475f4d6848442b8fa9761106e5927ed2c..02a3b1c0956b190bff9d1f68ba3c9d805bfd68f4
@@@ -23,7 -23,7 +23,7 @@@ When you press the jump ke
  */
  void PlayerJump (void)
  {
--      if(self.freezetag_frozen)
++      if(self.freezetag_frozen && !self.dodging_action)
                return; // no jumping in freezetag when frozen
  
        float mjumpheight;
index 82147826ee56345cad3162601515a20c05e631db,82147826ee56345cad3162601515a20c05e631db..f2923d5434584e0eeebb2dbc40b5f8858bd82ca6
@@@ -523,7 -523,7 +523,15 @@@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPh
  {
        if(self.freezetag_frozen)
        {
--              self.movement = '0 0 0';
++              if(autocvar_sv_dodging_frozen)
++              {
++                      self.movement_x = bound(-5, self.movement_x, 5);
++                      self.movement_y = bound(-5, self.movement_y, 5);
++                      self.movement_z = bound(-5, self.movement_z, 5);
++              }
++              else
++                      self.movement = '0 0 0';
++                      
                self.disableclientprediction = 1;
        }
        return 1;
index 1d6dd911eb7f958fad79b957c120e06575433530,1d6dd911eb7f958fad79b957c120e06575433530..674954efdc189fee26fc8ce8ac0767f578527a34
  // and to ramp up the dodge acceleration in the physics hook.
  .float last_dodging_time;
  
--// set to 1 to indicate dodging has started.. reset by physics hook after dodge has been done..
--.float dodging_action;
--
  // This is the velocity gain to be added over the ramp time.
  // It will decrease from frame to frame during dodging_action = 1
  // until it's 0.
  .float dodging_velocity_gain;
  
--// the jump part of the dodge cannot be ramped
--.float dodging_single_action;
--
  MUTATOR_HOOKFUNCTION(dodging_GetCvars) {
        GetCvars_handleFloat(get_cvars_s, get_cvars_f, cvar_cl_dodging_timeout, "cl_dodging_timeout");
        return 0;
index 8e8be2513d49f90c1a952685ef6e21ae03a49940,8e8be2513d49f90c1a952685ef6e21ae03a49940..9840325d97ce8a0ee71ac932242de069a0e3cabf
@@@ -1,2 -1,2 +1,7 @@@
  float g_dodging;
  
++// set to 1 to indicate dodging has started.. reset by physics hook after dodge has been done..
++.float dodging_action;
++
++// the jump part of the dodge cannot be ramped
++.float dodging_single_action;