]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote branch 'origin/samual/uzianimtime'
authorRudolf Polzer <divverent@alientrap.org>
Thu, 13 Jan 2011 19:04:12 +0000 (20:04 +0100)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 13 Jan 2011 19:04:12 +0000 (20:04 +0100)
21 files changed:
balance25.cfg
balanceLeeStricklin.cfg
balanceSamual.cfg
balanceXonotic.cfg
balancetZork.cfg
defaultXonotic.cfg
qcsrc/menu/item/listbox.c
qcsrc/menu/xonotic/dialog_settings_audio.c
qcsrc/menu/xonotic/dialog_settings_effects.c
qcsrc/menu/xonotic/serverlist.c
qcsrc/server/autocvars.qh
qcsrc/server/cl_client.qc
qcsrc/server/cl_physics.qc
qcsrc/server/cl_weapons.qc
qcsrc/server/defs.qh
qcsrc/server/g_damage.qc
qcsrc/server/g_hook.qc
qcsrc/server/g_world.qc
qcsrc/server/sv_main.qc
qcsrc/server/w_electro.qc
qcsrc/server/w_sniperrifle.qc

index 7dddf11f998e1b14c11d998d496f7ebe60cdf3e2..361c45d616bac822990aa3d2144611c091fbf105 100644 (file)
@@ -226,6 +226,7 @@ set g_balance_laser_primary_delay 0.05
 set g_balance_laser_primary_gauntlet 0
 set g_balance_laser_primary_force_zscale 1
 set g_balance_laser_primary_force_velocitybias 0
+set g_balance_laser_primary_force_other_scale 1
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
 set g_balance_laser_secondary_damage 35
 set g_balance_laser_secondary_edgedamage 10
@@ -241,6 +242,7 @@ set g_balance_laser_secondary_delay 0
 set g_balance_laser_secondary_gauntlet 0
 set g_balance_laser_secondary_force_zscale 1
 set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 1
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 6
@@ -626,6 +628,7 @@ set g_balance_sniperrifle_primary_bulletconstant 130 // 56.3qu
 set g_balance_sniperrifle_primary_burstcost 0
 set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
 set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 0
 set g_balance_sniperrifle_secondary_tracer 0
 set g_balance_sniperrifle_secondary_damage 35
 set g_balance_sniperrifle_secondary_headshotaddeddamage 15 // 50 damage only on head
index 01965cdf2f7b52c4e2e78617df5db3fd00cd1721..03f58bf366724d0e7150ef7b375537197ef6e9aa 100644 (file)
@@ -226,6 +226,7 @@ set g_balance_laser_primary_delay 0.03
 set g_balance_laser_primary_gauntlet 0
 set g_balance_laser_primary_force_zscale 2 // 300 upforce
 set g_balance_laser_primary_force_velocitybias 0.3
+set g_balance_laser_primary_force_other_scale 1
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
 set g_balance_laser_secondary_damage 200 // dps
 set g_balance_laser_secondary_edgedamage 0
@@ -241,6 +242,7 @@ set g_balance_laser_secondary_delay 0
 set g_balance_laser_secondary_gauntlet 1
 set g_balance_laser_secondary_force_zscale 1.25
 set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 1
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 5
@@ -626,6 +628,7 @@ set g_balance_sniperrifle_primary_bulletconstant 130 // 56.3qu
 set g_balance_sniperrifle_primary_burstcost 0 // require same cooldown as secondary, note it's smaller than primary refire time
 set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
 set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 0
 set g_balance_sniperrifle_secondary_tracer 0
 set g_balance_sniperrifle_secondary_damage 40
 set g_balance_sniperrifle_secondary_headshotaddeddamage 20
index a3978f5920781329f20b0f35bd8ee7d601955da1..718376c127e07cbf169600ee472e6be6e8c57ec1 100644 (file)
@@ -226,6 +226,7 @@ set g_balance_laser_primary_delay 0.03
 set g_balance_laser_primary_gauntlet 0
 set g_balance_laser_primary_force_zscale 2 // 350 upforce
 set g_balance_laser_primary_force_velocitybias 0.3
+set g_balance_laser_primary_force_other_scale 1
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
 set g_balance_laser_secondary_damage 25
 set g_balance_laser_secondary_edgedamage 10
@@ -241,6 +242,7 @@ set g_balance_laser_secondary_delay 0
 set g_balance_laser_secondary_gauntlet 0
 set g_balance_laser_secondary_force_zscale 1.25
 set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 1
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 10
@@ -626,6 +628,7 @@ set g_balance_sniperrifle_primary_bulletconstant 110 // 62.2qu
 set g_balance_sniperrifle_primary_burstcost 0
 set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
 set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 0
 set g_balance_sniperrifle_secondary_tracer 0
 set g_balance_sniperrifle_secondary_damage 50
 set g_balance_sniperrifle_secondary_headshotaddeddamage 50 // 50 damage only on head
index 3cf4aa1f6b6649034f343417286261ca7a1d9977..be945fa6703c6b65d53a43540604cb2084f62b49 100644 (file)
@@ -181,7 +181,7 @@ set g_balance_falldamage_maxdamage 15
 // }}}
 
 // {{{ powerups
-set g_balance_powerup_invincible_takedamage 0.3
+set g_balance_powerup_invincible_takedamage 0.6
 set g_balance_powerup_invincible_time 30
 set g_balance_powerup_strength_damage 3
 set g_balance_powerup_strength_force 4
@@ -226,6 +226,7 @@ set g_balance_laser_primary_delay 0
 set g_balance_laser_primary_gauntlet 0
 set g_balance_laser_primary_force_zscale 2 // 300 upforce
 set g_balance_laser_primary_force_velocitybias 0.3
+set g_balance_laser_primary_force_other_scale 2.5 // force 375 when pushing others around
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
 set g_balance_laser_secondary_damage 200 // dps
 set g_balance_laser_secondary_edgedamage 0
@@ -241,6 +242,7 @@ set g_balance_laser_secondary_delay 0
 set g_balance_laser_secondary_gauntlet 1
 set g_balance_laser_secondary_force_zscale 1.25
 set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 0
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 18
@@ -272,13 +274,13 @@ set g_balance_uzi_burst 3                         // # of bullets in a burst (if set to 2 or more)
 set g_balance_uzi_burst_animtime 0.45
 set g_balance_uzi_burst_refire 0.05            // refire between burst bullets
 set g_balance_uzi_burst_refire2 0.45   // refire after burst
-set g_balance_uzi_burst_spread 0.05
-set g_balance_uzi_burst_damage 20       // 100 dps, delivered in 0.15s 
+set g_balance_uzi_burst_spread 0.07
+set g_balance_uzi_burst_damage 25
 set g_balance_uzi_burst_force 50
 set g_balance_uzi_burst_ammo 3
 
 set g_balance_uzi_first 1
-set g_balance_uzi_first_damage 20       // 100 dps
+set g_balance_uzi_first_damage 22
 set g_balance_uzi_first_force 50
 set g_balance_uzi_first_spread 0.03
 set g_balance_uzi_first_refire 0.2
@@ -286,7 +288,7 @@ set g_balance_uzi_first_ammo 2
 
 set g_balance_uzi_sustained_damage 12   // 120 dps
 set g_balance_uzi_sustained_force 12
-set g_balance_uzi_sustained_spread 0.08
+set g_balance_uzi_sustained_spread 0.06
 set g_balance_uzi_sustained_refire 0.1
 set g_balance_uzi_sustained_ammo 1
 
@@ -362,7 +364,7 @@ set g_balance_electro_primary_edgedamage 0
 set g_balance_electro_primary_force 425
 set g_balance_electro_primary_force_up 125
 set g_balance_electro_primary_radius 850
-set g_balance_electro_primary_comboradius 75
+set g_balance_electro_primary_comboradius 150
 set g_balance_electro_primary_speed 0
 set g_balance_electro_primary_spread 0
 set g_balance_electro_primary_lifetime 0
@@ -427,21 +429,21 @@ set g_balance_crylink_primary_other_lifetime 2 // range: 800 full, fades to 1300
 set g_balance_crylink_primary_other_fadetime 0.25
 
 set g_balance_crylink_secondary 1
-set g_balance_crylink_secondary_damage 3
-set g_balance_crylink_secondary_edgedamage 0
-set g_balance_crylink_secondary_force -20
-set g_balance_crylink_secondary_radius 5
-set g_balance_crylink_secondary_speed 1700
-set g_balance_crylink_secondary_spread 0.03
-set g_balance_crylink_secondary_shots 3
-set g_balance_crylink_secondary_bounces 0
-set g_balance_crylink_secondary_refire 0.15
-set g_balance_crylink_secondary_animtime 0.15
-set g_balance_crylink_secondary_ammo 1
-set g_balance_crylink_secondary_bouncedamagefactor 0.5
+set g_balance_crylink_secondary_damage 8
+set g_balance_crylink_secondary_edgedamage 3
+set g_balance_crylink_secondary_force 20
+set g_balance_crylink_secondary_radius 20
+set g_balance_crylink_secondary_speed 1500
+set g_balance_crylink_secondary_spread 0.1
+set g_balance_crylink_secondary_shots 6
+set g_balance_crylink_secondary_bounces 2
+set g_balance_crylink_secondary_refire 0.8
+set g_balance_crylink_secondary_animtime 0.3
+set g_balance_crylink_secondary_ammo 2
+set g_balance_crylink_secondary_bouncedamagefactor 0.2
 set g_balance_crylink_secondary_joindelay 0
-set g_balance_crylink_secondary_joinspread 0
-set g_balance_crylink_secondary_jointime 0
+set g_balance_crylink_secondary_joinspread 0.2
+set g_balance_crylink_secondary_jointime 0.1
 set g_balance_crylink_secondary_joinexplode 0                  
 set g_balance_crylink_secondary_joinexplode_damage 0   
 set g_balance_crylink_secondary_joinexplode_edgedamage 0
@@ -452,7 +454,7 @@ set g_balance_crylink_secondary_linkexplode 1
 set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000
 set g_balance_crylink_secondary_middle_fadetime 5
 set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000
-set g_balance_crylink_secondary_line_fadetime 2
+set g_balance_crylink_secondary_line_fadetime 0.25
 // }}}
 // {{{ nex
 set g_balance_nex_primary_damage 90
@@ -469,14 +471,14 @@ set g_balance_nex_secondary 1
 set g_balance_nex_secondary_charge 1
 set g_balance_nex_secondary_charge_rate 0.4
 set g_balance_nex_secondary_chargepool 1
-set g_balance_nex_secondary_chargepool_regen 0.15
-set g_balance_nex_secondary_chargepool_pause_regen 1
-set g_balance_nex_secondary_chargepool_pause_health_regen 1
+set g_balance_nex_secondary_chargepool_regen 0.25
+set g_balance_nex_secondary_chargepool_pause_regen 2
+set g_balance_nex_secondary_chargepool_pause_health_regen 0.5
 set g_balance_nex_secondary_damage 0
 set g_balance_nex_secondary_force 0
 set g_balance_nex_secondary_refire 0
 set g_balance_nex_secondary_animtime 0
-set g_balance_nex_secondary_ammo 0.2 // full charge pool is 1, so it depletes in 5 secs
+set g_balance_nex_secondary_ammo 0.4 // full charge pool is 1, so it depletes in 2.5 secs
 set g_balance_nex_secondary_damagefalloff_mindist 0
 set g_balance_nex_secondary_damagefalloff_maxdist 0
 set g_balance_nex_secondary_damagefalloff_halflife 0
@@ -488,7 +490,7 @@ set g_balance_nex_charge_start 0.5
 set g_balance_nex_charge_rate 0.5
 set g_balance_nex_charge_limit 0.5
 set g_balance_nex_charge_rot_rate 0.1
-set g_balance_nex_charge_rot_pause 1 // Dont rot down until this long after release of charge button
+set g_balance_nex_charge_rot_pause 0.5 // Dont rot down until this long after release of charge button
 set g_balance_nex_charge_shot_multiplier 0
 set g_balance_nex_charge_velocity_rate 0
 set g_balance_nex_charge_minspeed 600
@@ -503,7 +505,7 @@ set g_balance_minstanex_ammo 10
 set g_balance_hagar_primary_damage 14
 set g_balance_hagar_primary_edgedamage 6
 set g_balance_hagar_primary_force 70
-set g_balance_hagar_primary_radius 115
+set g_balance_hagar_primary_radius 110
 set g_balance_hagar_primary_spread 0.1
 set g_balance_hagar_primary_speed 1800
 set g_balance_hagar_primary_lifetime 5
@@ -626,6 +628,7 @@ set g_balance_sniperrifle_primary_bulletconstant 110 // 62.2qu
 set g_balance_sniperrifle_primary_burstcost 0
 set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
 set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 1
 set g_balance_sniperrifle_secondary_tracer 0
 set g_balance_sniperrifle_secondary_damage 42
 set g_balance_sniperrifle_secondary_headshotaddeddamage 42
index f4ae1c0074aea275af554202ef4b50886db7b0c1..87612d234899abf1d94ac1aa441f6e52de5eeb57 100644 (file)
@@ -226,6 +226,7 @@ set g_balance_laser_primary_delay 0
 set g_balance_laser_primary_gauntlet 0
 set g_balance_laser_primary_force_zscale 1.2
 set g_balance_laser_primary_force_velocitybias 0
+set g_balance_laser_primary_force_other_scale 1
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
 set g_balance_laser_secondary_damage 35
 set g_balance_laser_secondary_edgedamage 10
@@ -241,6 +242,7 @@ set g_balance_laser_secondary_delay 0
 set g_balance_laser_secondary_gauntlet 0
 set g_balance_laser_secondary_force_zscale 1
 set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 1
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 10
@@ -626,6 +628,7 @@ set g_balance_sniperrifle_primary_bulletconstant 110 // 62.2qu
 set g_balance_sniperrifle_primary_burstcost 0
 set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
 set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 0
 set g_balance_sniperrifle_secondary_tracer 0
 set g_balance_sniperrifle_secondary_damage 50
 set g_balance_sniperrifle_secondary_headshotaddeddamage 50 // 50 damage only on head
index 1a3138908f63f2227fa4e67bb012c2d7442dfb22..f74a353c8107d49907f2ac332ce7aec8e6548e80 100644 (file)
@@ -644,6 +644,7 @@ seta g_mirrordamage 0.700000        "for teamplay 4: mirror damage factor"
 seta g_mirrordamage_virtual 1  "for teamplay 4: do not actually apply mirror damage, just show graphics effect for it"
 seta g_friendlyfire 0.500000   "for teamplay 4: fiendly fire factor"
 seta g_friendlyfire_virtual 1  "for teamplay 4: do not actually apply friendly fire, just show graphics effect for it"
+seta g_friendlyfire_virtual_force 1    "for teamplay 4: apply force even though damage was made virtual only"
 seta g_teamdamage_threshold 40 "for teamplay 4: threshold over which to apply mirror damage"
 seta g_teamdamage_resetspeed 20        "for teamplay 4: how fast player's teamdamage count decreases"
 
@@ -1594,9 +1595,6 @@ set capturelimit 0
 seta hud_fontsize 11
 seta scr_centersize 12
 seta hud_width 560
-// alias hud_font "loadfont user1 ${1},gfx/fallback ${2-}; loadfont user2 ${1}-big ${2-}; scoreboard_columns_set"
-alias sbar_font "set _requested_sbar_font \"${*}\""
-sbar_font gfx/vera-sans 8 12 16 24 32
 
 // these entities are not referenced by anything directly, they just represent
 // teams and are found by find() when needed
@@ -1990,9 +1988,10 @@ scr_conscroll_y -0.3
 
 scr_loadingscreen_background 0
 scr_loadingscreen_barcolor "0 0.5 1"
-scr_loadingscreen_barheight 20
+scr_loadingscreen_barheight 12
 scr_loadingscreen_count 1
 scr_conforcewhiledisconnected 0
+scr_infobar_height 12
 
 // DP cannot properly detect this, so rather turn off the detection
 r_texture_dds_load_dxt1_noalpha 1
index ba3fa6a9f28ca8c3dbbb31f11b85982ba8bede03..361e3cb32561765ebb5298b1343bbf22b4acbabd 100644 (file)
@@ -277,6 +277,7 @@ void ListBox_draw(entity me)
        oldshift = draw_shift;
        oldscale = draw_scale;
        absSize = boxToGlobalSize(me.size, eX * (1 - me.controlWidth) + eY * me.itemHeight);
+       draw_scale = boxToGlobalSize(eX * (1 - me.controlWidth) + eY * me.itemHeight, oldscale);
        for(i = floor(me.scrollPos / me.itemHeight); i < me.nItems; ++i)
        {
                float y;
@@ -284,7 +285,6 @@ void ListBox_draw(entity me)
                if(y >= 1)
                        break;
                draw_shift = boxToGlobal(eY * y, oldshift, oldscale);
-               draw_scale = boxToGlobalSize(eY * me.itemHeight + eX * (1 - me.controlWidth), oldscale);
                me.drawListBoxItem(me, i, absSize, (me.selectedItem == i));
        }
        draw_ClearClip();
index ddde45d2b8706199d98841aa3a5c336d9774c98e..60ac871c9e2d12b34c1503fdaeb32edc9ef3f89f 100644 (file)
@@ -151,7 +151,7 @@ void XonoticAudioSettingsTab_fill(entity me)
                sl = makeXonoticSlider(0.15, 1, 0.05, "cl_autotaunt");
                        sl.valueDisplayMultiplier = 100;
                        sl.valueDigits = 0;
-               me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, "Automatic taunts"));
+               me.TD(me, 1, 3, e = makeXonoticSliderCheckBox(0, 1, sl, "Automatic taunts"));
                if(sl.value != e.savedValue)
                        e.savedValue = 0.65; // default
        me.TR(me);
index cd108f0be99679bac91121dcb170f5f430f127fd..2e445ffa781882cac527f71c6e112cfc7e67c57e 100644 (file)
@@ -49,7 +49,7 @@ void XonoticEffectsSettingsTab_fill(entity me)
 
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Geometry detail:"));
+               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Geometry detail:"));
                me.TD(me, 1, 2, e = makeXonoticTextSlider("r_subdivisions_tolerance"));
                        e.addValue(e, "Lowest", "16");
                        e.addValue(e, "Low", "8");
@@ -59,7 +59,7 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        e.addValue(e, "Insane", "1");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Antialiasing:"));
+               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Antialiasing:"));
                me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_samples"));
                        e.addValue(e, "Disabled", "1");
                        e.addValue(e, "2x", "2");
@@ -67,7 +67,7 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Texture resolution:"));
+               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Texture resolution:"));
                me.TD(me, 1, 2, e = makeXonoticPicmipSlider());
                        if(cvar("developer"))
                                e.addValue(e, "Leet", "1337");
@@ -97,7 +97,7 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        }
                }
        me.TR(me);
-       me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Anisotropy:"));
+       me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Anisotropy:"));
                me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_texture_anisotropy"));
                        e.addValue(e, "Disabled", "1");
                        e.addValue(e, "2x", "2");
@@ -107,23 +107,23 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Particle quality:"));
+               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Particle quality:"));
                me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality"));
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Particle dist.:"));
+               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Particle distance:"));
                me.TD(me, 1, 2, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance"));
        me.TR(me);
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_decals", "Decals"));
        me.TR(me);
                me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Distance:"));
+               me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, "Distance:"));
                        setDependent(e, "cl_decals", 1, 1);
                me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
                        setDependent(e, "cl_decals", 1, 1);
        me.TR(me);
                me.TDempty(me, 0.2);
-           me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Time:"));
+           me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, "Time:"));
                setDependent(e, "cl_decals", 1, 1);
            me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_time"));
                setDependent(e, "cl_decals", 1, 1);
index 3d5d3e843cecb59fbc2a94d4bbecbc47ff68d455..4128935795eb24d285b1730f0db8f199936d5792 100644 (file)
@@ -107,6 +107,8 @@ float IsFavorite(string srv)
        if(srv == "")
                return FALSE;
        srv = netaddress_resolve(srv, 26000);
+       if(srv == "")
+               return FALSE;
        p = crypto_getidfp(srv);
        n = tokenize_console(cvar_string("net_slist_favorites"));
        for(i = 0; i < n; ++i)
@@ -502,7 +504,7 @@ void XonoticServerList_resizeNotify(entity me, vector relOrigin, vector relSize,
        me.columnPingSize = me.realFontSize_x * 3;
        me.columnMapSize = me.realFontSize_x * 10;
        me.columnTypeSize = me.realFontSize_x * 4;
-       me.columnPlayersSize = me.realFontSize_x * 4;
+       me.columnPlayersSize = me.realFontSize_x * 5;
        me.columnNameSize = 1 - me.columnPlayersSize - me.columnMapSize - me.columnPingSize - me.columnIconsSize - me.columnTypeSize - 5 * me.realFontSize_x;
        me.columnPingOrigin = me.columnIconsOrigin + me.columnIconsSize + me.realFontSize_x;
        me.columnNameOrigin = me.columnPingOrigin + me.columnPingSize + me.realFontSize_x;
@@ -707,8 +709,11 @@ float XonoticServerList_keyDown(entity me, float scan, float ascii, float shift)
        }
        else if(scan == K_MOUSE2 || scan == K_SPACE)
        {
-               main.serverInfoDialog.loadServerInfo(main.serverInfoDialog, me.selectedItem);
-               DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz);
+               if(me.nItems != 0)
+               {
+                       main.serverInfoDialog.loadServerInfo(main.serverInfoDialog, me.selectedItem);
+                       DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz);
+               }
        }
        else if(scan == K_INS || scan == K_MOUSE3 || scan == K_KP_INS)
        {
index 5051e44273fcd98ec9dd92e988b6f207d19e66f0..8ce09a3b66b68bebed0a3fab4ad43782e3902039 100644 (file)
@@ -109,6 +109,7 @@ float autocvar_g_balance_sniperrifle_secondary_damage;
 float autocvar_g_balance_sniperrifle_secondary_force;
 float autocvar_g_balance_sniperrifle_secondary_headshotaddeddamage;
 float autocvar_g_balance_sniperrifle_secondary_lifetime;
+float autocvar_g_balance_sniperrifle_secondary_reload;
 float autocvar_g_balance_sniperrifle_secondary_refire;
 float autocvar_g_balance_sniperrifle_secondary_speed;
 float autocvar_g_balance_sniperrifle_secondary_spread;
@@ -390,6 +391,7 @@ float autocvar_g_balance_laser_primary_damage;
 float autocvar_g_balance_laser_primary_delay;
 float autocvar_g_balance_laser_primary_edgedamage;
 float autocvar_g_balance_laser_primary_force;
+float autocvar_g_balance_laser_primary_force_other_scale;
 float autocvar_g_balance_laser_primary_force_velocitybias;
 float autocvar_g_balance_laser_primary_force_zscale;
 float autocvar_g_balance_laser_primary_lifetime;
@@ -402,6 +404,7 @@ float autocvar_g_balance_laser_secondary_animtime;
 float autocvar_g_balance_laser_secondary_damage;
 float autocvar_g_balance_laser_secondary_edgedamage;
 float autocvar_g_balance_laser_secondary_force;
+float autocvar_g_balance_laser_secondary_force_other_scale;
 float autocvar_g_balance_laser_secondary_force_velocitybias;
 float autocvar_g_balance_laser_secondary_force_zscale;
 float autocvar_g_balance_laser_secondary_lifetime;
@@ -727,6 +730,7 @@ float autocvar_g_freezetag_revive_clearspeed;
 float autocvar_g_freezetag_warmup;
 #define autocvar_g_friendlyfire cvar("g_friendlyfire")
 #define autocvar_g_friendlyfire_virtual cvar("g_friendlyfire_virtual")
+#define autocvar_g_friendlyfire_virtual_force cvar("g_friendlyfire_virtual_force")
 float autocvar_g_full_getstatus_responses;
 float autocvar_g_fullbrightitems;
 float autocvar_g_fullbrightplayers;
index 2e5c60118cc2154d30a21db59c509430690e688b..348779dba9e124fb3e8d1ef4d77f8fdc80b5d3f7 100644 (file)
@@ -1065,6 +1065,8 @@ void PutClientInServer (void)
                self.cnt = self.switchweapon;
                self.weapon = 0;
 
+        self.wish_reload = 0;
+
                if(!self.alivetime)
                        self.alivetime = time;
        } else if(self.classname == "observer" || (g_ca && !allowed_to_spawn)) {
@@ -1366,7 +1368,7 @@ void ClientKill (void)
        {
                // do nothing
        }
-    else if(g_freezetag && self.freezetag_frozen == 1)
+    else if(self.freezetag_frozen)
     {
         // do nothing
     }
index 7a93468d92632c517b4e2a8886e2c0fa48c5f779..a2773fedfd5a00ad6b7dfe4cf605aeecd88fd444 100644 (file)
@@ -23,7 +23,7 @@ When you press the jump key
 */
 void PlayerJump (void)
 {
-       if(g_freezetag && self.freezetag_frozen)
+       if(self.freezetag_frozen)
                return; // no jumping in freezetag when frozen
 
        float mjumpheight;
index 6de63b9377fd76893498adebe0507247737e3fe1..17190326f85daf322c5ec9ab3aa4dadf77c4b618 100644 (file)
@@ -1,8 +1,6 @@
 void W_Reload()
 {
-       if(self.switchweapon == self.weapon)
-       if(self.weaponentity.state == WS_READY)
-               weapon_action(self.weapon, WR_RELOAD);
+    self.wish_reload = 1;
 }
 
 // switch between weapons
index 8db4849e7816e1a161b9e27375924e22b0d93e12..970c86af429ecf3c4ef267ca4ef62b145e1afcad 100644 (file)
@@ -613,6 +613,7 @@ float client_cefc_accumulatortime;
 #endif
 
 .float sniperrifle_bulletcounter;
+.float wish_reload;
 
 #define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE
 // when doing this, hagar can go through clones
index 3530fcaccd038c739f553862acd750a1c536f2ac..69f5bfa2488620d9c93e23810f52b3ce1495b2e5 100644 (file)
@@ -602,7 +602,8 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float
                                                                targ.dmg_save += v_y;
                                                                targ.dmg_inflictor = inflictor;
                                                                damage = 0;
-                                                               force = '0 0 0';
+                                if(!autocvar_g_friendlyfire_virtual_force)
+                                    force = '0 0 0';
                                                        }
                                                }
                                                else
@@ -1026,33 +1027,47 @@ float RadiusDamage (entity inflictor, entity attacker, float coredamage, float e
                                                // laser force adjustments :P
                                                if(DEATH_WEAPONOF(deathtype) == WEP_LASER)
                                                {
-                                                       vector vel;
-
-                                                       float force_zscale;
-                                                       float force_velocitybiasramp;
-                                                       float force_velocitybias;
-
-                                                       force_velocitybiasramp = autocvar_sv_maxspeed;
-                                                       if(deathtype & HITTYPE_SECONDARY)
-                                                       {
-                                                               force_zscale = autocvar_g_balance_laser_secondary_force_zscale;
-                                                               force_velocitybias = autocvar_g_balance_laser_secondary_force_velocitybias;
-                                                       }
-                                                       else
-                                                       {
-                                                               force_zscale = autocvar_g_balance_laser_primary_force_zscale;
-                                                               force_velocitybias = autocvar_g_balance_laser_primary_force_velocitybias;
-                                                       }
-
-                                                       vel = targ.velocity;
-                                                       vel_z = 0;
-                                                       vel = normalize(vel) * bound(0, vlen(vel) / force_velocitybiasramp, 1) * force_velocitybias;
-                                                       force =
-                                                               vlen(force)
-                                                               *
-                                                               normalize(normalize(force) + vel);
-
-                                                       force_z *= force_zscale;
+                            if (targ == attacker)
+                            {
+                                vector vel;
+
+                                float force_zscale;
+                                float force_velocitybiasramp;
+                                float force_velocitybias;
+
+                                force_velocitybiasramp = autocvar_sv_maxspeed;
+                                if(deathtype & HITTYPE_SECONDARY)
+                                {
+                                    force_zscale = autocvar_g_balance_laser_secondary_force_zscale;
+                                    force_velocitybias = autocvar_g_balance_laser_secondary_force_velocitybias;
+                                }
+                                else
+                                {
+                                    force_zscale = autocvar_g_balance_laser_primary_force_zscale;
+                                    force_velocitybias = autocvar_g_balance_laser_primary_force_velocitybias;
+                                }
+
+                                vel = targ.velocity;
+                                vel_z = 0;
+                                vel = normalize(vel) * bound(0, vlen(vel) / force_velocitybiasramp, 1) * force_velocitybias;
+                                force =
+                                    vlen(force)
+                                    *
+                                    normalize(normalize(force) + vel);
+
+                                force_z *= force_zscale;
+                            }
+                            else
+                            {
+                                if(deathtype & HITTYPE_SECONDARY)
+                                {
+                                    force *= autocvar_g_balance_laser_secondary_force_other_scale;
+                                }
+                                else
+                                {
+                                    force *= autocvar_g_balance_laser_primary_force_other_scale;
+                                }
+                            }
                                                }
 
                                                //if (targ == attacker)
@@ -1225,6 +1240,10 @@ void Fire_ApplyDamage(entity e)
        if(e.watertype != CONTENT_LAVA)
                e.fire_endtime = 0;
 
+       // ice stops fire
+       if(e.freezetag_frozen)
+               e.fire_endtime = 0;
+
        t = min(frametime, e.fire_endtime - time);
        d = e.fire_damagepersec * t;
 
index bb3a8546480b0001934674521349e5541fd35a56..dd6d73effd8aae382ae92c4d40bf16807faa9b2b 100644 (file)
@@ -332,7 +332,7 @@ void FireGrapplingHook (void)
        if((arena_roundbased && time < warmup) || (time < game_starttime))
                return;
 
-    if(g_freezetag && self.freezetag_frozen)
+    if(self.freezetag_frozen)
         return;
 
        makevectors(self.v_angle);
index f39ed7c2ce00bc8f21657277ba90d8b4666cda15..02d82f27a91cdbfbe579f1e371cb690cc81e2eab 100644 (file)
@@ -311,31 +311,32 @@ void cvar_changes_init()
                BADCVAR("g_forced_team_pink");
 
                // mapinfo
-               BADCVAR("timelimit");
                BADCVAR("fraglimit");
-               BADCVAR("leadlimit");
-               BADCVAR("g_tdm_teams");
-               BADCVAR("g_keyhunt_teams");
-               BADCVAR("g_domination_default_teams");
-               BADCVAR("g_race_qualifying_timelimit");
-               BADCVAR("g_lms");
                BADCVAR("g_arena");
-               BADCVAR("g_ca");
                BADCVAR("g_assault");
+               BADCVAR("g_ca");
                BADCVAR("g_ctf");
+               BADCVAR("g_cts");
                BADCVAR("g_dm");
                BADCVAR("g_domination");
+               BADCVAR("g_domination_default_teams");
                BADCVAR("g_freezetag");
+               BADCVAR("g_keepaway");
                BADCVAR("g_keyhunt");
                BADCVAR("g_keyhunt_teams");
+               BADCVAR("g_keyhunt_teams");
+               BADCVAR("g_lms");
+               BADCVAR("g_nexball");
                BADCVAR("g_onslaught");
                BADCVAR("g_race");
-               BADCVAR("g_cts");
+               BADCVAR("g_race_qualifying_timelimit");
                BADCVAR("g_runematch");
                BADCVAR("g_tdm");
-               BADCVAR("g_nexball");
-               BADCVAR("g_keepaway");
+               BADCVAR("g_tdm_teams");
+               BADCVAR("leadlimit");
+               BADCVAR("nextmap");
                BADCVAR("teamplay");
+               BADCVAR("timelimit");
 
                // long
                BADCVAR("hostname");
index c73f0355f8ad6ba1bd927e53c68e3e457e060d32..aebea7523f66fea9e67d93ee485024bffeb9ff36 100644 (file)
@@ -2,7 +2,7 @@
 void CreatureFrame (void)
 {
        local entity oldself;
-       local float dm, maxspeed;
+       local float dm;
        oldself = self;
        self = findfloat(world, iscreature, TRUE);
        while (self)
@@ -67,9 +67,10 @@ void CreatureFrame (void)
                                self.dmg = 2;
                        }
                        // check for falling damage
+                       float velocity_len = vlen(self.velocity);
                        if(!self.hook.state && !g_ca && !(g_cts && !autocvar_g_cts_selfdamage))
                        {
-                               dm = vlen(self.oldvelocity) - vlen(self.velocity); // dm is now the velocity DECREASE. Velocity INCREASE should never cause a sound or any damage.
+                               dm = vlen(self.oldvelocity) - velocity_len; // dm is now the velocity DECREASE. Velocity INCREASE should never cause a sound or any damage.
                                if (self.deadflag)
                                        dm = (dm - autocvar_g_balance_falldamage_deadminspeed) * autocvar_g_balance_falldamage_factor;
                                else
@@ -78,15 +79,14 @@ void CreatureFrame (void)
                                        Damage (self, world, world, dm, DEATH_FALL, self.origin, '0 0 0');
                        }
 
-                       maxspeed = autocvar_g_maxspeed;
-                       if(maxspeed > 0 && vlen(self.velocity) > maxspeed)
+                       if(autocvar_g_maxspeed > 0 && velocity_len > autocvar_g_maxspeed)
                                Damage (self, world, world, 100000, DEATH_SHOOTING_STAR, self.origin, '0 0 0');
 
                        // play stupid sounds
                        if (g_footsteps)
                        if (!gameover)
                        if (self.flags & FL_ONGROUND)
-                       if (vlen(self.velocity) > autocvar_sv_maxspeed * 0.6)
+                       if (velocity_len > autocvar_sv_maxspeed * 0.6)
                        if (!self.deadflag)
                        if (time < self.lastground + 0.2)
                        {
index 13301a0f7325b3e8dc4cc54ad9e77288d19e431d..e46f749c79fdf0526f8031f2dc9c12360317ecbc 100644 (file)
@@ -232,7 +232,7 @@ void lgbeam_think()
                remove(self);
                return;
        }
-       if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK || (g_freezetag && self.owner.freezetag_frozen))
+       if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK || self.owner.freezetag_frozen)
        {
                if(self == self.owner.lgbeam)
                        self.owner.lgbeam = world;
index 720ab8f82be4d9a79fe1e7a3d043ddec188e01ff..22992dc3cf7a1342362fbce4d1fcc39f3549a168 100644 (file)
@@ -212,9 +212,7 @@ float w_sniperrifle(float req)
        {
                if(self.sniperrifle_bulletcounter < 0) // forced reload (e.g. because interrupted)
                {
-                       if(self.switchweapon == self.weapon)
-                       if(self.weaponentity.state == WS_READY)
-                               W_SniperRifle_Reload();
+            self.wish_reload = 1;
                }
                else
                {
@@ -231,16 +229,32 @@ float w_sniperrifle(float req)
                        {       
                                if (autocvar_g_balance_sniperrifle_secondary)
                                {
-                                       if (weapon_prepareattack_check(1, autocvar_g_balance_sniperrifle_secondary_refire))
-                                       if (time >= self.sniperrifle_accumulator + autocvar_g_balance_sniperrifle_secondary_burstcost)
-                                       {
-                                               weapon_prepareattack_do(1, autocvar_g_balance_sniperrifle_secondary_refire);
-                                               W_SniperRifle_BulletHail(autocvar_g_balance_sniperrifle_secondary_bullethail, W_SniperRifle_Attack2, WFRAME_FIRE2, autocvar_g_balance_sniperrifle_secondary_animtime, autocvar_g_balance_sniperrifle_primary_refire);
-                                               self.sniperrifle_accumulator += autocvar_g_balance_sniperrifle_secondary_burstcost;
-                                       }
+                    if(autocvar_g_balance_sniperrifle_secondary_reload)
+                        self.wish_reload = 1;
+                    else
+                    {
+                        if (weapon_prepareattack_check(1, autocvar_g_balance_sniperrifle_secondary_refire))
+                        if (time >= self.sniperrifle_accumulator + autocvar_g_balance_sniperrifle_secondary_burstcost)
+                        {
+                            weapon_prepareattack_do(1, autocvar_g_balance_sniperrifle_secondary_refire);
+                            W_SniperRifle_BulletHail(autocvar_g_balance_sniperrifle_secondary_bullethail, W_SniperRifle_Attack2, WFRAME_FIRE2, autocvar_g_balance_sniperrifle_secondary_animtime, autocvar_g_balance_sniperrifle_primary_refire);
+                            self.sniperrifle_accumulator += autocvar_g_balance_sniperrifle_secondary_burstcost;
+                        }
+                    }
                                }
                        }
                }
+        if(self.wish_reload)
+        {
+            if(self.switchweapon == self.weapon)
+            {
+                if(self.weaponentity.state == WS_READY)
+                {
+                    self.wish_reload = 0;
+                    W_SniperRifle_Reload();
+                }
+            }
+        }
        }
        else if (req == WR_PRECACHE)
        {
@@ -266,7 +280,7 @@ float w_sniperrifle(float req)
                return self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo;
        else if (req == WR_RELOAD)
        {
-               W_SniperRifle_Reload();
+        self.wish_reload = 1;
        }
        else if (req == WR_RESETPLAYER)
        {