]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into terencehill/gameover_stuff
authorMario <mario@smbclan.net>
Mon, 17 Oct 2016 13:43:14 +0000 (23:43 +1000)
committerMario <mario@smbclan.net>
Mon, 17 Oct 2016 13:43:14 +0000 (23:43 +1000)
# Conflicts:
# notifications.cfg

115 files changed:
.gitlab-ci.yml
_hud_common.cfg
bal-wep-mario.cfg
bal-wep-nexuiz25.cfg
bal-wep-overkill.cfg
bal-wep-samual.cfg
bal-wep-xdf.cfg
bal-wep-xonotic.cfg
bal-wep-xpm.cfg
balance-overkill.cfg
defaultXonotic.cfg
gamemodes.cfg
gfx/menu/luma/icon_mod_jeff.tga [new file with mode: 0644]
gfx/menu/luminos/icon_mod_jeff.tga [new file with mode: 0644]
gfx/menu/wickedx/icon_mod_jeff.tga [new file with mode: 0644]
gfx/menu/xaw/icon_mod_jeff.tga [new file with mode: 0644]
minigames.cfg
mutators.cfg
notifications.cfg
physics.cfg
physicsCPMA.cfg
physicsFruit.cfg
physicsHavoc.cfg
physicsLeeStricklin-ModdedFruit.cfg
physicsLeeStricklin.cfg
physicsLeeStricklinOld.cfg
physicsLzd.cfg
physicsNexuiz10.cfg
physicsNexuiz11.cfg
physicsNexuiz151.cfg
physicsNexuiz151b.cfg
physicsNexuiz16rc1.cfg
physicsNexuiz20.cfg
physicsNexuiz25.cfg
physicsNexuiz26.cfg
physicsNoQWBunny-nexbased.cfg
physicsQ.cfg
physicsQ2.cfg
physicsQ2a.cfg
physicsQ3.cfg
physicsQBF.cfg
physicsQBFplus.cfg
physicsSamual.cfg
physicsWarsow.cfg
physicsWarsowClassicBunny.cfg
physicsWarsowDev.cfg
physicsX.cfg
physicsX010.cfg
physicsX07.cfg
physicsXDF.cfg
physicsXDFLight.cfg
qcsrc/client/autocvars.qh
qcsrc/client/csqcmodel_hooks.qc
qcsrc/client/hud/panel/centerprint.qc
qcsrc/client/hud/panel/scoreboard.qc
qcsrc/client/mutators/events.qh
qcsrc/client/wall.qc
qcsrc/common/constants.qh
qcsrc/common/ent_cs.qc
qcsrc/common/gamemodes/gamemode/nexball/nexball.qc
qcsrc/common/gamemodes/gamemode/onslaught/sv_onslaught.qc
qcsrc/common/minigames/minigame/snake.qc
qcsrc/common/minigames/minigame/ttt.qc
qcsrc/common/monsters/sv_monsters.qc
qcsrc/common/monsters/sv_spawn.qc
qcsrc/common/monsters/sv_spawn.qh
qcsrc/common/mutators/mutator/buffs/sv_buffs.qc
qcsrc/common/mutators/mutator/instagib/sv_instagib.qc
qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc
qcsrc/common/mutators/mutator/nades/nades.qc
qcsrc/common/mutators/mutator/nix/sv_nix.qc
qcsrc/common/mutators/mutator/overkill/sv_overkill.qc
qcsrc/common/mutators/mutator/spawn_near_teammate/sv_spawn_near_teammate.qc
qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc
qcsrc/common/mutators/mutator/waypoints/waypointsprites.qh
qcsrc/common/notifications/all.inc
qcsrc/common/notifications/all.qh
qcsrc/common/physics/movetypes/movetypes.qh
qcsrc/common/physics/player.qc
qcsrc/common/physics/player.qh
qcsrc/common/stats.qh
qcsrc/common/t_items.qc
qcsrc/common/t_items.qh
qcsrc/common/triggers/func/breakable.qc
qcsrc/common/triggers/teleporters.qc
qcsrc/common/triggers/trigger/delay.qc
qcsrc/common/triggers/trigger/jumppads.qc
qcsrc/common/triggers/triggers.qc
qcsrc/common/turrets/cl_turrets.qc
qcsrc/common/weapons/all.qc
qcsrc/common/weapons/weapon/devastator.qc
qcsrc/common/weapons/weapon/fireball.qc
qcsrc/common/weapons/weapon/hook.qc
qcsrc/ecs/systems/cl_physics.qc
qcsrc/ecs/systems/physics.qc
qcsrc/lib/csqcmodel/cl_model.qc
qcsrc/lib/random.qc
qcsrc/lib/random.qh
qcsrc/menu/xonotic/dialog_settings_misc.qc
qcsrc/server/autocvars.qh
qcsrc/server/bot/default/bot.qc
qcsrc/server/cheats.qc
qcsrc/server/client.qc
qcsrc/server/command/common.qc
qcsrc/server/defs.qh
qcsrc/server/g_damage.qc
qcsrc/server/g_models.qc
qcsrc/server/g_world.qc
qcsrc/server/mapvoting.qc
qcsrc/server/mutators/events.qh
qcsrc/server/mutators/mutator/gamemode_cts.qc
qcsrc/server/mutators/mutator/gamemode_freezetag.qc
qcsrc/server/mutators/mutator/gamemode_invasion.qc
qcsrc/server/spawnpoints.qc
qcsrc/server/teamplay.qc

index 2d4c2cc5642b8f514adad161fc9052c318f00af9..ca68171be7bd7725de37c58f8c34bdb120894ef6 100644 (file)
@@ -30,7 +30,7 @@ test_sv_game:
     - wget -O data/maps/g-23.waypoints.cache https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/g-23.waypoints.cache
     - wget -O data/maps/g-23.waypoints.hardwired https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/g-23.waypoints.hardwired
     - make
-    - EXPECT=cc5f9dd607764a67822f4db73fd53dc0
+    - EXPECT=f17c2b4e7a8619ff77983de267669802
     - HASH=$(${ENGINE} -noconfig -nohome +exec serverbench.cfg
       | tee /dev/stderr
       | grep '^:'
index 2d8c5523511574a2f1b36d54784cf719a26edc40..c7befdd232dd79479a9c2a7b54c81120e9708150 100644 (file)
@@ -92,7 +92,7 @@ seta hud_panel_engineinfo_framecounter_exponentialmovingaverage_new_weight 0.1 "
 seta hud_panel_engineinfo_framecounter_exponentialmovingaverage_instantupdate_change_threshold 0.5 "threshold for fps change when to update instantly, to make big fps changes update faster"
 
 seta hud_panel_physics_acceleration_movingaverage 1 "use an averaging method for calculating acceleration instead of the real value"
-seta hud_panel_phisics_update_interval 0.0666 "how often (in seconds) numeric values get updated on screen"
+seta hud_panel_physics_update_interval 0.0666 "how often (in seconds) numeric values get updated on screen"
 seta hud_panel_physics_speed_unit "1" "speed unit (1 = qu/s, 2 = m/s, 3 = km/h, 4 = mph, 5 = knots)"
 
 seta hud_panel_itemstime_progressbar_maxtime "30" "when left time is at least this amount, the status bar is full"
index 1470c3326bc1783f662b95e6aeb127771491b04a..d3b106640d4514fe19e94e87fb687a0e09baf3c7 100644 (file)
@@ -92,7 +92,7 @@ set g_balance_machinegun_sustained_refire 0.1
 set g_balance_machinegun_sustained_spread 0.03
 set g_balance_machinegun_switchdelay_drop 0.2
 set g_balance_machinegun_switchdelay_raise 0.2
-set g_balance_machinegun_weaponreplace "arc"
+set g_balance_machinegun_weaponreplace ""
 set g_balance_machinegun_weaponstart 0
 set g_balance_machinegun_weaponstartoverride -1
 set g_balance_machinegun_weaponthrowable 1
@@ -260,9 +260,9 @@ set g_balance_crylink_secondary_ammo 2
 set g_balance_crylink_secondary_animtime 0.2
 set g_balance_crylink_secondary_bouncedamagefactor 0.5
 set g_balance_crylink_secondary_bounces 0
-set g_balance_crylink_secondary_damage 35
+set g_balance_crylink_secondary_damage 10
 set g_balance_crylink_secondary_edgedamage 5
-set g_balance_crylink_secondary_force -300
+set g_balance_crylink_secondary_force -250
 set g_balance_crylink_secondary_joindelay 0
 set g_balance_crylink_secondary_joinexplode 0
 set g_balance_crylink_secondary_joinexplode_damage 0
@@ -277,7 +277,7 @@ set g_balance_crylink_secondary_other_fadetime 5
 set g_balance_crylink_secondary_other_lifetime 5
 set g_balance_crylink_secondary_radius 100
 set g_balance_crylink_secondary_refire 0.7
-set g_balance_crylink_secondary_shots 1
+set g_balance_crylink_secondary_shots 5
 set g_balance_crylink_secondary_speed 3000
 set g_balance_crylink_secondary_spread 0.01
 set g_balance_crylink_secondary_spreadtype 1
@@ -397,10 +397,11 @@ set g_balance_devastator_reload_ammo 0
 set g_balance_devastator_reload_time 2
 set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
-set g_balance_devastator_remote_force 450
+set g_balance_devastator_remote_force 300
 set g_balance_devastator_remote_jump_damage 70
-set g_balance_devastator_remote_jump_radius 0
-set g_balance_devastator_remote_jump_velocity_z_add 400
+set g_balance_devastator_remote_jump_force 450
+set g_balance_devastator_remote_jump_radius 100
+set g_balance_devastator_remote_jump_velocity_z_add 0
 set g_balance_devastator_remote_jump_velocity_z_max 1500
 set g_balance_devastator_remote_jump_velocity_z_min 400
 set g_balance_devastator_remote_radius 110
index d4b47594d7061462769246cb79af1a180c4b84d1..41c9081b92d80a0df3b7252dbf1a65fa7c385e83 100644 (file)
@@ -399,6 +399,7 @@ set g_balance_devastator_remote_damage 105
 set g_balance_devastator_remote_edgedamage 40
 set g_balance_devastator_remote_force 600
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 0
 set g_balance_devastator_remote_jump_radius 0
 set g_balance_devastator_remote_jump_velocity_z_add 400
 set g_balance_devastator_remote_jump_velocity_z_max 1500
index d7463338aa0f2746550ab2c40468fa8838e89e7a..82609a76ca5ed4158e0c210b839025792de15e96 100644 (file)
@@ -84,7 +84,7 @@ set g_balance_machinegun_reload_time 1.5
 set g_balance_machinegun_solidpenetration 13.1
 set g_balance_machinegun_spread_add 0.012
 set g_balance_machinegun_spread_max 0.05
-set g_balance_machinegun_spread_min 0.02
+set g_balance_machinegun_spread_min 0
 set g_balance_machinegun_sustained_ammo 1
 set g_balance_machinegun_sustained_damage 25
 set g_balance_machinegun_sustained_force 5
@@ -302,7 +302,7 @@ set g_balance_vortex_charge_shot_multiplier 0
 set g_balance_vortex_charge_start 0.5
 set g_balance_vortex_charge_velocity_rate 0
 set g_balance_vortex_primary_ammo 10
-set g_balance_vortex_primary_animtime 0.95
+set g_balance_vortex_primary_animtime 0.65
 set g_balance_vortex_primary_damage 100
 set g_balance_vortex_primary_damagefalloff_forcehalflife 0
 set g_balance_vortex_primary_damagefalloff_halflife 0
@@ -325,8 +325,8 @@ set g_balance_vortex_secondary_damagefalloff_maxdist 0
 set g_balance_vortex_secondary_damagefalloff_mindist 0
 set g_balance_vortex_secondary_force 0
 set g_balance_vortex_secondary_refire 0
-set g_balance_vortex_switchdelay_drop 0.25
-set g_balance_vortex_switchdelay_raise 0.25
+set g_balance_vortex_switchdelay_drop 0.2
+set g_balance_vortex_switchdelay_raise 0.2
 set g_balance_vortex_weaponreplace ""
 set g_balance_vortex_weaponstart 0
 set g_balance_vortex_weaponstartoverride -1
@@ -399,6 +399,7 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 300
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 0
 set g_balance_devastator_remote_jump_radius 0
 set g_balance_devastator_remote_jump_velocity_z_add 400
 set g_balance_devastator_remote_jump_velocity_z_max 1500
@@ -777,15 +778,15 @@ set g_balance_arc_weaponthrowable 1
 // }}}
 // {{{ #21: Heavy Machine Gun
 set g_balance_hmg_ammo 1
-set g_balance_hmg_damage 10
-set g_balance_hmg_force 5
+set g_balance_hmg_damage 30
+set g_balance_hmg_force 10
 set g_balance_hmg_refire 0.05
 set g_balance_hmg_reload_ammo 120
 set g_balance_hmg_reload_time 1
 set g_balance_hmg_solidpenetration 32
-set g_balance_hmg_spread_add 0.01
-set g_balance_hmg_spread_max 0.05
-set g_balance_hmg_spread_min 0.02
+set g_balance_hmg_spread_add 0.005
+set g_balance_hmg_spread_max 0.06
+set g_balance_hmg_spread_min 0.01
 set g_balance_hmg_switchdelay_drop 0.2
 set g_balance_hmg_switchdelay_raise 0.2
 set g_balance_hmg_weaponreplace ""
index fe3b9ed8711e62bb64ba564310ae573008677f6c..99edec78b8da1c543470adffdd3a155e967f6a5a 100644 (file)
@@ -465,6 +465,7 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 400
 set g_balance_devastator_remote_jump_damage 40
+set g_balance_devastator_remote_jump_force 0
 set g_balance_devastator_remote_jump_radius 200
 set g_balance_devastator_remote_jump_velocity_z_add 500
 set g_balance_devastator_remote_jump_velocity_z_max 1500
index c9bdb2aa367e5b11629c5778825d3c895e4f0539..95ac919b6a9e5d3c5d74e4a92771d47d1c9a5768 100644 (file)
@@ -399,6 +399,7 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 350
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 0
 set g_balance_devastator_remote_jump_radius 0
 set g_balance_devastator_remote_jump_velocity_z_add 400
 set g_balance_devastator_remote_jump_velocity_z_max 1500
index 64d79e150aee00e1e9abfbb90d420edede443993..9e1f4cb5ed7596d6c22659ef11759adeb2390661 100644 (file)
@@ -193,7 +193,7 @@ set g_balance_electro_primary_force 200
 set g_balance_electro_primary_lifetime 5
 set g_balance_electro_primary_midaircombo_explode 1
 set g_balance_electro_primary_midaircombo_interval 0.1
-set g_balance_electro_primary_midaircombo_radius 150
+set g_balance_electro_primary_midaircombo_radius 0
 set g_balance_electro_primary_radius 100
 set g_balance_electro_primary_refire 0.6
 set g_balance_electro_primary_speed 2500
@@ -218,7 +218,7 @@ set g_balance_electro_secondary_refire2 1.6
 set g_balance_electro_secondary_speed 1000
 set g_balance_electro_secondary_speed_up 200
 set g_balance_electro_secondary_speed_z 0
-set g_balance_electro_secondary_spread 0.04
+set g_balance_electro_secondary_spread 0
 set g_balance_electro_secondary_stick 0
 set g_balance_electro_secondary_touchexplode 1
 set g_balance_electro_switchdelay_drop 0.2
@@ -325,8 +325,8 @@ set g_balance_vortex_secondary_damagefalloff_maxdist 0
 set g_balance_vortex_secondary_damagefalloff_mindist 0
 set g_balance_vortex_secondary_force 0
 set g_balance_vortex_secondary_refire 0
-set g_balance_vortex_switchdelay_drop 0.25
-set g_balance_vortex_switchdelay_raise 0.25
+set g_balance_vortex_switchdelay_drop 0.2
+set g_balance_vortex_switchdelay_raise 0.2
 set g_balance_vortex_weaponreplace ""
 set g_balance_vortex_weaponstart 0
 set g_balance_vortex_weaponstartoverride -1
@@ -343,7 +343,7 @@ set g_balance_hagar_primary_lifetime 5
 set g_balance_hagar_primary_radius 65
 set g_balance_hagar_primary_refire 0.16667
 set g_balance_hagar_primary_speed 2200
-set g_balance_hagar_primary_spread 0.03
+set g_balance_hagar_primary_spread 0
 set g_balance_hagar_reload_ammo 0
 set g_balance_hagar_reload_time 2
 set g_balance_hagar_secondary 1
@@ -368,7 +368,7 @@ set g_balance_hagar_secondary_load_spread_bias 0.5
 set g_balance_hagar_secondary_radius 80
 set g_balance_hagar_secondary_refire 0.5
 set g_balance_hagar_secondary_speed 2000
-set g_balance_hagar_secondary_spread 0.05
+set g_balance_hagar_secondary_spread 0
 set g_balance_hagar_switchdelay_drop 0.2
 set g_balance_hagar_switchdelay_raise 0.2
 set g_balance_hagar_weaponreplace ""
@@ -399,8 +399,9 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 300
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 450
 set g_balance_devastator_remote_jump_radius 0
-set g_balance_devastator_remote_jump_velocity_z_add 400
+set g_balance_devastator_remote_jump_velocity_z_add 0
 set g_balance_devastator_remote_jump_velocity_z_max 1500
 set g_balance_devastator_remote_jump_velocity_z_min 400
 set g_balance_devastator_remote_radius 110
@@ -676,23 +677,23 @@ set g_balance_seeker_weaponthrowable 1
 // }}}
 // {{{ #19: Shockwave (MUTATOR WEAPON)
 set g_balance_shockwave_blast_animtime 0.3
-set g_balance_shockwave_blast_damage 20
+set g_balance_shockwave_blast_damage 40
 set g_balance_shockwave_blast_distance 1000
 set g_balance_shockwave_blast_edgedamage 0
-set g_balance_shockwave_blast_force 200
+set g_balance_shockwave_blast_force 15
 set g_balance_shockwave_blast_force_forwardbias 50
-set g_balance_shockwave_blast_force_zscale 2
+set g_balance_shockwave_blast_force_zscale 1
 set g_balance_shockwave_blast_jump_damage 20
 set g_balance_shockwave_blast_jump_edgedamage 0
-set g_balance_shockwave_blast_jump_force 300
-set g_balance_shockwave_blast_jump_force_velocitybias 0
-set g_balance_shockwave_blast_jump_force_zscale 1.25
+set g_balance_shockwave_blast_jump_force 100
+set g_balance_shockwave_blast_jump_force_velocitybias 1
+set g_balance_shockwave_blast_jump_force_zscale 1
 set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
 set g_balance_shockwave_blast_jump_multiplier_distance 0.5
 set g_balance_shockwave_blast_jump_multiplier_min 0
 set g_balance_shockwave_blast_jump_radius 150
-set g_balance_shockwave_blast_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_multiplier_distance 0.5
+set g_balance_shockwave_blast_multiplier_accuracy 0.45
+set g_balance_shockwave_blast_multiplier_distance 0.2
 set g_balance_shockwave_blast_multiplier_min 0
 set g_balance_shockwave_blast_refire 0.75
 set g_balance_shockwave_blast_splash_damage 15
@@ -727,16 +728,16 @@ set g_balance_shockwave_weaponthrowable 0
 // }}}
 // {{{ #20: Arc
 set g_balance_arc_beam_ammo 6
-set g_balance_arc_beam_animtime 0.2
+set g_balance_arc_beam_animtime 0.1
 set g_balance_arc_beam_botaimlifetime 0
 set g_balance_arc_beam_botaimspeed 0
-set g_balance_arc_beam_damage 115
+set g_balance_arc_beam_damage 100
 set g_balance_arc_beam_degreespersegment 1
 set g_balance_arc_beam_distancepersegment 0
 set g_balance_arc_beam_falloff_halflifedist 0
 set g_balance_arc_beam_falloff_maxdist 0
 set g_balance_arc_beam_falloff_mindist 0
-set g_balance_arc_beam_force 900
+set g_balance_arc_beam_force 600
 set g_balance_arc_beam_healing_amax 0
 set g_balance_arc_beam_healing_aps 50
 set g_balance_arc_beam_healing_hmax 150
@@ -745,8 +746,8 @@ set g_balance_arc_cooldown 2.5
 set g_balance_arc_cooldown_release 0
 set g_balance_arc_overheat_max 5
 set g_balance_arc_overheat_min 3
-set g_balance_arc_beam_heat 0.75
-set g_balance_arc_burst_heat 4
+set g_balance_arc_beam_heat 0
+set g_balance_arc_burst_heat 5
 set g_balance_arc_beam_maxangle 10
 set g_balance_arc_beam_nonplayerdamage 80
 set g_balance_arc_beam_range 1000
@@ -763,7 +764,7 @@ set g_balance_arc_bolt_health 15
 set g_balance_arc_bolt_lifetime 5
 set g_balance_arc_bolt_radius 65
 set g_balance_arc_bolt_refire 0.16667
-set g_balance_arc_bolt_speed 2200
+set g_balance_arc_bolt_speed 2300
 set g_balance_arc_bolt_spread 0
 set g_balance_arc_burst_ammo 15
 set g_balance_arc_burst_damage 250
index 64d79e150aee00e1e9abfbb90d420edede443993..9e1f4cb5ed7596d6c22659ef11759adeb2390661 100644 (file)
@@ -193,7 +193,7 @@ set g_balance_electro_primary_force 200
 set g_balance_electro_primary_lifetime 5
 set g_balance_electro_primary_midaircombo_explode 1
 set g_balance_electro_primary_midaircombo_interval 0.1
-set g_balance_electro_primary_midaircombo_radius 150
+set g_balance_electro_primary_midaircombo_radius 0
 set g_balance_electro_primary_radius 100
 set g_balance_electro_primary_refire 0.6
 set g_balance_electro_primary_speed 2500
@@ -218,7 +218,7 @@ set g_balance_electro_secondary_refire2 1.6
 set g_balance_electro_secondary_speed 1000
 set g_balance_electro_secondary_speed_up 200
 set g_balance_electro_secondary_speed_z 0
-set g_balance_electro_secondary_spread 0.04
+set g_balance_electro_secondary_spread 0
 set g_balance_electro_secondary_stick 0
 set g_balance_electro_secondary_touchexplode 1
 set g_balance_electro_switchdelay_drop 0.2
@@ -325,8 +325,8 @@ set g_balance_vortex_secondary_damagefalloff_maxdist 0
 set g_balance_vortex_secondary_damagefalloff_mindist 0
 set g_balance_vortex_secondary_force 0
 set g_balance_vortex_secondary_refire 0
-set g_balance_vortex_switchdelay_drop 0.25
-set g_balance_vortex_switchdelay_raise 0.25
+set g_balance_vortex_switchdelay_drop 0.2
+set g_balance_vortex_switchdelay_raise 0.2
 set g_balance_vortex_weaponreplace ""
 set g_balance_vortex_weaponstart 0
 set g_balance_vortex_weaponstartoverride -1
@@ -343,7 +343,7 @@ set g_balance_hagar_primary_lifetime 5
 set g_balance_hagar_primary_radius 65
 set g_balance_hagar_primary_refire 0.16667
 set g_balance_hagar_primary_speed 2200
-set g_balance_hagar_primary_spread 0.03
+set g_balance_hagar_primary_spread 0
 set g_balance_hagar_reload_ammo 0
 set g_balance_hagar_reload_time 2
 set g_balance_hagar_secondary 1
@@ -368,7 +368,7 @@ set g_balance_hagar_secondary_load_spread_bias 0.5
 set g_balance_hagar_secondary_radius 80
 set g_balance_hagar_secondary_refire 0.5
 set g_balance_hagar_secondary_speed 2000
-set g_balance_hagar_secondary_spread 0.05
+set g_balance_hagar_secondary_spread 0
 set g_balance_hagar_switchdelay_drop 0.2
 set g_balance_hagar_switchdelay_raise 0.2
 set g_balance_hagar_weaponreplace ""
@@ -399,8 +399,9 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 300
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 450
 set g_balance_devastator_remote_jump_radius 0
-set g_balance_devastator_remote_jump_velocity_z_add 400
+set g_balance_devastator_remote_jump_velocity_z_add 0
 set g_balance_devastator_remote_jump_velocity_z_max 1500
 set g_balance_devastator_remote_jump_velocity_z_min 400
 set g_balance_devastator_remote_radius 110
@@ -676,23 +677,23 @@ set g_balance_seeker_weaponthrowable 1
 // }}}
 // {{{ #19: Shockwave (MUTATOR WEAPON)
 set g_balance_shockwave_blast_animtime 0.3
-set g_balance_shockwave_blast_damage 20
+set g_balance_shockwave_blast_damage 40
 set g_balance_shockwave_blast_distance 1000
 set g_balance_shockwave_blast_edgedamage 0
-set g_balance_shockwave_blast_force 200
+set g_balance_shockwave_blast_force 15
 set g_balance_shockwave_blast_force_forwardbias 50
-set g_balance_shockwave_blast_force_zscale 2
+set g_balance_shockwave_blast_force_zscale 1
 set g_balance_shockwave_blast_jump_damage 20
 set g_balance_shockwave_blast_jump_edgedamage 0
-set g_balance_shockwave_blast_jump_force 300
-set g_balance_shockwave_blast_jump_force_velocitybias 0
-set g_balance_shockwave_blast_jump_force_zscale 1.25
+set g_balance_shockwave_blast_jump_force 100
+set g_balance_shockwave_blast_jump_force_velocitybias 1
+set g_balance_shockwave_blast_jump_force_zscale 1
 set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
 set g_balance_shockwave_blast_jump_multiplier_distance 0.5
 set g_balance_shockwave_blast_jump_multiplier_min 0
 set g_balance_shockwave_blast_jump_radius 150
-set g_balance_shockwave_blast_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_multiplier_distance 0.5
+set g_balance_shockwave_blast_multiplier_accuracy 0.45
+set g_balance_shockwave_blast_multiplier_distance 0.2
 set g_balance_shockwave_blast_multiplier_min 0
 set g_balance_shockwave_blast_refire 0.75
 set g_balance_shockwave_blast_splash_damage 15
@@ -727,16 +728,16 @@ set g_balance_shockwave_weaponthrowable 0
 // }}}
 // {{{ #20: Arc
 set g_balance_arc_beam_ammo 6
-set g_balance_arc_beam_animtime 0.2
+set g_balance_arc_beam_animtime 0.1
 set g_balance_arc_beam_botaimlifetime 0
 set g_balance_arc_beam_botaimspeed 0
-set g_balance_arc_beam_damage 115
+set g_balance_arc_beam_damage 100
 set g_balance_arc_beam_degreespersegment 1
 set g_balance_arc_beam_distancepersegment 0
 set g_balance_arc_beam_falloff_halflifedist 0
 set g_balance_arc_beam_falloff_maxdist 0
 set g_balance_arc_beam_falloff_mindist 0
-set g_balance_arc_beam_force 900
+set g_balance_arc_beam_force 600
 set g_balance_arc_beam_healing_amax 0
 set g_balance_arc_beam_healing_aps 50
 set g_balance_arc_beam_healing_hmax 150
@@ -745,8 +746,8 @@ set g_balance_arc_cooldown 2.5
 set g_balance_arc_cooldown_release 0
 set g_balance_arc_overheat_max 5
 set g_balance_arc_overheat_min 3
-set g_balance_arc_beam_heat 0.75
-set g_balance_arc_burst_heat 4
+set g_balance_arc_beam_heat 0
+set g_balance_arc_burst_heat 5
 set g_balance_arc_beam_maxangle 10
 set g_balance_arc_beam_nonplayerdamage 80
 set g_balance_arc_beam_range 1000
@@ -763,7 +764,7 @@ set g_balance_arc_bolt_health 15
 set g_balance_arc_bolt_lifetime 5
 set g_balance_arc_bolt_radius 65
 set g_balance_arc_bolt_refire 0.16667
-set g_balance_arc_bolt_speed 2200
+set g_balance_arc_bolt_speed 2300
 set g_balance_arc_bolt_spread 0
 set g_balance_arc_burst_ammo 15
 set g_balance_arc_burst_damage 250
index 7571001c67d01b143ab62216856087ff4b304a98..c55241962ba5817ff3d0e4df00fb09a3d023ece6 100644 (file)
@@ -65,15 +65,15 @@ set g_pickup_fuel_jetpack 100
 set g_pickup_fuel_max 100
 set g_pickup_armorsmall 5
 set g_pickup_armorsmall_max 20
-set g_pickup_armorsmall_anyway 0
+set g_pickup_armorsmall_anyway 1
 set g_pickup_armormedium 25
-set g_pickup_armormedium_max 200
+set g_pickup_armormedium_max 100
 set g_pickup_armormedium_anyway 1
 set g_pickup_armorbig 50
-set g_pickup_armorbig_max 200
+set g_pickup_armorbig_max 100
 set g_pickup_armorbig_anyway 1
 set g_pickup_armorlarge 100
-set g_pickup_armorlarge_max 200
+set g_pickup_armorlarge_max 100
 set g_pickup_armorlarge_anyway 1
 set g_pickup_healthsmall 5
 set g_pickup_healthsmall_max 200
@@ -119,12 +119,12 @@ set g_balance_armor_regen 0
 set g_balance_armor_regenlinear 0
 set g_balance_armor_rot 0
 set g_balance_armor_rotlinear 1
-set g_balance_pause_armor_rot 1
+set g_balance_pause_armor_rot 5
 set g_balance_pause_armor_rot_spawn 5
 set g_balance_armor_regenstable 100
 set g_balance_armor_rotstable 0
 set g_balance_armor_limit 999
-set g_balance_armor_blockpercent 0.7
+set g_balance_armor_blockpercent 0.6
 set g_balance_fuel_regen 0.1 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)"
 set g_balance_fuel_regenlinear 0
 set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen counter
index 9055264dd6042d03c6fff5d6107317b5d86834be..8eaf852e7f7318864ddebdc7cfcdccb76ec358fe 100644 (file)
@@ -79,12 +79,14 @@ seta cl_zoomsensitivity 0   "how zoom changes sensitivity (0 = weakest, 1 = strong
 seta cl_unpress_zoom_on_spawn 1 "automatically unpress zoom when you spawn"
 seta cl_unpress_zoom_on_death 1 "automatically unpress zoom when you die (and don't allow zoom again while dead)"
 seta cl_unpress_zoom_on_weapon_switch 1 "automatically unpress zoom when you switch a weapon"
-seta cl_unpress_attack_on_weapon_switch 1 "automatically unpress fire and fire1 attack buttons when you switch a weapon"
+seta cl_unpress_attack_on_weapon_switch 0 "automatically unpress fire and fire1 attack buttons when you switch a weapon"
 
 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" // managed by effects-.cfg files
+seta cl_spawn_point_dist_min 1200
+seta cl_spawn_point_dist_max 1600
 
 freelook 1
 sensitivity 6
@@ -287,6 +289,10 @@ set sv_gibhealth 100 "Minus health a dead body must have in order to get gibbed"
 set sv_friction_on_land 0
 set sv_friction_slick 0.5
 
+set sv_slick_applygravity 0
+
+set sv_aircontrol_backwards 0 "apply forward aircontrol options to backward movement"
+
 set sv_player_viewoffset "0 0 35" "view offset of the player model"
 set sv_player_mins "-16 -16 -24" "playermodel mins"
 set sv_player_maxs "16 16 45" "playermodel maxs"
@@ -682,7 +688,8 @@ alias sv_fbskin_off "sv_defaultcharacter 0; sv_defaultplayerskin 0; sv_defaultpl
 seta sv_servermodelsonly 1
 
 cl_curl_enabled 1
-cl_curl_maxspeed 500
+cl_curl_maxdownloads 3
+cl_curl_maxspeed 0
 cl_curl_useragent 1
 cl_curl_useragent_append "$g_xonoticversion"
 
@@ -694,7 +701,7 @@ set sv_motd ""
 set g_waypoints_for_items 0    "make waypoints out of items, values: 0 = never, 1 = unless the mapper prevents it by worldspawn.spawnflags & 1, 2 = always"
 
 seta g_maplist_votable 6 "number of maps that are shown in the map voting at the end of a match"
-seta g_maplist_votable_keeptwotime 15
+seta g_maplist_votable_keeptwotime 15 "show only 2 options after this amount of time during map vote screen"
 seta g_maplist_votable_timeout 30      "timeout for the map voting; must be below 50 seconds!"
 seta g_maplist_votable_suggestions 2
 seta g_maplist_votable_suggestions_override_mostrecent 0
@@ -703,7 +710,7 @@ seta g_maplist_votable_abstain 0    "when 1, you can abstain from your vote"
 seta g_maplist_votable_screenshot_dir "maps levelshots"        "where to look for map screenshots"
 
 set sv_vote_gametype 0 "show a vote screen for gametypes before map vote screen"
-set sv_vote_gametype_keeptwotime 10 "show only 2 options for this amount of time during gametype vote screen"
+set sv_vote_gametype_keeptwotime 10 "show only 2 options after this amount of time during gametype vote screen"
 set sv_vote_gametype_options "dm ctf ca lms tdm ft"
 set sv_vote_gametype_timeout 20
 set sv_vote_gametype_default_current 1 "Keep the current gametype if no one votes"
@@ -887,7 +894,7 @@ seta menu_slist_categories_CAT_FAVORITED_override ""
 seta menu_slist_categories_CAT_RECOMMENDED_override ""
 seta menu_slist_categories_CAT_NORMAL_override ""
 seta menu_slist_categories_CAT_SERVERS_override "CAT_NORMAL"
-seta menu_slist_categories_CAT_XPM_override "CAT_NORMAL"
+seta menu_slist_categories_CAT_XPM_override ""
 seta menu_slist_categories_CAT_MODIFIED_override ""
 seta menu_slist_categories_CAT_OVERKILL_override ""
 seta menu_slist_categories_CAT_INSTAGIB_override ""
@@ -1448,6 +1455,8 @@ alias menu_sync "menu_cmd sync"
 set sv_join_notices ""
 set sv_join_notices_time 15
 
+seta cl_items_nofade 0
+seta cl_animate_items 1
 seta cl_ghost_items 0.45 "enable ghosted items (when between 0 and 1, overrides the alpha value)"
 seta cl_ghost_items_color "-1 -1 -1" "color of ghosted items, 0 0 0 leaves the color unchanged"
 set sv_simple_items 1 "allow or forbid client use of simple items"
index add2332726f51f1eb52df2f2e495a9be791f0693..71f0dc1792200bea112c846ba847e47c7526bf29 100644 (file)
@@ -259,9 +259,10 @@ set g_ctf_oneflag_reverse 0 "apply reverse mode to oneflag CTF (take flag to ene
 set g_ctf_flag_return 1 "auto return the flag to base when touched by a teammate"
 set g_ctf_flag_return_carrying 0 "(manual return mode) auto return the flag to base if touched by a flag carrier"
 set g_ctf_flag_return_carried_radius 100 "allow flags to be returned by carrier if base is within this radius"
-set g_ctf_flag_return_time 15
-set g_ctf_flag_return_dropped 100
-set g_ctf_flag_return_damage 0
+set g_ctf_flag_return_time 15 "automatically return the flag to base after this amount of time"
+set g_ctf_flag_return_dropped 100 "automatically return the flag to base if dropped within this distance from base (in qu)"
+set g_ctf_flag_return_damage 0 "allow the flag to be damaged, reducing time needed to automatically return to base"
+set g_ctf_flag_return_damage_delay 0 "how much time the flag takes to automatically return to base if it falls into lava/slime/trigger hurt"
 set g_ctf_flag_return_when_unreachable 1 "automatically return the flag if it falls into lava/slime/trigger hurt"
 set g_ctf_flagcarrier_auto_helpme_damage 100 "automatically place a helpme notification on flag carrier waypointsprite if they get hit and their health dips below this value"
 set g_ctf_flagcarrier_auto_helpme_time 2 "antispam time for the helpme notification"
@@ -488,6 +489,7 @@ set g_nexball_sound_bounce   1    "bouncing sound (0: off)"
 set g_nexball_basketball_trail  1  "1 to leave a trail"
 set g_nexball_football_trail    0  "1 to leave a trail"
 set g_nexball_trail_color     254  "1-256 for different colors (Quake palette, 254 is white)"
+set g_nexball_playerclip_collisions 1 "make the ball bounce off clips"
 set g_nexball_radar_showallplayers 1  "1: show every player and the ball on the radar  0: only show teammates and the ball on the radar"
 seta g_nexball_safepass_maxdist 5000 "Max distance to allow save fassping (0 to turn off safe passing)"
 seta g_nexball_safepass_turnrate 0.1 "How fast the safe-pass ball can habge direction"
diff --git a/gfx/menu/luma/icon_mod_jeff.tga b/gfx/menu/luma/icon_mod_jeff.tga
new file mode 100644 (file)
index 0000000..ba3080a
Binary files /dev/null and b/gfx/menu/luma/icon_mod_jeff.tga differ
diff --git a/gfx/menu/luminos/icon_mod_jeff.tga b/gfx/menu/luminos/icon_mod_jeff.tga
new file mode 100644 (file)
index 0000000..4bf904b
Binary files /dev/null and b/gfx/menu/luminos/icon_mod_jeff.tga differ
diff --git a/gfx/menu/wickedx/icon_mod_jeff.tga b/gfx/menu/wickedx/icon_mod_jeff.tga
new file mode 100644 (file)
index 0000000..4bf904b
Binary files /dev/null and b/gfx/menu/wickedx/icon_mod_jeff.tga differ
diff --git a/gfx/menu/xaw/icon_mod_jeff.tga b/gfx/menu/xaw/icon_mod_jeff.tga
new file mode 100644 (file)
index 0000000..4bf904b
Binary files /dev/null and b/gfx/menu/xaw/icon_mod_jeff.tga differ
index 6dfec5088f886a3b229b0185c35f2e6d24a4ff17..4be8cf69bb9ce4d0737cfd1c7d05f94ec0850fd6 100644 (file)
@@ -19,3 +19,4 @@ set sv_minigames_snake_wrap 0 "Wrap around the edges of the screen instead of dy
 set sv_minigames_snake_delay_initial 0.7 "Initial delay between snake movement"
 set sv_minigames_snake_delay_multiplier 50 "Multiplier of incremental of movement speed (player_score / cvar)"
 set sv_minigames_snake_delay_min 0.1 "Minimum delay between snake movement (at fastest rate)"
+set sv_minigames_snake_lives 3
index 7910786107c1685dd05f2e896ea65d976a870607..8fd4d2baf66b3a9e74db9b6f28374bcb2c18a5e8 100644 (file)
@@ -10,7 +10,8 @@ set g_dodging 0 "set to 1 to enable dodging in games"
 
 seta cl_dodging_timeout 0.2 "determines how long apart (in seconds) two taps on the same direction key are considered a dodge. use 0 to disable"
 
-set sv_dodging_wall_dodging 0 "set to 1 to allow dodging off walls. 0 to disable"
+set sv_dodging_air_dodging 0
+set sv_dodging_wall_dodging 0 "allow dodging off walls"
 set sv_dodging_delay 0.7 "determines how long a player has to wait to be able to dodge again after dodging"
 set sv_dodging_up_speed 200 "the jump velocity of the dodge"
 set sv_dodging_horiz_speed 400 "the horizontal velocity of the dodge"
@@ -20,6 +21,7 @@ set sv_dodging_height_threshold 10 "the maximum height above ground where to all
 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 sv_dodging_frozen_doubletap 0
 
 
 // ===========
@@ -29,6 +31,10 @@ set g_instagib 0 "enable instagib"
 set g_instagib_extralives 1 "how many extra lives you will get per powerup"
 set g_instagib_ammo_start 10 "starting ammo"
 set g_instagib_ammo_drop 5 "how much ammo you'll get for weapons or cells"
+set g_instagib_ammo_convert_bullets 0 "convert bullet ammo packs to insta cell ammo packs"
+set g_instagib_ammo_convert_cells 0 "convert normal cell ammo packs to insta cell ammo packs"
+set g_instagib_ammo_convert_rockets 0 "convert rocket ammo packs to insta cell ammo packs"
+set g_instagib_ammo_convert_shells 0 "convert shell ammo packs to insta cell ammo packs"
 set g_instagib_invis_alpha 0.15
 set g_instagib_speed_highspeed 1.5 "speed-multiplier that applies while you carry the invincibility powerup"
 set g_instagib_damagedbycontents 1 "allow damage from lava pits in instagib"
@@ -43,10 +49,11 @@ set g_instagib_friendlypush 1 "allow pushing teammates with the vaporizer primar
 // ==========
 set g_overkill 0 "enable overkill"
 
-set g_overkill_100a_anyway 1
-set g_overkill_100h_anyway 1
 set g_overkill_powerups_replace 1
-set g_overkill_superguns_respawn_time 120
+set g_overkill_filter_healthmega 0
+set g_overkill_filter_armormedium 0
+set g_overkill_filter_armorbig 0
+set g_overkill_filter_armorlarge 0
 
 set g_overkill_ammo_charge 0
 set g_overkill_ammo_charge_notice 1
@@ -187,6 +194,7 @@ set g_nades_spawn 1 "give nades right away when player spawns rather than delayi
 set g_nades_client_select 0 "allow client side selection of nade type"
 set g_nades_pickup 0 "allow picking up thrown nades (not your own)"
 set g_nades_pickup_time 2 "time until picked up nade explodes"
+set g_nades_override_dropweapon 1
 set g_nades_nade_lifetime 3.5
 set g_nades_nade_minforce 400
 set g_nades_nade_maxforce 2000
@@ -302,7 +310,7 @@ set g_buffs_randomize 1 "randomize buff type when player drops buff"
 set g_buffs_random_lifetime 30 "re-spawn the buff again if it hasn't been touched after this time in seconds"
 set g_buffs_random_location 0 "randomize buff location on start and when reset"
 set g_buffs_random_location_attempts 10 "number of random locations a single buff will attempt to respawn at before giving up"
-set g_buffs_spawn_count 5 "how many buffs to spawn on the map if none exist already"
+set g_buffs_spawn_count 0 "how many buffs to spawn on the map if none exist already"
 set g_buffs_replace_powerups 1 "replace powerups on the map with random buffs"
 set g_buffs_cooldown_activate 5 "cooldown period when buff is first activated"
 set g_buffs_cooldown_respawn 3 "cooldown period when buff is reloading"
index 4161cfca721d694cb420f326ed86a943ede62c06..d57a9f2beb291ea5f1ad02c1d66a81bae8d82d24 100644 (file)
@@ -102,7 +102,7 @@ seta notification_ANNCE_VOTE_ACCEPT "2" "0 = disabled, 1 = enabled if gentle mod
 seta notification_ANNCE_VOTE_CALL "2" "0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
 seta notification_ANNCE_VOTE_FAIL "2" "0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
 
-// MSG_INFO notifications (count = 316):
+// MSG_INFO notifications (count = 320):
 seta notification_INFO_CA_JOIN_LATE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CA_LEAVE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CHAT_NOSPECTATORS "2" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
@@ -311,6 +311,10 @@ seta notification_INFO_LMS_FORFEIT "1" "0 = off, 1 = print to console, 2 = print
 seta notification_INFO_LMS_NOLIVES "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_MINIGAME_INVITE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_MONSTERS_DISABLED "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_NEXBALL_RETURN_HELD_BLUE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_NEXBALL_RETURN_HELD_PINK "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_NEXBALL_RETURN_HELD_RED "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_NEXBALL_RETURN_HELD_YELLOW "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_ONSLAUGHT_CAPTURE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_ONSLAUGHT_CPDESTROYED_BLUE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_ONSLAUGHT_CPDESTROYED_PINK "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
@@ -883,4 +887,4 @@ seta notification_show_sprees_info "3" "Show spree information in MSG_INFO messa
 seta notification_show_sprees_info_newline "1" "Show attacker spree information for MSG_INFO messages on a separate line than the death notification itself"
 seta notification_show_sprees_info_specialonly "1" "Don't show attacker spree information in MSG_INFO messages if it isn't an achievement"
 
-// Notification counts (total = 817): MSG_ANNCE = 89, MSG_INFO = 316, MSG_CENTER = 231, MSG_MULTI = 153, MSG_CHOICE = 28
+// Notification counts (total = 820): MSG_ANNCE = 89, MSG_INFO = 320, MSG_CENTER = 230, MSG_MULTI = 153, MSG_CHOICE = 28
index e9fe5628940d9597fd5843533b54bced13066ae0..92fccaa42854ce67fef60c5cf5eb8ba4f5b0da45 100644 (file)
@@ -28,6 +28,7 @@ set g_physics_xonotic_airaccel_qw_stretchfactor 2
 set g_physics_xonotic_airaccel_sideways_friction 0
 set g_physics_xonotic_aircontrol 100
 set g_physics_xonotic_aircontrol_power 2
+set g_physics_xonotic_aircontrol_backwards 0
 set g_physics_xonotic_aircontrol_penalty 0
 set g_physics_xonotic_warsowbunny_airforwardaccel 1.00001
 set g_physics_xonotic_warsowbunny_topspeed 925
@@ -56,6 +57,7 @@ set g_physics_nexuiz_airaccel_qw_stretchfactor 0
 set g_physics_nexuiz_airaccel_sideways_friction 0.35
 set g_physics_nexuiz_aircontrol 0
 set g_physics_nexuiz_aircontrol_power 2
+set g_physics_nexuiz_aircontrol_backwards 0
 set g_physics_nexuiz_aircontrol_penalty 0
 set g_physics_nexuiz_warsowbunny_airforwardaccel 1.00001
 set g_physics_nexuiz_warsowbunny_topspeed 925
@@ -84,6 +86,7 @@ set g_physics_quake_airaccel_qw_stretchfactor 0
 set g_physics_quake_airaccel_sideways_friction 0
 set g_physics_quake_aircontrol 0
 set g_physics_quake_aircontrol_power 2
+set g_physics_quake_aircontrol_backwards 0
 set g_physics_quake_aircontrol_penalty 0
 set g_physics_quake_warsowbunny_airforwardaccel 1.00001
 set g_physics_quake_warsowbunny_topspeed 925
@@ -112,6 +115,7 @@ set g_physics_warsow_airaccel_qw_stretchfactor 0
 set g_physics_warsow_airaccel_sideways_friction 0
 set g_physics_warsow_aircontrol 0
 set g_physics_warsow_aircontrol_power 2
+set g_physics_warsow_aircontrol_backwards 0
 set g_physics_warsow_aircontrol_penalty 0
 set g_physics_warsow_warsowbunny_airforwardaccel 1.00001
 set g_physics_warsow_warsowbunny_topspeed 925
@@ -140,6 +144,7 @@ set g_physics_defrag_airaccel_qw_stretchfactor 0
 set g_physics_defrag_airaccel_sideways_friction 0
 set g_physics_defrag_aircontrol 150
 set g_physics_defrag_aircontrol_power 2
+set g_physics_defrag_aircontrol_backwards 0
 set g_physics_defrag_aircontrol_penalty 0
 set g_physics_defrag_warsowbunny_airforwardaccel 1.00001
 set g_physics_defrag_warsowbunny_topspeed 925
@@ -168,6 +173,7 @@ set g_physics_quake3_airaccel_qw_stretchfactor 0
 set g_physics_quake3_airaccel_sideways_friction 0
 set g_physics_quake3_aircontrol 0
 set g_physics_quake3_aircontrol_power 2
+set g_physics_quake3_aircontrol_backwards 0
 set g_physics_quake3_aircontrol_penalty 0
 set g_physics_quake3_warsowbunny_airforwardaccel 1.00001
 set g_physics_quake3_warsowbunny_topspeed 925
@@ -196,6 +202,7 @@ set g_physics_vecxis_airaccel_qw_stretchfactor 0
 set g_physics_vecxis_airaccel_sideways_friction 0.3
 set g_physics_vecxis_aircontrol 0
 set g_physics_vecxis_aircontrol_power 2
+set g_physics_vecxis_aircontrol_backwards 0
 set g_physics_vecxis_aircontrol_penalty 0
 set g_physics_vecxis_warsowbunny_airforwardaccel 1.00001
 set g_physics_vecxis_warsowbunny_topspeed 925
@@ -224,6 +231,7 @@ set g_physics_quake2_airaccel_qw_stretchfactor 0
 set g_physics_quake2_airaccel_sideways_friction 0
 set g_physics_quake2_aircontrol 0
 set g_physics_quake2_aircontrol_power 2
+set g_physics_quake2_aircontrol_backwards 0
 set g_physics_quake2_aircontrol_penalty 0
 set g_physics_quake2_warsowbunny_airforwardaccel 1.00001
 set g_physics_quake2_warsowbunny_topspeed 925
@@ -252,6 +260,7 @@ set g_physics_bones_airaccel_qw_stretchfactor 0
 set g_physics_bones_airaccel_sideways_friction 0
 set g_physics_bones_aircontrol 150
 set g_physics_bones_aircontrol_power 2
+set g_physics_bones_aircontrol_backwards 0
 set g_physics_bones_aircontrol_penalty 0
 set g_physics_bones_warsowbunny_airforwardaccel 1.00001
 set g_physics_bones_warsowbunny_topspeed 925
index e4bbad3d48630aa95c9f3463fdd1d327c7323a12..f2a4209c25eb44ee435273856d0c87720d7c00de 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 150
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index ee44b5547a052717cde7f28fb0f52063e638c65f..efe5b46ac3854ad774019787a0391140e315de76 100644 (file)
@@ -22,6 +22,7 @@ sv_maxairstrafespeed 100
 sv_airstrafeaccel_qw -0.97
 sv_aircontrol 125
 sv_aircontrol_power 2.5
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6aac341780e7573cbe580b714e62b747d61e6612..8d02ff46271260092d0fa52b2902adda3599965f 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 90eaa49c1223cd4bacf7aa7e228dc4670f88240b..61ce6557dfb15d7ac1b55d0128039c12d92e1507 100644 (file)
@@ -31,6 +31,7 @@ sv_airstrafeaccel_qw -0.97
 sv_aircontrol 125
 sv_aircontrol_penalty 150
 sv_aircontrol_power 2.5
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 800
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 03081fdab7554b9c5118b795ac8b86987ff966a6..53ec90148e32aa7b1819454f57cba876ea759958 100644 (file)
@@ -31,6 +31,7 @@ sv_airstrafeaccel_qw -0.95
 sv_aircontrol 125
 sv_aircontrol_penalty 150
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 800
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index ef213a70f9d356226b401c0779752d85d69c7157..6a24567a93e518f68b347c6292d2e962c4279130 100644 (file)
@@ -26,6 +26,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 51c49d7832dbf0197ca6a2ab5d456389ce675ebf..f6f74cd21a9b88eabd7f1c278cf6f4ad320b6c98 100644 (file)
@@ -24,6 +24,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 0ce33aa95132362f57bb28eeec904c6549bed91e..9292016afe5d483864082f9f87e0b01483635f70 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 08711fd5b0f6905b33ff2688261f0e0543611922..660e7b818323ce0b654d4a58a9743c88d8897809 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 092985cae51a00a87a76cf26a78519c9f5d3f127..2c2e94c5f4dd7042ca9e041ed2244485ff500237 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index c6d9bef4b912d82e5200691d82a3fb55627b4d88..45a46cb46e24711f5cb5055b144af9a989efb399 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 5e0ee6ae0c6f265690c3783be05c3d10f35a1d19..86f1c31c744679d6bd61a548f5882f1a038f8817 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index d129a2db05ebada4a9698aeafcfedbb9456ac2d9..fe461768851079b603981d8d90cd6d815be5a143 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 8a52299763d537423fb2012f6a9ed304c969ef0e..ed45598a9bb4a31039f5bf1804b2f1c61c9282b9 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 4df3f211ebe490134394e21d60a35a0b739fae6b..3f7cd58f18f35567b43d626ccb55a0e3cbed412f 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 3e905428f76d52f1183cde4fc116ccabc0268afa..77660a426a10abb2fa60168c63016f7e65eb5ef3 100644 (file)
@@ -32,6 +32,7 @@ sv_airstrafeaccel_qw -0.9825
 sv_aircontrol 125
 sv_aircontrol_penalty 100
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 448e087f46f20c1d0287dfd29c9a605a93266fcc..609a8f3d30f6d7829fc779c6147b8bce79134a36 100644 (file)
@@ -24,6 +24,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 124c50660a1046ca8bf9ce7245a4d9579a0ff71c..a9fbe166da3bbe3321a7741d5eda482c3507295b 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 580f6257fa65f2bde52c74983f72492e45456f2f..87817dfcfd46a275d968daf57005c1d627be36ae 100644 (file)
@@ -24,6 +24,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6f00896b671b4b542115d6270c96b4bac7d08c20..7363b216dea7e8e34be9dc4871066baae213bc9c 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 31963e9feee4dc1dc6691514a081bde9d3765c7f..adc9df69c97af22d1644dab9d4cec72a78882982 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 82463859835480526e90bbae65db204238344fd7..596d6ca3b8ea78b2e524d60a423f56bc627b2f18 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6858892e3b3ad27b1c8a8e8d4257c7a650e269c6..9041601e2fd601ea734d80b12440ea0a4d1ab728 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 50101d73d43165843ecf32f08b55fb33aff8fb2d..5fbe22bab998900fd02a8e7ff24c1cebe9b2eb8f 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 9 // activates warsow movement mode
 sv_warsowbunny_accel 0.1593
index c4c3535a7f9ac1c74d3daa7a7c7645f4daaa9e27..3b28d90999966f1cc73b4c04fbcbf639e4173f2b 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 150
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 331723ec9317539cbc2b2e4bdc139a99b52abb94..cf31a3f932790052f79df433b372a5f022cae33b 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 6 // activates warsow movement mode
 sv_warsowbunny_accel 0.1585
index c109e1157636e5b6fb91f658a0c8ba37910b922f..1fe218f06adf5d9837cf570c79720d8bf3b16859 100644 (file)
@@ -38,6 +38,7 @@ sv_airstrafeaccel_qw -0.95
 sv_aircontrol 100
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 900
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6dadcf161bd1078d9b6b4227e84c6d9624b0f7e0..0dfe0b46c9970bf689e257c720dab1dd846ff9d2 100644 (file)
@@ -31,6 +31,7 @@ sv_airstrafeaccel_qw -0.95
 sv_aircontrol 125
 sv_aircontrol_penalty 150
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 800
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index a3e42a977eca1a69fc3ba438f7aa69f305466e34..132aa9eff68cec24fde30da5dfb24bfb2becc04f 100644 (file)
@@ -37,6 +37,7 @@ sv_airstrafeaccel_qw -0.95
 sv_aircontrol 125
 sv_aircontrol_penalty 180
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 800
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 8597e9e005d77020ea96c2375efa78ba56887b8c..5a3aaa393bd117eaf455bfe99342e4979adc1b98 100644 (file)
@@ -29,6 +29,7 @@ sv_airstrafeaccel_qw 1
 sv_aircontrol 150
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6cb0780dd988ee2f7ffafed71d16e8348d0a8b4b..4d1f652bb81bbae8bfa7ba6c653d0300012cc5e5 100644 (file)
@@ -29,6 +29,7 @@ sv_airstrafeaccel_qw -0.987
 sv_aircontrol 100
 sv_aircontrol_penalty 100
 sv_aircontrol_power 2.5
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 8e2c722e8f374ec8baee0f4a0204ad1f296fcc04..33d1bc21320bee9ca676b8a35405050620af6bf4 100644 (file)
@@ -93,10 +93,10 @@ string autocvar_cl_weaponpriority;
 float autocvar_cl_zoomfactor;
 float autocvar_cl_zoomsensitivity;
 float autocvar_cl_zoomspeed;
-bool autocvar_cl_unpress_zoom_on_spawn = 1;
-bool autocvar_cl_unpress_zoom_on_death = 1;
-bool autocvar_cl_unpress_zoom_on_weapon_switch = 1;
-bool autocvar_cl_unpress_attack_on_weapon_switch = 1;
+bool autocvar_cl_unpress_zoom_on_spawn = true;
+bool autocvar_cl_unpress_zoom_on_death = true;
+bool autocvar_cl_unpress_zoom_on_weapon_switch = true;
+bool autocvar_cl_unpress_attack_on_weapon_switch = false;
 bool autocvar_con_chat;
 bool autocvar_con_chatrect;
 float autocvar_con_chatsize;
@@ -452,4 +452,3 @@ float autocvar_crosshair_rpc_alpha = 1;
 float autocvar_crosshair_rpc_size = 1;
 int autocvar_cl_nade_timer;
 bool autocvar_r_drawviewmodel;
-bool autocvar_cl_items_nofade;
index 0643bb09d5b37e3bdd7b014f13964959ab837484..104465360770beaddc14298f06d2872f0d2d6d1f 100644 (file)
@@ -392,8 +392,6 @@ void CSQCModel_AutoTagIndex_Apply(entity this)
        if(this.tag_entity && wasfreed(this.tag_entity))
                this.tag_entity = NULL;
 
-       viewloc_SetTags(this);
-
        MUTATOR_CALLHOOK(TagIndex_Update, this);
 
        if(this.tag_networkentity)
index 5b80690101b089e0e2cd15df07d40aa05bb9356a..f67cbffbd04d176160d072b1e6bddcbfe3e045b0 100644 (file)
@@ -1,6 +1,7 @@
 #include "centerprint.qh"
 
 #include "scoreboard.qh"
+#include <common/notifications/all.qh>
 
 // CenterPrint (#16)
 
@@ -246,6 +247,9 @@ void HUD_CenterPrint ()
                else // Expiring soon, so fade it out.
                        a = (centerprint_expire_time[j] - time) / max(0.0001, autocvar_hud_panel_centerprint_fade_out);
 
+               if(centerprint_msgID[j] == CPID_TIMEIN)
+                       a = 1;
+
                // while counting down show it anyway in order to hold the current message position
                if (a <= 0.5/255.0 && centerprint_countdown_num[j] == 0)  // Guaranteed invisible - don't show.
                        continue;
index 2361ccff7a0a585ed1e5a7d444d4aad051a37612..117badbec4e1baf80aca961ff8d22042534d8dd2 100644 (file)
@@ -1090,7 +1090,9 @@ vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size)
 
 bool Scoreboard_WouldDraw()
 {
-       if (QuickMenu_IsOpened())
+       if (MUTATOR_CALLHOOK(DrawScoreboard))
+               return false;
+       else if (QuickMenu_IsOpened())
                return false;
        else if (HUD_Radar_Clickable())
                return false;
index 1792183f1ccd6e5f5d7da6f9ca3ef1969b175397..74090e14d6992749c8b747c04894a20279c8d7bf 100644 (file)
@@ -154,3 +154,6 @@ MUTATOR_HOOKABLE(Ent_Update, EV_Ent_Update);
 
 /** Return true to not draw crosshair */
 MUTATOR_HOOKABLE(DrawCrosshair, EV_NO_ARGS);
+
+/** Return true to not draw scoreboard */
+MUTATOR_HOOKABLE(DrawScoreboard, EV_NO_ARGS);
index 01a86bb1ee44d2490402cac124a41b35c1229715..64916ad8c17d05251f940ed0ae9e02e340ffb8bf 100644 (file)
@@ -213,11 +213,11 @@ NET_HANDLE(ENT_CLIENT_WALL, bool isnew)
                        this.movedir_z = ReadCoord();
                        this.lip = ReadByte() / 255.0;
                }
-               this.fade_start = ReadShort();
-               this.fade_end = ReadShort();
-               this.alpha_max = ReadShort();
-               this.alpha_min = ReadShort();
-               this.inactive = ReadShort();
+               this.fade_start = ReadByte();
+               this.fade_end = ReadByte();
+               this.alpha_max = ReadByte();
+               this.alpha_min = ReadByte();
+               this.inactive = ReadByte();
                this.fade_vertical_offset = ReadShort();
                BGMScript_InitEntity(this);
        }
index 181511cc1a1cb819e4ddf94ea691038647bdfd2f..29f96aa4490b527ecab33592689534fb358c16ec 100644 (file)
@@ -179,9 +179,9 @@ REGISTER_SP(RACE_TIME);
 REGISTER_SP(RACE_LAPS);
 REGISTER_SP(RACE_FASTEST);
 
-REGISTER_SP(CTS_TIME);
-REGISTER_SP(CTS_LAPS);
-REGISTER_SP(CTS_FASTEST);
+//REGISTER_SP(CTS_TIME);
+//REGISTER_SP(CTS_LAPS);
+//REGISTER_SP(CTS_FASTEST);
 
 REGISTER_SP(ASSAULT_OBJECTIVES);
 
index 17ee08e7cf14937037696112f4a7edf941c2ab4e..a89e84a03725d7f8ff16525ef81faa52e9d81d49 100644 (file)
@@ -11,43 +11,43 @@ MACRO_END
 MACRO_END
 
 // #define PROP(public, fld, set, sv, cl)
-#define ENTCS_NETPROPS(PROP) PROP(false, sv_entnum, ENTCS_SET_NORMAL, {}, {}) /* sentinel */ \
+#define ENTCS_NETPROPS(ent, PROP) PROP(false, sv_entnum, ENTCS_SET_NORMAL, {}, {}) /* sentinel */ \
        PROP(false, origin, ENTCS_SET_NORMAL, \
-       { WriteShort(chan, this.origin.x);  WriteShort(chan, this.origin.y); \
-         WriteShort(chan, this.origin.z); }, \
-       { this.has_sv_origin = true; vector v; v.x = ReadShort(); v.y = ReadShort(); v.z = ReadShort(); setorigin(this, v); }) \
+       { WriteShort(chan, ent.origin.x);  WriteShort(chan, ent.origin.y); \
+         WriteShort(chan, ent.origin.z); }, \
+       { ent.has_sv_origin = true; vector v; v.x = ReadShort(); v.y = ReadShort(); v.z = ReadShort(); setorigin(ent, v); }) \
     \
        PROP(false, angles_y, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, this.angles.y / 360 * 256); }, \
-       { vector v = '0 0 0'; v.y = ReadByte() / 256 * 360; this.angles = v; }) \
+       { WriteByte(chan, ent.angles.y / 360 * 256); }, \
+       { vector v = '0 0 0'; v.y = ReadByte() / 256 * 360; ent.angles = v; }) \
     \
        PROP(false, health, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, bound(0, this.health / 10, 255));  /* FIXME: use a better scale? */ }, \
-       { this.healthvalue = ReadByte() * 10; }) \
+       { WriteByte(chan, bound(0, ent.health / 10, 255));  /* FIXME: use a better scale? */ }, \
+       { ent.healthvalue = ReadByte() * 10; }) \
     \
        PROP(false, armorvalue, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, bound(0, this.armorvalue / 10, 255));  /* FIXME: use a better scale? */ }, \
-       { this.armorvalue = ReadByte() * 10; }) \
+       { WriteByte(chan, bound(0, ent.armorvalue / 10, 255));  /* FIXME: use a better scale? */ }, \
+       { ent.armorvalue = ReadByte() * 10; }) \
     \
        PROP(true, netname, ENTCS_SET_MUTABLE_STRING, \
-       { WriteString(chan, this.netname); }, \
-       { if (this.netname) strunzone(this.netname); this.netname = strzone(ReadString()); }) \
+       { WriteString(chan, ent.netname); }, \
+       { if (ent.netname) strunzone(ent.netname); ent.netname = strzone(ReadString()); }) \
     \
        PROP(true, model, ENTCS_SET_NORMAL, \
-       { WriteString(chan, this.model); }, \
-       { if (this.model) strunzone(this.model); this.model = strzone(ReadString()); }) \
+       { WriteString(chan, ent.model); }, \
+       { if (ent.model) strunzone(ent.model); ent.model = strzone(ReadString()); }) \
     \
        PROP(true, skin, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, this.skin); }, \
-       { this.skin = ReadByte(); }) \
+       { WriteByte(chan, ent.skin); }, \
+       { ent.skin = ReadByte(); }) \
     \
     PROP(true, clientcolors, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, this.clientcolors); }, \
-       { this.colormap = ReadByte(); }) \
+       { WriteByte(chan, ent.clientcolors); }, \
+       { ent.colormap = ReadByte(); }) \
     \
     PROP(true, frags, ENTCS_SET_NORMAL, \
-       { WriteShort(chan, this.frags); }, \
-       { this.frags = ReadShort(); }) \
+       { WriteShort(chan, ent.frags); }, \
+       { ent.frags = ReadShort(); }) \
     \
        /**/
 
@@ -63,7 +63,7 @@ MACRO_END
                        } \
                        i += 1; \
                }
-               ENTCS_NETPROPS(X);
+               ENTCS_NETPROPS(this, X);
        #undef X
                if (i >= BITS(16 - 1)) LOG_FATAL("Exceeded ENTCS_NETPROPS limit");
        }
@@ -93,7 +93,7 @@ MACRO_END
                        } \
                        i += 1; \
                }
-               ENTCS_NETPROPS(X);
+               ENTCS_NETPROPS(this, X);
        #undef X
                return true;
        }
@@ -115,7 +115,7 @@ MACRO_END
                        } \
                        i += 1; \
                }
-               ENTCS_NETPROPS(X);
+               ENTCS_NETPROPS(this, X);
        #undef X
            setorigin(this, this.origin);  // relink
        }
@@ -214,7 +214,7 @@ MACRO_END
                        } \
                        i += 1; \
                }
-               ENTCS_NETPROPS(X);
+               ENTCS_NETPROPS(e, X);
        #undef X
                e.iflags |= IFLAG_ORIGIN;
                InterpolateOrigin_Note(e);
index 1d2555e95e9c9750dd5ef146f2356bad7bf40286..c9cfb00f6ed475ed324fdf65813dda0dc2ca0f30 100644 (file)
@@ -34,6 +34,7 @@ float autocvar_g_nexball_football_bouncestop;
 bool autocvar_g_nexball_radar_showallplayers;
 bool autocvar_g_nexball_sound_bounce;
 int autocvar_g_nexball_trail_color;
+bool autocvar_g_nexball_playerclip_collisions = true;
 
 float autocvar_g_nexball_safepass_turnrate;
 float autocvar_g_nexball_safepass_maxdist;
@@ -103,9 +104,9 @@ void nexball_setstatus(entity this)
        {
                if(this.ballcarried.teamtime && (this.ballcarried.teamtime < time))
                {
-                       bprint("The ", Team_ColoredFullName(this.team), " held the ball for too long.\n");
-                       DropBall(this.ballcarried, this.ballcarried.owner.origin, '0 0 0');
+                       Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(this.team, INFO_NEXBALL_RETURN_HELD));
                        entity e = this.ballcarried;
+                       DropBall(this.ballcarried, this.ballcarried.owner.origin, '0 0 0');
                        ResetBall(e);
                }
                else
@@ -255,7 +256,7 @@ void ResetBall(entity this)
        if(this.cnt < 2)        // step 1
        {
                if(time == this.teamtime)
-                       bprint("The ", Team_ColoredFullName(this.team), " held the ball for too long.\n");
+                       Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(this.team, INFO_NEXBALL_RETURN_HELD));
 
                settouch(this, func_null);
                set_movetype(this, MOVETYPE_NOCLIP);
@@ -552,6 +553,12 @@ void SpawnBall(entity this)
 
        set_movetype(this, MOVETYPE_FLY);
 
+       if(autocvar_g_nexball_playerclip_collisions)
+       {
+               this.dphitcontentsmask = DPCONTENTS_BODY | DPCONTENTS_SOLID | DPCONTENTS_PLAYERCLIP;
+               this.dphitcontentsmask |= DPCONTENTS_PLAYERCLIP;
+       }
+
        if(!autocvar_g_nexball_sound_bounce)
                this.noise = "";
        else if(this.noise == "")
index d6606a370b74e6cc08fdd9a898e2f6a5a12d5766..a18ce34c5d06e83ad98d95a2e606f0034b5bc333 100644 (file)
@@ -1685,7 +1685,7 @@ MUTATOR_HOOKFUNCTION(ons, PlayerSpawn)
                {
                        if(SAME_TEAM(tmp_entity, player))
                        if(random_target)
-                               RandomSelection_Add(tmp_entity, 0, string_null, 1, 1);
+                               RandomSelection_AddEnt(tmp_entity, 1, 1);
                        else if(vlen2(tmp_entity.origin - spawn_loc) <= vlen2(closest_target.origin - spawn_loc) || closest_target == NULL)
                                closest_target = tmp_entity;
                }
@@ -1732,7 +1732,7 @@ MUTATOR_HOOKFUNCTION(ons, PlayerSpawn)
                for(tmp_entity = ons_worldgeneratorlist; tmp_entity; tmp_entity = tmp_entity.ons_worldgeneratornext)
                {
                        if(random_target)
-                               RandomSelection_Add(tmp_entity, 0, string_null, 1, 1);
+                               RandomSelection_AddEnt(tmp_entity, 1, 1);
                        else
                        {
                                if(SAME_TEAM(tmp_entity, player))
index c15ecd463b94f4e8da29e7e745fd5bc87fef3de7..7f0fdb2ff750aa61eb1ffd2b5d72c903cfd0d97a 100644 (file)
@@ -95,7 +95,7 @@ void snake_new_mouse(entity minigame)
        {
                string pos = minigame_tile_buildname(i, j);
                if(!snake_find_piece(minigame, pos))
-                       RandomSelection_Add(NULL, 0, pos, 1, 1);
+                       RandomSelection_AddString(pos, 1, 1);
        }
 
        entity piece = msle_spawn(minigame,"minigame_board_piece");
@@ -175,7 +175,7 @@ void minigame_setup_snake(entity minigame, int pteam)
        {
                string pos = minigame_tile_buildname(i, j);
                if(!snake_find_piece(minigame, pos))
-                       RandomSelection_Add(NULL, 0, pos, 1, 1);
+                       RandomSelection_AddString(pos, 1, 1);
        }
 
        entity piece = msle_spawn(minigame,"minigame_board_piece");
index e06bb46628c5366db60f07a129feaf0cc18358f7..c5a658054fe0d1e55192363b7e12cfd0abe9112b 100644 (file)
@@ -418,7 +418,7 @@ int ttt_ai_random(int piecemask)
        for ( int i = 0; i < 9; i++ )
        {
                if ( piecemask & f )
-                       RandomSelection_Add(NULL, f, string_null, 1, 1);
+                       RandomSelection_AddFloat(f, 1, 1);
                f <<= 1;
        }
 
index 9ac1f4e14084f0adaa1ec8f40f2047ac14dd2ef9..ff1a5d397ee1bdf3a9311ec82cc3ebc63adf9b39 100644 (file)
@@ -692,7 +692,8 @@ void Monster_CalculateVelocity(entity this, vector to, vector from, float turnra
 
 void Monster_Move(entity this, float runspeed, float walkspeed, float stpspeed)
 {
-       if(this.target2) { this.goalentity = find(NULL, targetname, this.target2); }
+       // update goal entity if lost
+       if(this.target2 && this.goalentity.targetname != this.target2) { this.goalentity = find(NULL, targetname, this.target2); }
 
        entity targ;
 
@@ -868,10 +869,10 @@ void Monster_Move(entity this, float runspeed, float walkspeed, float stpspeed)
        }
        else
        {
-               entity e = find(NULL, targetname, this.target2);
+               entity e = this.goalentity; //find(NULL, targetname, this.target2);
                if(e.target2)
                        this.target2 = e.target2;
-               else if(e.target)
+               else if(e.target) // compatibility
                        this.target2 = e.target;
 
                movelib_brake_simple(this, stpspeed);
index 50373cc2a232b85e1a93e403482776e6a81e2ae2..9e87e488e624323d336ee9cfcedb36ec651b1ba9 100644 (file)
@@ -8,9 +8,8 @@
     #include <server/autocvars.qh>
     #include <server/defs.qh>
 #endif
-entity spawnmonster (string monster, float monster_id, entity spawnedby, entity own, vector orig, float respwn, float invincible, float moveflag)
+entity spawnmonster (string monster, int monster_id, entity spawnedby, entity own, vector orig, bool respwn, bool invincible, int moveflag)
 {
-       float i;
        entity e = spawn();
 
        e.spawnflags = MONSTERFLAG_SPAWNED;
@@ -22,26 +21,26 @@ entity spawnmonster (string monster, float monster_id, entity spawnedby, entity
 
        if(monster == "random")
        {
-               RandomSelection_Init();
-               for(i = MON_FIRST; i <= MON_LAST; ++i)
-                       RandomSelection_Add(NULL, i, string_null, 1, 1);
+               RandomSelection_Init(); 
+               FOREACH(Monsters, it != MON_Null,
+               {
+                       RandomSelection_AddEnt(it, 1, 1);
+               });
 
-           monster_id = RandomSelection_chosen_float;
+               monster_id = RandomSelection_chosen_ent.monsterid;
        }
        else if(monster != "")
        {
-               float found = 0;
-               entity mon;
-               for(i = MON_FIRST; i <= MON_LAST; ++i)
+               bool found = false;
+               FOREACH(Monsters, it != MON_Null,
                {
-                       mon = get_monsterinfo(i);
-                       if(mon.netname == monster)
+                       if(it.netname == monster)
                        {
                                found = true;
-                               monster_id = mon.monsterid; // we have the monster, old monster id is no longer required
+                               monster_id = it.monsterid; // we have the monster, old monster id is no longer required
                                break;
                        }
-               }
+               });
                if(!found)
                        monster_id = ((monster_id > 0) ? monster_id : MON_FIRST);
        }
index 0aba5c19d4326f2220c89c576468d022263be4f3..00db84c1cb8372c14525b0bb8a98e5a9335fdfe3 100644 (file)
@@ -1,3 +1,3 @@
 #pragma once
 
-entity spawnmonster (string monster, float monster_id, entity spawnedby, entity own, vector orig, float respwn, float invincible, float moveflag);
+entity spawnmonster (string monster, int monster_id, entity spawnedby, entity own, vector orig, bool respwn, bool invincible, int moveflag);
index 82fa2d33cb8bd0e0a649619e7836f95eefdfd9d6..5587da593796e32e6e6afee3d91d84ec4ac14a18 100644 (file)
@@ -216,7 +216,7 @@ void buff_NewType(entity ent, float cb)
        FOREACH(Buffs, buff_Available(it), LAMBDA(
                it.buff_seencount += 1;
                // if it's already been chosen, give it a lower priority
-               RandomSelection_Add(NULL, it.m_itemid, string_null, 1, max(0.2, 1 / it.buff_seencount));
+               RandomSelection_AddFloat(it.m_itemid, 1, max(0.2, 1 / it.buff_seencount));
        ));
        ent.buffs = RandomSelection_chosen_float;
 }
index 0cf3ed978134babe2cc6135d237e3b3b197e934f..6135e72b556a1aa3d7934fdbc4d631b161981df4 100644 (file)
@@ -1,6 +1,10 @@
 #include "sv_instagib.qh"
 
 int autocvar_g_instagib_ammo_drop;
+bool autocvar_g_instagib_ammo_convert_cells;
+bool autocvar_g_instagib_ammo_convert_rockets;
+bool autocvar_g_instagib_ammo_convert_shells;
+bool autocvar_g_instagib_ammo_convert_bullets;
 int autocvar_g_instagib_extralives;
 float autocvar_g_instagib_speed_highspeed;
 
@@ -356,12 +360,53 @@ MUTATOR_HOOKFUNCTION(mutator_instagib, SetStartItems)
        start_items |= IT_UNLIMITED_SUPERWEAPONS;
 }
 
+void replace_with_insta_cells(entity item)
+{
+       entity e = spawn();
+       setorigin(e, item.origin);
+       e.noalign = item.noalign;
+       e.cnt = item.cnt;
+       e.team = item.team;
+       e.spawnfunc_checked = true;
+       spawnfunc_item_minst_cells(e);
+}
+
 MUTATOR_HOOKFUNCTION(mutator_instagib, FilterItem)
 {
        entity item = M_ARGV(0, entity);
 
        if(item.classname == "item_cells")
-               return true; // no normal cells?
+       {
+               if(autocvar_g_instagib_ammo_convert_cells)
+               {
+                       replace_with_insta_cells(item);
+               }
+               return true;
+       }
+       else if(item.classname == "item_rockets")
+       {
+               if(autocvar_g_instagib_ammo_convert_rockets)
+               {
+                       replace_with_insta_cells(item);
+               }
+               return true;
+       }
+       else if(item.classname == "item_shells")
+       {
+               if(autocvar_g_instagib_ammo_convert_shells)
+               {
+                       replace_with_insta_cells(item);
+               }
+               return true;
+       }
+       else if(item.classname == "item_bullets")
+       {
+               if(autocvar_g_instagib_ammo_convert_bullets)
+               {
+                       replace_with_insta_cells(item);
+               }
+               return true;
+       }
 
        if(item.weapon == WEP_VAPORIZER.m_id && item.classname == "droppedweapon")
        {
@@ -371,13 +416,7 @@ MUTATOR_HOOKFUNCTION(mutator_instagib, FilterItem)
 
        if(item.weapon == WEP_DEVASTATOR.m_id || item.weapon == WEP_VORTEX.m_id)
        {
-               entity e = spawn();
-               setorigin(e, item.origin);
-               e.noalign = item.noalign;
-        e.cnt = item.cnt;
-        e.team = item.team;
-        e.spawnfunc_checked = true;
-               spawnfunc_item_minst_cells(e);
+               replace_with_insta_cells(item);
                return true;
        }
 
index e07034bafa33c7d775d3a3e0cb134beb9edb1241..a8347499841b77d034adb39efac4853400343f29 100644 (file)
@@ -1,8 +1,8 @@
 #include "sv_melee_only.qh"
 
-REGISTER_MUTATOR(melee_only, cvar("g_melee_only") && !cvar("g_instagib") && !g_nexball);
+REGISTER_MUTATOR(melee_only, cvar("g_melee_only") && !cvar("g_instagib") && !cvar("g_overkill") && !g_nexball);
 
-MUTATOR_HOOKFUNCTION(melee_only, SetStartItems)
+MUTATOR_HOOKFUNCTION(melee_only, SetStartItems, CBC_ORDER_LAST)
 {
        start_ammo_shells = warmup_start_ammo_shells = 0;
        start_weapons = warmup_start_weapons = WEPSET(SHOTGUN);
index c4e73d286d13946e64024fc976ae1d5987e3347a..b0c0e582aaa5aab136865d7805bc6a6001d0e1ec 100644 (file)
@@ -211,7 +211,7 @@ void napalm_damage(entity this, float dist, float damage, float edgedamage, floa
                        if(d < dist)
                        {
                                e.fireball_impactvec = p;
-                               RandomSelection_Add(e, 0, string_null, 1 / (1 + d), !Fire_IsBurning(e));
+                               RandomSelection_AddEnt(e, 1 / (1 + d), !Fire_IsBurning(e));
                        }
                }
        if(RandomSelection_chosen_ent)
@@ -911,7 +911,7 @@ void toss_nade(entity e, bool set_owner, vector _velocity, float _time)
                setsize(_nade, '-16 -16 -16', '16 16 16');
        set_movetype(_nade, MOVETYPE_BOUNCE);
 
-       tracebox(_nade.origin, _nade.mins, _nade.maxs, _nade.origin, false, _nade);
+       tracebox(_nade.origin, _nade.mins, _nade.maxs, _nade.origin, MOVE_NOMONSTERS, _nade);
        if (trace_startsolid)
                setorigin(_nade, e.origin);
 
index afbc9091ddb09973462587ab24391e70b9f64bc6..5bb9fbc322a40b8d3b4891322a1e948b492f098d 100644 (file)
@@ -96,7 +96,7 @@ void NIX_ChooseNextWeapon()
        RandomSelection_Init();
        FOREACH(Weapons, it != WEP_Null, LAMBDA(
                if(NIX_CanChooseWeapon(it.m_id))
-                       RandomSelection_Add(NULL, it.m_id, string_null, 1, (it.m_id != nix_weapon));
+                       RandomSelection_AddFloat(it.m_id, 1, (it.m_id != nix_weapon));
        ));
        nix_nextweapon = RandomSelection_chosen_float;
 }
index eb40085d726dd193a6d9070a471d50827d4dcfe5..74a8c40ea0b7da37f8cbc2c7a6ceb05ecc89830a 100644 (file)
@@ -4,15 +4,15 @@
 #include "rpc.qh"
 
 bool autocvar_g_overkill_powerups_replace;
-float autocvar_g_overkill_superguns_respawn_time;
-bool autocvar_g_overkill_100h_anyway;
-bool autocvar_g_overkill_100a_anyway;
 bool autocvar_g_overkill_ammo_charge;
 float autocvar_g_overkill_ammo_charge_notice;
 float autocvar_g_overkill_ammo_charge_limit;
 
-.vector ok_deathloc;
-.float ok_spawnsys_timer;
+bool autocvar_g_overkill_filter_healthmega;
+bool autocvar_g_overkill_filter_armormedium;
+bool autocvar_g_overkill_filter_armorbig;
+bool autocvar_g_overkill_filter_armorlarge;
+
 .float ok_lastwep;
 .float ok_item;
 
@@ -21,8 +21,6 @@ float autocvar_g_overkill_ammo_charge_limit;
 .float ok_use_ammocharge = _STAT(OK_AMMO_CHARGE);
 .float ok_ammo_charge = _STAT(OK_AMMO_CHARGEPOOL);
 
-.float ok_pauseregen_finished;
-
 void(entity ent, float wep) ok_DecreaseCharge;
 
 void ok_Initialize();
@@ -109,22 +107,13 @@ MUTATOR_HOOKFUNCTION(ok, PlayerDamage_Calculate, CBC_ORDER_LAST)
                if(!IS_DEAD(frag_target))
                {
                        Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_SECONDARY_NODAMAGE);
-                       M_ARGV(6, vector) = '0 0 0';
+                       M_ARGV(6, vector) = '0 0 0'; // force
                }
 
-               M_ARGV(4, float) = 0;
+               M_ARGV(4, float) = 0; // damage
        }
 }
 
-MUTATOR_HOOKFUNCTION(ok, PlayerDamage_SplitHealthArmor)
-{
-       entity frag_target = M_ARGV(2, entity);
-       float damage_take = M_ARGV(4, float);
-
-       if(damage_take)
-               frag_target.ok_pauseregen_finished = max(frag_target.ok_pauseregen_finished, time + 2);
-}
-
 void ok_DropItem(entity this, entity targ)
 {
        entity e = new(droppedweapon); // hax
@@ -168,30 +157,6 @@ MUTATOR_HOOKFUNCTION(ok, MonsterDropItem)
        ok_DropItem(mon, frag_attacker);
 }
 
-MUTATOR_HOOKFUNCTION(ok, PlayerRegen)
-{
-       entity player = M_ARGV(0, entity);
-
-       // overkill's values are different, so use custom regen
-       if(!STAT(FROZEN, player))
-       {
-               player.armorvalue = CalcRotRegen(player.armorvalue, autocvar_g_balance_armor_regenstable, autocvar_g_balance_armor_regen, autocvar_g_balance_armor_regenlinear,
-                       1 * frametime * (time > player.ok_pauseregen_finished), 0, 0, 1, 1 * frametime * (time > player.pauserotarmor_finished), autocvar_g_balance_armor_limit);
-               player.health = CalcRotRegen(player.health, autocvar_g_balance_health_regenstable, 0, 100, 1 * frametime * (time > player.ok_pauseregen_finished), 200, 0,
-                       autocvar_g_balance_health_rotlinear, 1 * frametime * (time > player.pauserothealth_finished), autocvar_g_balance_health_limit);
-
-               float minf, maxf, limitf;
-
-               maxf = autocvar_g_balance_fuel_rotstable;
-               minf = autocvar_g_balance_fuel_regenstable;
-               limitf = autocvar_g_balance_fuel_limit;
-
-               player.ammo_fuel = CalcRotRegen(player.ammo_fuel, minf, autocvar_g_balance_fuel_regen, autocvar_g_balance_fuel_regenlinear,
-                       frametime * (time > player.pauseregen_finished) * ((player.items & ITEM_JetpackRegen.m_itemid) != 0), maxf, autocvar_g_balance_fuel_rot, autocvar_g_balance_fuel_rotlinear, frametime * (time > player.pauserotfuel_finished), limitf);
-       }
-       return true; // return true anyway, as frozen uses no regen
-}
-
 MUTATOR_HOOKFUNCTION(ok, ForbidThrowCurrentWeapon)
 {
        return true;
@@ -221,7 +186,8 @@ MUTATOR_HOOKFUNCTION(ok, PlayerPreThink)
        ok_IncreaseCharge(player, PS(player).m_weapon.m_id);
 
        if(PHYS_INPUT_BUTTON_ATCK2(player))
-       if(!forbidWeaponUse(player) || player.weapon_blocked) // allow if weapon is blocked
+       if( !forbidWeaponUse(player) || player.weapon_blocked // allow if weapon is blocked
+               || (round_handler_IsActive() && !round_handler_IsRoundStarted()) )
        if(time >= player.jump_interval)
        {
                player.jump_interval = time + WEP_CVAR_PRI(blaster, refire) * W_WeaponRateFactor(player);
@@ -287,8 +253,6 @@ MUTATOR_HOOKFUNCTION(ok, PlayerSpawn)
        // if player changed their weapon while dead, don't switch to their death weapon
        if(player.impulse)
                player.ok_lastwep = 0;
-
-       player.ok_pauseregen_finished = time + 2;
 }
 
 void self_spawnfunc_weapon_hmg(entity this) { spawnfunc_weapon_hmg(this); }
@@ -310,7 +274,7 @@ MUTATOR_HOOKFUNCTION(ok, OnEntityPreSpawn)
                        wep.noalign = ent.noalign;
                        wep.cnt = ent.cnt;
                        wep.team = ent.team;
-                       wep.respawntime = autocvar_g_overkill_superguns_respawn_time;
+                       wep.respawntime = g_pickup_respawntime_superweapon;
                        wep.pickup_anyway = true;
                        wep.spawnfunc_checked = true;
                        setthink(wep, self_spawnfunc_weapon_hmg);
@@ -327,7 +291,7 @@ MUTATOR_HOOKFUNCTION(ok, OnEntityPreSpawn)
                        wep.noalign = ent.noalign;
                        wep.cnt = ent.cnt;
                        wep.team = ent.team;
-                       wep.respawntime = autocvar_g_overkill_superguns_respawn_time;
+                       wep.respawntime = g_pickup_respawntime_superweapon;
                        wep.pickup_anyway = true;
                        wep.spawnfunc_checked = true;
                        setthink(wep, self_spawnfunc_weapon_rpc);
@@ -342,12 +306,16 @@ MUTATOR_HOOKFUNCTION(ok, FilterItem)
        entity item = M_ARGV(0, entity);
 
        if(item.ok_item)
-               return;
+               return false;
 
-       switch(item.items)
+       switch(item.itemdef)
        {
-               case ITEM_HealthMega.m_itemid: return !(autocvar_g_overkill_100h_anyway);
-               case ITEM_ArmorMega.m_itemid: return !(autocvar_g_overkill_100a_anyway);
+               case ITEM_HealthMega: return autocvar_g_overkill_filter_healthmega;
+               case ITEM_ArmorMedium: return autocvar_g_overkill_filter_armormedium;
+               // WARNING: next two statements look wrong because of inconsistency between cvar names and code
+               // armor cvars need renaming to be consistent with their health counterparts
+               case ITEM_ArmorLarge: return autocvar_g_overkill_filter_armorbig;
+               case ITEM_ArmorMega: return autocvar_g_overkill_filter_armorlarge;
        }
 
        return true;
@@ -362,7 +330,7 @@ MUTATOR_HOOKFUNCTION(ok, SpectateCopy)
        client.ok_use_ammocharge = spectatee.ok_use_ammocharge;
 }
 
-MUTATOR_HOOKFUNCTION(ok, SetStartItems)
+MUTATOR_HOOKFUNCTION(ok, SetStartItems, CBC_ORDER_LAST)
 {
        WepSet ok_start_items = (WEPSET(MACHINEGUN) | WEPSET(VORTEX) | WEPSET(SHOTGUN));
 
index fb14f27db8063cb22d96b1dd9baad197b2f545d2..123b8caa03fbd9876d16af1c140b0a59479504fe 100644 (file)
@@ -38,7 +38,7 @@ MUTATOR_HOOKFUNCTION(spawn_near_teammate, Spawn_Score)
                        continue;
                if(!checkpvs(spawn_spot.origin, it))
                        continue;
-               RandomSelection_Add(it, 0, string_null, 1, 1);
+               RandomSelection_AddEnt(it, 1, 1);
        ));
 
        if(RandomSelection_chosen_ent)
index 7e5f79317f6dc046238f83bf5c8995da2b12b077..e7a33567b62227403780bb71320f25ea9f56bbc0 100644 (file)
@@ -611,11 +611,9 @@ void Draw_WaypointSprite(entity this)
     (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right)) - o.x,
     (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom)) - o.y);
 
-    float vidscale = max(vid_conwidth / vid_width, vid_conheight / vid_height);
-
     float crosshairdistance = sqrt( pow(o.x - vid_conwidth/2, 2) + pow(o.y - vid_conheight/2, 2) );
 
-    t = waypointsprite_scale * vidscale;
+    t = waypointsprite_scale;
     a *= waypointsprite_alpha;
 
     {
index 6a420b734eacd1dcdf74dd37846cfc4d025cc48f..62a7cac61123efc52393d6f814c48521612a4eee 100644 (file)
@@ -73,8 +73,8 @@ float waypointsprite_distancefadescale;
 float waypointsprite_distancefadedistance;
 float waypointsprite_alpha;
 
-const float SPRITE_HEALTHBAR_WIDTH = 144;
-const float SPRITE_HEALTHBAR_HEIGHT = 9;
+const float SPRITE_HEALTHBAR_WIDTH = 104;
+const float SPRITE_HEALTHBAR_HEIGHT = 7;
 const float SPRITE_HEALTHBAR_MARGIN = 6;
 const float SPRITE_HEALTHBAR_BORDER = 2;
 const float SPRITE_HEALTHBAR_BORDERALPHA = 1;
index 13ab781964197be8b2185023784c50fad5912b5d..92fd5df1ac37330b1479044e7ef1cb61280d3930 100644 (file)
 
     MSG_INFO_NOTIF(MONSTERS_DISABLED,                       1,  0, 0, "", "",           "",     _("^BGMonsters are currently disabled"), "")
 
+    MULTITEAM_INFO(NEXBALL_RETURN_HELD, 4,                  1,  0, 0, "", "",           "",     _("^BGThe ^TC^TT^BG team held the ball for too long"), "", NAME)
+
     MSG_INFO_NOTIF(ONSLAUGHT_CAPTURE,                       1,  2, 0, "s1 s2", "",      "",     _("^BG%s^BG captured %s^BG control point"), "")
     MULTITEAM_INFO(ONSLAUGHT_CPDESTROYED, 4,                1,  2, 0, "s1 s2", "",      "",     _("^TC^TT^BG team %s^BG control point has been destroyed by %s"), "", NAME)
     MULTITEAM_INFO(ONSLAUGHT_GENDESTROYED, 4,               1,  0, 0, "", "",           "",     _("^TC^TT^BG generator has been destroyed"), "", GENERATOR)
     MSG_CENTER_NOTIF(TEAMCHANGE_SUICIDE,                1,      0, 1, "",               CPID_TEAMCHANGE,        "1 f1", _("^K1Suicide in ^COUNT"), "")
 
     MSG_CENTER_NOTIF(TIMEOUT_BEGINNING,                 1,      0, 1, "",               CPID_TIMEOUT,           "1 f1", _("^F4Timeout begins in ^COUNT"), "")
-    MSG_CENTER_NOTIF(TIMEOUT_ENDING,                    1,      0, 1, "",               CPID_TIMEOUT,           "1 f1", _("^F4Timeout ends in ^COUNT"), "")
+    MSG_CENTER_NOTIF(TIMEOUT_ENDING,                    1,      0, 1, "",               CPID_TIMEIN,            "1 f1", _("^F4Timeout ends in ^COUNT"), "")
 
     MSG_CENTER_NOTIF(JOIN_PREVENT_MINIGAME,             1,      0, 0, "",               CPID_Null,              "0 0",  _("^K1Cannot join given minigame session!"), "" )
 
index e7a02dd65947354eec106c17a68275eebfeb2a85..d2682a148f70c937ea202d0ed7e1b1822109b114 100644 (file)
@@ -65,6 +65,7 @@ ENUMCLASS(CPID)
        CASE(CPID, RACE_FINISHLAP)
        CASE(CPID, TEAMCHANGE)
        CASE(CPID, TIMEOUT)
+       CASE(CPID, TIMEIN)
        CASE(CPID, VEHICLES)
        CASE(CPID, VEHICLES_OTHER)
        /** always last */
index db5d29cefda9ec18af34da81e6e57708630c53a4..46e80fbc3e47aba9df7b2c659fa0ffa1b12eb6a5 100644 (file)
@@ -3,6 +3,9 @@
 #define IS_ONGROUND(s)                      boolean((s).flags & FL_ONGROUND)
 #define SET_ONGROUND(s)                     ((s).flags |= FL_ONGROUND)
 #define UNSET_ONGROUND(s)                   ((s).flags &= ~FL_ONGROUND)
+#define IS_ONSLICK(s)                                          boolean((s).flags & FL_ONSLICK)
+#define SET_ONSLICK(s)                                         ((s).flags |= FL_ONSLICK)
+#define UNSET_ONSLICK(s)                                       ((s).flags &= ~FL_ONSLICK)
 
 #ifdef CSQC
 .float bouncestop;
@@ -79,6 +82,8 @@ const int MOVETYPE_ANGLENOCLIP      = 1;
 const int MOVETYPE_ANGLECLIP        = 2;
 #endif
 
+const int FL_ONSLICK = BIT(20);
+
 const int MOVETYPE_FAKEPUSH         = 13;
 
 const int MOVEFLAG_VALID = BIT(23);
index f5c0e0316e3340bb995e04577ad9719375c063b8..b5635e0945e0625dce91d9877bdb67fe7ab32285 100644 (file)
@@ -39,6 +39,13 @@ void Physics_UpdateStats(entity this, float maxspd_mod)
        STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, this) = Physics_ClientOption(this, "airspeedlimit_nonqw", autocvar_sv_airspeedlimit_nonqw) * maxspd_mod;
        STAT(MOVEVARS_MAXSPEED, this) = Physics_ClientOption(this, "maxspeed", autocvar_sv_maxspeed) * maxspd_mod; // also slow walking
 
+       STAT(PL_MIN, this) = autocvar_sv_player_mins;
+       STAT(PL_MAX, this) = autocvar_sv_player_maxs;
+       STAT(PL_VIEW_OFS, this) = autocvar_sv_player_viewoffset;
+       STAT(PL_CROUCH_MIN, this) = autocvar_sv_player_crouch_mins;
+       STAT(PL_CROUCH_MAX, this) = autocvar_sv_player_crouch_maxs;
+       STAT(PL_CROUCH_VIEW_OFS, this) = autocvar_sv_player_crouch_viewoffset;
+
        // old stats
        // fix some new settings
        STAT(MOVEVARS_AIRACCEL_QW_STRETCHFACTOR, this) = Physics_ClientOption(this, "airaccel_qw_stretchfactor", autocvar_sv_airaccel_qw_stretchfactor);
@@ -49,6 +56,7 @@ void Physics_UpdateStats(entity this, float maxspd_mod)
        STAT(MOVEVARS_AIRACCEL_SIDEWAYS_FRICTION, this) = Physics_ClientOption(this, "airaccel_sideways_friction", autocvar_sv_airaccel_sideways_friction);
        STAT(MOVEVARS_AIRCONTROL, this) = Physics_ClientOption(this, "aircontrol", autocvar_sv_aircontrol);
        STAT(MOVEVARS_AIRCONTROL_POWER, this) = Physics_ClientOption(this, "aircontrol_power", autocvar_sv_aircontrol_power);
+       STAT(MOVEVARS_AIRCONTROL_BACKWARDS, this) = Physics_ClientOption(this, "aircontrol_backwards", autocvar_sv_aircontrol_backwards);
        STAT(MOVEVARS_AIRCONTROL_PENALTY, this) = Physics_ClientOption(this, "aircontrol_penalty", autocvar_sv_aircontrol_penalty);
        STAT(MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL, this) = Physics_ClientOption(this, "warsowbunny_airforwardaccel", autocvar_sv_warsowbunny_airforwardaccel);
        STAT(MOVEVARS_WARSOWBUNNY_TOPSPEED, this) = Physics_ClientOption(this, "warsowbunny_topspeed", autocvar_sv_warsowbunny_topspeed);
@@ -119,7 +127,11 @@ void PM_ClientMovement_UpdateStatus(entity this)
 
 void CPM_PM_Aircontrol(entity this, float dt, vector wishdir, float wishspeed)
 {
-       float k = 32 * (2 * IsMoveInDirection(this.movement, 0) - 1);
+       float movity = IsMoveInDirection(this.movement, 0);
+       if(PHYS_AIRCONTROL_BACKWARDS(this))
+               movity += IsMoveInDirection(this.movement, 180);
+
+       float k = 32 * (2 * movity - 1);
        if (k <= 0)
                return;
 
@@ -295,7 +307,7 @@ bool PlayerJump(entity this)
        }
 
        if (!doublejump)
-               if (!IS_ONGROUND(this))
+               if (!IS_ONGROUND(this) && !IS_ONSLICK(this))
                        return IS_JUMP_HELD(this);
 
        bool track_jump = PHYS_CL_TRACK_CANJUMP(this);
@@ -332,7 +344,7 @@ bool PlayerJump(entity this)
                }
        }
 
-       if (!WAS_ONGROUND(this))
+       if (!WAS_ONGROUND(this) && !WAS_ONSLICK(this))
        {
 #ifdef SVQC
                if(autocvar_speedmeter)
@@ -354,6 +366,7 @@ bool PlayerJump(entity this)
        this.velocity_z += mjumpheight;
 
        UNSET_ONGROUND(this);
+       UNSET_ONSLICK(this);
        SET_JUMP_HELD(this);
 
 #ifdef SVQC
@@ -629,6 +642,24 @@ void PM_Footsteps(entity this)
 #endif
 }
 
+void PM_check_slick(entity this)
+{
+       if(!IS_ONGROUND(this))
+               return;
+
+       if(!PHYS_SLICK_APPLYGRAVITY(this))
+               return;
+
+       tracebox(this.origin, this.mins, this.maxs, this.origin - '0 0 1', MOVE_NOMONSTERS, this);
+       if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK)
+       {
+               UNSET_ONGROUND(this);
+               SET_ONSLICK(this);
+       }
+       else
+               UNSET_ONSLICK(this);
+}
+
 void PM_check_blocked(entity this)
 {
 #ifdef SVQC
@@ -639,8 +670,6 @@ void PM_check_blocked(entity this)
 #endif
 }
 
-.vector oldmovement;
-
 void PM_jetpack(entity this, float maxspd_mod, float dt)
 {
        //makevectors(this.v_angle.y * '0 1 0');
index fb7edc83a3b571e4820cd4304e0bb8fcc3973dc8..5c0b104178b0a385ee2509f9aa814f0d2b1c705c 100644 (file)
@@ -46,6 +46,7 @@ bool IsFlying(entity a);
 #define PHYS_AIRCONTROL(s)                  STAT(MOVEVARS_AIRCONTROL, s)
 #define PHYS_AIRCONTROL_PENALTY(s)          STAT(MOVEVARS_AIRCONTROL_PENALTY, s)
 #define PHYS_AIRCONTROL_POWER(s)            STAT(MOVEVARS_AIRCONTROL_POWER, s)
+#define PHYS_AIRCONTROL_BACKWARDS(s)        STAT(MOVEVARS_AIRCONTROL_BACKWARDS, s)
 #define PHYS_AIRSPEEDLIMIT_NONQW(s)         STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, s)
 #define PHYS_AIRSTOPACCELERATE(s)           STAT(MOVEVARS_AIRSTOPACCELERATE, s)
 #define PHYS_AIRSTRAFEACCELERATE(s)         STAT(MOVEVARS_AIRSTRAFEACCELERATE, s)
@@ -96,6 +97,8 @@ bool IsFlying(entity a);
 
 #define UPWARD_VELOCITY_CLEARS_ONGROUND(s)  STAT(GAMEPLAYFIX_UPVELOCITYCLEARSONGROUND, s)
 
+#define PHYS_SLICK_APPLYGRAVITY(s)             STAT(SLICK_APPLYGRAVITY, s)
+
 #define PHYS_INPUT_BUTTON_ATCK(s)           PHYS_INPUT_BUTTON_BUTTON1(s)
 #define PHYS_INPUT_BUTTON_JUMP(s)           PHYS_INPUT_BUTTON_BUTTON2(s)
 #define PHYS_INPUT_BUTTON_ATCK2(s)          PHYS_INPUT_BUTTON_BUTTON3(s)
@@ -155,6 +158,7 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK)
 #define UNSET_JUMP_HELD(s)                  ((s).flags |= FL_JUMPRELEASED)
 
 #define WAS_ONGROUND(s)                     boolean((s).lastflags & FL_ONGROUND)
+#define WAS_ONSLICK(s)                      boolean((s).lastflags & FL_ONSLICK)
 
 #define ITEMS_STAT(s)                       ((s).items)
 
@@ -246,6 +250,8 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK)
 
        bool Physics_Valid(string thecvar);
 
+       void Physics_UpdateStats(entity this, float maxspd_mod);
+
        .float stat_sv_airspeedlimit_nonqw = _STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW);
        .float stat_sv_maxspeed = _STAT(MOVEVARS_MAXSPEED);
 
index 252c0fdeca645b5378a76a2e6cbce001a7e69e48..f720d3694c149244526738e25d9781aa9420147f 100644 (file)
@@ -264,6 +264,11 @@ REGISTER_STAT(CAMERA_SPECTATOR, int)
 
 REGISTER_STAT(SPECTATORSPEED, float)
 
+#ifdef SVQC
+bool autocvar_sv_slick_applygravity;
+#endif
+REGISTER_STAT(SLICK_APPLYGRAVITY, bool, autocvar_sv_slick_applygravity)
+
 #ifdef SVQC
 #include "physics/movetypes/movetypes.qh"
 #endif
@@ -273,6 +278,7 @@ REGISTER_STAT(MOVEVARS_AIRCONTROL_PENALTY, float)
 REGISTER_STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, float)
 REGISTER_STAT(MOVEVARS_AIRSTRAFEACCEL_QW, float)
 REGISTER_STAT(MOVEVARS_AIRCONTROL_POWER, float)
+REGISTER_STAT(MOVEVARS_AIRCONTROL_BACKWARDS, bool)
 noref bool autocvar_sv_gameplayfix_nogravityonground;
 REGISTER_STAT(MOVEFLAGS, int, MOVEFLAG_VALID
                               | (autocvar_sv_gameplayfix_q2airaccelerate ? MOVEFLAG_Q2AIRACCELERATE : 0)
index f9f89a73fa6ec8a5da6bf70d62227079c8569d5d..7424d695aa041cf2eb557576d209df327ae60a77 100644 (file)
@@ -840,7 +840,7 @@ LABEL(pickup)
                                if(it.classname != "item_flag_team" && it.classname != "item_kh_key")
                                {
                                        Item_Show(it, -1);
-                                       RandomSelection_Add(it, 0, string_null, it.cnt, 0);
+                                       RandomSelection_AddEnt(it, it.cnt, 0);
                                }
                        });
                        e = RandomSelection_chosen_ent;
@@ -882,7 +882,7 @@ void Item_FindTeam(entity this)
                IL_EACH(g_items, it.team == this.team,
                {
                        if(it.classname != "item_flag_team" && it.classname != "item_kh_key")
-                               RandomSelection_Add(it, 0, string_null, it.cnt, 0);
+                               RandomSelection_AddEnt(it, it.cnt, 0);
                });
 
                e = RandomSelection_chosen_ent;
index 1c65e806af7e97544ef801904c7f9c1aeb0e741d..06e14555ed0aca53537f9c2143ceabfc96b5b2b7 100644 (file)
@@ -29,6 +29,7 @@ void StartItem(entity this, entity a);
 
 #ifdef CSQC
 
+bool   autocvar_cl_items_nofade;
 float  autocvar_cl_animate_items = 1;
 float  autocvar_cl_ghost_items = 0.45;
 vector autocvar_cl_ghost_items_color = '-1 -1 -1';
index 13094e790aa527db25853d5a7f72944490c2b57b..d2c8ee06770202e2c23dc25b3fe3223caae385a9 100644 (file)
@@ -146,6 +146,7 @@ void func_breakable_behave_destroyed(entity this)
                stopsound (this, CH_TRIGGER_SINGLE);
 }
 
+void func_breakable_destroy(entity this, entity actor, entity trigger);
 void func_breakable_behave_restore(entity this)
 {
        this.health = this.max_health;
@@ -162,6 +163,8 @@ void func_breakable_behave_restore(entity this)
                this.bot_attack = true;
                this.event_damage = func_breakable_damage;
        }
+       if(this.spawnflags & 4)
+               this.use = func_breakable_destroy; // don't need to set it usually, as .use isn't reset
        this.state = 0;
        this.nextthink = 0; // cancel auto respawn
        func_breakable_colormod(this);
index b5e97b1fc7516f1a082a82d69c354a85f4b8594e..949f478fdd3c714e9ba3402416be4b182c348b7a 100644 (file)
@@ -92,7 +92,7 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle
                                        RandomSelection_Init();
                                        FOREACH_WORD(teleporter.noise, true,
                                        {
-                                               RandomSelection_Add(NULL, 0, it, 1, 1);
+                                               RandomSelection_AddString(it, 1, 1);
                                        });
                                        thesound = RandomSelection_chosen_string;
                                }
@@ -198,7 +198,7 @@ entity Simple_TeleportPlayer(entity teleporter, entity player)
                                if(check_tdeath(player, locout, '0 0 0', '0 0 0'))
                                        p = 0;
                        }
-                       RandomSelection_Add(it, 0, string_null, (it.cnt ? it.cnt : 1), p);
+                       RandomSelection_AddEnt(it, (it.cnt ? it.cnt : 1), p);
                });
                e = RandomSelection_chosen_ent;
        }
index c5049da3931f73b8eab4288601d30fd71426d25a..dc1a781f81a0c81933fae9d47f63baf53506555a 100644 (file)
@@ -3,7 +3,7 @@
 void delay_use(entity this, entity actor, entity trigger)
 {
    setthink(this, SUB_UseTargets_self);
-   this.nextthink = this.wait;
+   this.nextthink = time + this.wait;
 }
 
 void delay_reset(entity this)
index ef13dd5bec0d95af57d2432ba25e83953335cfa5..498f0ff2dbbffb885c36a546ff7f4faba2bac378 100644 (file)
@@ -155,9 +155,9 @@ void trigger_push_touch(entity this, entity toucher)
                for(e = NULL; (e = find(e, targetname, this.target)); )
                {
                        if(e.cnt)
-                               RandomSelection_Add(e, 0, string_null, e.cnt, 1);
+                               RandomSelection_AddEnt(e, e.cnt, 1);
                        else
-                               RandomSelection_Add(e, 0, string_null, 1, 1);
+                               RandomSelection_AddEnt(e, 1, 1);
                }
                toucher.velocity = trigger_push_calculatevelocity(toucher.origin, RandomSelection_chosen_ent, this.height);
        }
index 54e1e09919f06666bb6ff1b22c379b5f7577bc0c..1f5139896d19eea55fa89b5c5d8085a9f2b37e9f 100644 (file)
@@ -203,6 +203,7 @@ void SUB_UseTargets_Ex(entity this, entity actor, entity trigger, bool preventRe
                t.target2 = this.target2;
                t.target3 = this.target3;
                t.target4 = this.target4;
+               t.antiwall_flag = this.antiwall_flag;
                return;
        }
 
@@ -260,7 +261,7 @@ void SUB_UseTargets_Ex(entity this, entity actor, entity trigger, bool preventRe
                                {
                                        if(this.target_random)
                                        {
-                                               RandomSelection_Add(t, 0, string_null, 1, 0);
+                                               RandomSelection_AddEnt(t, 1, 0);
                                        }
                                        else
                                        {
index a893b3e8a77d30c281ef602770dc6098319947f6..c21e327d4470655336e6033d1823587c65f6e458 100644 (file)
@@ -156,17 +156,14 @@ void turret_draw2d(entity this)
 
        o_z = 0;
 
-       float edgedistance_min, crosshairdistance;
-               edgedistance_min = min((o_y - (vid_conheight * waypointsprite_edgeoffset_top)),
+       float edgedistance_min = min((o.y - (vid_conheight * waypointsprite_edgeoffset_top)),
        (o_x - (vid_conwidth * waypointsprite_edgeoffset_left)),
        (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right)) - o_x,
        (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom)) - o_y);
 
-       float vidscale = max(vid_conwidth / vid_width, vid_conheight / vid_height);
+       float crosshairdistance = sqrt( pow(o.x - vid_conwidth/2, 2) + pow(o.y - vid_conheight/2, 2) );
 
-       crosshairdistance = sqrt( pow(o_x - vid_conwidth/2, 2) + pow(o_y - vid_conheight/2, 2) );
-
-       t = waypointsprite_scale * vidscale;
+       t = waypointsprite_scale;
        a *= waypointsprite_alpha;
 
        {
index cf55aa65214b7a84673da155f3ffb0eece56eb36..763dd6e8de83646cefda1786d8f6b51d3ce1dbaf 100644 (file)
@@ -204,7 +204,7 @@ void W_RandomWeapons(entity e, float n)
                RandomSelection_Init();
                FOREACH(Weapons, it != WEP_Null, {
                        if (remaining & (it.m_wepset))
-                               RandomSelection_Add(it, 0, string_null, 1, 1);
+                               RandomSelection_AddEnt(it, 1, 1);
                });
                Weapon w = RandomSelection_chosen_ent;
                result |= WepSet_FromWeapon(w);
index 1fdb8d6ad6773a78cba7a24b428b15c389193357..df9bd470a31b9fe70caaf68cde8a2d4ff6aebf7f 100644 (file)
@@ -40,6 +40,7 @@ CLASS(Devastator, Weapon)
         P(class, prefix, remote_edgedamage, float, NONE) \
         P(class, prefix, remote_force, float, NONE) \
         P(class, prefix, remote_jump_damage, float, NONE) \
+        P(class, prefix, remote_jump_force, float, NONE) \
         P(class, prefix, remote_jump_radius, float, NONE) \
         P(class, prefix, remote_jump_velocity_z_add, float, NONE) \
         P(class, prefix, remote_jump_velocity_z_max, float, NONE) \
@@ -141,50 +142,56 @@ void W_Devastator_DoRemoteExplode(entity this, .entity weaponentity)
        this.event_damage = func_null;
        this.takedamage = DAMAGE_NO;
 
-       float handled_as_rocketjump = false;
+       bool handled_as_rocketjump = false;
+       entity head = NULL;
 
-       entity head = WarpZone_FindRadius(
-               this.origin,
-               WEP_CVAR(devastator, remote_jump_radius),
-               false
-       );
-
-       while(head)
+       if(WEP_CVAR(devastator, remote_jump_radius))
        {
-               if(head.takedamage && (head == this.realowner))
+               head = WarpZone_FindRadius(
+                       this.origin,
+                       WEP_CVAR(devastator, remote_jump_radius),
+                       false
+               );
+
+               while(head)
                {
-                       float distance_to_head = vlen(this.origin - head.WarpZone_findradius_nearest);
-                       if(distance_to_head <= WEP_CVAR(devastator, remote_jump_radius))
+                       if(head.takedamage && (head == this.realowner))
                        {
-                               // we handled this as a rocketjump :)
-                               handled_as_rocketjump = true;
-
-                               // modify velocity
-                               head.velocity_x *= 0.9;
-                               head.velocity_y *= 0.9;
-                               head.velocity_z = bound(
-                                       WEP_CVAR(devastator, remote_jump_velocity_z_min),
-                                       head.velocity.z + WEP_CVAR(devastator, remote_jump_velocity_z_add),
-                                       WEP_CVAR(devastator, remote_jump_velocity_z_max)
-                               );
-
-                               // now do the damage
-                               RadiusDamage(
-                                       this,
-                                       head,
-                                       WEP_CVAR(devastator, remote_jump_damage),
-                                       WEP_CVAR(devastator, remote_jump_damage),
-                                       WEP_CVAR(devastator, remote_jump_radius),
-                                       NULL,
-                                       head,
-                                       0,
-                                       this.projectiledeathtype | HITTYPE_BOUNCE,
-                                       NULL
-                               );
-                               break;
+                               if(vdist(this.origin - head.WarpZone_findradius_nearest, <=, WEP_CVAR(devastator, remote_jump_radius)))
+                               {
+                                       // we handled this as a rocketjump :)
+                                       handled_as_rocketjump = true;
+
+                                       // modify velocity
+                                       if(WEP_CVAR(devastator, remote_jump_velocity_z_add))
+                                       {
+                                               head.velocity_x *= 0.9;
+                                               head.velocity_y *= 0.9;
+                                               head.velocity_z = bound(
+                                                       WEP_CVAR(devastator, remote_jump_velocity_z_min),
+                                                       head.velocity.z + WEP_CVAR(devastator, remote_jump_velocity_z_add),
+                                                       WEP_CVAR(devastator, remote_jump_velocity_z_max)
+                                               );
+                                       }
+
+                                       // now do the damage
+                                       RadiusDamage(
+                                               this,
+                                               head,
+                                               WEP_CVAR(devastator, remote_jump_damage),
+                                               WEP_CVAR(devastator, remote_jump_damage),
+                                               WEP_CVAR(devastator, remote_jump_radius),
+                                               NULL,
+                                               head,
+                                               (WEP_CVAR(devastator, remote_jump_force) ? WEP_CVAR(devastator, remote_jump_force) : 0),
+                                               this.projectiledeathtype | HITTYPE_BOUNCE,
+                                               NULL
+                                       );
+                                       break;
+                               }
                        }
+                       head = head.chain;
                }
-               head = head.chain;
        }
 
        RadiusDamage(
index c2b93747c8c4c14d7d9437f6c50e2cc2934b8d89..ae1e48bb2c3e7f511af59d27ba3235a2434f07f5 100644 (file)
@@ -150,7 +150,7 @@ void W_Fireball_LaserPlay(entity this, float dt, float dist, float damage, float
                if(d < dist)
                {
                        e.fireball_impactvec = p;
-                       RandomSelection_Add(e, 0, string_null, 1 / (1 + d), !Fire_IsBurning(e));
+                       RandomSelection_AddEnt(e, 1 / (1 + d), !Fire_IsBurning(e));
                }
        }
        if(RandomSelection_chosen_ent)
index 23e7c23ae5b2b16ccdd9b918e03ea378cfef60e4..ba7efe6a31a33384e1c1b0cbcb0a535e6ca72b99 100644 (file)
@@ -383,13 +383,16 @@ void Draw_GrapplingHook(entity this)
                        break;
        }
 
-       if((this.owner.sv_entnum == player_localentnum - 1) && autocvar_chase_active <= 0)
+       if((this.owner.sv_entnum == player_localentnum - 1))
        {
                switch(this.HookType)
                {
                        default:
                        case NET_ENT_CLIENT_HOOK:
-                               a = view_origin + view_forward * vs.x + view_right * -vs.y + view_up * vs.z;
+                               if(autocvar_chase_active > 0)
+                                       a = csqcplayer.origin;
+                               else
+                                       a = view_origin + view_forward * vs.x + view_right * -vs.y + view_up * vs.z;
                                b = this.origin;
                                break;
                        case NET_ENT_CLIENT_ARC_BEAM:
index f90afcb529f40f7f2a75bed0e6cf7a0fb043f1e8..f74e9c2d5526c895fd8b28c1bdd9bb7a884faef0 100644 (file)
@@ -4,7 +4,6 @@ void sys_phys_fix(entity this, float dt)
 {
        this.team = myteam + 1; // is this correct?
        PHYS_WATERJUMP_TIME(this) -= dt;
-       this.oldmovement = this.movement;
        this.movement = PHYS_INPUT_MOVEVALUES(this);
        this.items = STAT(ITEMS, this);
        this.spectatorspeed = STAT(SPECTATORSPEED, this);
index c0a47e39b2a4aff558c3c53af50d49694d6c01f7..b25c93b2d3d3177342e8994b12a29b26ecceb7dd 100644 (file)
@@ -62,6 +62,8 @@ void sys_phys_update(entity this, float dt)
                goto end;
        }
 
+       PM_check_slick(this);
+
        if (IS_SVQC && !PHYS_FIXANGLE(this)) { this.angles = '0 1 0' * this.v_angle.y; }
        if (IS_PLAYER(this)) {
                if (IS_ONGROUND(this)) {
@@ -215,7 +217,7 @@ void sys_phys_simulate(entity this, float dt)
        }
        if (this.com_phys_ladder) {
                if (this.viewloc) {
-                       wishvel.z = this.oldmovement.x;
+                       wishvel.z = this.movement_old.x;
                }
                if (this.ladder_entity.classname == "func_water") {
                        float f = vlen(wishvel);
index 7f55a3c10f13b6a62518533321513a2f3fc02196..e4e1d536aa85eb84175ec0e3350d3f14678f86ba 100644 (file)
@@ -275,6 +275,9 @@ NET_HANDLE(ENT_CLIENT_MODEL, bool isnew)
                this.csqcmodel_teleported = 1;
        }
 
+       if(sf & BIT(14))
+               viewloc_SetTags(this);
+
        CSQCModel_InterpolateAnimation_Note(this, sf);
        InterpolateOrigin_Note(this);
        CSQCPlayer_PostUpdate(this);
index 2287d869d0c455bdbf15c77950ac8a5671f20b64..627fec11a92e1293bec76db098230b0a5fafc7f0 100644 (file)
@@ -9,7 +9,7 @@ void RandomSelection_Init()
        RandomSelection_best_priority = -1;
 }
 
-void RandomSelection_Add(entity e, float f, string s, float weight, float priority)
+void RandomSelection_Add(entity e, float f, string s, vector v, float weight, float priority)
 {
        if (priority > RandomSelection_best_priority)
        {
@@ -17,6 +17,7 @@ void RandomSelection_Add(entity e, float f, string s, float weight, float priori
                RandomSelection_chosen_ent = e;
                RandomSelection_chosen_float = f;
                RandomSelection_chosen_string = s;
+               RandomSelection_chosen_vec = v;
                RandomSelection_totalweight = weight;
        }
        else if (priority == RandomSelection_best_priority)
@@ -27,6 +28,7 @@ void RandomSelection_Add(entity e, float f, string s, float weight, float priori
                        RandomSelection_chosen_ent = e;
                        RandomSelection_chosen_float = f;
                        RandomSelection_chosen_string = s;
+                       RandomSelection_chosen_vec = v;
                }
        }
 }
index 1834a97a331164086464ce6ecc87d0527971fb9a..b2fc53f0cac4edaaa3ef964c25b7b6093ac2ae2c 100644 (file)
@@ -5,9 +5,14 @@ float RandomSelection_best_priority;
 entity RandomSelection_chosen_ent;
 float RandomSelection_chosen_float;
 string RandomSelection_chosen_string;
+vector RandomSelection_chosen_vec;
 
 void RandomSelection_Init();
-void RandomSelection_Add(entity e, float f, string s, float weight, float priority);
+void RandomSelection_Add(entity e, float f, string s, vector v, float weight, float priority);
+#define RandomSelection_AddEnt(e, weight, priority) RandomSelection_Add(e, 0, string_null, '0 0 0', weight, priority)
+#define RandomSelection_AddFloat(f, weight, priority) RandomSelection_Add(NULL, f, string_null, '0 0 0', weight, priority)
+#define RandomSelection_AddString(s, weight, priority) RandomSelection_Add(NULL, 0, s, '0 0 0', weight, priority)
+#define RandomSelection_AddVec(v, weight, priority) RandomSelection_Add(NULL, 0, string_null, v, weight, priority)
 
 // prandom - PREDICTABLE random number generator
 
index ede6543e7d983cfed14ee19587da465bd7411b06..8f98df58164e2fbd9933d17492ee6ea2f5ef4c05 100644 (file)
@@ -9,6 +9,8 @@
 #include "mainwindow.qh"
 
 #define ADDVALUE_FPS(i) e.addValue(e, strzone(sprintf(_("%d fps"), i)), #i)
+#define ADDVALUE_SPEED_KB(i) e.addValue(e, strzone(sprintf(_("%d kb/s"), i)), #i)
+#define ADDVALUE_SPEED_MB(i, j) e.addValue(e, strzone(sprintf(_("%d MB/s"), i)), #j)
 entity makeXonoticMiscSettingsTab()
 {
        entity me;
@@ -51,9 +53,16 @@ void XonoticMiscSettingsTab_fill(entity me)
                me.TD(me, 1, 2, e = makeXonoticSlider_T(1, 5, 1, "cl_curl_maxdownloads",
                        _("Maximum number of concurrent HTTP/FTP downloads")));
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Speed (kB/s):")));
-               me.TD(me, 1, 2, e = makeXonoticSlider_T(10, 2000, 50, "cl_curl_maxspeed",
-                       _("Maximum download speed")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Download speed:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_curl_maxspeed"));
+               ADDVALUE_SPEED_KB(50);
+               ADDVALUE_SPEED_KB(100);
+               ADDVALUE_SPEED_KB(300);
+               ADDVALUE_SPEED_KB(500);
+               ADDVALUE_SPEED_MB(1, 1000);
+               ADDVALUE_SPEED_MB(2, 2000);
+               e.addValue(e, strzone(_("Unlimited")), "0");
+               e.configureXonoticTextSliderValues(e);
        me.TR(me);
                if(cvar("developer"))
                {
index 6faddf4dde63d51399a626be342967caf0def555..c4f77dfad38446d8e11fe91466db06e6d1319ae7 100644 (file)
@@ -509,6 +509,7 @@ float autocvar_sv_warsowbunny_turnaccel;
 float autocvar_sv_airaccel_sideways_friction;
 float autocvar_sv_aircontrol;
 float autocvar_sv_aircontrol_power;
+float autocvar_sv_aircontrol_backwards;
 float autocvar_sv_aircontrol_penalty;
 float autocvar_sv_warsowbunny_airforwardaccel;
 float autocvar_sv_warsowbunny_topspeed;
index 55c1bda6cc63d86153951a7c2262c399ca81d21f..b5fe723c36fbb082d5a15afacdda59374fbc2c78 100644 (file)
@@ -177,7 +177,7 @@ void bot_setnameandstuff(entity this)
                                        break;
                                }
                        ));
-                       RandomSelection_Add(NULL, 0, readfile, 1, prio);
+                       RandomSelection_AddString(readfile, 1, prio);
                }
                readfile = RandomSelection_chosen_string;
                fclose(file);
index 9f763a886d73217cd4490aa05fba9f75a2add448..543a3f98d2174346e3fd61b27ae320ea15fd3f78 100644 (file)
@@ -262,7 +262,7 @@ float CheatImpulse(entity this, int imp)
                case CHIMPULSE_R00T.impulse:
                        IS_CHEAT(this, imp, 0, 0);
                        RandomSelection_Init();
-                       FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it) && DIFF_TEAM(it, this), LAMBDA(RandomSelection_Add(it, 0, string_null, 1, 1)));
+                       FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it) && DIFF_TEAM(it, this), LAMBDA(RandomSelection_AddEnt(it, 1, 1)));
                        if(RandomSelection_chosen_ent)
                                e = RandomSelection_chosen_ent;
                        else
@@ -475,9 +475,9 @@ float CheatCommand(entity this, int argc)
                        RandomSelection_Init();
                        crosshair_trace(this);
                        for(entity e = NULL; (e = find(e, classname, "dragbox_box")); )
-                               RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
+                               RandomSelection_AddEnt(e, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
                        for(entity e = NULL; (e = find(e, classname, "dragpoint")); )
-                               RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
+                               RandomSelection_AddEnt(e, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
                        if(RandomSelection_chosen_ent)
                        {
                                delete(RandomSelection_chosen_ent.killindicator.killindicator);
@@ -497,9 +497,9 @@ float CheatCommand(entity this, int argc)
                                RandomSelection_Init();
                                crosshair_trace(this);
                                for(entity e = NULL; (e = find(e, classname, "dragbox_box")); )
-                                       RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
+                                       RandomSelection_AddEnt(e, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
                                for(entity e = NULL; (e = find(e, classname, "dragpoint")); )
-                                       RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
+                                       RandomSelection_AddEnt(e, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
                                if(RandomSelection_chosen_ent)
                                {
                                        if(substring(argv(1), 0, 1) == "*")
index ee77312d2153b6c8ea6414ac7f975ecad4841f8b..7b6c13e9ba56f316aceeba2b405698455de600c6 100644 (file)
@@ -625,9 +625,11 @@ void PutClientInServer(entity this)
                FixPlayermodel(this);
                this.drawonlytoclient = NULL;
 
+               this.viewloc = NULL;
+
                this.crouch = false;
-               this.view_ofs = STAT(PL_VIEW_OFS, NULL);
-               setsize(this, STAT(PL_MIN, NULL), STAT(PL_MAX, NULL));
+               this.view_ofs = STAT(PL_VIEW_OFS, this);
+               setsize(this, STAT(PL_MIN, this), STAT(PL_MAX, this));
                this.spawnorigin = spot.origin;
                setorigin(this, spot.origin + '0 0 1' * (1 - this.mins.z - 24));
                // don't reset back to last position, even if new position is stuck in solid
@@ -1208,6 +1210,9 @@ void ClientConnect(entity this)
        if (IS_REAL_CLIENT(this))
                sv_notice_join(this);
 
+       // update physics stats (players can spawn before physics runs)
+       Physics_UpdateStats(this, PHYS_HIGHSPEED(this));
+
        IL_EACH(g_initforplayer, it.init_for_player, {
                it.init_for_player(it, this);
        });
@@ -1607,7 +1612,7 @@ void SetZoomState(entity this, float z)
 void GetPressedKeys(entity this)
 {
        MUTATOR_CALLHOOK(GetPressedKeys, this);
-       int keys = this.pressedkeys;
+       int keys = STAT(PRESSED_KEYS, this);
        keys = BITSET(keys, KEY_FORWARD,        this.movement.x > 0);
        keys = BITSET(keys, KEY_BACKWARD,       this.movement.x < 0);
        keys = BITSET(keys, KEY_RIGHT,          this.movement.y > 0);
@@ -1617,7 +1622,9 @@ void GetPressedKeys(entity this)
        keys = BITSET(keys, KEY_CROUCH,         PHYS_INPUT_BUTTON_CROUCH(this));
        keys = BITSET(keys, KEY_ATCK,           PHYS_INPUT_BUTTON_ATCK(this));
        keys = BITSET(keys, KEY_ATCK2,          PHYS_INPUT_BUTTON_ATCK2(this));
-       this.pressedkeys = keys;
+       this.pressedkeys = keys; // store for other users
+
+       STAT(PRESSED_KEYS, this) = keys;
 }
 
 /*
@@ -1650,7 +1657,7 @@ void SpectateCopy(entity this, entity spectatee)
        this.hit_time = spectatee.hit_time;
        this.strength_finished = spectatee.strength_finished;
        this.invincible_finished = spectatee.invincible_finished;
-       this.pressedkeys = spectatee.pressedkeys;
+       STAT(PRESSED_KEYS, this) = STAT(PRESSED_KEYS, spectatee);
        this.weapons = spectatee.weapons;
        this.vortex_charge = spectatee.vortex_charge;
        this.vortex_chargepool_ammo = spectatee.vortex_chargepool_ammo;
@@ -1667,6 +1674,7 @@ void SpectateCopy(entity this, entity spectatee)
        this.angles = spectatee.v_angle;
        STAT(FROZEN, this) = STAT(FROZEN, spectatee);
        this.revive_progress = spectatee.revive_progress;
+       this.viewloc = spectatee.viewloc;
        if(!PHYS_INPUT_BUTTON_USE(this) && STAT(CAMERA_SPECTATOR, this) != 2)
                this.fixangle = true;
        setorigin(this, spectatee.origin);
@@ -2334,7 +2342,7 @@ void PlayerPreThink (entity this)
                                        {
                                                if ((this.respawn_flags & RESPAWN_FORCE) && !(this.respawn_time < this.respawn_time_max))
                                                        this.deadflag = DEAD_RESPAWNING;
-                                               else if (!button_pressed || (this.respawn_flags & RESPAWN_FORCE))
+                                               else if (!button_pressed || (time >= this.respawn_time_max && (this.respawn_flags & RESPAWN_FORCE)))
                                                        this.deadflag = DEAD_DEAD;
                                                break;
                                        }
index 35418a02f07d420a9e0805f341a73cbaa6632ca5..ec1f9c89fa7adce3f5887a553f998c701faec3f7 100644 (file)
@@ -210,6 +210,7 @@ void timeout_handler_think(entity this)
                        }
                        else  // time to end the timeout
                        {
+                               Kill_Notification(NOTIF_ALL, NULL, MSG_CENTER, CPID_TIMEIN);
                                timeout_status = TIMEOUT_INACTIVE;
 
                                // reset the slowmo value back to normal
index 8b1726a0a6ee978911e2afea1ef1349e7442c4bc..a69735a32274c4c7f951b03e69e863f94e1aa9f9 100644 (file)
@@ -260,7 +260,7 @@ bool independent_players;
 
 string clientstuff;
 .float phase;
-.int pressedkeys = _STAT(PRESSED_KEYS);
+.int pressedkeys;
 
 .string fog;
 
index b8b13c8db3d688481f09cfcd78966d3dd8752453..cb43861acf4ae272ffc7f67ae07950dbf2c03977 100644 (file)
@@ -572,7 +572,10 @@ void Unfreeze (entity targ)
                return;
 
        if(STAT(FROZEN, targ) && STAT(FROZEN, targ) != 3) // only reset health if target was frozen
+       {
                targ.health = ((IS_PLAYER(targ)) ? start_health : targ.max_health);
+               targ.pauseregen_finished = time + autocvar_g_balance_pause_health_regen;
+       }
 
        STAT(FROZEN, targ) = 0;
        targ.revive_progress = 0;
index 348f307270d84b52c2ab9a6486318a948a81fdaa..58fb26a4ed4a0acd1ed272252e3dbeac39bf7257 100644 (file)
@@ -152,11 +152,11 @@ bool g_clientmodel_genericsendentity(entity this, entity to, int sf)
                        WriteCoord(MSG_ENTITY, this.movedir.z);
                        WriteByte(MSG_ENTITY, floor(this.lip * 255));
                }
-               WriteShort(MSG_ENTITY, this.fade_start);
-               WriteShort(MSG_ENTITY, this.fade_end);
-               WriteShort(MSG_ENTITY, this.alpha_max);
-               WriteShort(MSG_ENTITY, this.alpha_min);
-               WriteShort(MSG_ENTITY, this.inactive);
+               WriteByte(MSG_ENTITY, this.fade_start);
+               WriteByte(MSG_ENTITY, this.fade_end);
+               WriteByte(MSG_ENTITY, this.alpha_max);
+               WriteByte(MSG_ENTITY, this.alpha_min);
+               WriteByte(MSG_ENTITY, this.inactive);
                WriteShort(MSG_ENTITY, this.fade_vertical_offset);
        }
 
index f6eaace3de622e8916b47d783c26603b02938ea4..67cdd248d55a12e499bde7e5dd8be084aaffe612 100644 (file)
@@ -320,17 +320,20 @@ void cvar_changes_init()
                BADCVAR("g_invasion_point_limit");
                BADCVAR("g_keyhunt_point_leadlimit");
                BADCVAR("g_nexball_goalleadlimit");
+               BADCVAR("g_new_toys_use_pickupsound");
+               BADCVAR("g_physics_predictall");
+               BADCVAR("g_piggyback");
                BADCVAR("g_tdm_point_leadlimit");
                BADCVAR("g_tdm_point_limit");
                BADCVAR("leadlimit_and_fraglimit");
                BADCVAR("leadlimit_override");
                BADCVAR("pausable");
-               BADCVAR("sv_allow_fullbright");
                BADCVAR("sv_checkforpacketsduringsleep");
                BADCVAR("sv_intermission_cdtrack");
                BADCVAR("sv_minigames");
                BADCVAR("sv_namechangetimer");
                BADCVAR("sv_precacheplayermodels");
+               BADCVAR("sv_stepheight");
                BADCVAR("sv_timeout");
                BADPREFIX("crypto_");
                BADPREFIX("gameversion_");
@@ -342,9 +345,11 @@ void cvar_changes_init()
                BADPREFIX("net_");
                BADPREFIX("prvm_");
                BADPREFIX("skill_");
+               BADPREFIX("sv_allow_");
                BADPREFIX("sv_cullentities_");
                BADPREFIX("sv_maxidle_");
                BADPREFIX("sv_minigames_");
+               BADPREFIX("sv_radio_");
                BADPREFIX("sv_timeout_");
                BADPREFIX("sv_vote_");
                BADPREFIX("timelimit_");
@@ -369,6 +374,7 @@ void cvar_changes_init()
                BADCVAR("g_balance_teams_scorefactor");
                BADCVAR("g_ban_sync_trusted_servers");
                BADCVAR("g_ban_sync_uri");
+               BADCVAR("g_buffs");
                BADCVAR("g_ca_teams_override");
                BADCVAR("g_ctf_ignore_frags");
                BADCVAR("g_domination_point_limit");
@@ -391,6 +397,8 @@ void cvar_changes_init()
                BADCVAR("g_maxplayers");
                BADCVAR("g_mirrordamage");
                BADCVAR("g_nexball_goallimit");
+               BADCVAR("g_norecoil");
+               BADCVAR("g_physics_clientselect");
                BADCVAR("g_powerups");
                BADCVAR("g_spawnshieldtime");
                BADCVAR("g_start_delay");
@@ -443,6 +451,7 @@ void cvar_changes_init()
                BADCVAR("g_grappling_hook");
                BADCVAR("g_jetpack");
 
+#undef BADPRESUFFIX
 #undef BADPREFIX
 #undef BADCVAR
 
@@ -908,7 +917,8 @@ spawnfunc(worldspawn)
        if(cvar_string("g_mod_config") != cvar_defstring("g_mod_config"))
                modname = cvar_string("g_mod_config");
        // extra mutators that deserve to count as mod
-       MUTATOR_CALLHOOK(SetModname);
+       MUTATOR_CALLHOOK(SetModname, modname);
+       modname = M_ARGV(0, string);
 
        // save it for later
        modname = strzone(modname);
@@ -1499,7 +1509,7 @@ void FixIntermissionClient(entity e)
                        stuffcmd(e, "\nscr_printspeed 1000000\n");
                        RandomSelection_Init();
                        FOREACH_WORD(autocvar_sv_intermission_cdtrack, true, LAMBDA(
-                               RandomSelection_Add(NULL, 0, it, 1, 1);
+                               RandomSelection_AddString(it, 1, 1);
                        ));
                        if (RandomSelection_chosen_string != "")
                        {
index 9a1ed5c040fd6e8d55cc0c44df8204a1dbc78936..7c7c02018c2afb1f664cab59800734bdca75606b 100644 (file)
@@ -14,7 +14,6 @@
 float mapvote_nextthink;
 float mapvote_keeptwotime;
 float mapvote_timeout;
-string mapvote_message;
 const float MAPVOTE_SCREENSHOT_DIRS_COUNT = 4;
 string mapvote_screenshot_dirs[MAPVOTE_SCREENSHOT_DIRS_COUNT];
 float mapvote_screenshot_dirs_count;
@@ -255,7 +254,6 @@ void MapVote_Init()
        mapvote_timeout = time + autocvar_g_maplist_votable_timeout;
        if(mapvote_count_real < 3 || mapvote_keeptwotime <= time)
                mapvote_keeptwotime = 0;
-       mapvote_message = "Choose a map and press its key!";
 
        MapVote_Spawn();
 }
@@ -524,7 +522,7 @@ float MapVote_CheckRules_2()
        for(i = 0; i < mapvote_count_real; ++i)
                if ( mapvote_maps_flags[i] & GTV_AVAILABLE )
                {
-                       RandomSelection_Add(NULL, i, string_null, 1, mapvote_selections[i]);
+                       RandomSelection_AddFloat(i, 1, mapvote_selections[i]);
                        if ( gametypevote &&  mapvote_maps[i] == MapInfo_Type_ToString(MapInfo_CurrentGametype()) )
                        {
                                currentVotes = mapvote_selections[i];
@@ -544,7 +542,7 @@ float MapVote_CheckRules_2()
        for(i = 0; i < mapvote_count_real; ++i)
                if(i != firstPlace)
                if ( mapvote_maps_flags[i] & GTV_AVAILABLE )
-                       RandomSelection_Add(NULL, i, string_null, 1, mapvote_selections[i]);
+                       RandomSelection_AddFloat(i, 1, mapvote_selections[i]);
        secondPlace = RandomSelection_chosen_float;
        secondPlaceVotes = RandomSelection_best_priority;
        //dprint("Second place: ", ftos(secondPlace), "\n");
@@ -561,7 +559,6 @@ float MapVote_CheckRules_2()
                {
                        float didntvote;
                        MapVote_TouchMask();
-                       mapvote_message = "Now decide between the TOP TWO!";
                        mapvote_keeptwotime = 0;
                        result = strcat(":vote:keeptwo:", mapvote_maps[firstPlace]);
                        result = strcat(result, ":", ftos(firstPlaceVotes));
@@ -592,10 +589,8 @@ float MapVote_CheckRules_2()
 
 void MapVote_Tick()
 {
-       float keeptwo;
        float totalvotes;
 
-       keeptwo = mapvote_keeptwotime;
        MapVote_CheckRules_1(); // count
        if(MapVote_CheckRules_2()) // decide
                return;
index 179faf1f6b6e93d35ad66df811843326594e4504..0e0c7271ef0ee51a2e3bc343c1e14270dec41352 100644 (file)
@@ -480,6 +480,7 @@ MUTATOR_HOOKABLE(SV_StartFrame, EV_NO_ARGS);
 
 #define EV_SetModname(i, o) \
     /** name of the mutator/mod if it warrants showing as such in the server browser */ \
+    /**/ i(string, MUTATOR_ARGV_0_string) \
     /**/ o(string, MUTATOR_ARGV_0_string) \
     /**/
 MUTATOR_HOOKABLE(SetModname, EV_SetModname);
index 4cd8e8767e5f163b58efd886f7e320c8dd66cd71..f83eb6b649a577568d1e796f6e1bafdca54088d9 100644 (file)
@@ -35,13 +35,13 @@ void cts_ScoreRules()
        ScoreRules_basics(0, 0, 0, false);
        if(g_race_qualifying)
        {
-               ScoreInfo_SetLabel_PlayerScore(SP_CTS_FASTEST, "fastest",   SFL_SORT_PRIO_PRIMARY | SFL_LOWER_IS_BETTER | SFL_TIME);
+               ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest",   SFL_SORT_PRIO_PRIMARY | SFL_LOWER_IS_BETTER | SFL_TIME);
        }
        else
        {
-               ScoreInfo_SetLabel_PlayerScore(SP_CTS_LAPS,    "laps",      SFL_SORT_PRIO_PRIMARY);
-               ScoreInfo_SetLabel_PlayerScore(SP_CTS_TIME,    "time",      SFL_SORT_PRIO_SECONDARY | SFL_LOWER_IS_BETTER | SFL_TIME);
-               ScoreInfo_SetLabel_PlayerScore(SP_CTS_FASTEST, "fastest",   SFL_LOWER_IS_BETTER | SFL_TIME);
+               ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS,    "laps",      SFL_SORT_PRIO_PRIMARY);
+               ScoreInfo_SetLabel_PlayerScore(SP_RACE_TIME,    "time",      SFL_SORT_PRIO_SECONDARY | SFL_LOWER_IS_BETTER | SFL_TIME);
+               ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest",   SFL_LOWER_IS_BETTER | SFL_TIME);
        }
        ScoreRules_basics_end();
 }
index 9d4abe6d87a0e051f96ae55e9e888ac681c434ab..32c91d8c17d20fb6f6e9fdaeb4eb9b0f0e31ec98 100644 (file)
@@ -432,22 +432,13 @@ MUTATOR_HOOKFUNCTION(ft, PlayerPreThink, CBC_ORDER_FIRST)
        if(gameover)
                return true;
 
-       entity player = M_ARGV(0, entity);
-
-       if(STAT(FROZEN, player) == 1)
-       {
-               // keep health = 1
-               player.pauseregen_finished = time + autocvar_g_balance_pause_health_regen;
-       }
-
        if(round_handler_IsActive())
        if(!round_handler_IsRoundStarted())
                return true;
 
        int n;
-
-       entity o;
-       o = NULL;
+       entity o = NULL;
+       entity player = M_ARGV(0, entity);
        //if(STAT(FROZEN, player))
        //if(player.freezetag_frozen_timeout > 0 && time < player.freezetag_frozen_timeout)
                //player.iceblock.alpha = ICE_MIN_ALPHA + (ICE_MAX_ALPHA - ICE_MIN_ALPHA) * (player.freezetag_frozen_timeout - time) / (player.freezetag_frozen_timeout - player.freezetag_frozen_time);
index 515148c1bbdc06625c5b8161892785ac42014686..a057408b965846b31c1c2bd7e2486b9d03b1fcee 100644 (file)
@@ -15,6 +15,8 @@ int autocvar_g_invasion_monster_count;
 bool autocvar_g_invasion_zombies_only;
 float autocvar_g_invasion_spawn_delay;
 
+.string spawnmob;
+
 spawnfunc(invasion_spawnpoint)
 {
        if(!g_invasion) { delete(this); return; }
@@ -23,9 +25,12 @@ spawnfunc(invasion_spawnpoint)
        IL_PUSH(g_invasion_spawns, this);
 
        if(autocvar_g_invasion_zombies_only) // precache only if it hasn't been already
-       if(this.monsterid) {
-               Monster mon = get_monsterinfo(this.monsterid);
-               mon.mr_precache(mon);
+       if(this.spawnmob)
+       {
+               FOREACH(Monsters, it.netname == this.spawnmob,
+               {
+                       it.mr_precache(it);
+               });
        }
 }
 
@@ -40,7 +45,7 @@ int invasion_PickMonster(int supermonster_count)
        {
                if((it.spawnflags & MONSTER_TYPE_FLY) || (it.spawnflags & MONSTER_TYPE_SWIM) || (it.spawnflags & MONSTER_SIZE_QUAKE) || ((it.spawnflags & MON_FLAG_SUPERMONSTER) && supermonster_count >= 1))
                        continue;
-        RandomSelection_Add(NULL, it.monsterid, string_null, 1, 1);
+        RandomSelection_AddFloat(it.monsterid, 1, 1);
        });
 
        return RandomSelection_chosen_float;
@@ -52,14 +57,14 @@ entity invasion_PickSpawn()
 
        IL_EACH(g_invasion_spawns, true,
        {
-               RandomSelection_Add(it, 0, string_null, 1, ((time >= it.spawnshieldtime) ? 0.2 : 1)); // give recently used spawnpoints a very low rating
+               RandomSelection_AddEnt(it, 1, ((time >= it.spawnshieldtime) ? 0.2 : 1)); // give recently used spawnpoints a very low rating
                it.spawnshieldtime = time + autocvar_g_invasion_spawnpoint_spawn_delay;
        });
 
        return RandomSelection_chosen_ent;
 }
 
-void invasion_SpawnChosenMonster(float mon)
+void invasion_SpawnChosenMonster(int mon)
 {
        entity spawn_point, monster;
 
@@ -78,8 +83,8 @@ void invasion_SpawnChosenMonster(float mon)
                setthink(e, SUB_Remove);
                e.nextthink = time + 0.1;
        }
-       else
-               monster = spawnmonster("", ((spawn_point.monsterid) ? spawn_point.monsterid : mon), spawn_point, spawn_point, spawn_point.origin, false, false, 2);
+       else // if spawnmob field falls through (unset), fallback to mon (relying on spawnmonster for that behaviour)
+               monster = spawnmonster(spawn_point.spawnmob, mon, spawn_point, spawn_point, spawn_point.origin, false, false, 2);
 
        if(spawn_point) monster.target2 = spawn_point.target2;
        monster.spawnshieldtime = time;
@@ -91,10 +96,10 @@ void invasion_SpawnChosenMonster(float mon)
        else
        {
                RandomSelection_Init();
-               if(inv_monsters_perteam[NUM_TEAM_1] > 0) RandomSelection_Add(NULL, NUM_TEAM_1, string_null, 1, 1);
-               if(inv_monsters_perteam[NUM_TEAM_2] > 0) RandomSelection_Add(NULL, NUM_TEAM_2, string_null, 1, 1);
-               if(invasion_teams >= 3) if(inv_monsters_perteam[NUM_TEAM_3] > 0) { RandomSelection_Add(NULL, NUM_TEAM_3, string_null, 1, 1); }
-               if(invasion_teams >= 4) if(inv_monsters_perteam[NUM_TEAM_4] > 0) { RandomSelection_Add(NULL, NUM_TEAM_4, string_null, 1, 1); }
+               if(inv_monsters_perteam[NUM_TEAM_1] > 0) RandomSelection_AddFloat(NUM_TEAM_1, 1, 1);
+               if(inv_monsters_perteam[NUM_TEAM_2] > 0) RandomSelection_AddFloat(NUM_TEAM_2, 1, 1);
+               if(invasion_teams >= 3) if(inv_monsters_perteam[NUM_TEAM_3] > 0) { RandomSelection_AddFloat(NUM_TEAM_3, 1, 1); }
+               if(invasion_teams >= 4) if(inv_monsters_perteam[NUM_TEAM_4] > 0) { RandomSelection_AddFloat(NUM_TEAM_4, 1, 1); }
 
                monster.team = RandomSelection_chosen_float;
        }
index 59cc052af421942def992c27f5103fd3d08d00d8..18d32c2f06369b05dd5be39db868aca414a10d44 100644 (file)
@@ -317,7 +317,7 @@ entity Spawn_WeightedPoint(entity firstspot, float lower, float upper, float exp
 
        RandomSelection_Init();
        for(spot = firstspot; spot; spot = spot.chain)
-               RandomSelection_Add(spot, 0, string_null, pow(bound(lower, spot.spawnpoint_score.y, upper), exponent) * spot.cnt, (spot.spawnpoint_score.y >= lower) * 0.5 + spot.spawnpoint_score.x);
+               RandomSelection_AddEnt(spot, pow(bound(lower, spot.spawnpoint_score.y, upper), exponent) * spot.cnt, (spot.spawnpoint_score.y >= lower) * 0.5 + spot.spawnpoint_score.x);
 
        return RandomSelection_chosen_ent;
 }
index 6ccb7d408186a2c473c4860bd7a210860e9deea2..4632866b4886755e7657da57ca2cc95fa3039109 100644 (file)
@@ -508,13 +508,13 @@ float FindSmallestTeam(entity pl, float ignore_pl)
 
        // now t is the minimum, or A minimum!
        if(t == 1 || TeamSmallerEqThanTeam(1, t, pl))
-               RandomSelection_Add(NULL, 1, string_null, 1, 1);
+               RandomSelection_AddFloat(1, 1, 1);
        if(t == 2 || TeamSmallerEqThanTeam(2, t, pl))
-               RandomSelection_Add(NULL, 2, string_null, 1, 1);
+               RandomSelection_AddFloat(2, 1, 1);
        if(t == 3 || TeamSmallerEqThanTeam(3, t, pl))
-               RandomSelection_Add(NULL, 3, string_null, 1, 1);
+               RandomSelection_AddFloat(3, 1, 1);
        if(t == 4 || TeamSmallerEqThanTeam(4, t, pl))
-               RandomSelection_Add(NULL, 4, string_null, 1, 1);
+               RandomSelection_AddFloat(4, 1, 1);
 
        return RandomSelection_chosen_float;
 }