Merge remote branch 'origin/fruitiex/fruitbalance'
authorRudolf Polzer <divverent@alientrap.org>
Sat, 24 Jul 2010 16:50:19 +0000 (18:50 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Sat, 24 Jul 2010 16:50:19 +0000 (18:50 +0200)
258 files changed:
balance.cfg
balance25.cfg
balanceFruit.cfg
balanceSamual.cfg
balanceXPM.cfg
defaultXPM.cfg
defaultXonotic.cfg
effectinfo.txt
gfx/hud/default/ammo_bullets.tga
gfx/hud/default/ammo_cells.tga
gfx/hud/default/ammo_current_bg.tga
gfx/hud/default/ammo_fuel.tga
gfx/hud/default/ammo_rockets.tga
gfx/hud/default/ammo_shells.tga
gfx/hud/default/armor.tga
gfx/hud/default/border.tga
gfx/hud/default/border_chat.tga [deleted file]
gfx/hud/default/border_healtharmor.tga [deleted file]
gfx/hud/default/border_inventory.tga [deleted file]
gfx/hud/default/border_modicons.tga [deleted file]
gfx/hud/default/border_powerups.tga [deleted file]
gfx/hud/default/border_radar.tga [deleted file]
gfx/hud/default/border_score.tga [deleted file]
gfx/hud/default/border_timer.tga [deleted file]
gfx/hud/default/border_vote.tga [deleted file]
gfx/hud/default/border_weaponicons.tga [deleted file]
gfx/hud/default/dock.tga
gfx/hud/default/dock_small.tga [deleted file]
gfx/hud/default/flag_blue_carrying.tga
gfx/hud/default/flag_blue_lost.tga
gfx/hud/default/flag_blue_shielded.tga
gfx/hud/default/flag_blue_taken.tga
gfx/hud/default/flag_red_carrying.tga
gfx/hud/default/flag_red_lost.tga
gfx/hud/default/flag_red_shielded.tga
gfx/hud/default/flag_red_taken.tga
gfx/hud/default/health.tga
gfx/hud/default/key_backward.tga
gfx/hud/default/key_backward_inv.tga
gfx/hud/default/key_crouch.tga
gfx/hud/default/key_crouch_inv.tga
gfx/hud/default/key_forward.tga
gfx/hud/default/key_forward_inv.tga
gfx/hud/default/key_jump.tga
gfx/hud/default/key_jump_inv.tga
gfx/hud/default/key_left.tga
gfx/hud/default/key_left_inv.tga
gfx/hud/default/key_right.tga
gfx/hud/default/key_right_inv.tga
gfx/hud/default/notify_blue_captured.tga
gfx/hud/default/notify_blue_lost.tga
gfx/hud/default/notify_blue_returned.tga
gfx/hud/default/notify_blue_shielded.tga
gfx/hud/default/notify_blue_taken.tga
gfx/hud/default/notify_camping.tga
gfx/hud/default/notify_death.tga
gfx/hud/default/notify_fall.tga
gfx/hud/default/notify_headshot.tga
gfx/hud/default/notify_lava.tga
gfx/hud/default/notify_melee.tga [deleted file]
gfx/hud/default/notify_melee_laser.tga [new file with mode: 0644]
gfx/hud/default/notify_melee_shotgun.tga [new file with mode: 0644]
gfx/hud/default/notify_outofammo.tga
gfx/hud/default/notify_red_captured.tga
gfx/hud/default/notify_red_lost.tga
gfx/hud/default/notify_red_returned.tga
gfx/hud/default/notify_red_shielded.tga
gfx/hud/default/notify_red_taken.tga
gfx/hud/default/notify_selfkill.tga
gfx/hud/default/notify_shootingstar.tga
gfx/hud/default/notify_slime.tga
gfx/hud/default/notify_teamkill_blue.tga
gfx/hud/default/notify_teamkill_red.tga
gfx/hud/default/notify_void.tga
gfx/hud/default/notify_water.tga
gfx/hud/default/num_0.tga [deleted file]
gfx/hud/default/num_0_stroke.tga [deleted file]
gfx/hud/default/num_1.tga [deleted file]
gfx/hud/default/num_1_stroke.tga [deleted file]
gfx/hud/default/num_2.tga [deleted file]
gfx/hud/default/num_2_stroke.tga [deleted file]
gfx/hud/default/num_3.tga [deleted file]
gfx/hud/default/num_3_stroke.tga [deleted file]
gfx/hud/default/num_4.tga [deleted file]
gfx/hud/default/num_4_stroke.tga [deleted file]
gfx/hud/default/num_5.tga [deleted file]
gfx/hud/default/num_5_stroke.tga [deleted file]
gfx/hud/default/num_6.tga [deleted file]
gfx/hud/default/num_6_stroke.tga [deleted file]
gfx/hud/default/num_7.tga [deleted file]
gfx/hud/default/num_7_stroke.tga [deleted file]
gfx/hud/default/num_8.tga [deleted file]
gfx/hud/default/num_8_stroke.tga [deleted file]
gfx/hud/default/num_9.tga [deleted file]
gfx/hud/default/num_9_stroke.tga [deleted file]
gfx/hud/default/num_colon.tga [deleted file]
gfx/hud/default/num_colon_stroke.tga [deleted file]
gfx/hud/default/num_dot.tga [deleted file]
gfx/hud/default/num_dot_stroke.tga [deleted file]
gfx/hud/default/num_leading.tga
gfx/hud/default/num_minus.tga [deleted file]
gfx/hud/default/num_minus_stroke.tga [deleted file]
gfx/hud/default/num_plus.tga [deleted file]
gfx/hud/default/num_plus_stroke.tga [deleted file]
gfx/hud/default/race_newfail.tga
gfx/hud/default/race_newrankgreen.tga
gfx/hud/default/race_newrankyellow.tga
gfx/hud/default/race_newrecordserver.tga
gfx/hud/default/race_newtime.tga
gfx/hud/default/rifle_ring_1.tga [deleted file]
gfx/hud/default/rifle_ring_2.tga [deleted file]
gfx/hud/default/rifle_ring_3.tga [deleted file]
gfx/hud/default/rifle_ring_4.tga [deleted file]
gfx/hud/default/rifle_ring_5.tga [deleted file]
gfx/hud/default/rifle_ring_6.tga [deleted file]
gfx/hud/default/rifle_ring_7.tga [deleted file]
gfx/hud/default/rifle_ring_8.tga [deleted file]
gfx/hud/default/statusbar_vertical.tga
gfx/hud/default/voteprogress_back.tga
gfx/hud/default/voteprogress_prog.tga
gfx/hud/default/voteprogress_voted.tga
gfx/hud/default/weapon_accuracy.tga
gfx/hud/default/weapon_ammo.tga
gfx/hud/default/weapon_complainbubble.tga
gfx/hud/default/weapon_current_bg.tga
gfx/hud/default/weapon_hlacmod_renameit.tga
gfx/hud/default/weaponcampingrifle.tga
gfx/hud/default/weaponcrylink.tga
gfx/hud/default/weaponelectro.tga
gfx/hud/default/weaponfireball.tga
gfx/hud/default/weapongrenadelauncher.tga
gfx/hud/default/weaponhagar.tga
gfx/hud/default/weaponhlac.tga
gfx/hud/default/weaponhook.tga
gfx/hud/default/weaponlaser.tga
gfx/hud/default/weaponminstanex.tga
gfx/hud/default/weaponnex.tga
gfx/hud/default/weaponporto.tga
gfx/hud/default/weaponrocketlauncher.tga
gfx/hud/default/weaponseeker.tga
gfx/hud/default/weaponshotgun.tga
gfx/hud/default/weapontuba.tga
gfx/hud/default/weaponuzi.tga
gfx/hud/luminos/border.tga [new file with mode: 0644]
gfx/hud/luminos/border_horizontal.tga [deleted file]
gfx/hud/luminos/border_vertical.tga [deleted file]
gfx/hud/luminos/notify_blue_captured.tga
gfx/hud/luminos/notify_blue_returned.tga
gfx/hud/luminos/notify_headshot.tga [new file with mode: 0644]
gfx/hud/luminos/notify_melee_laser.tga [new file with mode: 0644]
gfx/hud/luminos/notify_melee_shotgun.tga [new file with mode: 0644]
gfx/hud/luminos/notify_red_captured.tga
gfx/hud/luminos/notify_red_returned.tga
gfx/hud/luminos/notify_teamkill.tga [deleted file]
gfx/hud/luminos/notify_void.tga
gfx/hud/luminos/race_newrecordserver.tga
gfx/hud/luminos/weapon_complainbubble.tga [new file with mode: 0644]
gfx/hud/luminos/weaponnex.tga
gfx/hud/old/num_0.tga [deleted file]
gfx/hud/old/num_0_stroke.tga [deleted file]
gfx/hud/old/num_1.tga [deleted file]
gfx/hud/old/num_1_stroke.tga [deleted file]
gfx/hud/old/num_2.tga [deleted file]
gfx/hud/old/num_2_stroke.tga [deleted file]
gfx/hud/old/num_3.tga [deleted file]
gfx/hud/old/num_3_stroke.tga [deleted file]
gfx/hud/old/num_4.tga [deleted file]
gfx/hud/old/num_4_stroke.tga [deleted file]
gfx/hud/old/num_5.tga [deleted file]
gfx/hud/old/num_5_stroke.tga [deleted file]
gfx/hud/old/num_6.tga [deleted file]
gfx/hud/old/num_6_stroke.tga [deleted file]
gfx/hud/old/num_7.tga [deleted file]
gfx/hud/old/num_7_stroke.tga [deleted file]
gfx/hud/old/num_8.tga [deleted file]
gfx/hud/old/num_8_stroke.tga [deleted file]
gfx/hud/old/num_9.tga [deleted file]
gfx/hud/old/num_9_stroke.tga [deleted file]
gfx/hud/old/num_colon.tga [deleted file]
gfx/hud/old/num_colon_stroke.tga [deleted file]
gfx/hud/old/num_dot.tga [deleted file]
gfx/hud/old/num_dot_stroke.tga [deleted file]
gfx/hud/old/num_leading.tga [deleted file]
gfx/hud/old/num_minus.tga [deleted file]
gfx/hud/old/num_minus_stroke.tga [deleted file]
gfx/hud/old/num_plus.tga [deleted file]
gfx/hud/old/num_plus_stroke.tga [deleted file]
gfx/hud/old/rifle_ring_1.tga [deleted file]
gfx/hud/old/rifle_ring_2.tga [deleted file]
gfx/hud/old/rifle_ring_3.tga [deleted file]
gfx/hud/old/rifle_ring_4.tga [deleted file]
gfx/hud/old/rifle_ring_5.tga [deleted file]
gfx/hud/old/rifle_ring_6.tga [deleted file]
gfx/hud/old/rifle_ring_7.tga [deleted file]
gfx/hud/old/rifle_ring_8.tga [deleted file]
gfx/rifle_ring_1.tga [new file with mode: 0644]
gfx/rifle_ring_2.tga [new file with mode: 0644]
gfx/rifle_ring_3.tga [new file with mode: 0644]
gfx/rifle_ring_4.tga [new file with mode: 0644]
gfx/rifle_ring_5.tga [new file with mode: 0644]
gfx/rifle_ring_6.tga [new file with mode: 0644]
gfx/rifle_ring_7.tga [new file with mode: 0644]
gfx/rifle_ring_8.tga [new file with mode: 0644]
hud_default.cfg
hud_luminos_default.cfg
models/weapons/h_shotgun.iqm
models/weapons/h_shotgun.iqm.framegroups
particles/gauntletbeam.tga [new file with mode: 0644]
particles/lgbeam.tga [new file with mode: 0644]
qcsrc/client/Defs.qc
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/client/hook.qc
qcsrc/client/hud.qc
qcsrc/client/hud.qh
qcsrc/client/projectile.qc
qcsrc/client/scoreboard.qc
qcsrc/common/constants.qh
qcsrc/menu/xonotic/colorpicker_string.c
qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c
qcsrc/menu/xonotic/dialog_hudsetup_exit.c
qcsrc/server/autocvars.qh
qcsrc/server/cl_client.qc
qcsrc/server/cl_weaponsystem.qc
qcsrc/server/g_damage.qc
qcsrc/server/g_hook.qc
qcsrc/server/g_hook.qh
qcsrc/server/g_subs.qc
qcsrc/server/g_world.qc
qcsrc/server/gamecommand.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/progs.src
qcsrc/server/w_campingrifle.qc
qcsrc/server/w_crylink.qc
qcsrc/server/w_electro.qc
qcsrc/server/w_electro.qh [new file with mode: 0644]
qcsrc/server/w_fireball.qc
qcsrc/server/w_grenadelauncher.qc
qcsrc/server/w_hagar.qc
qcsrc/server/w_hlac.qc
qcsrc/server/w_hook.qc
qcsrc/server/w_laser.qc
qcsrc/server/w_laser.qh [new file with mode: 0644]
qcsrc/server/w_minstanex.qc
qcsrc/server/w_nex.qc
qcsrc/server/w_porto.qc
qcsrc/server/w_rocketlauncher.qc
qcsrc/server/w_seeker.qc
qcsrc/server/w_shotgun.qc
qcsrc/server/w_tuba.qc
qcsrc/server/w_uzi.qc
qcsrc/warpzonelib/common.qc
qcsrc/warpzonelib/common.qh
sound/weapons/gauntlet_fire.ogg
sound/weapons/gauntletbeam_fly.ogg [new file with mode: 0644]
sound/weapons/lgbeam_fire.ogg [new file with mode: 0644]
sound/weapons/lgbeam_fly.ogg [new file with mode: 0644]
sound/weapons/shotgun_melee.ogg [new file with mode: 0644]

index 156b69aed586e61776ebd45bc3dc5ee7035f6e99..d1596a1d7354450e0a42f9bc7df00a55011878d2 100644 (file)
@@ -217,7 +217,7 @@ set g_balance_laser_primary_animtime 0.3
 set g_balance_laser_primary_lifetime 30
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0.03
-set g_balance_laser_gauntlet 0
+set g_balance_laser_primary_gauntlet 0
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
 set g_balance_laser_secondary_damage 35
 set g_balance_laser_secondary_edgedamage 10
@@ -230,7 +230,8 @@ set g_balance_laser_secondary_animtime 0.3
 set g_balance_laser_secondary_lifetime 30
 set g_balance_laser_secondary_shotangle 0
 set g_balance_laser_secondary_delay 0
-// }}}
+set g_balance_laser_secondary_gauntlet 0
+// }}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 6
 set g_balance_shotgun_primary_damage 9
@@ -242,15 +243,14 @@ set g_balance_shotgun_primary_ammo 1
 set g_balance_shotgun_primary_speed 12000
 set g_balance_shotgun_primary_bulletconstant 75 // 3.8qu
 set g_balance_shotgun_secondary 1
-set g_balance_shotgun_secondary_bullets 6
-set g_balance_shotgun_secondary_damage 9
-set g_balance_shotgun_secondary_force 60
-set g_balance_shotgun_secondary_spread 0.1
-set g_balance_shotgun_secondary_refire 1.35
-set g_balance_shotgun_secondary_animtime 0.2
-set g_balance_shotgun_secondary_ammo 1
-set g_balance_shotgun_secondary_speed 12000
-set g_balance_shotgun_secondary_bulletconstant 75 // 3.8qu
+set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim
+set g_balance_shotgun_secondary_melee_range 60
+set g_balance_shotgun_secondary_melee_swing 50
+set g_balance_shotgun_secondary_melee_time 0.1
+set g_balance_shotgun_secondary_damage 115
+set g_balance_shotgun_secondary_force 150
+set g_balance_shotgun_secondary_refire 1.1
+set g_balance_shotgun_secondary_animtime 1
 // }}}
 // {{{ uzi
 set g_balance_uzi_first 1
@@ -269,6 +269,7 @@ set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary2secondary 0
+set g_balance_grenadelauncher_primary_sticky 0
 set g_balance_grenadelauncher_primary_damage 70
 set g_balance_grenadelauncher_primary_edgedamage 38
 set g_balance_grenadelauncher_primary_force 400
@@ -278,9 +279,12 @@ set g_balance_grenadelauncher_primary_speed_up 200
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
 set g_balance_grenadelauncher_primary_lifetime 30
+set g_balance_grenadelauncher_primary_lifetime2 1
 set g_balance_grenadelauncher_primary_refire 0.8
 set g_balance_grenadelauncher_primary_animtime 0.3
 set g_balance_grenadelauncher_primary_ammo 2
+set g_balance_grenadelauncher_primary_health 25
+set g_balance_grenadelauncher_secondary_sticky 0
 set g_balance_grenadelauncher_secondary_damage 70
 set g_balance_grenadelauncher_secondary_edgedamage 38
 set g_balance_grenadelauncher_secondary_force 400
@@ -290,6 +294,7 @@ set g_balance_grenadelauncher_secondary_speed_up 200
 set g_balance_grenadelauncher_secondary_speed_z 0
 set g_balance_grenadelauncher_secondary_spread 0
 set g_balance_grenadelauncher_secondary_lifetime 2.5
+set g_balance_grenadelauncher_secondary_lifetime2 0
 set g_balance_grenadelauncher_secondary_refire 0.7
 set g_balance_grenadelauncher_secondary_animtime 0.3
 set g_balance_grenadelauncher_secondary_ammo 2
@@ -303,6 +308,7 @@ set g_balance_electro_lightning 0
 set g_balance_electro_primary_damage 65
 set g_balance_electro_primary_edgedamage 0
 set g_balance_electro_primary_force 200
+set g_balance_electro_primary_force_up 0
 set g_balance_electro_primary_radius 150
 set g_balance_electro_primary_comboradius 0
 set g_balance_electro_primary_speed 2000
@@ -311,6 +317,7 @@ set g_balance_electro_primary_lifetime 30
 set g_balance_electro_primary_refire 0.6
 set g_balance_electro_primary_animtime 0.3
 set g_balance_electro_primary_ammo 2
+set g_balance_electro_primary_range 0
 set g_balance_electro_secondary_damage 50
 set g_balance_electro_secondary_spread 0.05
 set g_balance_electro_secondary_edgedamage 0
@@ -438,6 +445,10 @@ set g_balance_rocketlauncher_laserguided_speedaccel 0
 set g_balance_rocketlauncher_laserguided_speedstart 1000
 set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5
 set g_balance_rocketlauncher_laserguided_allow_steal 1
+set g_balance_rocketlauncher_remote_damage 105
+set g_balance_rocketlauncher_remote_edgedamage 40
+set g_balance_rocketlauncher_remote_radius 150
+set g_balance_rocketlauncher_remote_force 600
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
@@ -518,6 +529,7 @@ set g_balance_campingrifle_primary_ammo 10
 set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu
 set g_balance_campingrifle_primary_burstcost 0.35 // require same cooldown as secondary, note it's smaller than primary refire time
 set g_balance_campingrifle_primary_bullethail 0
+set g_balance_campingrifle_secondary 1
 set g_balance_campingrifle_secondary_damage 15
 set g_balance_campingrifle_secondary_headshotaddeddamage 25
 set g_balance_campingrifle_secondary_spread 0.02
index a4369249fad75c47203fb17c752354c91dcf8677..c3a3a6205ed2001480d4ca7ad6448160cb9b8e72 100644 (file)
@@ -217,7 +217,7 @@ set g_balance_laser_primary_animtime 0.3
 set g_balance_laser_primary_lifetime 30
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0
-set g_balance_laser_gauntlet 0
+set g_balance_laser_primary_gauntlet 0
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
 set g_balance_laser_secondary_damage 35
 set g_balance_laser_secondary_edgedamage 10
@@ -230,6 +230,7 @@ set g_balance_laser_secondary_animtime 0.3
 set g_balance_laser_secondary_lifetime 30
 set g_balance_laser_secondary_shotangle 0
 set g_balance_laser_secondary_delay 0
+set g_balance_laser_secondary_gauntlet 0
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 6
@@ -242,15 +243,14 @@ set g_balance_shotgun_primary_ammo 1
 set g_balance_shotgun_primary_speed 12000
 set g_balance_shotgun_primary_bulletconstant 75 // 3.8qu
 set g_balance_shotgun_secondary 1
-set g_balance_shotgun_secondary_bullets 6
-set g_balance_shotgun_secondary_damage 9
-set g_balance_shotgun_secondary_force 60
-set g_balance_shotgun_secondary_spread 0.1
-set g_balance_shotgun_secondary_refire 1.35
-set g_balance_shotgun_secondary_animtime 0.2
-set g_balance_shotgun_secondary_ammo 1
-set g_balance_shotgun_secondary_speed 12000
-set g_balance_shotgun_secondary_bulletconstant 75 // 3.8qu
+set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim
+set g_balance_shotgun_secondary_melee_range 60
+set g_balance_shotgun_secondary_melee_swing 50
+set g_balance_shotgun_secondary_melee_time 0.1
+set g_balance_shotgun_secondary_damage 115
+set g_balance_shotgun_secondary_force 150
+set g_balance_shotgun_secondary_refire 1.1
+set g_balance_shotgun_secondary_animtime 1
 // }}}
 // {{{ uzi
 set g_balance_uzi_first 1
@@ -269,6 +269,7 @@ set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary2secondary 0
+set g_balance_grenadelauncher_primary_sticky 0
 set g_balance_grenadelauncher_primary_damage 70
 set g_balance_grenadelauncher_primary_edgedamage 38
 set g_balance_grenadelauncher_primary_force 400
@@ -278,9 +279,12 @@ set g_balance_grenadelauncher_primary_speed_up 200
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
 set g_balance_grenadelauncher_primary_lifetime 30
+set g_balance_grenadelauncher_primary_lifetime2 1
 set g_balance_grenadelauncher_primary_refire 0.8
 set g_balance_grenadelauncher_primary_animtime 0.3
 set g_balance_grenadelauncher_primary_ammo 2
+set g_balance_grenadelauncher_primary_health 25
+set g_balance_grenadelauncher_secondary_sticky 0
 set g_balance_grenadelauncher_secondary_damage 70
 set g_balance_grenadelauncher_secondary_edgedamage 38
 set g_balance_grenadelauncher_secondary_force 400
@@ -290,6 +294,7 @@ set g_balance_grenadelauncher_secondary_speed_up 200
 set g_balance_grenadelauncher_secondary_speed_z 0
 set g_balance_grenadelauncher_secondary_spread 0
 set g_balance_grenadelauncher_secondary_lifetime 2.5
+set g_balance_grenadelauncher_secondary_lifetime2 0
 set g_balance_grenadelauncher_secondary_refire 0.7
 set g_balance_grenadelauncher_secondary_animtime 0.3
 set g_balance_grenadelauncher_secondary_ammo 2
@@ -303,6 +308,7 @@ set g_balance_electro_lightning 0
 set g_balance_electro_primary_damage 65
 set g_balance_electro_primary_edgedamage 0
 set g_balance_electro_primary_force 200
+set g_balance_electro_primary_force_up 0
 set g_balance_electro_primary_radius 150
 set g_balance_electro_primary_comboradius 0
 set g_balance_electro_primary_speed 2000
@@ -311,6 +317,7 @@ set g_balance_electro_primary_lifetime 30
 set g_balance_electro_primary_refire 0.6
 set g_balance_electro_primary_animtime 0.3
 set g_balance_electro_primary_ammo 2
+set g_balance_electro_primary_range 0
 set g_balance_electro_secondary_damage 50
 set g_balance_electro_secondary_spread 0.05
 set g_balance_electro_secondary_edgedamage 0
@@ -438,6 +445,10 @@ set g_balance_rocketlauncher_laserguided_speedaccel 0
 set g_balance_rocketlauncher_laserguided_speedstart 1000
 set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5
 set g_balance_rocketlauncher_laserguided_allow_steal 1
+set g_balance_rocketlauncher_remote_damage 105
+set g_balance_rocketlauncher_remote_edgedamage 40
+set g_balance_rocketlauncher_remote_radius 150
+set g_balance_rocketlauncher_remote_force 600
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
@@ -518,6 +529,7 @@ set g_balance_campingrifle_primary_ammo 10
 set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu
 set g_balance_campingrifle_primary_burstcost 0
 set g_balance_campingrifle_primary_bullethail 0 // empty magazine on shot
+set g_balance_campingrifle_secondary 1
 set g_balance_campingrifle_secondary_damage 35
 set g_balance_campingrifle_secondary_headshotaddeddamage 15 // 50 damage only on head
 set g_balance_campingrifle_secondary_spread 0.008
index 415a45808426df32717ab3684ff11492f19b0cc4..91072e83529a35ff4945e697ce3fc6b7e7373653 100644 (file)
@@ -1,7 +1,7 @@
 // {{{ starting gear
 set g_start_weapon_laser -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_shotgun -2 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_uzi 1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_shotgun -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_uzi -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_grenadelauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_electro -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
@@ -18,8 +18,8 @@ set g_start_weapon_fireball 0 "0 = never provide the weapon, 1 = always provide
 set g_start_weapon_seeker 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_balance_health_start 125
 set g_balance_armor_start 0
-set g_start_ammo_shells 0
-set g_start_ammo_nails 90
+set g_start_ammo_shells 14
+set g_start_ammo_nails 0
 set g_start_ammo_rockets 0
 set g_start_ammo_cells 0
 set g_start_ammo_fuel 0
@@ -32,10 +32,10 @@ set g_warmup_start_ammo_cells 50 "starting values when being in warmup-stage"
 set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage"
 set g_lms_start_health 250
 set g_lms_start_armor 100
-set g_lms_start_ammo_shells 50
-set g_lms_start_ammo_nails 150
-set g_lms_start_ammo_rockets 50
-set g_lms_start_ammo_cells 50
+set g_lms_start_ammo_shells 30
+set g_lms_start_ammo_nails 250
+set g_lms_start_ammo_rockets 100
+set g_lms_start_ammo_cells 200
 set g_lms_start_ammo_fuel 0
 set g_balance_nix_roundtime 25
 set g_balance_nix_incrtime 1.6
@@ -54,12 +54,12 @@ set g_balance_nix_ammoincr_fuel 2
 // {{{ pickup items
 set g_pickup_ammo_anyway 1
 set g_pickup_weapons_anyway 1
-set g_pickup_shells 15
-set g_pickup_shells_max 100
-set g_pickup_nails 80
-set g_pickup_nails_max 400
-set g_pickup_rockets 15
-set g_pickup_rockets_max 200
+set g_pickup_shells 10
+set g_pickup_shells_max 30
+set g_pickup_nails 120
+set g_pickup_nails_max 300
+set g_pickup_rockets 25
+set g_pickup_rockets_max 150
 set g_pickup_cells 25
 set g_pickup_cells_max 200
 set g_pickup_fuel 25
@@ -139,7 +139,7 @@ set g_balance_fuel_limit 999
 
 // {{{ misc
 set g_balance_selfdamagepercent 0.65
-set g_balance_weaponswitchdelay 0.15
+set g_balance_weaponswitchdelay 0.1
 set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
 set g_weaponratefactor 1 "weapon fire rate multiplier"
 set g_weapondamagefactor 1 "weapon damage multiplier"
@@ -149,7 +149,7 @@ set g_balance_firetransfer_time 0.9
 set g_balance_firetransfer_damage 0.8
 set g_throughfloor_damage 0.5
 set g_throughfloor_force 0.7
-set g_projectiles_newton_style 2
+set g_projectiles_newton_style 0
 // possible values:
 // 0: absolute velocity projectiles (like Quake)
 // 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
@@ -206,168 +206,175 @@ set g_balance_grapplehook_health 130
 
 // {{{ weapon properties
 // {{{ laser
-set g_balance_laser_primary_damage 22
-set g_balance_laser_primary_edgedamage 0
-set g_balance_laser_primary_force 200
+set g_balance_laser_primary_damage 20 // dps 33, hope that's not too high
+set g_balance_laser_primary_edgedamage 20
+set g_balance_laser_primary_force 235
 set g_balance_laser_primary_radius 60
-set g_balance_laser_primary_speed 0
+set g_balance_laser_primary_speed 4000
 set g_balance_laser_primary_spread 0
-set g_balance_laser_primary_refire 0.1
-set g_balance_laser_primary_animtime 0.1
-set g_balance_laser_primary_lifetime 0
+set g_balance_laser_primary_refire 0.6
+set g_balance_laser_primary_animtime 0.6
+set g_balance_laser_primary_lifetime 5
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0
-set g_balance_laser_gauntlet 1
-set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
-set g_balance_laser_secondary_damage 35
-set g_balance_laser_secondary_edgedamage 10
-set g_balance_laser_secondary_force 400
-set g_balance_laser_secondary_radius 70
-set g_balance_laser_secondary_speed 9000
+set g_balance_laser_primary_gauntlet 0
+set g_balance_laser_secondary 1 // when 1, a secondary laser mode exists
+set g_balance_laser_secondary_damage 110 // dps
+set g_balance_laser_secondary_edgedamage 0
+set g_balance_laser_secondary_force 1000
+set g_balance_laser_secondary_radius 60
+set g_balance_laser_secondary_speed 0
 set g_balance_laser_secondary_spread 0
-set g_balance_laser_secondary_refire 0.7
-set g_balance_laser_secondary_animtime 0.3
-set g_balance_laser_secondary_lifetime 30
+set g_balance_laser_secondary_refire 0.066
+set g_balance_laser_secondary_animtime 0.066
+set g_balance_laser_secondary_lifetime 0
 set g_balance_laser_secondary_shotangle 0
 set g_balance_laser_secondary_delay 0
+set g_balance_laser_secondary_gauntlet 1
 // }}}
 // {{{ shotgun
-set g_balance_shotgun_primary_bullets 15
-set g_balance_shotgun_primary_damage 7
+set g_balance_shotgun_primary_bullets 16
+set g_balance_shotgun_primary_damage 4
 set g_balance_shotgun_primary_force 20
 set g_balance_shotgun_primary_spread 0.16
 set g_balance_shotgun_primary_refire 1
-set g_balance_shotgun_primary_animtime 0.7
+set g_balance_shotgun_primary_animtime 0.4
 set g_balance_shotgun_primary_ammo 1
 set g_balance_shotgun_primary_speed 12000
 set g_balance_shotgun_primary_bulletconstant 75 // 3.8qu
 set g_balance_shotgun_secondary 1
-set g_balance_shotgun_secondary_bullets 6 // one more per shot than 15/3 (primary bullets/amount of shots = 3)
-set g_balance_shotgun_secondary_damage 7
-set g_balance_shotgun_secondary_force 20
-set g_balance_shotgun_secondary_spread 0.20
-set g_balance_shotgun_secondary_refire 1.35
-set g_balance_shotgun_secondary_animtime 0.33
-set g_balance_shotgun_secondary_ammo 1
-set g_balance_shotgun_secondary_speed 12000
-set g_balance_shotgun_secondary_bulletconstant 75 // 3.8qu
+set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim
+set g_balance_shotgun_secondary_melee_range 60
+set g_balance_shotgun_secondary_melee_swing 50
+set g_balance_shotgun_secondary_melee_time 0.1
+set g_balance_shotgun_secondary_damage 115
+set g_balance_shotgun_secondary_force 150
+set g_balance_shotgun_secondary_refire 1.1
+set g_balance_shotgun_secondary_animtime 1
 // }}}
 // {{{ uzi
 set g_balance_uzi_first 1
-set g_balance_uzi_first_damage 24
-set g_balance_uzi_first_force 30
-set g_balance_uzi_first_spread 0.0125
+set g_balance_uzi_first_damage 17
+set g_balance_uzi_first_force 35
+set g_balance_uzi_first_spread 0.03
 set g_balance_uzi_first_refire 0.2
-set g_balance_uzi_first_ammo 1
-set g_balance_uzi_sustained_damage 12
-set g_balance_uzi_sustained_force 20
-set g_balance_uzi_sustained_spread 0.0125
-set g_balance_uzi_sustained_refire 0.1
+set g_balance_uzi_first_ammo 2
+set g_balance_uzi_sustained_damage 7
+set g_balance_uzi_sustained_force 7.5
+set g_balance_uzi_sustained_spread 0.1
+set g_balance_uzi_sustained_refire 0.075
 set g_balance_uzi_sustained_ammo 1
 set g_balance_uzi_speed 18000
 set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
 // {{{ mortar // TODO
 set g_balance_grenadelauncher_primary2secondary 0
+set g_balance_grenadelauncher_primary_sticky 0
 set g_balance_grenadelauncher_primary_damage 60
-set g_balance_grenadelauncher_primary_edgedamage 28
-set g_balance_grenadelauncher_primary_force 200
-set g_balance_grenadelauncher_primary_radius 140
-set g_balance_grenadelauncher_primary_speed 1200
+set g_balance_grenadelauncher_primary_edgedamage 35
+set g_balance_grenadelauncher_primary_force 300
+set g_balance_grenadelauncher_primary_radius 100
+set g_balance_grenadelauncher_primary_speed 2000
 set g_balance_grenadelauncher_primary_speed_up 200
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
-set g_balance_grenadelauncher_primary_lifetime 10
+set g_balance_grenadelauncher_primary_lifetime 5
+set g_balance_grenadelauncher_primary_lifetime2 0.65
 set g_balance_grenadelauncher_primary_refire 0.8
-set g_balance_grenadelauncher_primary_animtime 0.5
+set g_balance_grenadelauncher_primary_animtime 0.2
 set g_balance_grenadelauncher_primary_ammo 2
-set g_balance_grenadelauncher_secondary_damage 65
+set g_balance_grenadelauncher_primary_health 72
+set g_balance_grenadelauncher_secondary_sticky 1
+set g_balance_grenadelauncher_secondary_damage 100
 set g_balance_grenadelauncher_secondary_edgedamage 30
 set g_balance_grenadelauncher_secondary_force 300
-set g_balance_grenadelauncher_secondary_radius 200
-set g_balance_grenadelauncher_secondary_speed 800
-set g_balance_grenadelauncher_secondary_speed_up 0
-set g_balance_grenadelauncher_secondary_speed_z 200
+set g_balance_grenadelauncher_secondary_radius 150
+set g_balance_grenadelauncher_secondary_speed 1000
+set g_balance_grenadelauncher_secondary_speed_up 200
+set g_balance_grenadelauncher_secondary_speed_z 0
 set g_balance_grenadelauncher_secondary_spread 0
-set g_balance_grenadelauncher_secondary_lifetime 2
+set g_balance_grenadelauncher_secondary_lifetime 5
+set g_balance_grenadelauncher_secondary_lifetime2 1
 set g_balance_grenadelauncher_secondary_refire 0.8
-set g_balance_grenadelauncher_secondary_animtime 0.5
+set g_balance_grenadelauncher_secondary_animtime 0.2
 set g_balance_grenadelauncher_secondary_ammo 2
-set g_balance_grenadelauncher_secondary_health 0
+set g_balance_grenadelauncher_secondary_health 72
 set g_balance_grenadelauncher_secondary_damageforcescale 0
-set g_balance_grenadelauncher_secondary_bouncefactor 0.5
-set g_balance_grenadelauncher_secondary_bouncestop 0.075
+set g_balance_grenadelauncher_secondary_bouncefactor 0.7
+set g_balance_grenadelauncher_secondary_bouncestop 0.12
 // }}}
 // {{{ electro // TODO
-set g_balance_electro_lightning 0
-set g_balance_electro_primary_damage 65
+set g_balance_electro_lightning 1
+set g_balance_electro_primary_damage 100
 set g_balance_electro_primary_edgedamage 0
-set g_balance_electro_primary_force 200
-set g_balance_electro_primary_radius 150
-set g_balance_electro_primary_comboradius 0
-set g_balance_electro_primary_speed 2000
+set g_balance_electro_primary_force 600
+set g_balance_electro_primary_force_up 125
+set g_balance_electro_primary_radius 850
+set g_balance_electro_primary_comboradius 75
+set g_balance_electro_primary_speed 0
 set g_balance_electro_primary_spread 0
-set g_balance_electro_primary_lifetime 30
-set g_balance_electro_primary_refire 0.6
-set g_balance_electro_primary_animtime 0.3
-set g_balance_electro_primary_ammo 2
-set g_balance_electro_secondary_damage 50
-set g_balance_electro_secondary_spread 0.05
+set g_balance_electro_primary_lifetime 0
+set g_balance_electro_primary_refire 0.03333333
+set g_balance_electro_primary_animtime 0.03333333
+set g_balance_electro_primary_ammo 6
+set g_balance_electro_primary_range 800
+set g_balance_electro_secondary_damage 40
+set g_balance_electro_secondary_spread 0
 set g_balance_electro_secondary_edgedamage 0
-set g_balance_electro_secondary_force 200
-set g_balance_electro_secondary_radius 150
-set g_balance_electro_secondary_speed 900
+set g_balance_electro_secondary_force 100
+set g_balance_electro_secondary_radius 100
+set g_balance_electro_secondary_speed 500
 set g_balance_electro_secondary_speed_up 200
 set g_balance_electro_secondary_speed_z 0
-set g_balance_electro_secondary_spread 0
-set g_balance_electro_secondary_lifetime 5
-set g_balance_electro_secondary_refire 0.3
+set g_balance_electro_secondary_spread 0.08
+set g_balance_electro_secondary_lifetime 3.5
+set g_balance_electro_secondary_refire 0.5
 set g_balance_electro_secondary_refire2 0
-set g_balance_electro_secondary_animtime 0.3
+set g_balance_electro_secondary_animtime 0.5
 set g_balance_electro_secondary_ammo 2
-set g_balance_electro_secondary_health 5
+set g_balance_electro_secondary_health 10
 set g_balance_electro_secondary_damageforcescale 4
 set g_balance_electro_secondary_count 1
-set g_balance_electro_combo_damage 80
+set g_balance_electro_combo_damage 40
 set g_balance_electro_combo_edgedamage 0
-set g_balance_electro_combo_force 200
+set g_balance_electro_combo_force 80
 set g_balance_electro_combo_radius 250
 set g_balance_electro_combo_comboradius 0
-set g_balance_electro_combo_speed 2000
+set g_balance_electro_combo_speed 400
 // }}}
 // {{{ crylink
-set g_balance_crylink_primary_damage 18
-set g_balance_crylink_primary_edgedamage 0
-set g_balance_crylink_primary_force -80
+set g_balance_crylink_primary_damage 10
+set g_balance_crylink_primary_edgedamage 8
+set g_balance_crylink_primary_force 25
 set g_balance_crylink_primary_radius 100
-set g_balance_crylink_primary_speed 2000
-set g_balance_crylink_primary_spread 0.03
-set g_balance_crylink_primary_shots 4
+set g_balance_crylink_primary_speed 1100
+set g_balance_crylink_primary_spread 0.1
+set g_balance_crylink_primary_shots 7
 set g_balance_crylink_primary_bounces 1
-set g_balance_crylink_primary_refire 0.4
-set g_balance_crylink_primary_animtime 0.3
+set g_balance_crylink_primary_refire 0.8
+set g_balance_crylink_primary_animtime 0.4
 set g_balance_crylink_primary_ammo 2
-set g_balance_crylink_primary_bouncedamagefactor 0.5
+set g_balance_crylink_primary_bouncedamagefactor 0.2
 
 set g_balance_crylink_primary_middle_lifetime 5 // range: 10000 full, fades to 20000
 set g_balance_crylink_primary_middle_fadetime 5
-set g_balance_crylink_primary_star_lifetime 0.4 // range: 800 full, fades to 1300
+set g_balance_crylink_primary_star_lifetime 0.8 // range: 800 full, fades to 1300
 set g_balance_crylink_primary_star_fadetime 0.25
-set g_balance_crylink_primary_other_lifetime 0.4 // range: 800 full, fades to 1300
+set g_balance_crylink_primary_other_lifetime 0.8 // range: 800 full, fades to 1300
 set g_balance_crylink_primary_other_fadetime 0.25
 
 set g_balance_crylink_secondary 1
-set g_balance_crylink_secondary_damage 18
+set g_balance_crylink_secondary_damage 4
 set g_balance_crylink_secondary_edgedamage 0
-set g_balance_crylink_secondary_force -80
-set g_balance_crylink_secondary_radius 5
-set g_balance_crylink_secondary_speed 2000
-set g_balance_crylink_secondary_spread 0.04
-set g_balance_crylink_secondary_shots 7
+set g_balance_crylink_secondary_force 16
+set g_balance_crylink_secondary_radius 15
+set g_balance_crylink_secondary_speed 1600
+set g_balance_crylink_secondary_spread 0.03
+set g_balance_crylink_secondary_shots 3
 set g_balance_crylink_secondary_bounces 0
-set g_balance_crylink_secondary_refire 0.5
-set g_balance_crylink_secondary_animtime 0.3
-set g_balance_crylink_secondary_ammo 2
+set g_balance_crylink_secondary_refire 0.1
+set g_balance_crylink_secondary_animtime 0.1
+set g_balance_crylink_secondary_ammo 1
 set g_balance_crylink_secondary_bouncedamagefactor 0.5
 
 set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000
@@ -392,42 +399,42 @@ set g_balance_minstanex_animtime 1
 set g_balance_minstanex_ammo 10
 // }}}
 // {{{ hagar
-set g_balance_hagar_primary_damage 30
-set g_balance_hagar_primary_edgedamage 15
+set g_balance_hagar_primary_damage 12
+set g_balance_hagar_primary_edgedamage 12
 set g_balance_hagar_primary_force 70
-set g_balance_hagar_primary_radius 50
-set g_balance_hagar_primary_spread 0.005
-set g_balance_hagar_primary_speed 2000
-set g_balance_hagar_primary_lifetime 30
-set g_balance_hagar_primary_refire 0.13
+set g_balance_hagar_primary_radius 70
+set g_balance_hagar_primary_spread 0.1
+set g_balance_hagar_primary_speed 1800
+set g_balance_hagar_primary_lifetime 5
+set g_balance_hagar_primary_refire 0.12
 set g_balance_hagar_primary_ammo 1
 set g_balance_hagar_secondary 1
-set g_balance_hagar_secondary_damage 30
-set g_balance_hagar_secondary_edgedamage 15
+set g_balance_hagar_secondary_damage 12
+set g_balance_hagar_secondary_edgedamage 12
 set g_balance_hagar_secondary_force 70
 set g_balance_hagar_secondary_radius 50
-set g_balance_hagar_secondary_spread 0.01
-set g_balance_hagar_secondary_speed 1400
-set g_balance_hagar_secondary_lifetime_min 30
+set g_balance_hagar_secondary_spread 0.15
+set g_balance_hagar_secondary_speed 1800
+set g_balance_hagar_secondary_lifetime_min 5
 set g_balance_hagar_secondary_lifetime_rand 0
-set g_balance_hagar_secondary_refire 0.13
+set g_balance_hagar_secondary_refire 0.12
 set g_balance_hagar_secondary_ammo 1
 // }}}
 // {{{ rocketlauncher // TODO
 set g_balance_rocketlauncher_damage 100
 set g_balance_rocketlauncher_edgedamage 33
 set g_balance_rocketlauncher_force 350
-set g_balance_rocketlauncher_radius 120
+set g_balance_rocketlauncher_radius 125
 set g_balance_rocketlauncher_speed 1000
 set g_balance_rocketlauncher_speedaccel 0
 set g_balance_rocketlauncher_speedstart 1000
-set g_balance_rocketlauncher_lifetime 30
+set g_balance_rocketlauncher_lifetime 5
 set g_balance_rocketlauncher_refire 1
-set g_balance_rocketlauncher_animtime 0.3
+set g_balance_rocketlauncher_animtime 0.2
 set g_balance_rocketlauncher_ammo 3
 set g_balance_rocketlauncher_health 0
 set g_balance_rocketlauncher_damageforcescale 0
-set g_balance_rocketlauncher_detonatedelay 9999 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
+set g_balance_rocketlauncher_detonatedelay -1 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
 set g_balance_rocketlauncher_guiderate 45 // max degrees per second
 set g_balance_rocketlauncher_guideratedelay 0.01 // immediate
 set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
@@ -438,12 +445,16 @@ set g_balance_rocketlauncher_laserguided_speedaccel 0
 set g_balance_rocketlauncher_laserguided_speedstart 1000
 set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5
 set g_balance_rocketlauncher_laserguided_allow_steal 1
+set g_balance_rocketlauncher_remote_damage 50
+set g_balance_rocketlauncher_remote_edgedamage 16.5
+set g_balance_rocketlauncher_remote_radius 120
+set g_balance_rocketlauncher_remote_force 350
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
 set g_balance_porto_primary_animtime 0.3
 set g_balance_porto_primary_speed 2000
-set g_balance_porto_primary_lifetime 30
+set g_balance_porto_primary_lifetime 5
 set g_balance_portal_health 200 // these get recharged whenever the portal is used
 set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 // }}}
@@ -459,7 +470,7 @@ set g_balance_hook_secondary_edgedamage 5 // not much
 set g_balance_hook_secondary_radius 500 // LOTS
 set g_balance_hook_secondary_force -2000 // LOTS
 set g_balance_hook_secondary_ammo 50 // a whole pack
-set g_balance_hook_secondary_lifetime 30 // infinite
+set g_balance_hook_secondary_lifetime 5 // infinite
 set g_balance_hook_secondary_speed 0 // not much throwing
 set g_balance_hook_secondary_gravity 5 // fast falling
 set g_balance_hook_secondary_refire 3 // don't drop too many bombs...
@@ -468,16 +479,16 @@ set g_balance_hook_secondary_power 3 // effect behaves like a square function
 set g_balance_hook_secondary_duration 1.5 // effect runs for three seconds
 // }}}
 // {{{ hlac
-set g_balance_hlac_primary_spread_min 0.01
-set g_balance_hlac_primary_spread_max 0.25
-set g_balance_hlac_primary_spread_add 0.0045
-set g_balance_hlac_primary_spread_crouchmod 0.25
+set g_balance_hlac_primary_spread_min 0
+set g_balance_hlac_primary_spread_max 0
+set g_balance_hlac_primary_spread_add 0
+set g_balance_hlac_primary_spread_crouchmod 0
 
-set g_balance_hlac_primary_damage 23
-set g_balance_hlac_primary_edgedamage 10
-set g_balance_hlac_primary_force 100
-set g_balance_hlac_primary_radius 70
-set g_balance_hlac_primary_speed 9000
+set g_balance_hlac_primary_damage 15
+set g_balance_hlac_primary_edgedamage 0
+set g_balance_hlac_primary_force 70
+set g_balance_hlac_primary_radius 30
+set g_balance_hlac_primary_speed 2500
 set g_balance_hlac_primary_lifetime 5
 
 set g_balance_hlac_primary_refire 0.1
@@ -488,38 +499,39 @@ set g_balance_hlac_secondary 1
 set g_balance_hlac_secondary_spread 0.15
 set g_balance_hlac_secondary_spread_crouchmod 0.5
 
-set g_balance_hlac_secondary_damage 23
-set g_balance_hlac_secondary_edgedamage 10
-set g_balance_hlac_secondary_force 100
-set g_balance_hlac_secondary_radius 70
-set g_balance_hlac_secondary_speed 9000
+set g_balance_hlac_secondary_damage 20
+set g_balance_hlac_secondary_edgedamage 0
+set g_balance_hlac_secondary_force 40
+set g_balance_hlac_secondary_radius 35
+set g_balance_hlac_secondary_speed 2500
 set g_balance_hlac_secondary_lifetime 5
 
 set g_balance_hlac_secondary_refire 1
-set g_balance_hlac_secondary_animtime 0.3
+set g_balance_hlac_secondary_animtime 0.7
 set g_balance_hlac_secondary_ammo 10
 set g_balance_hlac_secondary_shots 6
 // }}}
 // {{{ campingrifle
-set g_balance_campingrifle_magazinecapacity 8
+set g_balance_campingrifle_magazinecapacity 0
 set g_balance_campingrifle_reloadtime 2 // matches reload anim
 set g_balance_campingrifle_auto_reload_after_changing_weapons 0
 set g_balance_campingrifle_bursttime 0
-set g_balance_campingrifle_tracer 0
-set g_balance_campingrifle_primary_damage 60
-set g_balance_campingrifle_primary_headshotaddeddamage 100
+set g_balance_campingrifle_tracer 1
+set g_balance_campingrifle_primary_damage 50
+set g_balance_campingrifle_primary_headshotaddeddamage 35
 set g_balance_campingrifle_primary_spread 0
 set g_balance_campingrifle_primary_force 2
 set g_balance_campingrifle_primary_speed 35000
 set g_balance_campingrifle_primary_lifetime 5
 set g_balance_campingrifle_primary_refire 0.8
-set g_balance_campingrifle_primary_animtime 0.3
+set g_balance_campingrifle_primary_animtime 0.8
 set g_balance_campingrifle_primary_ammo 10
 set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu
 set g_balance_campingrifle_primary_burstcost 0
 set g_balance_campingrifle_primary_bullethail 0 // empty magazine on shot
-set g_balance_campingrifle_secondary_damage 35
-set g_balance_campingrifle_secondary_headshotaddeddamage 15 // 50 damage only on head
+set g_balance_campingrifle_secondary 0
+set g_balance_campingrifle_secondary_damage 15
+set g_balance_campingrifle_secondary_headshotaddeddamage 25 // 50 damage only on head
 set g_balance_campingrifle_secondary_spread 0.008
 set g_balance_campingrifle_secondary_force 1
 set g_balance_campingrifle_secondary_speed 20000
@@ -597,8 +609,8 @@ set g_balance_seeker_flac_spread 0.4
 set g_balance_seeker_missile_accel 1.05
 set g_balance_seeker_missile_ammo 2
 set g_balance_seeker_missile_animtime 0.3
-set g_balance_seeker_missile_count 4
-set g_balance_seeker_missile_damage 40
+set g_balance_seeker_missile_count 3
+set g_balance_seeker_missile_damage 33
 set g_balance_seeker_missile_damageforcescale 4
 set g_balance_seeker_missile_decel 0.9
 set g_balance_seeker_missile_delay 0.25
index 21242f16f0364632fbd0eaeb42bf0fba6d854283..292bb210568be03dd1f3fa5c161e2a1ea5d8bd88 100644 (file)
@@ -217,7 +217,7 @@ set g_balance_laser_primary_animtime 0.3
 set g_balance_laser_primary_lifetime 30
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0.03
-set g_balance_laser_gauntlet 0
+set g_balance_laser_primary_gauntlet 0
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
 set g_balance_laser_secondary_damage 25
 set g_balance_laser_secondary_edgedamage 10
@@ -230,6 +230,7 @@ set g_balance_laser_secondary_animtime 0.3
 set g_balance_laser_secondary_lifetime 30
 set g_balance_laser_secondary_shotangle -90
 set g_balance_laser_secondary_delay 0
+set g_balance_laser_secondary_gauntlet 0
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 6
@@ -242,15 +243,14 @@ set g_balance_shotgun_primary_ammo 1
 set g_balance_shotgun_primary_speed 8000
 set g_balance_shotgun_primary_bulletconstant 75 // 3.8qu
 set g_balance_shotgun_secondary 1
-set g_balance_shotgun_secondary_bullets 6
-set g_balance_shotgun_secondary_damage 8
-set g_balance_shotgun_secondary_force 15
-set g_balance_shotgun_secondary_spread 0.17
-set g_balance_shotgun_secondary_refire 1.35
-set g_balance_shotgun_secondary_animtime 0.2
-set g_balance_shotgun_secondary_ammo 1
-set g_balance_shotgun_secondary_speed 8000
-set g_balance_shotgun_secondary_bulletconstant 75 // 3.8qu
+set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim
+set g_balance_shotgun_secondary_melee_range 60
+set g_balance_shotgun_secondary_melee_swing 50
+set g_balance_shotgun_secondary_melee_time 0.1
+set g_balance_shotgun_secondary_damage 115
+set g_balance_shotgun_secondary_force 150
+set g_balance_shotgun_secondary_refire 1.1
+set g_balance_shotgun_secondary_animtime 1
 // }}}
 // {{{ uzi
 set g_balance_uzi_first 1
@@ -269,6 +269,7 @@ set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary2secondary 0
+set g_balance_grenadelauncher_primary_sticky 0
 set g_balance_grenadelauncher_primary_damage 50
 set g_balance_grenadelauncher_primary_edgedamage 38
 set g_balance_grenadelauncher_primary_force 400
@@ -278,9 +279,12 @@ set g_balance_grenadelauncher_primary_speed_up 220
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
 set g_balance_grenadelauncher_primary_lifetime 30
+set g_balance_grenadelauncher_primary_lifetime2 1
 set g_balance_grenadelauncher_primary_refire 0.8
 set g_balance_grenadelauncher_primary_animtime 0.3
 set g_balance_grenadelauncher_primary_ammo 2
+set g_balance_grenadelauncher_primary_health 25
+set g_balance_grenadelauncher_secondary_sticky 0
 set g_balance_grenadelauncher_secondary_damage 60
 set g_balance_grenadelauncher_secondary_edgedamage 38
 set g_balance_grenadelauncher_secondary_force 400
@@ -290,6 +294,7 @@ set g_balance_grenadelauncher_secondary_speed_up 150
 set g_balance_grenadelauncher_secondary_speed_z 0
 set g_balance_grenadelauncher_secondary_spread 0
 set g_balance_grenadelauncher_secondary_lifetime 1
+set g_balance_grenadelauncher_secondary_lifetime2 0
 set g_balance_grenadelauncher_secondary_refire 0.7
 set g_balance_grenadelauncher_secondary_animtime 0.3
 set g_balance_grenadelauncher_secondary_ammo 2
@@ -303,6 +308,7 @@ set g_balance_electro_lightning 0
 set g_balance_electro_primary_damage 65
 set g_balance_electro_primary_edgedamage 0
 set g_balance_electro_primary_force 200
+set g_balance_electro_primary_force_up 0
 set g_balance_electro_primary_radius 150
 set g_balance_electro_primary_comboradius 0
 set g_balance_electro_primary_speed 2000
@@ -311,6 +317,7 @@ set g_balance_electro_primary_lifetime 30
 set g_balance_electro_primary_refire 0.6
 set g_balance_electro_primary_animtime 0.3
 set g_balance_electro_primary_ammo 2
+set g_balance_electro_primary_range 0
 set g_balance_electro_secondary_damage 50
 set g_balance_electro_secondary_spread 0.05
 set g_balance_electro_secondary_edgedamage 0
@@ -438,6 +445,10 @@ set g_balance_rocketlauncher_laserguided_speedaccel 0
 set g_balance_rocketlauncher_laserguided_speedstart 1000
 set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5
 set g_balance_rocketlauncher_laserguided_allow_steal 1
+set g_balance_rocketlauncher_remote_damage 80
+set g_balance_rocketlauncher_remote_edgedamage 40
+set g_balance_rocketlauncher_remote_radius 100
+set g_balance_rocketlauncher_remote_force 600
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
@@ -518,6 +529,7 @@ set g_balance_campingrifle_primary_ammo 10
 set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu
 set g_balance_campingrifle_primary_burstcost 0.35 // require same cooldown as secondary, note it's smaller than primary refire time
 set g_balance_campingrifle_primary_bullethail 0
+set g_balance_campingrifle_secondary 1
 set g_balance_campingrifle_secondary_damage 15
 set g_balance_campingrifle_secondary_headshotaddeddamage 25
 set g_balance_campingrifle_secondary_spread 0.02
index bb0416a3418daac9523bfc87c806ba0c4054d29c..91072e83529a35ff4945e697ce3fc6b7e7373653 100644 (file)
@@ -1,41 +1,41 @@
 // {{{ starting gear
 set g_start_weapon_laser -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_shotgun -2 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_uzi 1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_shotgun -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_uzi -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_grenadelauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_electro -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_nex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_hagar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_rocketlauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_minstanex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_porto -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_hook -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_minstanex 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_porto 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_hook 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_hlac 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_campingrifle 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_fireball -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_tuba 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_fireball 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_start_weapon_seeker 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 set g_balance_health_start 125
 set g_balance_armor_start 0
-set g_start_ammo_shells 0
-set g_start_ammo_nails 100
+set g_start_ammo_shells 14
+set g_start_ammo_nails 0
 set g_start_ammo_rockets 0
 set g_start_ammo_cells 0
 set g_start_ammo_fuel 0
-set g_warmup_start_health 200 "starting values when being in warmup-stage"
+set g_warmup_start_health 250 "starting values when being in warmup-stage"
 set g_warmup_start_armor 100 "starting values when being in warmup-stage"
 set g_warmup_start_ammo_shells 50 "starting values when being in warmup-stage"
 set g_warmup_start_ammo_nails 150 "starting values when being in warmup-stage"
 set g_warmup_start_ammo_rockets 50 "starting values when being in warmup-stage"
 set g_warmup_start_ammo_cells 50 "starting values when being in warmup-stage"
 set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage"
-set g_lms_start_health 200
+set g_lms_start_health 250
 set g_lms_start_armor 100
 set g_lms_start_ammo_shells 30
-set g_lms_start_ammo_nails 210
-set g_lms_start_ammo_rockets 150
-set g_lms_start_ammo_cells 150
+set g_lms_start_ammo_nails 250
+set g_lms_start_ammo_rockets 100
+set g_lms_start_ammo_cells 200
 set g_lms_start_ammo_fuel 0
 set g_balance_nix_roundtime 25
 set g_balance_nix_incrtime 1.6
@@ -52,34 +52,34 @@ set g_balance_nix_ammoincr_fuel 2
 // }}}
 
 // {{{ pickup items
-set g_pickup_ammo_anyway 0
-set g_pickup_weapons_anyway 0
+set g_pickup_ammo_anyway 1
+set g_pickup_weapons_anyway 1
 set g_pickup_shells 10
 set g_pickup_shells_max 30
-set g_pickup_nails 30
-set g_pickup_nails_max 210
-set g_pickup_rockets 20
+set g_pickup_nails 120
+set g_pickup_nails_max 300
+set g_pickup_rockets 25
 set g_pickup_rockets_max 150
-set g_pickup_cells 50
-set g_pickup_cells_max 150
+set g_pickup_cells 25
+set g_pickup_cells_max 200
 set g_pickup_fuel 25
 set g_pickup_fuel_jetpack 50
-set g_pickup_fuel_max 999
+set g_pickup_fuel_max 100
 set g_pickup_armorsmall 5
 set g_pickup_armorsmall_max 200
-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_anyway 0
+set g_pickup_armormedium_anyway 1
 set g_pickup_armorbig 50
 set g_pickup_armorbig_max 200
-set g_pickup_armorbig_anyway 0
+set g_pickup_armorbig_anyway 1
 set g_pickup_armorlarge 100
 set g_pickup_armorlarge_max 200
-set g_pickup_armorlarge_anyway 0
+set g_pickup_armorlarge_anyway 1
 set g_pickup_healthsmall 5
 set g_pickup_healthsmall_max 200
-set g_pickup_healthsmall_anyway 0
+set g_pickup_healthsmall_anyway 1
 set g_pickup_healthmedium 25
 set g_pickup_healthmedium_max 100
 set g_pickup_healthmedium_anyway 0
@@ -88,17 +88,17 @@ set g_pickup_healthlarge_max 100
 set g_pickup_healthlarge_anyway 0
 set g_pickup_healthmega 100
 set g_pickup_healthmega_max 200
-set g_pickup_healthmega_anyway 0
-set g_pickup_respawntime_short 30
-set g_pickup_respawntime_medium 30
+set g_pickup_healthmega_anyway 1
+set g_pickup_respawntime_short 15
+set g_pickup_respawntime_medium 20
 set g_pickup_respawntime_long 30
-set g_pickup_respawntime_powerup 90
+set g_pickup_respawntime_powerup 120
 set g_pickup_respawntime_weapon 5
-set g_pickup_respawntime_ammo 30
+set g_pickup_respawntime_ammo 25
 set g_pickup_respawntimejitter_short 0
 set g_pickup_respawntimejitter_medium 0
 set g_pickup_respawntimejitter_long 0
-set g_pickup_respawntimejitter_powerup 15
+set g_pickup_respawntimejitter_powerup 10
 set g_pickup_respawntimejitter_weapon 0
 set g_pickup_respawntimejitter_ammo 0
 // }}}
@@ -114,7 +114,7 @@ set g_balance_pause_health_rot 1
 set g_balance_pause_health_rot_spawn 0
 set g_balance_health_regenstable 100
 set g_balance_health_rotstable 100
-set g_balance_health_limit 999
+set g_balance_health_limit 200
 set g_balance_armor_regen 0
 set g_balance_armor_regenlinear 0
 set g_balance_armor_rot 0
@@ -123,9 +123,8 @@ set g_balance_pause_armor_rot 1
 set g_balance_pause_armor_rot_spawn 0
 set g_balance_armor_regenstable 100
 set g_balance_armor_rotstable 100
-set g_balance_armor_limit 999
-set g_balance_armor_blockpercent 0.66
-
+set g_balance_armor_limit 200
+set g_balance_armor_blockpercent 0.7
 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
@@ -139,8 +138,8 @@ set g_balance_fuel_limit 999
 // }}}
 
 // {{{ misc
-set g_balance_selfdamagepercent 0.75
-set g_balance_weaponswitchdelay 0.05
+set g_balance_selfdamagepercent 0.65
+set g_balance_weaponswitchdelay 0.1
 set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
 set g_weaponratefactor 1 "weapon fire rate multiplier"
 set g_weapondamagefactor 1 "weapon damage multiplier"
@@ -170,26 +169,26 @@ set g_projectiles_spread_style 4
 // 6: forward + circle with 1-r^2 falloff
 // 7: forward + circle with (1-r)(2-r) falloff
 set g_balance_falldamage_deadminspeed 150
-set g_balance_falldamage_minspeed 675
-set g_balance_falldamage_factor 0.25
-set g_balance_falldamage_maxdamage 10
+set g_balance_falldamage_minspeed 800
+set g_balance_falldamage_factor 0.20
+set g_balance_falldamage_maxdamage 15
 // }}}
 
 // {{{ powerups
-set g_balance_powerup_invincible_takedamage 0.25
+set g_balance_powerup_invincible_takedamage 0.3
 set g_balance_powerup_invincible_time 30
-set g_balance_powerup_strength_damage 4
+set g_balance_powerup_strength_damage 3
 set g_balance_powerup_strength_force 4
 set g_balance_powerup_strength_time 30
-set g_balance_powerup_strength_selfdamage 2
-set g_balance_powerup_strength_selfforce 2
+set g_balance_powerup_strength_selfdamage 1.5
+set g_balance_powerup_strength_selfforce 1.5
 // }}}
 
 // {{{ jetpack/hook
 set g_jetpack_antigravity 0.8 "factor of gravity compensation of the jetpack"
 set g_jetpack_acceleration_side 1200 "acceleration of the jetpack in xy direction"
 set g_jetpack_acceleration_up 600 "acceleration of the jetpack in z direction (note: you have to factor in gravity here, if antigravity is not 1)"
-set g_jetpack_maxspeed_side 1200 "max speed of the jetpack in xy direction"
+set g_jetpack_maxspeed_side 1500 "max speed of the jetpack in xy direction"
 set g_jetpack_maxspeed_up 600 "max speed of the jetpack in z direction"
 set g_jetpack_fuel 8 "fuel per second for jetpack"
 set g_jetpack_attenuation 2 "jetpack sound attenuation"
@@ -207,163 +206,170 @@ set g_balance_grapplehook_health 130
 
 // {{{ weapon properties
 // {{{ laser
-set g_balance_laser_primary_damage 22
-set g_balance_laser_primary_edgedamage 0
-set g_balance_laser_primary_force 200
-set g_balance_laser_primary_radius 52
-set g_balance_laser_primary_speed 0
+set g_balance_laser_primary_damage 20 // dps 33, hope that's not too high
+set g_balance_laser_primary_edgedamage 20
+set g_balance_laser_primary_force 235
+set g_balance_laser_primary_radius 60
+set g_balance_laser_primary_speed 4000
 set g_balance_laser_primary_spread 0
-set g_balance_laser_primary_refire 0.1
-set g_balance_laser_primary_animtime 0.1
-set g_balance_laser_primary_lifetime 0
+set g_balance_laser_primary_refire 0.6
+set g_balance_laser_primary_animtime 0.6
+set g_balance_laser_primary_lifetime 5
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0
-set g_balance_laser_gauntlet 1
-set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
-set g_balance_laser_secondary_damage 30
+set g_balance_laser_primary_gauntlet 0
+set g_balance_laser_secondary 1 // when 1, a secondary laser mode exists
+set g_balance_laser_secondary_damage 110 // dps
 set g_balance_laser_secondary_edgedamage 0
-set g_balance_laser_secondary_force 100
-set g_balance_laser_secondary_radius 3
-set g_balance_laser_secondary_speed 1500
+set g_balance_laser_secondary_force 1000
+set g_balance_laser_secondary_radius 60
+set g_balance_laser_secondary_speed 0
 set g_balance_laser_secondary_spread 0
-set g_balance_laser_secondary_refire 0
-set g_balance_laser_secondary_animtime 0.15
-set g_balance_laser_secondary_lifetime 0.066
+set g_balance_laser_secondary_refire 0.066
+set g_balance_laser_secondary_animtime 0.066
+set g_balance_laser_secondary_lifetime 0
 set g_balance_laser_secondary_shotangle 0
 set g_balance_laser_secondary_delay 0
+set g_balance_laser_secondary_gauntlet 1
 // }}}
 // {{{ shotgun
-set g_balance_shotgun_primary_bullets 25
+set g_balance_shotgun_primary_bullets 16
 set g_balance_shotgun_primary_damage 4
-set g_balance_shotgun_primary_force 10
-set g_balance_shotgun_primary_spread 0.18
+set g_balance_shotgun_primary_force 20
+set g_balance_shotgun_primary_spread 0.16
 set g_balance_shotgun_primary_refire 1
-set g_balance_shotgun_primary_animtime 0.7
+set g_balance_shotgun_primary_animtime 0.4
 set g_balance_shotgun_primary_ammo 1
 set g_balance_shotgun_primary_speed 12000
 set g_balance_shotgun_primary_bulletconstant 75 // 3.8qu
-set g_balance_shotgun_secondary 0
-set g_balance_shotgun_secondary_bullets 22
-set g_balance_shotgun_secondary_damage 2
-set g_balance_shotgun_secondary_force 12
-set g_balance_shotgun_secondary_spread 0.25
-set g_balance_shotgun_secondary_refire 1.5
-set g_balance_shotgun_secondary_animtime 0.2
-set g_balance_shotgun_secondary_ammo 0.5
-set g_balance_shotgun_secondary_speed 12000
-set g_balance_shotgun_secondary_bulletconstant 75 // 3.8qu
+set g_balance_shotgun_secondary 1
+set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim
+set g_balance_shotgun_secondary_melee_range 60
+set g_balance_shotgun_secondary_melee_swing 50
+set g_balance_shotgun_secondary_melee_time 0.1
+set g_balance_shotgun_secondary_damage 115
+set g_balance_shotgun_secondary_force 150
+set g_balance_shotgun_secondary_refire 1.1
+set g_balance_shotgun_secondary_animtime 1
 // }}}
 // {{{ uzi
-set g_balance_uzi_first 0
-set g_balance_uzi_first_damage 10
-set g_balance_uzi_first_force 50
-set g_balance_uzi_first_spread 0.007
-set g_balance_uzi_first_refire 0.15
-set g_balance_uzi_first_ammo 1
-set g_balance_uzi_sustained_damage 5
-set g_balance_uzi_sustained_force 10
-set g_balance_uzi_sustained_spread 0.02
-set g_balance_uzi_sustained_refire 0.1
+set g_balance_uzi_first 1
+set g_balance_uzi_first_damage 17
+set g_balance_uzi_first_force 35
+set g_balance_uzi_first_spread 0.03
+set g_balance_uzi_first_refire 0.2
+set g_balance_uzi_first_ammo 2
+set g_balance_uzi_sustained_damage 7
+set g_balance_uzi_sustained_force 7.5
+set g_balance_uzi_sustained_spread 0.1
+set g_balance_uzi_sustained_refire 0.075
 set g_balance_uzi_sustained_ammo 1
 set g_balance_uzi_speed 18000
 set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
-// {{{ mortar
-set g_balance_grenadelauncher_primary2secondary 1
+// {{{ mortar // TODO
+set g_balance_grenadelauncher_primary2secondary 0
+set g_balance_grenadelauncher_primary_sticky 0
 set g_balance_grenadelauncher_primary_damage 60
-set g_balance_grenadelauncher_primary_edgedamage 10
-set g_balance_grenadelauncher_primary_force 250
+set g_balance_grenadelauncher_primary_edgedamage 35
+set g_balance_grenadelauncher_primary_force 300
 set g_balance_grenadelauncher_primary_radius 100
 set g_balance_grenadelauncher_primary_speed 2000
 set g_balance_grenadelauncher_primary_speed_up 200
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
 set g_balance_grenadelauncher_primary_lifetime 5
-set g_balance_grenadelauncher_primary_refire 0.7
-set g_balance_grenadelauncher_primary_animtime 0.3
+set g_balance_grenadelauncher_primary_lifetime2 0.65
+set g_balance_grenadelauncher_primary_refire 0.8
+set g_balance_grenadelauncher_primary_animtime 0.2
 set g_balance_grenadelauncher_primary_ammo 2
-set g_balance_grenadelauncher_secondary_damage 65
-set g_balance_grenadelauncher_secondary_edgedamage 10
+set g_balance_grenadelauncher_primary_health 72
+set g_balance_grenadelauncher_secondary_sticky 1
+set g_balance_grenadelauncher_secondary_damage 100
+set g_balance_grenadelauncher_secondary_edgedamage 30
 set g_balance_grenadelauncher_secondary_force 300
-set g_balance_grenadelauncher_secondary_radius 200
-set g_balance_grenadelauncher_secondary_speed 800
-set g_balance_grenadelauncher_secondary_speed_up 0
-set g_balance_grenadelauncher_secondary_speed_z 200
+set g_balance_grenadelauncher_secondary_radius 150
+set g_balance_grenadelauncher_secondary_speed 1000
+set g_balance_grenadelauncher_secondary_speed_up 200
+set g_balance_grenadelauncher_secondary_speed_z 0
 set g_balance_grenadelauncher_secondary_spread 0
-set g_balance_grenadelauncher_secondary_lifetime 2
+set g_balance_grenadelauncher_secondary_lifetime 5
+set g_balance_grenadelauncher_secondary_lifetime2 1
 set g_balance_grenadelauncher_secondary_refire 0.8
-set g_balance_grenadelauncher_secondary_animtime 0.5
+set g_balance_grenadelauncher_secondary_animtime 0.2
 set g_balance_grenadelauncher_secondary_ammo 2
-set g_balance_grenadelauncher_secondary_health 0
+set g_balance_grenadelauncher_secondary_health 72
 set g_balance_grenadelauncher_secondary_damageforcescale 0
-set g_balance_grenadelauncher_secondary_bouncefactor 0.5
-set g_balance_grenadelauncher_secondary_bouncestop 0.075
+set g_balance_grenadelauncher_secondary_bouncefactor 0.7
+set g_balance_grenadelauncher_secondary_bouncestop 0.12
 // }}}
-// {{{ electro
+// {{{ electro // TODO
 set g_balance_electro_lightning 1
-set g_balance_electro_primary_damage 6
+set g_balance_electro_primary_damage 100
 set g_balance_electro_primary_edgedamage 0
-set g_balance_electro_primary_force 60 // todo: probaby needs movement nerfing code when hit?
+set g_balance_electro_primary_force 600
+set g_balance_electro_primary_force_up 125
 set g_balance_electro_primary_radius 850
-set g_balance_electro_primary_comboradius 0
+set g_balance_electro_primary_comboradius 75
 set g_balance_electro_primary_speed 0
 set g_balance_electro_primary_spread 0
 set g_balance_electro_primary_lifetime 0
-set g_balance_electro_primary_refire 0.066
-set g_balance_electro_primary_animtime 0.066
-set g_balance_electro_primary_ammo 0.66
-set g_balance_electro_secondary_damage 45
-set g_balance_electro_secondary_spread 0.10
-set g_balance_electro_secondary_edgedamage 10
+set g_balance_electro_primary_refire 0.03333333
+set g_balance_electro_primary_animtime 0.03333333
+set g_balance_electro_primary_ammo 6
+set g_balance_electro_primary_range 800
+set g_balance_electro_secondary_damage 40
+set g_balance_electro_secondary_spread 0
+set g_balance_electro_secondary_edgedamage 0
 set g_balance_electro_secondary_force 100
-set g_balance_electro_secondary_radius 150
-set g_balance_electro_secondary_speed 900
+set g_balance_electro_secondary_radius 100
+set g_balance_electro_secondary_speed 500
 set g_balance_electro_secondary_speed_up 200
 set g_balance_electro_secondary_speed_z 0
-set g_balance_electro_secondary_spread 0.05
-set g_balance_electro_secondary_lifetime 2.5
-set g_balance_electro_secondary_refire 0.1
-set g_balance_electro_secondary_refire2 2
-set g_balance_electro_secondary_animtime 0.2
+set g_balance_electro_secondary_spread 0.08
+set g_balance_electro_secondary_lifetime 3.5
+set g_balance_electro_secondary_refire 0.5
+set g_balance_electro_secondary_refire2 0
+set g_balance_electro_secondary_animtime 0.5
 set g_balance_electro_secondary_ammo 2
-set g_balance_electro_secondary_health 5
+set g_balance_electro_secondary_health 10
 set g_balance_electro_secondary_damageforcescale 4
-set g_balance_electro_secondary_count 3
-set g_balance_electro_combo_damage 50
+set g_balance_electro_secondary_count 1
+set g_balance_electro_combo_damage 40
 set g_balance_electro_combo_edgedamage 0
-set g_balance_electro_combo_force 100
+set g_balance_electro_combo_force 80
 set g_balance_electro_combo_radius 250
 set g_balance_electro_combo_comboradius 0
-set g_balance_electro_combo_speed 2000
+set g_balance_electro_combo_speed 400
 // }}}
 // {{{ crylink
-set g_balance_crylink_primary_damage 18
-set g_balance_crylink_primary_edgedamage 18
-set g_balance_crylink_primary_force 50
+set g_balance_crylink_primary_damage 10
+set g_balance_crylink_primary_edgedamage 8
+set g_balance_crylink_primary_force 25
 set g_balance_crylink_primary_radius 100
 set g_balance_crylink_primary_speed 1100
-set g_balance_crylink_primary_spread 0.01
-set g_balance_crylink_primary_shots 4
-set g_balance_crylink_primary_bounces 0
-set g_balance_crylink_primary_refire 0.4
+set g_balance_crylink_primary_spread 0.1
+set g_balance_crylink_primary_shots 7
+set g_balance_crylink_primary_bounces 1
+set g_balance_crylink_primary_refire 0.8
 set g_balance_crylink_primary_animtime 0.4
 set g_balance_crylink_primary_ammo 2
-set g_balance_crylink_primary_bouncedamagefactor 0.5
+set g_balance_crylink_primary_bouncedamagefactor 0.2
 
-set g_balance_crylink_primary_middle_lifetime 5 // range: 35000 full, fades to 70000
+set g_balance_crylink_primary_middle_lifetime 5 // range: 10000 full, fades to 20000
 set g_balance_crylink_primary_middle_fadetime 5
-set g_balance_crylink_primary_star_lifetime 3 // range: 700 full, fades to 2450
-set g_balance_crylink_primary_star_fadetime 5
-set g_balance_crylink_primary_other_lifetime 3 // range: 700 full, fades to 2450
-set g_balance_crylink_primary_other_fadetime 5
+set g_balance_crylink_primary_star_lifetime 0.8 // range: 800 full, fades to 1300
+set g_balance_crylink_primary_star_fadetime 0.25
+set g_balance_crylink_primary_other_lifetime 0.8 // range: 800 full, fades to 1300
+set g_balance_crylink_primary_other_fadetime 0.25
 
-set g_balance_crylink_secondary 0
-set g_balance_crylink_secondary_damage 8
-set g_balance_crylink_secondary_edgedamage 8
-set g_balance_crylink_secondary_force -40
-set g_balance_crylink_secondary_radius 10
-set g_balance_crylink_secondary_speed 4000
-set g_balance_crylink_secondary_spread 0.01
+set g_balance_crylink_secondary 1
+set g_balance_crylink_secondary_damage 4
+set g_balance_crylink_secondary_edgedamage 0
+set g_balance_crylink_secondary_force 16
+set g_balance_crylink_secondary_radius 15
+set g_balance_crylink_secondary_speed 1600
+set g_balance_crylink_secondary_spread 0.03
 set g_balance_crylink_secondary_shots 3
 set g_balance_crylink_secondary_bounces 0
 set g_balance_crylink_secondary_refire 0.1
@@ -371,96 +377,100 @@ set g_balance_crylink_secondary_animtime 0.1
 set g_balance_crylink_secondary_ammo 1
 set g_balance_crylink_secondary_bouncedamagefactor 0.5
 
-set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to 70000
+set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000
 set g_balance_crylink_secondary_middle_fadetime 5
-set g_balance_crylink_secondary_line_lifetime 2 // range: 35000 full, fades to 70000
+set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000
 set g_balance_crylink_secondary_line_fadetime 2
 // }}}
 // {{{ nex
-set g_balance_nex_damage 80
+set g_balance_nex_damage 100
 set g_balance_nex_force 200
 set g_balance_nex_refire 1.25
-set g_balance_nex_animtime 1.25
+set g_balance_nex_animtime 1
 set g_balance_nex_ammo 5
 set g_balance_nex_damagefalloff_mindist 1000
 set g_balance_nex_damagefalloff_maxdist 3000
-set g_balance_nex_damagefalloff_halflife 1500
-set g_balance_nex_damagefalloff_forcehalflife 1500
+set g_balance_nex_damagefalloff_halflife 2000
+set g_balance_nex_damagefalloff_forcehalflife 2000
 // }}}
 // {{{ minstanex
-set g_balance_minstanex_refire 1
+set g_balance_minstanex_refire 1.25
 set g_balance_minstanex_animtime 1
 set g_balance_minstanex_ammo 10
 // }}}
 // {{{ hagar
 set g_balance_hagar_primary_damage 12
-set g_balance_hagar_primary_edgedamage 5
+set g_balance_hagar_primary_edgedamage 12
 set g_balance_hagar_primary_force 70
-set g_balance_hagar_primary_radius 50
-set g_balance_hagar_primary_spread 0
+set g_balance_hagar_primary_radius 70
+set g_balance_hagar_primary_spread 0.1
 set g_balance_hagar_primary_speed 1800
 set g_balance_hagar_primary_lifetime 5
-set g_balance_hagar_primary_refire 0.1
+set g_balance_hagar_primary_refire 0.12
 set g_balance_hagar_primary_ammo 1
-set g_balance_hagar_secondary 0
-set g_balance_hagar_secondary_damage 11
-set g_balance_hagar_secondary_edgedamage 4
-set g_balance_hagar_secondary_force 60
-set g_balance_hagar_secondary_radius 70
-set g_balance_hagar_secondary_spread 0.05
+set g_balance_hagar_secondary 1
+set g_balance_hagar_secondary_damage 12
+set g_balance_hagar_secondary_edgedamage 12
+set g_balance_hagar_secondary_force 70
+set g_balance_hagar_secondary_radius 50
+set g_balance_hagar_secondary_spread 0.15
 set g_balance_hagar_secondary_speed 1800
 set g_balance_hagar_secondary_lifetime_min 5
 set g_balance_hagar_secondary_lifetime_rand 0
-set g_balance_hagar_secondary_refire 0.1
+set g_balance_hagar_secondary_refire 0.12
 set g_balance_hagar_secondary_ammo 1
 // }}}
-// {{{ rocketlauncher
-set g_balance_rocketlauncher_damage 90
-set g_balance_rocketlauncher_edgedamage 30
+// {{{ rocketlauncher // TODO
+set g_balance_rocketlauncher_damage 100
+set g_balance_rocketlauncher_edgedamage 33
 set g_balance_rocketlauncher_force 350
-set g_balance_rocketlauncher_radius 110
+set g_balance_rocketlauncher_radius 125
 set g_balance_rocketlauncher_speed 1000
 set g_balance_rocketlauncher_speedaccel 0
 set g_balance_rocketlauncher_speedstart 1000
-set g_balance_rocketlauncher_lifetime 10
-set g_balance_rocketlauncher_refire 0.9
-set g_balance_rocketlauncher_animtime 0.7
+set g_balance_rocketlauncher_lifetime 5
+set g_balance_rocketlauncher_refire 1
+set g_balance_rocketlauncher_animtime 0.2
 set g_balance_rocketlauncher_ammo 3
 set g_balance_rocketlauncher_health 0
 set g_balance_rocketlauncher_damageforcescale 0
-set g_balance_rocketlauncher_detonatedelay 9999 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
-set g_balance_rocketlauncher_guiderate 0 // max degrees per second
+set g_balance_rocketlauncher_detonatedelay -1 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
+set g_balance_rocketlauncher_guiderate 45 // max degrees per second
 set g_balance_rocketlauncher_guideratedelay 0.01 // immediate
 set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
 set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in
-set g_balance_rocketlauncher_guidestop 1 // stop guiding when firing again
+set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again
 set g_balance_rocketlauncher_laserguided_speed 1000 //650
 set g_balance_rocketlauncher_laserguided_speedaccel 0
 set g_balance_rocketlauncher_laserguided_speedstart 1000
 set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5
 set g_balance_rocketlauncher_laserguided_allow_steal 1
+set g_balance_rocketlauncher_remote_damage 50
+set g_balance_rocketlauncher_remote_edgedamage 16.5
+set g_balance_rocketlauncher_remote_radius 120
+set g_balance_rocketlauncher_remote_force 350
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
 set g_balance_porto_primary_animtime 0.3
-set g_balance_porto_primary_speed 5000
-set g_balance_porto_primary_lifetime 30
+set g_balance_porto_primary_speed 2000
+set g_balance_porto_primary_lifetime 5
 set g_balance_portal_health 200 // these get recharged whenever the portal is used
 set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 // }}}
 // {{{ hook
-set g_balance_hook_primary_fuel 2 // hook monkeys set 0
+set g_balance_hook_primary_fuel 5 // hook monkeys set 0
 set g_balance_hook_primary_refire 0 // hook monkeys set 0
 set g_balance_hook_primary_animtime 0.3 // good shoot anim
 set g_balance_hook_primary_hooked_time_max 0 // infinite
 set g_balance_hook_primary_hooked_time_free 2 // 2s being hooked are free
-set g_balance_hook_primary_hooked_fuel 3 // fuel per second hooked
+set g_balance_hook_primary_hooked_fuel 5 // fuel per second hooked
 set g_balance_hook_secondary_damage 25 // not much
 set g_balance_hook_secondary_edgedamage 5 // not much
 set g_balance_hook_secondary_radius 500 // LOTS
 set g_balance_hook_secondary_force -2000 // LOTS
 set g_balance_hook_secondary_ammo 50 // a whole pack
-set g_balance_hook_secondary_lifetime 10 // infinite
+set g_balance_hook_secondary_lifetime 5 // infinite
 set g_balance_hook_secondary_speed 0 // not much throwing
 set g_balance_hook_secondary_gravity 5 // fast falling
 set g_balance_hook_secondary_refire 3 // don't drop too many bombs...
@@ -469,68 +479,69 @@ set g_balance_hook_secondary_power 3 // effect behaves like a square function
 set g_balance_hook_secondary_duration 1.5 // effect runs for three seconds
 // }}}
 // {{{ hlac
-set g_balance_hlac_primary_spread_min 0.01
-set g_balance_hlac_primary_spread_max 0.03
-set g_balance_hlac_primary_spread_add 0.002
-set g_balance_hlac_primary_spread_crouchmod 0.5
+set g_balance_hlac_primary_spread_min 0
+set g_balance_hlac_primary_spread_max 0
+set g_balance_hlac_primary_spread_add 0
+set g_balance_hlac_primary_spread_crouchmod 0
 
-set g_balance_hlac_primary_damage 6
+set g_balance_hlac_primary_damage 15
 set g_balance_hlac_primary_edgedamage 0
-set g_balance_hlac_primary_force 60 // todo: probably needs movement nerfing code when hit
-set g_balance_hlac_primary_radius 850
-set g_balance_hlac_primary_speed 0
-set g_balance_hlac_primary_lifetime 0
+set g_balance_hlac_primary_force 70
+set g_balance_hlac_primary_radius 30
+set g_balance_hlac_primary_speed 2500
+set g_balance_hlac_primary_lifetime 5
 
-set g_balance_hlac_primary_refire 0.066
-set g_balance_hlac_primary_animtime 0.066
-set g_balance_hlac_primary_ammo 0.066
+set g_balance_hlac_primary_refire 0.1
+set g_balance_hlac_primary_animtime 0.4
+set g_balance_hlac_primary_ammo 1
 
-set g_balance_hlac_secondary 0
-set g_balance_hlac_secondary_spread 0.06
+set g_balance_hlac_secondary 1
+set g_balance_hlac_secondary_spread 0.15
 set g_balance_hlac_secondary_spread_crouchmod 0.5
 
-set g_balance_hlac_secondary_damage 11
-set g_balance_hlac_secondary_edgedamage 10
-set g_balance_hlac_secondary_force 60
-set g_balance_hlac_secondary_radius 70
-set g_balance_hlac_secondary_speed 20000
+set g_balance_hlac_secondary_damage 20
+set g_balance_hlac_secondary_edgedamage 0
+set g_balance_hlac_secondary_force 40
+set g_balance_hlac_secondary_radius 35
+set g_balance_hlac_secondary_speed 2500
 set g_balance_hlac_secondary_lifetime 5
 
-set g_balance_hlac_secondary_refire 0.6
-set g_balance_hlac_secondary_animtime 0.6
+set g_balance_hlac_secondary_refire 1
+set g_balance_hlac_secondary_animtime 0.7
 set g_balance_hlac_secondary_ammo 10
-set g_balance_hlac_secondary_shots 5
+set g_balance_hlac_secondary_shots 6
 // }}}
 // {{{ campingrifle
 set g_balance_campingrifle_magazinecapacity 0
 set g_balance_campingrifle_reloadtime 2 // matches reload anim
 set g_balance_campingrifle_auto_reload_after_changing_weapons 0
-set g_balance_campingrifle_bursttime 0.85 // 0.35 - 0.1 + 0.35 - 0.1 + 0.35 = three secondaries
+set g_balance_campingrifle_bursttime 0
 set g_balance_campingrifle_tracer 1
 set g_balance_campingrifle_primary_damage 50
-set g_balance_campingrifle_primary_headshotaddeddamage 80
+set g_balance_campingrifle_primary_headshotaddeddamage 35
 set g_balance_campingrifle_primary_spread 0
-set g_balance_campingrifle_primary_force 0
+set g_balance_campingrifle_primary_force 2
 set g_balance_campingrifle_primary_speed 35000
 set g_balance_campingrifle_primary_lifetime 5
-set g_balance_campingrifle_primary_refire 0.7
-set g_balance_campingrifle_primary_animtime 0.7
+set g_balance_campingrifle_primary_refire 0.8
+set g_balance_campingrifle_primary_animtime 0.8
 set g_balance_campingrifle_primary_ammo 10
 set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu
-set g_balance_campingrifle_primary_burstcost 0.35 // require same cooldown as secondary, note it's smaller than primary refire time
-set g_balance_campingrifle_primary_bullethail 0
+set g_balance_campingrifle_primary_burstcost 0
+set g_balance_campingrifle_primary_bullethail 0 // empty magazine on shot
+set g_balance_campingrifle_secondary 0
 set g_balance_campingrifle_secondary_damage 15
-set g_balance_campingrifle_secondary_headshotaddeddamage 25
-set g_balance_campingrifle_secondary_spread 0.02
-set g_balance_campingrifle_secondary_force 0
+set g_balance_campingrifle_secondary_headshotaddeddamage 25 // 50 damage only on head
+set g_balance_campingrifle_secondary_spread 0.008
+set g_balance_campingrifle_secondary_force 1
 set g_balance_campingrifle_secondary_speed 20000
 set g_balance_campingrifle_secondary_lifetime 5
-set g_balance_campingrifle_secondary_refire 0.1
+set g_balance_campingrifle_secondary_refire 0.15
 set g_balance_campingrifle_secondary_animtime 0.1
-set g_balance_campingrifle_secondary_ammo 4
+set g_balance_campingrifle_secondary_ammo 10
 set g_balance_campingrifle_secondary_bulletconstant 130 // 18.3qu
-set g_balance_campingrifle_secondary_burstcost 0.35
-set g_balance_campingrifle_secondary_bullethail 0
+set g_balance_campingrifle_secondary_burstcost 0
+set g_balance_campingrifle_secondary_bullethail 0 // empty magazine on shot
 // }}}
 // {{{ tuba
 set g_balance_tuba_refire 0.05
@@ -598,8 +609,8 @@ set g_balance_seeker_flac_spread 0.4
 set g_balance_seeker_missile_accel 1.05
 set g_balance_seeker_missile_ammo 2
 set g_balance_seeker_missile_animtime 0.3
-set g_balance_seeker_missile_count 4
-set g_balance_seeker_missile_damage 40
+set g_balance_seeker_missile_count 3
+set g_balance_seeker_missile_damage 33
 set g_balance_seeker_missile_damageforcescale 4
 set g_balance_seeker_missile_decel 0.9
 set g_balance_seeker_missile_delay 0.25
index f480e22215a7ee43a9480584136a1f1f5a6b929b..3141a2409ce510d4a63d3de22a394148ea003a72 100644 (file)
@@ -19,5 +19,26 @@ set g_weaponreplace_fireball 0
 set g_weaponreplace_seeker 0
 set sv_q3acompat_machineshotgunswap 0
 
+// other options
+set sv_fragmessage_information_ping 1
+set sv_fragmessage_information_handicap 2
+set sv_fragmessage_information_stats 1
+set sv_fragmessage_information_typefrag 1
+
+set sv_defaultcharacter 1
+set sv_defaultplayermodel "models/player/nyx.iqm"
+set sv_defaultplayercolors 60 // force some visible color for now
+
+set g_jump_grunt 1
+set g_footsteps 1
+set g_shootfromcenter 1
+set g_fullbrightplayers 1 // until all models are visible with this set to 0
+set g_forced_respawn 1
+set g_mirrordamage 0
+set g_friendlyfire 1
+
+set timelimit_overtimes 1
+set timelimit_override 15 // for now, maybe not in future
+
 exec physicsXPM.cfg
-exec balanceXPM.cfg
+exec balanceFruit.cfg
index c5cb78928071377c06f02513afbab0905ad530cd..8d6b38e3845a22daa79813fedb362292e434796c 100644 (file)
@@ -298,6 +298,8 @@ set sv_ready_restart 0 "if set to 1 allow a map to be restarted once all players
 set sv_ready_restart_after_countdown 0 "if set to 1 the players and map items are reset after the countdown ended, otherwise they're reset already at the beginning of the countdown"
 set sv_ready_restart_repeatable 0      "allows the players to restart the game as often as needed"
 
+set sv_hitsound_antispam_time 0.05 "don't play the hitsound more often than this for the electro lightning gun or the laser gauntlet"
+
 //nifreks lockonrestart feature, used in team-based game modes, if set to 1 and all players readied up no other player can then join the game anymore, useful to block spectators from joining
 set teamplay_lockonrestart 0 "it set to 1 in a team-based game, the teams are locked once all players readied up and the game restarted (no new players can join after restart unless using the server-command unlockteams)"
 
@@ -1348,10 +1350,10 @@ seta hud_panel_weapons_accuracy_color1 "1 1 0"
 seta hud_panel_weapons_accuracy_color2 "0 1 0"
 seta hud_panel_weapons_accuracy_color_levels "0 20 100" "accuracy values at which a specified color (hud_panel_weapons_accuracy_color<X>) will be used. If your accuracy is between 2 of these values then a mix of the Xth and X+1th colors will be used. You can specify up to 10 values, in increasing order"
 seta hud_panel_weapons_ammo 1 "show ammo as a status bar"
-seta hud_panel_weapons_ammo_full_shells 40 "show 100% of the status bar at this ammo count"
-seta hud_panel_weapons_ammo_full_nails 100 "show 100% of the status bar at this ammo count"
-seta hud_panel_weapons_ammo_full_cells 60 "show 100% of the status bar at this ammo count"
-seta hud_panel_weapons_ammo_full_rockets 60 "show 100% of the status bar at this ammo count"
+seta hud_panel_weapons_ammo_full_shells 50 "show 100% of the status bar at this ammo count"
+seta hud_panel_weapons_ammo_full_nails 200 "show 100% of the status bar at this ammo count"
+seta hud_panel_weapons_ammo_full_cells 80 "show 100% of the status bar at this ammo count"
+seta hud_panel_weapons_ammo_full_rockets 80 "show 100% of the status bar at this ammo count"
 seta hud_panel_weapons_ammo_full_fuel 100 "show 100% of the status bar at this ammo count"
 
 seta hud_panel_notify_time 10 "time that a new entry stays until it fades out"
index 53926a7a0b203cb37859fb8cc5a92443d0d15ee1..9f98d6af50f9585ea538cbafaac59c6db2dc53f8 100644 (file)
@@ -4743,19 +4743,82 @@ alpha 100 100 500
 // based off morphed's cl_gentle
 // used in qcsrc/server/w_laser.qc
 effect laser_gauntlet
+count 3
+type spark
+color 0xb44215 0x880000
 tex 43 43
-count 1.5
+size 7 10
+alpha 128 512 6280
+airfriction 10
+originjitter 2 2 2
+velocityjitter 150 150 150
+velocitymultiplier 0.2
+sizeincrease -100
+stretchfactor 2.3
+rotate -180 180 4000 -4000
+
+effect laser_gauntlet
+count 6
 type spark
-color 0xff00ff 0xff0000
-size 4 8
-sizeincrease 34
-alpha 128 128 292
-gravity 0
-airfriction 5
-liquidfriction 10
-velocityjitter 50 50 50
+color 0xff4200 0xff0000
+tex 8 15
+size 7 9
+alpha 256 512 6280
+airfriction 12
+originjitter 2 2 2
+velocityjitter 100 100 100
+velocitymultiplier 0.2
+sizeincrease -100
+stretchfactor 2
+
+
+// muzzle flash
+effect laser_gauntletmuzzleflash
+// glow and light
+countabsolute 1
+type smoke
+color 0x220000 0x880000
+tex 65 65
+size 10 15
+alpha 256 512 6280
+airfriction 10
+sizeincrease -100
+stretchfactor 2
+lightradius 150
+lightradiusfade 500
+lightcolor 3 0.1 0.1
+// electricity
+effect laser_gauntletmuzzleflash
+count 3
+type spark
+color 0xb44215 0x880000
+tex 43 43
+size 7 10
+alpha 128 512 6280
+airfriction 10
+originjitter 2 2 2
+velocityjitter 150 150 150
+velocitymultiplier 0.2
+sizeincrease -100
+stretchfactor 2.3
+rotate -180 180 4000 -4000
 
 
+// fire
+effect laser_gauntletmuzzleflash
+count 6
+type spark
+color 0xff4200 0xff0000
+tex 8 15
+size 7 9
+alpha 256 512 6280
+airfriction 12
+originjitter 2 2 2
+velocityjitter 100 100 100
+velocitymultiplier 0.2
+sizeincrease -100
+stretchfactor 2
+
 //torch flame, spawn it as fast as you can  20 times per second or more, supports direction but not required
 //fast fire
 // used nowhere in code, meant for maps
@@ -4907,3 +4970,46 @@ bounce 1.5
 airfriction 5
 liquidfriction 10
 velocityjitter 156 156 156
+
+
+
+// used in qcsrc/server/w_electro.qc:  pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+// used in qcsrc/server/w_electro.qc:  pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+effect electro_lightning
+countabsolute 1
+type smoke
+color 0x283880 0x283880 // 0x202020 0x404040
+tex 65 65
+size 10 10
+alpha 256 256 1500
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+sizeincrease -20
+velocitymultiplier 0.01
+
+effect electro_lightning
+count 3
+type spark
+tex 8 15
+color 0xD9FDFF 0xD9FDFF
+size 3 7
+alpha 110 228 2024
+originjitter 1 1 1
+velocityjitter 150 150 150
+velocitymultiplier 0.5
+airfriction 2
+stretchfactor 1.5
+
+effect electro_lightning
+count 5
+type spark
+tex 41 41
+color 0xD9FDFF 0xD9FDFF
+size 3 4
+alpha 110 228 1500
+originjitter 1 1 1
+velocityjitter 350 350 350
+velocitymultiplier 2.5
+airfriction 8
+gravity 1.3
+stretchfactor 0.1
index e7cd01a25245df72d503debadf32a4d79285047a..8f3739d4821b01512a2a769f08c4212cc61fc3ce 100644 (file)
Binary files a/gfx/hud/default/ammo_bullets.tga and b/gfx/hud/default/ammo_bullets.tga differ
index 664eb232d20ba4fe22a3b108da4fa33b52daa7cd..4850763419258e81c8edb738f4f6178ef19e8868 100644 (file)
Binary files a/gfx/hud/default/ammo_cells.tga and b/gfx/hud/default/ammo_cells.tga differ
index bd072059911af2dcfbffe09b983ced3cd403668b..703627956c21ce2386eeadda0fe3b043135f8a57 100644 (file)
Binary files a/gfx/hud/default/ammo_current_bg.tga and b/gfx/hud/default/ammo_current_bg.tga differ
index 8450a2fec478011644c050409346d85c8890384b..4a3a2d5563a733f4fd0895a5eda3636d8f33fc16 100644 (file)
Binary files a/gfx/hud/default/ammo_fuel.tga and b/gfx/hud/default/ammo_fuel.tga differ
index c37f077b28450bea5eeee588b7761ef46db33fcc..9b34ea79389418aa3d65dc2a089bb3301a18a1ba 100644 (file)
Binary files a/gfx/hud/default/ammo_rockets.tga and b/gfx/hud/default/ammo_rockets.tga differ
index 59bea4b3e135b5afbcc2fc8de5d27f3f673b5699..f62c715625b7a3ca69e2c082fdf03c0f138503c8 100644 (file)
Binary files a/gfx/hud/default/ammo_shells.tga and b/gfx/hud/default/ammo_shells.tga differ
index 92046b488786611e4c1aba818c513c25c61b5052..f9e47011aa7c1a5631bcadd1a2778e0aaeffe705 100644 (file)
Binary files a/gfx/hud/default/armor.tga and b/gfx/hud/default/armor.tga differ
index 8ceee44525062106e8dcb827fd3fd664871977d5..3b76811ee60e8f8638625dd73cc73d4fb92d44b8 100644 (file)
Binary files a/gfx/hud/default/border.tga and b/gfx/hud/default/border.tga differ
diff --git a/gfx/hud/default/border_chat.tga b/gfx/hud/default/border_chat.tga
deleted file mode 100644 (file)
index 1cd065e..0000000
Binary files a/gfx/hud/default/border_chat.tga and /dev/null differ
diff --git a/gfx/hud/default/border_healtharmor.tga b/gfx/hud/default/border_healtharmor.tga
deleted file mode 100644 (file)
index 7109ab5..0000000
Binary files a/gfx/hud/default/border_healtharmor.tga and /dev/null differ
diff --git a/gfx/hud/default/border_inventory.tga b/gfx/hud/default/border_inventory.tga
deleted file mode 100644 (file)
index 20ae8f6..0000000
Binary files a/gfx/hud/default/border_inventory.tga and /dev/null differ
diff --git a/gfx/hud/default/border_modicons.tga b/gfx/hud/default/border_modicons.tga
deleted file mode 100644 (file)
index 5437b04..0000000
Binary files a/gfx/hud/default/border_modicons.tga and /dev/null differ
diff --git a/gfx/hud/default/border_powerups.tga b/gfx/hud/default/border_powerups.tga
deleted file mode 100644 (file)
index f8fbf44..0000000
Binary files a/gfx/hud/default/border_powerups.tga and /dev/null differ
diff --git a/gfx/hud/default/border_radar.tga b/gfx/hud/default/border_radar.tga
deleted file mode 100644 (file)
index a300f52..0000000
Binary files a/gfx/hud/default/border_radar.tga and /dev/null differ
diff --git a/gfx/hud/default/border_score.tga b/gfx/hud/default/border_score.tga
deleted file mode 100644 (file)
index a4d8b6c..0000000
Binary files a/gfx/hud/default/border_score.tga and /dev/null differ
diff --git a/gfx/hud/default/border_timer.tga b/gfx/hud/default/border_timer.tga
deleted file mode 100644 (file)
index c657136..0000000
Binary files a/gfx/hud/default/border_timer.tga and /dev/null differ
diff --git a/gfx/hud/default/border_vote.tga b/gfx/hud/default/border_vote.tga
deleted file mode 100644 (file)
index 13b948e..0000000
Binary files a/gfx/hud/default/border_vote.tga and /dev/null differ
diff --git a/gfx/hud/default/border_weaponicons.tga b/gfx/hud/default/border_weaponicons.tga
deleted file mode 100644 (file)
index 08e8dcd..0000000
Binary files a/gfx/hud/default/border_weaponicons.tga and /dev/null differ
index 9dd4e2f0f65bbf902e18139f8a19ded171f68a26..3163382bc5d26911795a5fb5e0a00c691c0e2b24 100644 (file)
Binary files a/gfx/hud/default/dock.tga and b/gfx/hud/default/dock.tga differ
diff --git a/gfx/hud/default/dock_small.tga b/gfx/hud/default/dock_small.tga
deleted file mode 100644 (file)
index 5135876..0000000
Binary files a/gfx/hud/default/dock_small.tga and /dev/null differ
index ace6a5f2c3a01c554eda6a1ba10944252499d5c2..1ddcbfab74d61f3fd8b1a6759386f3c9eb8a83c7 100644 (file)
Binary files a/gfx/hud/default/flag_blue_carrying.tga and b/gfx/hud/default/flag_blue_carrying.tga differ
index 67d894d82dfce9467ee18d6e90604b224d1eadab..b37ccd051515675f84e802796f7f8cc950cac435 100644 (file)
Binary files a/gfx/hud/default/flag_blue_lost.tga and b/gfx/hud/default/flag_blue_lost.tga differ
index a8993f6b2cc58a3e92f5ae12ceba9e1a81d970de..c1e89c57a9dbe5516ccc754ca10b8873cfaa3b7b 100644 (file)
Binary files a/gfx/hud/default/flag_blue_shielded.tga and b/gfx/hud/default/flag_blue_shielded.tga differ
index 6847e7cc19ed17384a8112b0d36b9bbfd1d4e3d7..70079cafe3a8fa32a98dd1860ca844848e9de510 100644 (file)
Binary files a/gfx/hud/default/flag_blue_taken.tga and b/gfx/hud/default/flag_blue_taken.tga differ
index 33930833233d10c4649fe955dc7fb7ce6456109d..8fda6e1140918ceb3f2d2668d4566f71fce092ed 100644 (file)
Binary files a/gfx/hud/default/flag_red_carrying.tga and b/gfx/hud/default/flag_red_carrying.tga differ
index f96e02147e738af1d0f051efe1b9b4138d04f00b..083ac4668fcde11a4503706056199405a337b169 100644 (file)
Binary files a/gfx/hud/default/flag_red_lost.tga and b/gfx/hud/default/flag_red_lost.tga differ
index e7ec491fd6bcc7bb49fcf053de2642a179a492c5..550d0b7c6c0cf156ab71ba44256aa31e34a5b728 100644 (file)
Binary files a/gfx/hud/default/flag_red_shielded.tga and b/gfx/hud/default/flag_red_shielded.tga differ
index bf71977e149ab7de484f221c14fab285c61a411f..a21a5ee62b0c208a7351e32d27c43f65a16464d0 100644 (file)
Binary files a/gfx/hud/default/flag_red_taken.tga and b/gfx/hud/default/flag_red_taken.tga differ
index 0ed8a9030f2bf26e77eb2c0dab51fad10b5b3bfb..26e40865c992fd6acf42e027b4480b896b057485 100644 (file)
Binary files a/gfx/hud/default/health.tga and b/gfx/hud/default/health.tga differ
index 4de0f33221888c307f98b5fa2883d9a556785d0a..2a2cbabe2cba13d5a188eab63eef07c4bd5f3f0d 100644 (file)
Binary files a/gfx/hud/default/key_backward.tga and b/gfx/hud/default/key_backward.tga differ
index bef0d1ca3ddde1e9d03bffd0c5e6326d2495d3d1..1b6b97300fdffe3b7d1dff9539a6bd49493561de 100644 (file)
Binary files a/gfx/hud/default/key_backward_inv.tga and b/gfx/hud/default/key_backward_inv.tga differ
index 00b2dfe449da7c70a099da3c026deb08d74e0f6e..701644101000e012826fabc6deadef2d7d429843 100644 (file)
Binary files a/gfx/hud/default/key_crouch.tga and b/gfx/hud/default/key_crouch.tga differ
index 2cdbda804d6b9b21970059b1a3ad2e151fb071ab..0f47c0988498597d200acd3bec639d53f9f46bb1 100644 (file)
Binary files a/gfx/hud/default/key_crouch_inv.tga and b/gfx/hud/default/key_crouch_inv.tga differ
index dfe223381bf585b6c80d017448398f9c2c5c6459..0354b18a1da0fd8b3375f26668d1cdd59e25a7d5 100644 (file)
Binary files a/gfx/hud/default/key_forward.tga and b/gfx/hud/default/key_forward.tga differ
index 7bbea6070fe830fb5f2602bc7d2b145a57e1e9e8..47c6154beebb3310583cd7a5f2d6be501b60cd9f 100644 (file)
Binary files a/gfx/hud/default/key_forward_inv.tga and b/gfx/hud/default/key_forward_inv.tga differ
index d02b2dbc88961f7d2be95ecdbdf58c6c2e4fdfde..70a92fabfb38c8df5941cff7e4f44d74c99e7aad 100644 (file)
Binary files a/gfx/hud/default/key_jump.tga and b/gfx/hud/default/key_jump.tga differ
index c54bb3763c0ed2b7f3d672cacf62d0fb20aad1ae..a62bcf247b8a4873dbef80d772f78ce0dee1c5af 100644 (file)
Binary files a/gfx/hud/default/key_jump_inv.tga and b/gfx/hud/default/key_jump_inv.tga differ
index 60fe71f17e0eca70dfd3d75b013f5d1613a9feb3..4bcf85f09703930e4df47bcc6d1462f98fa7ab4e 100644 (file)
Binary files a/gfx/hud/default/key_left.tga and b/gfx/hud/default/key_left.tga differ
index 92bc615e44891dd933a01abbbcf971eaa3b4c1f0..b6d6a2d3c013d1982ef746591f31bd3633be3f7b 100644 (file)
Binary files a/gfx/hud/default/key_left_inv.tga and b/gfx/hud/default/key_left_inv.tga differ
index 308c03b1e56d0c1b183448713c8e19a40024594e..4d4ee213dd3d53a122e0b8741740483af03ee157 100644 (file)
Binary files a/gfx/hud/default/key_right.tga and b/gfx/hud/default/key_right.tga differ
index 8f04be424ec8bd9e602877035796d29269fb93a7..f6fe631fc2a50dee1cdfc663574f31b64084847b 100644 (file)
Binary files a/gfx/hud/default/key_right_inv.tga and b/gfx/hud/default/key_right_inv.tga differ
index 7cff17eed29b0d2dae2b772ee6d960ad7bb335a1..55a2991ea2af3b938719b6f2ad4a1c9e05cbe05b 100644 (file)
Binary files a/gfx/hud/default/notify_blue_captured.tga and b/gfx/hud/default/notify_blue_captured.tga differ
index 67d894d82dfce9467ee18d6e90604b224d1eadab..435928d6442b9ad36bfd79e2ee8d5f838decfe9f 100644 (file)
Binary files a/gfx/hud/default/notify_blue_lost.tga and b/gfx/hud/default/notify_blue_lost.tga differ
index 8e8b67ffdae6984e4698d1e96f58edc06e52d323..0c663d72a48dbcb0b4835e6c71b49551e9180013 100644 (file)
Binary files a/gfx/hud/default/notify_blue_returned.tga and b/gfx/hud/default/notify_blue_returned.tga differ
index a8993f6b2cc58a3e92f5ae12ceba9e1a81d970de..977fe9ae221b147cd6bdf2afe0e5e590377654fd 100644 (file)
Binary files a/gfx/hud/default/notify_blue_shielded.tga and b/gfx/hud/default/notify_blue_shielded.tga differ
index 6847e7cc19ed17384a8112b0d36b9bbfd1d4e3d7..43f73aa44d62f5e7f896424e76cdf91ff66e24e0 100644 (file)
Binary files a/gfx/hud/default/notify_blue_taken.tga and b/gfx/hud/default/notify_blue_taken.tga differ
index 2766dd1ccf968b512018d167b4c8b02035faf3e6..a11e324a6dca0862997d60233db2ec97ed955333 100644 (file)
Binary files a/gfx/hud/default/notify_camping.tga and b/gfx/hud/default/notify_camping.tga differ
index d5e8045a20469d1e9489af8ec504fe9eb4cd055f..3a32ae3f2b65202724695c1d98b43eae76b874c4 100644 (file)
Binary files a/gfx/hud/default/notify_death.tga and b/gfx/hud/default/notify_death.tga differ
index febd1d03dca24c4f9578cfb5d2a6eea7d9ad3da2..98a7f4974587d8f86e77caad2f1f5a8ecd7feacf 100644 (file)
Binary files a/gfx/hud/default/notify_fall.tga and b/gfx/hud/default/notify_fall.tga differ
index d9c3e5a91195e73288908cedbb82d19226f5896c..17a76f856322b78662b152eb50801c5a827860e9 100644 (file)
Binary files a/gfx/hud/default/notify_headshot.tga and b/gfx/hud/default/notify_headshot.tga differ
index 3976e8ba3fef0cbb0f3295137adc3b28ddc61d30..1c777580f5985c3aa72112a115109ddbab6010fb 100644 (file)
Binary files a/gfx/hud/default/notify_lava.tga and b/gfx/hud/default/notify_lava.tga differ
diff --git a/gfx/hud/default/notify_melee.tga b/gfx/hud/default/notify_melee.tga
deleted file mode 100644 (file)
index e4fa0c7..0000000
Binary files a/gfx/hud/default/notify_melee.tga and /dev/null differ
diff --git a/gfx/hud/default/notify_melee_laser.tga b/gfx/hud/default/notify_melee_laser.tga
new file mode 100644 (file)
index 0000000..2223d93
Binary files /dev/null and b/gfx/hud/default/notify_melee_laser.tga differ
diff --git a/gfx/hud/default/notify_melee_shotgun.tga b/gfx/hud/default/notify_melee_shotgun.tga
new file mode 100644 (file)
index 0000000..cf003bd
Binary files /dev/null and b/gfx/hud/default/notify_melee_shotgun.tga differ
index 82a11dd83dd037d8699516d3becab4ce501af133..ecacf50a9b618b144a150f28bf9999502c960032 100644 (file)
Binary files a/gfx/hud/default/notify_outofammo.tga and b/gfx/hud/default/notify_outofammo.tga differ
index 72814ecc6960d1b91938e01720e5a07289146532..9c2077f33fcde244c1fdd049c182451f88c3377e 100644 (file)
Binary files a/gfx/hud/default/notify_red_captured.tga and b/gfx/hud/default/notify_red_captured.tga differ
index f96e02147e738af1d0f051efe1b9b4138d04f00b..ffc7dc09cff08726403ac78178d9cd4c4e53f419 100644 (file)
Binary files a/gfx/hud/default/notify_red_lost.tga and b/gfx/hud/default/notify_red_lost.tga differ
index deee4686d0d8e164514b53f47e549cc137f05043..3f3b54a6d772f255a94033f7858d41eb2d680cd2 100644 (file)
Binary files a/gfx/hud/default/notify_red_returned.tga and b/gfx/hud/default/notify_red_returned.tga differ
index e7ec491fd6bcc7bb49fcf053de2642a179a492c5..d3cef48570bfaeb5259d2868999c2952be092a41 100644 (file)
Binary files a/gfx/hud/default/notify_red_shielded.tga and b/gfx/hud/default/notify_red_shielded.tga differ
index bf71977e149ab7de484f221c14fab285c61a411f..9fa31f145c4f4748a9025e7958dac718e9465e07 100644 (file)
Binary files a/gfx/hud/default/notify_red_taken.tga and b/gfx/hud/default/notify_red_taken.tga differ
index 646a1a23814b5c07b5cab4679fae6e211cd3812f..98e62cfee79328c83b4babb6bbd8f26778254fdd 100644 (file)
Binary files a/gfx/hud/default/notify_selfkill.tga and b/gfx/hud/default/notify_selfkill.tga differ
index 048e0151fc3c4145f17be073929adb55e5157dfd..c8077a2ffcbe8fa2a133c1ed472de1d8e6355296 100644 (file)
Binary files a/gfx/hud/default/notify_shootingstar.tga and b/gfx/hud/default/notify_shootingstar.tga differ
index c08a6a3d483ac7223bcece355acf9c7aaa405e6c..11ae58baec172aecb888a04cd7717f934b87413b 100644 (file)
Binary files a/gfx/hud/default/notify_slime.tga and b/gfx/hud/default/notify_slime.tga differ
index a40920b204ada24a40da0b3ed7ff3445af9147ac..885b929d00ece0ace7b83e5fcf6052db836d0751 100644 (file)
Binary files a/gfx/hud/default/notify_teamkill_blue.tga and b/gfx/hud/default/notify_teamkill_blue.tga differ
index a40920b204ada24a40da0b3ed7ff3445af9147ac..96f007a0dfdd982a6b288d4df03d6ff7d418a42e 100644 (file)
Binary files a/gfx/hud/default/notify_teamkill_red.tga and b/gfx/hud/default/notify_teamkill_red.tga differ
index 1e2d280eb22e5dac5a0c77dd83b291da57bc32ab..8ebe761ef7da05df0f83d97c5dea5a5f00f4cd05 100644 (file)
Binary files a/gfx/hud/default/notify_void.tga and b/gfx/hud/default/notify_void.tga differ
index 8315f1266b0d32854b611862eaf61b9ea0478c6d..f04b3e5d0c33ce9afc9163b49d5367ec169cd034 100644 (file)
Binary files a/gfx/hud/default/notify_water.tga and b/gfx/hud/default/notify_water.tga differ
diff --git a/gfx/hud/default/num_0.tga b/gfx/hud/default/num_0.tga
deleted file mode 100644 (file)
index f0ab2f1..0000000
Binary files a/gfx/hud/default/num_0.tga and /dev/null differ
diff --git a/gfx/hud/default/num_0_stroke.tga b/gfx/hud/default/num_0_stroke.tga
deleted file mode 100644 (file)
index e9c6e5b..0000000
Binary files a/gfx/hud/default/num_0_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_1.tga b/gfx/hud/default/num_1.tga
deleted file mode 100644 (file)
index 78f1f45..0000000
Binary files a/gfx/hud/default/num_1.tga and /dev/null differ
diff --git a/gfx/hud/default/num_1_stroke.tga b/gfx/hud/default/num_1_stroke.tga
deleted file mode 100644 (file)
index 1ff552f..0000000
Binary files a/gfx/hud/default/num_1_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_2.tga b/gfx/hud/default/num_2.tga
deleted file mode 100644 (file)
index 205dd03..0000000
Binary files a/gfx/hud/default/num_2.tga and /dev/null differ
diff --git a/gfx/hud/default/num_2_stroke.tga b/gfx/hud/default/num_2_stroke.tga
deleted file mode 100644 (file)
index 08d26df..0000000
Binary files a/gfx/hud/default/num_2_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_3.tga b/gfx/hud/default/num_3.tga
deleted file mode 100644 (file)
index 335b5da..0000000
Binary files a/gfx/hud/default/num_3.tga and /dev/null differ
diff --git a/gfx/hud/default/num_3_stroke.tga b/gfx/hud/default/num_3_stroke.tga
deleted file mode 100644 (file)
index a5fddda..0000000
Binary files a/gfx/hud/default/num_3_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_4.tga b/gfx/hud/default/num_4.tga
deleted file mode 100644 (file)
index 2b9f46f..0000000
Binary files a/gfx/hud/default/num_4.tga and /dev/null differ
diff --git a/gfx/hud/default/num_4_stroke.tga b/gfx/hud/default/num_4_stroke.tga
deleted file mode 100644 (file)
index fe87933..0000000
Binary files a/gfx/hud/default/num_4_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_5.tga b/gfx/hud/default/num_5.tga
deleted file mode 100644 (file)
index 8bb7043..0000000
Binary files a/gfx/hud/default/num_5.tga and /dev/null differ
diff --git a/gfx/hud/default/num_5_stroke.tga b/gfx/hud/default/num_5_stroke.tga
deleted file mode 100644 (file)
index 3a6978a..0000000
Binary files a/gfx/hud/default/num_5_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_6.tga b/gfx/hud/default/num_6.tga
deleted file mode 100644 (file)
index 1db8c0e..0000000
Binary files a/gfx/hud/default/num_6.tga and /dev/null differ
diff --git a/gfx/hud/default/num_6_stroke.tga b/gfx/hud/default/num_6_stroke.tga
deleted file mode 100644 (file)
index f64e178..0000000
Binary files a/gfx/hud/default/num_6_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_7.tga b/gfx/hud/default/num_7.tga
deleted file mode 100644 (file)
index 0099d68..0000000
Binary files a/gfx/hud/default/num_7.tga and /dev/null differ
diff --git a/gfx/hud/default/num_7_stroke.tga b/gfx/hud/default/num_7_stroke.tga
deleted file mode 100644 (file)
index 252e796..0000000
Binary files a/gfx/hud/default/num_7_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_8.tga b/gfx/hud/default/num_8.tga
deleted file mode 100644 (file)
index aa20157..0000000
Binary files a/gfx/hud/default/num_8.tga and /dev/null differ
diff --git a/gfx/hud/default/num_8_stroke.tga b/gfx/hud/default/num_8_stroke.tga
deleted file mode 100644 (file)
index e2cd39d..0000000
Binary files a/gfx/hud/default/num_8_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_9.tga b/gfx/hud/default/num_9.tga
deleted file mode 100644 (file)
index 87b9c21..0000000
Binary files a/gfx/hud/default/num_9.tga and /dev/null differ
diff --git a/gfx/hud/default/num_9_stroke.tga b/gfx/hud/default/num_9_stroke.tga
deleted file mode 100644 (file)
index 5a8d610..0000000
Binary files a/gfx/hud/default/num_9_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_colon.tga b/gfx/hud/default/num_colon.tga
deleted file mode 100644 (file)
index e22c09a..0000000
Binary files a/gfx/hud/default/num_colon.tga and /dev/null differ
diff --git a/gfx/hud/default/num_colon_stroke.tga b/gfx/hud/default/num_colon_stroke.tga
deleted file mode 100644 (file)
index 68ad28a..0000000
Binary files a/gfx/hud/default/num_colon_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_dot.tga b/gfx/hud/default/num_dot.tga
deleted file mode 100644 (file)
index 7fbfdd0..0000000
Binary files a/gfx/hud/default/num_dot.tga and /dev/null differ
diff --git a/gfx/hud/default/num_dot_stroke.tga b/gfx/hud/default/num_dot_stroke.tga
deleted file mode 100644 (file)
index 29ad696..0000000
Binary files a/gfx/hud/default/num_dot_stroke.tga and /dev/null differ
index f2f59d3b0225fc76a4e3f68ec70801a6a2b983c4..668fbc653956d3462e97c4d42ac4fd56f59dc860 100644 (file)
Binary files a/gfx/hud/default/num_leading.tga and b/gfx/hud/default/num_leading.tga differ
diff --git a/gfx/hud/default/num_minus.tga b/gfx/hud/default/num_minus.tga
deleted file mode 100644 (file)
index 10721f2..0000000
Binary files a/gfx/hud/default/num_minus.tga and /dev/null differ
diff --git a/gfx/hud/default/num_minus_stroke.tga b/gfx/hud/default/num_minus_stroke.tga
deleted file mode 100644 (file)
index 26455a0..0000000
Binary files a/gfx/hud/default/num_minus_stroke.tga and /dev/null differ
diff --git a/gfx/hud/default/num_plus.tga b/gfx/hud/default/num_plus.tga
deleted file mode 100644 (file)
index 3cb17b3..0000000
Binary files a/gfx/hud/default/num_plus.tga and /dev/null differ
diff --git a/gfx/hud/default/num_plus_stroke.tga b/gfx/hud/default/num_plus_stroke.tga
deleted file mode 100644 (file)
index 7df2faa..0000000
Binary files a/gfx/hud/default/num_plus_stroke.tga and /dev/null differ
index cd1164bdf7c89ec4c79aa1fda37ed78143188a82..360d68a7e4fd1a21531d944f51060c284f971481 100644 (file)
Binary files a/gfx/hud/default/race_newfail.tga and b/gfx/hud/default/race_newfail.tga differ
index c8fa1577cbe4ac283f79648b905f3c5f08c240e5..ec3e2254ca180f2bbed1b2c038c4a41cb3138210 100644 (file)
Binary files a/gfx/hud/default/race_newrankgreen.tga and b/gfx/hud/default/race_newrankgreen.tga differ
index 0af3c593f587035ad96c4b9b6b479c5b0647da28..ec3e2254ca180f2bbed1b2c038c4a41cb3138210 100644 (file)
Binary files a/gfx/hud/default/race_newrankyellow.tga and b/gfx/hud/default/race_newrankyellow.tga differ
index aa8bae1a8189d8d4b98f8df00b9de6e0f7720212..99ed22b30fd3e88d6bf2f284f97b03928f102580 100644 (file)
Binary files a/gfx/hud/default/race_newrecordserver.tga and b/gfx/hud/default/race_newrecordserver.tga differ
index c9647b927b36dcbf67c93a99a9ee8249cbc07173..ab2f9054821a108feecd5a45ee9b9b8e2f953ed2 100644 (file)
Binary files a/gfx/hud/default/race_newtime.tga and b/gfx/hud/default/race_newtime.tga differ
diff --git a/gfx/hud/default/rifle_ring_1.tga b/gfx/hud/default/rifle_ring_1.tga
deleted file mode 100644 (file)
index a90927c..0000000
Binary files a/gfx/hud/default/rifle_ring_1.tga and /dev/null differ
diff --git a/gfx/hud/default/rifle_ring_2.tga b/gfx/hud/default/rifle_ring_2.tga
deleted file mode 100644 (file)
index 6f6ca4c..0000000
Binary files a/gfx/hud/default/rifle_ring_2.tga and /dev/null differ
diff --git a/gfx/hud/default/rifle_ring_3.tga b/gfx/hud/default/rifle_ring_3.tga
deleted file mode 100644 (file)
index 68f6df7..0000000
Binary files a/gfx/hud/default/rifle_ring_3.tga and /dev/null differ
diff --git a/gfx/hud/default/rifle_ring_4.tga b/gfx/hud/default/rifle_ring_4.tga
deleted file mode 100644 (file)
index 0a5db15..0000000
Binary files a/gfx/hud/default/rifle_ring_4.tga and /dev/null differ
diff --git a/gfx/hud/default/rifle_ring_5.tga b/gfx/hud/default/rifle_ring_5.tga
deleted file mode 100644 (file)
index d5cc95b..0000000
Binary files a/gfx/hud/default/rifle_ring_5.tga and /dev/null differ
diff --git a/gfx/hud/default/rifle_ring_6.tga b/gfx/hud/default/rifle_ring_6.tga
deleted file mode 100644 (file)
index 4a126e7..0000000
Binary files a/gfx/hud/default/rifle_ring_6.tga and /dev/null differ
diff --git a/gfx/hud/default/rifle_ring_7.tga b/gfx/hud/default/rifle_ring_7.tga
deleted file mode 100644 (file)
index 846212b..0000000
Binary files a/gfx/hud/default/rifle_ring_7.tga and /dev/null differ
diff --git a/gfx/hud/default/rifle_ring_8.tga b/gfx/hud/default/rifle_ring_8.tga
deleted file mode 100644 (file)
index 137e24d..0000000
Binary files a/gfx/hud/default/rifle_ring_8.tga and /dev/null differ
index e271438e35765b57e2852b49b511c9c597396005..3c2d1a8e09cb6fa464e9f161cc595b2e04a894a7 100644 (file)
Binary files a/gfx/hud/default/statusbar_vertical.tga and b/gfx/hud/default/statusbar_vertical.tga differ
index 2348be8251e606d6dc600a100816fc3f445c7a08..0ba103ed2619e40ca2410c89275b97ff6bd52d56 100644 (file)
Binary files a/gfx/hud/default/voteprogress_back.tga and b/gfx/hud/default/voteprogress_back.tga differ
index 574d5d70a68b67f2db1106093c35bddbfec42965..f24f52415876e25736de02166ec0392fc2f705c2 100644 (file)
Binary files a/gfx/hud/default/voteprogress_prog.tga and b/gfx/hud/default/voteprogress_prog.tga differ
index ffc90a255ca1b3466f94af61e85188f092089850..ee06048fcdcf90edf1bdab32703d67075c3a0049 100644 (file)
Binary files a/gfx/hud/default/voteprogress_voted.tga and b/gfx/hud/default/voteprogress_voted.tga differ
index 4a451b1bcfc33159d8dfc9366b58f15999703c5a..8dcf3aab73ef739182f64fa080669bde4700072f 100644 (file)
Binary files a/gfx/hud/default/weapon_accuracy.tga and b/gfx/hud/default/weapon_accuracy.tga differ
index cb1d3063620da5511fe861093d36d70af11d38fe..de4148cebc3cb2ea28ea52c73c49ed06f30d087f 100644 (file)
Binary files a/gfx/hud/default/weapon_ammo.tga and b/gfx/hud/default/weapon_ammo.tga differ
index a3c53a39d1b61bd83985b3648e02ad3e185c9525..349274f86f643e855dbe4934f43abc08000ed2a6 100644 (file)
Binary files a/gfx/hud/default/weapon_complainbubble.tga and b/gfx/hud/default/weapon_complainbubble.tga differ
index 5a8f9367153206da4c91d00b41b99d1454f094e9..688d8054dc9940be78f87254213d18ff3a6fe7de 100644 (file)
Binary files a/gfx/hud/default/weapon_current_bg.tga and b/gfx/hud/default/weapon_current_bg.tga differ
index f11c173ba8837278b45b83fb7db1e45d9fe665b9..601f3d7aa1ea35f972aec250eae6a3f79ed2e178 100644 (file)
Binary files a/gfx/hud/default/weapon_hlacmod_renameit.tga and b/gfx/hud/default/weapon_hlacmod_renameit.tga differ
index fb6413b14f27f877100630c82716fbe5dbef9b11..f5c2e55927abb160a5481d562c9399b5a6a822c7 100644 (file)
Binary files a/gfx/hud/default/weaponcampingrifle.tga and b/gfx/hud/default/weaponcampingrifle.tga differ
index e48ad4d24602692c99b38a5e5bb8c3f4f477575c..e7e283f3cc0e815b59e182374f746b70fa26fb02 100644 (file)
Binary files a/gfx/hud/default/weaponcrylink.tga and b/gfx/hud/default/weaponcrylink.tga differ
index 73c791b393a689a40676e14964c65d605aaa9b4b..75cdf0249014045b58806146db284b1ad9d1289f 100644 (file)
Binary files a/gfx/hud/default/weaponelectro.tga and b/gfx/hud/default/weaponelectro.tga differ
index d7ea1fb0494ca40a814f0b90f3648a11b8852ab6..05fc4feed8efe8ce8aabea4782d37b81f3f933b8 100644 (file)
Binary files a/gfx/hud/default/weaponfireball.tga and b/gfx/hud/default/weaponfireball.tga differ
index c09081b004f359cd2f1867b43a78f90d2832785d..24135f3cc295979bc5071a44a2dabab2adfb13b6 100644 (file)
Binary files a/gfx/hud/default/weapongrenadelauncher.tga and b/gfx/hud/default/weapongrenadelauncher.tga differ
index 69a7b729cfbf0c3f8c0b7d9d68741b5a19d7b796..5c04c8f92e36c5d37fb9d664e9a87791154d4a08 100644 (file)
Binary files a/gfx/hud/default/weaponhagar.tga and b/gfx/hud/default/weaponhagar.tga differ
index 2ba38534556d9d9614ea79bfa3eb70b4753dfa21..5375ab477d0563251975d55a933a5a69a924bc67 100644 (file)
Binary files a/gfx/hud/default/weaponhlac.tga and b/gfx/hud/default/weaponhlac.tga differ
index 0c7fd40b6bbd8652995f6b4455c254f8e8874b92..eaee8388f9e875e409b01b4ddd98abe0ac2ad0f7 100644 (file)
Binary files a/gfx/hud/default/weaponhook.tga and b/gfx/hud/default/weaponhook.tga differ
index 1f016e16d97d4b16b00ecc153c099245e76888f1..0afbb37d48124bb6f9b9a4f82998c45a1dcb43d4 100644 (file)
Binary files a/gfx/hud/default/weaponlaser.tga and b/gfx/hud/default/weaponlaser.tga differ
index 26877c2672a49ff06fd069d439e27afbaf54f408..3618778729fc6918db40260e421f6cbf86ab842e 100644 (file)
Binary files a/gfx/hud/default/weaponminstanex.tga and b/gfx/hud/default/weaponminstanex.tga differ
index 4ed91bc391b52eeb41aeeb3f8fc6e51ac5663416..e98e318aa9cdcf4ab5b3d26453f2ee81069e2573 100644 (file)
Binary files a/gfx/hud/default/weaponnex.tga and b/gfx/hud/default/weaponnex.tga differ
index 46dd107d6136bc6fa405dda1fbf7624fe21adaa8..3fbccf9dee9f9d50f81982e9386e2f4dd17fa74e 100644 (file)
Binary files a/gfx/hud/default/weaponporto.tga and b/gfx/hud/default/weaponporto.tga differ
index f5449b32c7b2f6718ae53f749f83d24289e4a57d..0fea76673ca8036f01acdd0d6a00269a28524912 100644 (file)
Binary files a/gfx/hud/default/weaponrocketlauncher.tga and b/gfx/hud/default/weaponrocketlauncher.tga differ
index 566ee86eddd45e0281bc37aa57d48133e2df1bdd..5630d524b39de00d2b7e79e96229ce53169ce64a 100644 (file)
Binary files a/gfx/hud/default/weaponseeker.tga and b/gfx/hud/default/weaponseeker.tga differ
index 055841c052e2cf8d646651c85a348611eed1ed65..438b1217dc97e665bab65f71a8b229487c5d5355 100644 (file)
Binary files a/gfx/hud/default/weaponshotgun.tga and b/gfx/hud/default/weaponshotgun.tga differ
index 8b8001594b7463f915ae3483405a638803f6476a..1617b7fac66a929a9d9ae2a6faaebb45d92f6313 100644 (file)
Binary files a/gfx/hud/default/weapontuba.tga and b/gfx/hud/default/weapontuba.tga differ
index c0e75d113368b90504df204a84e53bf24a25f623..4c037325d9f8fe78424182b9f3d4d41a86d8441d 100644 (file)
Binary files a/gfx/hud/default/weaponuzi.tga and b/gfx/hud/default/weaponuzi.tga differ
diff --git a/gfx/hud/luminos/border.tga b/gfx/hud/luminos/border.tga
new file mode 100644 (file)
index 0000000..3b76811
Binary files /dev/null and b/gfx/hud/luminos/border.tga differ
diff --git a/gfx/hud/luminos/border_horizontal.tga b/gfx/hud/luminos/border_horizontal.tga
deleted file mode 100644 (file)
index b628060..0000000
Binary files a/gfx/hud/luminos/border_horizontal.tga and /dev/null differ
diff --git a/gfx/hud/luminos/border_vertical.tga b/gfx/hud/luminos/border_vertical.tga
deleted file mode 100644 (file)
index 3b76811..0000000
Binary files a/gfx/hud/luminos/border_vertical.tga and /dev/null differ
index 04e923074cccfd1063e1cda8ab792877b25c2dc7..55a2991ea2af3b938719b6f2ad4a1c9e05cbe05b 100644 (file)
Binary files a/gfx/hud/luminos/notify_blue_captured.tga and b/gfx/hud/luminos/notify_blue_captured.tga differ
index c75de3b213af925d24ee2d46421cf3152aadcbcb..0c663d72a48dbcb0b4835e6c71b49551e9180013 100644 (file)
Binary files a/gfx/hud/luminos/notify_blue_returned.tga and b/gfx/hud/luminos/notify_blue_returned.tga differ
diff --git a/gfx/hud/luminos/notify_headshot.tga b/gfx/hud/luminos/notify_headshot.tga
new file mode 100644 (file)
index 0000000..17a76f8
Binary files /dev/null and b/gfx/hud/luminos/notify_headshot.tga differ
diff --git a/gfx/hud/luminos/notify_melee_laser.tga b/gfx/hud/luminos/notify_melee_laser.tga
new file mode 100644 (file)
index 0000000..2223d93
Binary files /dev/null and b/gfx/hud/luminos/notify_melee_laser.tga differ
diff --git a/gfx/hud/luminos/notify_melee_shotgun.tga b/gfx/hud/luminos/notify_melee_shotgun.tga
new file mode 100644 (file)
index 0000000..cf003bd
Binary files /dev/null and b/gfx/hud/luminos/notify_melee_shotgun.tga differ
index 052be1339beb0c449b701663ccef210d52b45a67..9c2077f33fcde244c1fdd049c182451f88c3377e 100644 (file)
Binary files a/gfx/hud/luminos/notify_red_captured.tga and b/gfx/hud/luminos/notify_red_captured.tga differ
index c5c23de601d57fc938b72b41da2f963db32c5881..3f3b54a6d772f255a94033f7858d41eb2d680cd2 100644 (file)
Binary files a/gfx/hud/luminos/notify_red_returned.tga and b/gfx/hud/luminos/notify_red_returned.tga differ
diff --git a/gfx/hud/luminos/notify_teamkill.tga b/gfx/hud/luminos/notify_teamkill.tga
deleted file mode 100644 (file)
index a2dc308..0000000
Binary files a/gfx/hud/luminos/notify_teamkill.tga and /dev/null differ
index 2a613b6ec9c4c2bddf042fceedd1def52f72193f..8ebe761ef7da05df0f83d97c5dea5a5f00f4cd05 100644 (file)
Binary files a/gfx/hud/luminos/notify_void.tga and b/gfx/hud/luminos/notify_void.tga differ
index 99ed22b30fd3e88d6bf2f284f97b03928f102580..6bf5288d0638e7a2aed4d4ad1abdc6344eaefd8d 100644 (file)
Binary files a/gfx/hud/luminos/race_newrecordserver.tga and b/gfx/hud/luminos/race_newrecordserver.tga differ
diff --git a/gfx/hud/luminos/weapon_complainbubble.tga b/gfx/hud/luminos/weapon_complainbubble.tga
new file mode 100644 (file)
index 0000000..349274f
Binary files /dev/null and b/gfx/hud/luminos/weapon_complainbubble.tga differ
index b4e29495af7b69e97e2c3bc233305ff6d085af99..e98e318aa9cdcf4ab5b3d26453f2ee81069e2573 100644 (file)
Binary files a/gfx/hud/luminos/weaponnex.tga and b/gfx/hud/luminos/weaponnex.tga differ
diff --git a/gfx/hud/old/num_0.tga b/gfx/hud/old/num_0.tga
deleted file mode 100644 (file)
index f0ab2f1..0000000
Binary files a/gfx/hud/old/num_0.tga and /dev/null differ
diff --git a/gfx/hud/old/num_0_stroke.tga b/gfx/hud/old/num_0_stroke.tga
deleted file mode 100644 (file)
index e9c6e5b..0000000
Binary files a/gfx/hud/old/num_0_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_1.tga b/gfx/hud/old/num_1.tga
deleted file mode 100644 (file)
index 78f1f45..0000000
Binary files a/gfx/hud/old/num_1.tga and /dev/null differ
diff --git a/gfx/hud/old/num_1_stroke.tga b/gfx/hud/old/num_1_stroke.tga
deleted file mode 100644 (file)
index 1ff552f..0000000
Binary files a/gfx/hud/old/num_1_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_2.tga b/gfx/hud/old/num_2.tga
deleted file mode 100644 (file)
index 205dd03..0000000
Binary files a/gfx/hud/old/num_2.tga and /dev/null differ
diff --git a/gfx/hud/old/num_2_stroke.tga b/gfx/hud/old/num_2_stroke.tga
deleted file mode 100644 (file)
index 08d26df..0000000
Binary files a/gfx/hud/old/num_2_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_3.tga b/gfx/hud/old/num_3.tga
deleted file mode 100644 (file)
index 335b5da..0000000
Binary files a/gfx/hud/old/num_3.tga and /dev/null differ
diff --git a/gfx/hud/old/num_3_stroke.tga b/gfx/hud/old/num_3_stroke.tga
deleted file mode 100644 (file)
index a5fddda..0000000
Binary files a/gfx/hud/old/num_3_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_4.tga b/gfx/hud/old/num_4.tga
deleted file mode 100644 (file)
index 2b9f46f..0000000
Binary files a/gfx/hud/old/num_4.tga and /dev/null differ
diff --git a/gfx/hud/old/num_4_stroke.tga b/gfx/hud/old/num_4_stroke.tga
deleted file mode 100644 (file)
index fe87933..0000000
Binary files a/gfx/hud/old/num_4_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_5.tga b/gfx/hud/old/num_5.tga
deleted file mode 100644 (file)
index 8bb7043..0000000
Binary files a/gfx/hud/old/num_5.tga and /dev/null differ
diff --git a/gfx/hud/old/num_5_stroke.tga b/gfx/hud/old/num_5_stroke.tga
deleted file mode 100644 (file)
index 3a6978a..0000000
Binary files a/gfx/hud/old/num_5_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_6.tga b/gfx/hud/old/num_6.tga
deleted file mode 100644 (file)
index 1db8c0e..0000000
Binary files a/gfx/hud/old/num_6.tga and /dev/null differ
diff --git a/gfx/hud/old/num_6_stroke.tga b/gfx/hud/old/num_6_stroke.tga
deleted file mode 100644 (file)
index f64e178..0000000
Binary files a/gfx/hud/old/num_6_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_7.tga b/gfx/hud/old/num_7.tga
deleted file mode 100644 (file)
index 0099d68..0000000
Binary files a/gfx/hud/old/num_7.tga and /dev/null differ
diff --git a/gfx/hud/old/num_7_stroke.tga b/gfx/hud/old/num_7_stroke.tga
deleted file mode 100644 (file)
index 252e796..0000000
Binary files a/gfx/hud/old/num_7_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_8.tga b/gfx/hud/old/num_8.tga
deleted file mode 100644 (file)
index aa20157..0000000
Binary files a/gfx/hud/old/num_8.tga and /dev/null differ
diff --git a/gfx/hud/old/num_8_stroke.tga b/gfx/hud/old/num_8_stroke.tga
deleted file mode 100644 (file)
index e2cd39d..0000000
Binary files a/gfx/hud/old/num_8_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_9.tga b/gfx/hud/old/num_9.tga
deleted file mode 100644 (file)
index 87b9c21..0000000
Binary files a/gfx/hud/old/num_9.tga and /dev/null differ
diff --git a/gfx/hud/old/num_9_stroke.tga b/gfx/hud/old/num_9_stroke.tga
deleted file mode 100644 (file)
index 5a8d610..0000000
Binary files a/gfx/hud/old/num_9_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_colon.tga b/gfx/hud/old/num_colon.tga
deleted file mode 100644 (file)
index e22c09a..0000000
Binary files a/gfx/hud/old/num_colon.tga and /dev/null differ
diff --git a/gfx/hud/old/num_colon_stroke.tga b/gfx/hud/old/num_colon_stroke.tga
deleted file mode 100644 (file)
index 68ad28a..0000000
Binary files a/gfx/hud/old/num_colon_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_dot.tga b/gfx/hud/old/num_dot.tga
deleted file mode 100644 (file)
index 7fbfdd0..0000000
Binary files a/gfx/hud/old/num_dot.tga and /dev/null differ
diff --git a/gfx/hud/old/num_dot_stroke.tga b/gfx/hud/old/num_dot_stroke.tga
deleted file mode 100644 (file)
index 29ad696..0000000
Binary files a/gfx/hud/old/num_dot_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_leading.tga b/gfx/hud/old/num_leading.tga
deleted file mode 100644 (file)
index 0e5233c..0000000
Binary files a/gfx/hud/old/num_leading.tga and /dev/null differ
diff --git a/gfx/hud/old/num_minus.tga b/gfx/hud/old/num_minus.tga
deleted file mode 100644 (file)
index 10721f2..0000000
Binary files a/gfx/hud/old/num_minus.tga and /dev/null differ
diff --git a/gfx/hud/old/num_minus_stroke.tga b/gfx/hud/old/num_minus_stroke.tga
deleted file mode 100644 (file)
index 26455a0..0000000
Binary files a/gfx/hud/old/num_minus_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/num_plus.tga b/gfx/hud/old/num_plus.tga
deleted file mode 100644 (file)
index 3cb17b3..0000000
Binary files a/gfx/hud/old/num_plus.tga and /dev/null differ
diff --git a/gfx/hud/old/num_plus_stroke.tga b/gfx/hud/old/num_plus_stroke.tga
deleted file mode 100644 (file)
index 7df2faa..0000000
Binary files a/gfx/hud/old/num_plus_stroke.tga and /dev/null differ
diff --git a/gfx/hud/old/rifle_ring_1.tga b/gfx/hud/old/rifle_ring_1.tga
deleted file mode 100644 (file)
index a90927c..0000000
Binary files a/gfx/hud/old/rifle_ring_1.tga and /dev/null differ
diff --git a/gfx/hud/old/rifle_ring_2.tga b/gfx/hud/old/rifle_ring_2.tga
deleted file mode 100644 (file)
index 6f6ca4c..0000000
Binary files a/gfx/hud/old/rifle_ring_2.tga and /dev/null differ
diff --git a/gfx/hud/old/rifle_ring_3.tga b/gfx/hud/old/rifle_ring_3.tga
deleted file mode 100644 (file)
index 68f6df7..0000000
Binary files a/gfx/hud/old/rifle_ring_3.tga and /dev/null differ
diff --git a/gfx/hud/old/rifle_ring_4.tga b/gfx/hud/old/rifle_ring_4.tga
deleted file mode 100644 (file)
index 0a5db15..0000000
Binary files a/gfx/hud/old/rifle_ring_4.tga and /dev/null differ
diff --git a/gfx/hud/old/rifle_ring_5.tga b/gfx/hud/old/rifle_ring_5.tga
deleted file mode 100644 (file)
index d5cc95b..0000000
Binary files a/gfx/hud/old/rifle_ring_5.tga and /dev/null differ
diff --git a/gfx/hud/old/rifle_ring_6.tga b/gfx/hud/old/rifle_ring_6.tga
deleted file mode 100644 (file)
index 4a126e7..0000000
Binary files a/gfx/hud/old/rifle_ring_6.tga and /dev/null differ
diff --git a/gfx/hud/old/rifle_ring_7.tga b/gfx/hud/old/rifle_ring_7.tga
deleted file mode 100644 (file)
index 846212b..0000000
Binary files a/gfx/hud/old/rifle_ring_7.tga and /dev/null differ
diff --git a/gfx/hud/old/rifle_ring_8.tga b/gfx/hud/old/rifle_ring_8.tga
deleted file mode 100644 (file)
index 137e24d..0000000
Binary files a/gfx/hud/old/rifle_ring_8.tga and /dev/null differ
diff --git a/gfx/rifle_ring_1.tga b/gfx/rifle_ring_1.tga
new file mode 100644 (file)
index 0000000..a90927c
Binary files /dev/null and b/gfx/rifle_ring_1.tga differ
diff --git a/gfx/rifle_ring_2.tga b/gfx/rifle_ring_2.tga
new file mode 100644 (file)
index 0000000..6f6ca4c
Binary files /dev/null and b/gfx/rifle_ring_2.tga differ
diff --git a/gfx/rifle_ring_3.tga b/gfx/rifle_ring_3.tga
new file mode 100644 (file)
index 0000000..68f6df7
Binary files /dev/null and b/gfx/rifle_ring_3.tga differ
diff --git a/gfx/rifle_ring_4.tga b/gfx/rifle_ring_4.tga
new file mode 100644 (file)
index 0000000..0a5db15
Binary files /dev/null and b/gfx/rifle_ring_4.tga differ
diff --git a/gfx/rifle_ring_5.tga b/gfx/rifle_ring_5.tga
new file mode 100644 (file)
index 0000000..d5cc95b
Binary files /dev/null and b/gfx/rifle_ring_5.tga differ
diff --git a/gfx/rifle_ring_6.tga b/gfx/rifle_ring_6.tga
new file mode 100644 (file)
index 0000000..4a126e7
Binary files /dev/null and b/gfx/rifle_ring_6.tga differ
diff --git a/gfx/rifle_ring_7.tga b/gfx/rifle_ring_7.tga
new file mode 100644 (file)
index 0000000..846212b
Binary files /dev/null and b/gfx/rifle_ring_7.tga differ
diff --git a/gfx/rifle_ring_8.tga b/gfx/rifle_ring_8.tga
new file mode 100644 (file)
index 0000000..137e24d
Binary files /dev/null and b/gfx/rifle_ring_8.tga differ
index 8c7abe41349b173d16363265545df6fe415df95d..34fed7a999bf592509f95ad1c623a659aa8e5724 100644 (file)
@@ -1,7 +1,7 @@
 seta hud_skin "luminos"
-seta hud_panel_bg "border_horizontal"
+seta hud_panel_bg "border"
 seta hud_panel_bg_color "0.875 0.375 0"
-seta hud_panel_bg_color_team "0"
+seta hud_panel_bg_color_team "1"
 seta hud_panel_bg_alpha "1"
 seta hud_panel_bg_border "6"
 seta hud_panel_bg_padding "2"
@@ -9,7 +9,7 @@ seta hud_panel_fg_alpha "1"
 
 seta hud_dock "dock"
 seta hud_dock_color "0 0.1875 0.4375"
-seta hud_dock_color_team "0.700000"
+seta hud_dock_color_team "0.600000"
 seta hud_dock_alpha "1"
 
 seta hud_progressbar_alpha "0.500000"
@@ -20,16 +20,16 @@ seta hud_progressbar_armor_color "0 0.6 0"
 seta hud_progressbar_fuel_color "0.6 0.6 0"
 seta hud_progressbar_nexball_color "0.7 0.1 0"
 
-seta _hud_panelorder "4 6 5 9 3 1 7 12 0 10 2 11 14 8 13 "
+seta _hud_panelorder "11 0 9 2 10 14 12 6 3 13 4 8 7 1 5 "
 
 seta hud_configure_grid "1"
-seta hud_configure_grid_xsize "0.01"
-seta hud_configure_grid_ysize "0.01"
+seta hud_configure_grid_xsize "0.005000"
+seta hud_configure_grid_ysize "0.005000"
 
 seta hud_panel_weapons 1
-seta hud_panel_weapons_pos "0.908906 0.088047"
-seta hud_panel_weapons_size "0.066564 0.641367"
-seta hud_panel_weapons_bg "border_vertical"
+seta hud_panel_weapons_pos "0.915000 0.085000"
+seta hud_panel_weapons_size "0.060000 0.635000"
+seta hud_panel_weapons_bg ""
 seta hud_panel_weapons_bg_color ""
 seta hud_panel_weapons_bg_color_team ""
 seta hud_panel_weapons_bg_alpha ""
@@ -42,11 +42,11 @@ seta hud_panel_weapons_complainbubble_color_donthave "0.8 0.5 0"
 seta hud_panel_weapons_complainbubble_color_unavailable "0 0.3 0.8"
 seta hud_panel_weapons_ammo_color "0 1 0"
 seta hud_panel_weapons_ammo_alpha "1"
-seta hud_panel_weapons_aspect "1"
+seta hud_panel_weapons_aspect "2"
 
 seta hud_panel_ammo 1
-seta hud_panel_ammo_pos "0.193516 0.925605"
-seta hud_panel_ammo_size "0.093750 0.061719"
+seta hud_panel_ammo_pos "0.190000 0.925000"
+seta hud_panel_ammo_size "0.095000 0.060000"
 seta hud_panel_ammo_bg ""
 seta hud_panel_ammo_bg_color ""
 seta hud_panel_ammo_bg_color_team ""
@@ -57,36 +57,36 @@ seta hud_panel_ammo_onlycurrent "1"
 seta hud_panel_ammo_iconalign "0"
 
 seta hud_panel_powerups 1
-seta hud_panel_powerups_pos "0.363282 0.015742"
+seta hud_panel_powerups_pos "0.365000 0.015000"
 seta hud_panel_powerups_size "0.262500 0.048047"
 seta hud_panel_powerups_bg ""
 seta hud_panel_powerups_bg_color ""
-seta hud_panel_powerups_bg_color_team ""
-seta hud_panel_powerups_bg_alpha "0"
+seta hud_panel_powerups_bg_color_team "1"
+seta hud_panel_powerups_bg_alpha ""
 seta hud_panel_powerups_bg_border ""
 seta hud_panel_powerups_bg_padding ""
 seta hud_panel_powerups_flip "1"
-seta hud_panel_powerups_iconalign "0"
-seta hud_panel_powerups_baralign "0"
+seta hud_panel_powerups_iconalign "4"
+seta hud_panel_powerups_baralign "4"
 seta hud_panel_powerups_progressbar "1"
 
 seta hud_panel_healtharmor 1
-seta hud_panel_healtharmor_pos "0.305859 0.925606"
-seta hud_panel_healtharmor_size "0.311485 0.061230"
+seta hud_panel_healtharmor_pos "0.305000 0.925000"
+seta hud_panel_healtharmor_size "0.315000 0.060000"
 seta hud_panel_healtharmor_bg ""
 seta hud_panel_healtharmor_bg_color ""
-seta hud_panel_healtharmor_bg_color_team "0"
+seta hud_panel_healtharmor_bg_color_team "1"
 seta hud_panel_healtharmor_bg_alpha "1"
 seta hud_panel_healtharmor_bg_border ""
 seta hud_panel_healtharmor_bg_padding ""
 seta hud_panel_healtharmor_flip "0
-seta hud_panel_healtharmor_iconalign "0"
-seta hud_panel_healtharmor_baralign "0"
+seta hud_panel_healtharmor_iconalign "4"
+seta hud_panel_healtharmor_baralign "4"
 seta hud_panel_healtharmor_progressbar "1"
 
 seta hud_panel_notify 1
-seta hud_panel_notify_pos "0.663125 0.748536"
-seta hud_panel_notify_size "0.320000 0.180000"
+seta hud_panel_notify_pos "0.700000 0.740000"
+seta hud_panel_notify_size "0.280000 0.180000"
 seta hud_panel_notify_bg ""
 seta hud_panel_notify_bg_color ""
 seta hud_panel_notify_bg_color_team ""
@@ -107,9 +107,9 @@ seta hud_panel_timer_bg_border ""
 seta hud_panel_timer_bg_padding "0"
 
 seta hud_panel_radar 1
-seta hud_panel_radar_pos "0.023750 0.024395"
-seta hud_panel_radar_size "0.182969 0.224140"
-seta hud_panel_radar_bg "border_vertical"
+seta hud_panel_radar_pos "0.025000 0.025000"
+seta hud_panel_radar_size "0.180000 0.220000"
+seta hud_panel_radar_bg ""
 seta hud_panel_radar_bg_color ""
 seta hud_panel_radar_bg_color_team ""
 seta hud_panel_radar_bg_alpha ""
@@ -118,8 +118,8 @@ seta hud_panel_radar_bg_padding "-3"
 seta hud_panel_radar_foreground_alpha "0.800000"
 
 seta hud_panel_score 1
-seta hud_panel_score_pos "0.023516 0.925605"
-seta hud_panel_score_size "0.152344 0.060254"
+seta hud_panel_score_pos "0.025000 0.925000"
+seta hud_panel_score_size "0.145000 0.060000"
 seta hud_panel_score_bg ""
 seta hud_panel_score_bg_color ""
 seta hud_panel_score_bg_color_team ""
@@ -128,7 +128,7 @@ seta hud_panel_score_bg_border ""
 seta hud_panel_score_bg_padding ""
 
 seta hud_panel_racetimer 1
-seta hud_panel_racetimer_pos "0.354531 0.206289"
+seta hud_panel_racetimer_pos "0.355000 0.205000"
 seta hud_panel_racetimer_size "0.280000 0.093333"
 seta hud_panel_racetimer_bg ""
 seta hud_panel_racetimer_bg_color ""
@@ -138,7 +138,7 @@ seta hud_panel_racetimer_bg_border ""
 seta hud_panel_racetimer_bg_padding ""
 
 seta hud_panel_vote 1
-seta hud_panel_vote_pos "0.021094 0.650586"
+seta hud_panel_vote_pos "0.025000 0.660000"
 seta hud_panel_vote_size "0.264218 0.102462"
 seta hud_panel_vote_bg ""
 seta hud_panel_vote_bg_color ""
@@ -149,7 +149,7 @@ seta hud_panel_vote_bg_padding ""
 seta hud_panel_vote_alreadyvoted_alpha "0.750000"
 
 seta hud_panel_modicons 1
-seta hud_panel_modicons_pos "0.036563 0.271796"
+seta hud_panel_modicons_pos "0.040000 0.270000"
 seta hud_panel_modicons_size "0.084766 0.199903"
 seta hud_panel_modicons_bg ""
 seta hud_panel_modicons_bg_color ""
@@ -159,18 +159,18 @@ seta hud_panel_modicons_bg_border ""
 seta hud_panel_modicons_bg_padding ""
 
 seta hud_panel_pressedkeys 1
-seta hud_panel_pressedkeys_pos "0.411562 0.545429"
+seta hud_panel_pressedkeys_pos "0.410000 0.545000"
 seta hud_panel_pressedkeys_size "0.177656 0.120531"
 seta hud_panel_pressedkeys_bg ""
 seta hud_panel_pressedkeys_bg_color ""
-seta hud_panel_pressedkeys_bg_color_team "0"
+seta hud_panel_pressedkeys_bg_color_team "1"
 seta hud_panel_pressedkeys_bg_alpha "0"
 seta hud_panel_pressedkeys_bg_border ""
 seta hud_panel_pressedkeys_bg_padding ""
 seta hud_panel_pressedkeys_aspect "1.600000"
 
 seta hud_panel_chat 1
-seta hud_panel_chat_pos "0.020000 0.774374"
+seta hud_panel_chat_pos "0.020000 0.775000"
 seta hud_panel_chat_size "0.627968 0.112696"
 seta hud_panel_chat_bg ""
 seta hud_panel_chat_bg_color ""
@@ -180,8 +180,8 @@ seta hud_panel_chat_bg_border ""
 seta hud_panel_chat_bg_padding ""
 
 seta hud_panel_engineinfo 1
-seta hud_panel_engineinfo_pos "0.860000 0.950000"
-seta hud_panel_engineinfo_size "0.130000 0.034667"
+seta hud_panel_engineinfo_pos "0.860000 0.954667"
+seta hud_panel_engineinfo_size "0.125000 0.035000"
 seta hud_panel_engineinfo_bg ""
 seta hud_panel_engineinfo_bg_color ""
 seta hud_panel_engineinfo_bg_color_team ""
@@ -190,8 +190,8 @@ seta hud_panel_engineinfo_bg_border ""
 seta hud_panel_engineinfo_bg_padding ""
 
 seta hud_panel_infomessages 1
-seta hud_panel_infomessages_pos "0.388751 0.378243"
-seta hud_panel_infomessages_size "0.233282 0.061679"
+seta hud_panel_infomessages_pos "0.340000 0.350000"
+seta hud_panel_infomessages_size "0.320000 0.085000"
 seta hud_panel_infomessages_bg ""
 seta hud_panel_infomessages_bg_color ""
 seta hud_panel_infomessages_bg_color_team ""
index 731a187416d5c349eb7547be6c4fdb5c320239ea..8d1436a18a1224a0082f7c79dd41ffca329fbbfe 100644 (file)
@@ -1,7 +1,7 @@
 seta hud_skin "luminos"
-seta hud_panel_bg "border_horizontal"
+seta hud_panel_bg "border"
 seta hud_panel_bg_color "0.875 0.375 0"
-seta hud_panel_bg_color_team "0"
+seta hud_panel_bg_color_team "1"
 seta hud_panel_bg_alpha "1"
 seta hud_panel_bg_border "6"
 seta hud_panel_bg_padding "2"
@@ -9,7 +9,7 @@ seta hud_panel_fg_alpha "1"
 
 seta hud_dock "dock"
 seta hud_dock_color "0 0.1875 0.4375"
-seta hud_dock_color_team "0.700000"
+seta hud_dock_color_team "0.600000"
 seta hud_dock_alpha "1"
 
 seta hud_progressbar_alpha "0.500000"
@@ -20,16 +20,16 @@ seta hud_progressbar_armor_color "0 0.6 0"
 seta hud_progressbar_fuel_color "0.6 0.6 0"
 seta hud_progressbar_nexball_color "0.7 0.1 0"
 
-seta _hud_panelorder "4 6 5 9 3 1 7 12 0 10 2 11 14 8 13 "
+seta _hud_panelorder "11 0 9 2 10 14 12 6 3 13 4 8 7 1 5 "
 
 seta hud_configure_grid "1"
-seta hud_configure_grid_xsize "0.01"
-seta hud_configure_grid_ysize "0.01"
+seta hud_configure_grid_xsize "0.005000"
+seta hud_configure_grid_ysize "0.005000"
 
 seta hud_panel_weapons 1
-seta hud_panel_weapons_pos "0.908906 0.088047"
-seta hud_panel_weapons_size "0.066564 0.641367"
-seta hud_panel_weapons_bg "border_vertical"
+seta hud_panel_weapons_pos "0.915000 0.085000"
+seta hud_panel_weapons_size "0.060000 0.635000"
+seta hud_panel_weapons_bg ""
 seta hud_panel_weapons_bg_color ""
 seta hud_panel_weapons_bg_color_team ""
 seta hud_panel_weapons_bg_alpha ""
@@ -42,11 +42,11 @@ seta hud_panel_weapons_complainbubble_color_donthave "0.8 0.5 0"
 seta hud_panel_weapons_complainbubble_color_unavailable "0 0.3 0.8"
 seta hud_panel_weapons_ammo_color "0 1 0"
 seta hud_panel_weapons_ammo_alpha "1"
-seta hud_panel_weapons_aspect "1"
+seta hud_panel_weapons_aspect "2"
 
 seta hud_panel_ammo 1
-seta hud_panel_ammo_pos "0.193516 0.925605"
-seta hud_panel_ammo_size "0.093750 0.061719"
+seta hud_panel_ammo_pos "0.190000 0.925000"
+seta hud_panel_ammo_size "0.095000 0.060000"
 seta hud_panel_ammo_bg ""
 seta hud_panel_ammo_bg_color ""
 seta hud_panel_ammo_bg_color_team ""
@@ -57,36 +57,36 @@ seta hud_panel_ammo_onlycurrent "1"
 seta hud_panel_ammo_iconalign "0"
 
 seta hud_panel_powerups 1
-seta hud_panel_powerups_pos "0.363282 0.015742"
+seta hud_panel_powerups_pos "0.365000 0.015000"
 seta hud_panel_powerups_size "0.262500 0.048047"
 seta hud_panel_powerups_bg ""
 seta hud_panel_powerups_bg_color ""
-seta hud_panel_powerups_bg_color_team ""
-seta hud_panel_powerups_bg_alpha "0"
+seta hud_panel_powerups_bg_color_team "1"
+seta hud_panel_powerups_bg_alpha ""
 seta hud_panel_powerups_bg_border ""
 seta hud_panel_powerups_bg_padding ""
 seta hud_panel_powerups_flip "1"
-seta hud_panel_powerups_iconalign "0"
-seta hud_panel_powerups_baralign "0"
+seta hud_panel_powerups_iconalign "4"
+seta hud_panel_powerups_baralign "4"
 seta hud_panel_powerups_progressbar "1"
 
 seta hud_panel_healtharmor 1
-seta hud_panel_healtharmor_pos "0.305859 0.925606"
-seta hud_panel_healtharmor_size "0.311485 0.061230"
+seta hud_panel_healtharmor_pos "0.305000 0.925000"
+seta hud_panel_healtharmor_size "0.315000 0.060000"
 seta hud_panel_healtharmor_bg ""
 seta hud_panel_healtharmor_bg_color ""
-seta hud_panel_healtharmor_bg_color_team "0"
+seta hud_panel_healtharmor_bg_color_team "1"
 seta hud_panel_healtharmor_bg_alpha "1"
 seta hud_panel_healtharmor_bg_border ""
 seta hud_panel_healtharmor_bg_padding ""
 seta hud_panel_healtharmor_flip "0
-seta hud_panel_healtharmor_iconalign "0"
-seta hud_panel_healtharmor_baralign "0"
+seta hud_panel_healtharmor_iconalign "4"
+seta hud_panel_healtharmor_baralign "4"
 seta hud_panel_healtharmor_progressbar "1"
 
 seta hud_panel_notify 1
-seta hud_panel_notify_pos "0.663125 0.748536"
-seta hud_panel_notify_size "0.320000 0.180000"
+seta hud_panel_notify_pos "0.700000 0.740000"
+seta hud_panel_notify_size "0.280000 0.180000"
 seta hud_panel_notify_bg ""
 seta hud_panel_notify_bg_color ""
 seta hud_panel_notify_bg_color_team ""
@@ -107,9 +107,9 @@ seta hud_panel_timer_bg_border ""
 seta hud_panel_timer_bg_padding "0"
 
 seta hud_panel_radar 1
-seta hud_panel_radar_pos "0.023750 0.024395"
-seta hud_panel_radar_size "0.182969 0.224140"
-seta hud_panel_radar_bg "border_vertical"
+seta hud_panel_radar_pos "0.025000 0.025000"
+seta hud_panel_radar_size "0.180000 0.220000"
+seta hud_panel_radar_bg ""
 seta hud_panel_radar_bg_color ""
 seta hud_panel_radar_bg_color_team ""
 seta hud_panel_radar_bg_alpha ""
@@ -118,8 +118,8 @@ seta hud_panel_radar_bg_padding "-3"
 seta hud_panel_radar_foreground_alpha "0.800000"
 
 seta hud_panel_score 1
-seta hud_panel_score_pos "0.023516 0.925605"
-seta hud_panel_score_size "0.152344 0.060254"
+seta hud_panel_score_pos "0.025000 0.925000"
+seta hud_panel_score_size "0.145000 0.060000"
 seta hud_panel_score_bg ""
 seta hud_panel_score_bg_color ""
 seta hud_panel_score_bg_color_team ""
@@ -128,7 +128,7 @@ seta hud_panel_score_bg_border ""
 seta hud_panel_score_bg_padding ""
 
 seta hud_panel_racetimer 1
-seta hud_panel_racetimer_pos "0.354531 0.206289"
+seta hud_panel_racetimer_pos "0.355000 0.205000"
 seta hud_panel_racetimer_size "0.280000 0.093333"
 seta hud_panel_racetimer_bg ""
 seta hud_panel_racetimer_bg_color ""
@@ -138,7 +138,7 @@ seta hud_panel_racetimer_bg_border ""
 seta hud_panel_racetimer_bg_padding ""
 
 seta hud_panel_vote 1
-seta hud_panel_vote_pos "0.021094 0.650586"
+seta hud_panel_vote_pos "0.025000 0.660000"
 seta hud_panel_vote_size "0.264218 0.102462"
 seta hud_panel_vote_bg ""
 seta hud_panel_vote_bg_color ""
@@ -149,7 +149,7 @@ seta hud_panel_vote_bg_padding ""
 seta hud_panel_vote_alreadyvoted_alpha "0.750000"
 
 seta hud_panel_modicons 1
-seta hud_panel_modicons_pos "0.036563 0.271796"
+seta hud_panel_modicons_pos "0.040000 0.270000"
 seta hud_panel_modicons_size "0.084766 0.199903"
 seta hud_panel_modicons_bg ""
 seta hud_panel_modicons_bg_color ""
@@ -159,18 +159,18 @@ seta hud_panel_modicons_bg_border ""
 seta hud_panel_modicons_bg_padding ""
 
 seta hud_panel_pressedkeys 1
-seta hud_panel_pressedkeys_pos "0.411562 0.545429"
+seta hud_panel_pressedkeys_pos "0.410000 0.545000"
 seta hud_panel_pressedkeys_size "0.177656 0.120531"
 seta hud_panel_pressedkeys_bg ""
 seta hud_panel_pressedkeys_bg_color ""
-seta hud_panel_pressedkeys_bg_color_team "0"
+seta hud_panel_pressedkeys_bg_color_team "1"
 seta hud_panel_pressedkeys_bg_alpha "0"
 seta hud_panel_pressedkeys_bg_border ""
 seta hud_panel_pressedkeys_bg_padding ""
 seta hud_panel_pressedkeys_aspect "1.600000"
 
 seta hud_panel_chat 1
-seta hud_panel_chat_pos "0.020000 0.774374"
+seta hud_panel_chat_pos "0.020000 0.775000"
 seta hud_panel_chat_size "0.627968 0.112696"
 seta hud_panel_chat_bg ""
 seta hud_panel_chat_bg_color ""
@@ -180,8 +180,8 @@ seta hud_panel_chat_bg_border ""
 seta hud_panel_chat_bg_padding ""
 
 seta hud_panel_engineinfo 1
-seta hud_panel_engineinfo_pos "0.860000 0.950000"
-seta hud_panel_engineinfo_size "0.130000 0.034667"
+seta hud_panel_engineinfo_pos "0.860000 0.954667"
+seta hud_panel_engineinfo_size "0.125000 0.035000"
 seta hud_panel_engineinfo_bg ""
 seta hud_panel_engineinfo_bg_color ""
 seta hud_panel_engineinfo_bg_color_team ""
@@ -190,8 +190,8 @@ seta hud_panel_engineinfo_bg_border ""
 seta hud_panel_engineinfo_bg_padding ""
 
 seta hud_panel_infomessages 1
-seta hud_panel_infomessages_pos "0.388751 0.378243"
-seta hud_panel_infomessages_size "0.233282 0.061679"
+seta hud_panel_infomessages_pos "0.340000 0.350000"
+seta hud_panel_infomessages_size "0.320000 0.085000"
 seta hud_panel_infomessages_bg ""
 seta hud_panel_infomessages_bg_color ""
 seta hud_panel_infomessages_bg_color_team ""
index 1fb76f81d1459fe1ce5eb5c09e5b30e60fb06a53..89b121b90d9fbd9a0e6500c57d1378bba31ffd40 100644 (file)
Binary files a/models/weapons/h_shotgun.iqm and b/models/weapons/h_shotgun.iqm differ
index 0a59625b6a6aa297525c008a66ba879537a5ac08..1c95207bde9f3573e3ba990ca1fe95651c68bfc3 100644 (file)
@@ -1,4 +1,6 @@
 1 8 20 0 // fire
-9 5 20 0 // fire2
-15 200 20 1 // idle
-215 40 20 0 // reload
+9 23 20 0 // fire2
+32 200 20 1 // idle
+232 40 20 0 // reload
+// compile opts used in the iqm exporter (apparently needed to prevent insane ram usage):
+// fire:1:8, fire2:1:23, idle:1:200, reload:1:40
diff --git a/particles/gauntletbeam.tga b/particles/gauntletbeam.tga
new file mode 100644 (file)
index 0000000..20a6ee5
Binary files /dev/null and b/particles/gauntletbeam.tga differ
diff --git a/particles/lgbeam.tga b/particles/lgbeam.tga
new file mode 100644 (file)
index 0000000..331f2a8
Binary files /dev/null and b/particles/lgbeam.tga differ
index 80bd84a0768432f114133f5f3e0aee01265059a4..1b019d5be89d63aa3caa0b0831fc5005a2b77d8a 100644 (file)
@@ -232,7 +232,9 @@ float announcer_5min;
 // database for misc stuff
 float tempdb;
 float ClientProgsDB;
-vector hook_shotorigin;
+vector hook_shotorigin[4];
+vector electro_shotorigin[4];
+vector gauntlet_shotorigin[4];
 
 #ifdef BLURTEST
 float blurtest_time0, blurtest_time1, blurtest_radius, blurtest_power;
@@ -256,3 +258,4 @@ float w_deathtype, w_issilent, w_random;
 string w_deathtypestring;
 vector w_org, w_backoff;
 
+float campingrifle_scope;
index de5aad9d48311eaa69f1f2ea7f330063fd0291c5..dc1f5bb518d757046dbc355d00182c290f0766fa 100644 (file)
@@ -136,6 +136,7 @@ void CSQC_Init(void)
 
        // precaches
        Projectile_Precache();
+       Hook_Precache();
        GibSplash_Precache();
        Casings_Precache();
        DamageInfo_Precache();
@@ -923,6 +924,9 @@ void(float bIsNewEntity) CSQC_Ent_Update =
                case ENT_CLIENT_WARPZONE: WarpZone_Read(bIsNewEntity); break;
                case ENT_CLIENT_WARPZONE_CAMERA: WarpZone_Camera_Read(bIsNewEntity); break;
                case ENT_CLIENT_TRIGGER_MUSIC: Ent_ReadTriggerMusic(); break;
+               case ENT_CLIENT_HOOK: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_HOOK); break;
+               case ENT_CLIENT_LGBEAM: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_LGBEAM); break;
+               case ENT_CLIENT_GAUNTLET: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_GAUNTLET); break;
                default:
                        error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));
                        break;
@@ -1022,9 +1026,18 @@ void Ent_Init()
 
        nb_pb_period = ReadByte() / 32; //Accuracy of 1/32th
 
-       hook_shotorigin_x = ReadCoord();
-       hook_shotorigin_y = ReadCoord();
-       hook_shotorigin_z = ReadCoord();
+       hook_shotorigin[0] = decompressShotOrigin(ReadInt24_t());
+       hook_shotorigin[1] = decompressShotOrigin(ReadInt24_t());
+       hook_shotorigin[2] = decompressShotOrigin(ReadInt24_t());
+       hook_shotorigin[3] = decompressShotOrigin(ReadInt24_t());
+       electro_shotorigin[0] = decompressShotOrigin(ReadInt24_t());
+       electro_shotorigin[1] = decompressShotOrigin(ReadInt24_t());
+       electro_shotorigin[2] = decompressShotOrigin(ReadInt24_t());
+       electro_shotorigin[3] = decompressShotOrigin(ReadInt24_t());
+       gauntlet_shotorigin[0] = decompressShotOrigin(ReadInt24_t());
+       gauntlet_shotorigin[1] = decompressShotOrigin(ReadInt24_t());
+       gauntlet_shotorigin[2] = decompressShotOrigin(ReadInt24_t());
+       gauntlet_shotorigin[3] = decompressShotOrigin(ReadInt24_t());
 
        if(forcefog)
                strunzone(forcefog);
@@ -1264,6 +1277,10 @@ void Net_WeaponComplain() {
        complain_weapon_time = time;
 }
 
+void Net_CampingrifleScope() {
+       campingrifle_scope = TRUE;
+}
+
 // CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer.
 // You must ALWAYS first acquire the temporary ID, which is sent as a byte.
 // Return value should be 1 if CSQC handled the temporary entity, otherwise return 0 to have the engine process the event.
@@ -1290,10 +1307,6 @@ float CSQC_Parse_TempEntity()
                        Net_ReadRace();
                        bHandled = true;
                        break;
-               case 13: // TE_BEAM
-                       Net_GrapplingHook();
-                       bHandled = true;
-                       break;
                case TE_CSQC_SPAWN:
                        Net_ReadSpawn();
                        bHandled = true;
@@ -1338,6 +1351,10 @@ float CSQC_Parse_TempEntity()
                        Net_WeaponComplain();
                        bHandled = true;
                        break;
+               case TE_CSQC_CAMPINGRIFLE_SCOPE:
+                       Net_CampingrifleScope();
+                       bHandled = true;
+                       break;
                default:
                        // No special logic for this temporary entity; return 0 so the engine can handle it
                        bHandled = false;
index 8c642415ddebede591b7cbe57ae4e86c19cb2364..3033cfa78a7cc3b6de68a8d84ca3c73eb98ccbd5 100644 (file)
@@ -137,7 +137,7 @@ vector GetCurrentFov(float fov)
                        zoomspeed = 3.5;
 
        zoomdir = button_zoom;
-       if(getstati(STAT_ACTIVEWEAPON) == WEP_NEX) // do NOT use switchweapon here
+       if(getstati(STAT_ACTIVEWEAPON) == WEP_NEX || (getstati(STAT_ACTIVEWEAPON) == WEP_CAMPINGRIFLE && campingrifle_scope)) // do NOT use switchweapon here
                zoomdir += button_attack2;
        if(spectatee_status > 0 || isdemo())
        {
@@ -478,7 +478,6 @@ void CSQC_UpdateView(float w, float h)
                weapontime = time;
                last_weapon = activeweapon;
 
-               entity e;
                e = get_weaponinfo(activeweapon);
                if(e.netname != "")
                        localcmd(strcat("\ncl_hook_activeweapon ", e.netname), "\n");
@@ -567,7 +566,7 @@ void CSQC_UpdateView(float w, float h)
                reticle_type = 0; // prevent reticle from showing during the respawn zoom effect or for spectators
        else if(button_zoom)
                reticle_type = 1; // normal zoom
-       else if(activeweapon == WEP_NEX && button_attack2)
+       else if(activeweapon == WEP_NEX && button_attack2 || activeweapon == WEP_CAMPINGRIFLE && button_attack2)
                reticle_type = 2; // nex zoom
 
        if(cvar("cl_reticle_stretch"))
@@ -779,7 +778,7 @@ void CSQC_UpdateView(float w, float h)
                                        bullets = 0;
 
 #define CROSSHAIR_DRAW_RING(i,j,sz,wcross_name,wcross_alpha) \
-                               drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/hud/", cvar_string("hud_skin"), "/rifle_ring_", ftos(bullets)), sz * wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
+                               drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/rifle_ring_", ftos(bullets)), sz * wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
 
 #define CROSSHAIR_DO_BLUR(M,sz,wcross_name,wcross_alpha) \
                                do \
@@ -1190,6 +1189,18 @@ void CSQC_common_hud(void)
        switch(hud)
        {
                case HUD_NORMAL:
+                       // do some accuracy var caching
+                       float i;
+                       if(!(gametype == GAME_RACE || gametype == GAME_CTS))
+                       {
+                               acc_levels = tokenize(cvar_string("hud_panel_weapons_accuracy_color_levels"));
+                               if (acc_levels > MAX_ACCURACY_LEVELS)
+                                       acc_levels = MAX_ACCURACY_LEVELS;
+
+                               for (i = 0; i < acc_levels; ++i)
+                                       acc_lev[i] = stof(argv(i));
+                       }
+
                        // hud first
                        HUD_Main();
 
index dbd8ab2ad89fd7429a8b8349ccd54634e8aacd16..536ab7c6ec0c3670ebe6d55bef639f0483cf11e1 100644 (file)
@@ -1,6 +1,8 @@
-.vector HookStart;
-.vector HookEnd;
-.float HookKillTime;
+.float HookType; // ENT_CLIENT_*
+.vector origin;
+.vector velocity;
+.float HookSound;
+.float HookSilent;
 
 void Draw_CylindricLine(vector from, vector to, float thickness, string texture, float aspect, float shift, vector rgb, float alpha, float drawflag)
 {
@@ -47,76 +49,193 @@ void Draw_GrapplingHook_trace_callback(vector start, vector hit, vector end)
 void Draw_GrapplingHook()
 {
        vector a, b;
-       string tex;
+       string tex, snd;
        vector rgb;
        float t;
+       float s;
+       vector vs;
 
-       if(time >= self.HookKillTime)
-               return;
-       if(self.sv_entnum == player_localentnum - 1)
-               a = view_origin + view_forward * hook_shotorigin_x + view_right * hook_shotorigin_y + view_up * hook_shotorigin_z;
+       InterpolateOrigin_Do();
+
+       s = cvar("cl_gunalign");
+       if(s != 1 && s != 2 && s != 4)
+               s = 3; // default value
+       --s;
+       switch(self.HookType)
+       {
+               default:
+               case ENT_CLIENT_HOOK:
+                       vs = hook_shotorigin[s];
+                       break;
+               case ENT_CLIENT_LGBEAM:
+                       vs = electro_shotorigin[s];
+                       break;
+               case ENT_CLIENT_GAUNTLET:
+                       vs = gauntlet_shotorigin[s];
+                       break;
+       }
+
+       if((self.owner.sv_entnum == player_localentnum - 1))
+       {
+               switch(self.HookType)
+               {
+                       default:
+                       case ENT_CLIENT_HOOK:
+                               a = view_origin + view_forward * vs_x + view_right * -vs_y + view_up * vs_z;
+                               b = self.origin;
+                               break;
+                       case ENT_CLIENT_LGBEAM:
+                       case ENT_CLIENT_GAUNTLET:
+                               b = view_origin + view_forward * vlen(self.velocity - self.origin); // honor original length of beam!
+                               WarpZone_TraceLine(view_origin, b, MOVE_NORMAL, world);
+                               b = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos);
+                               a = view_origin + view_forward * vs_x + view_right * -vs_y + view_up * vs_z;
+                               break;
+               }
+       }
        else
-               a = self.HookStart;
-       b = self.HookEnd;
+       {
+               switch(self.HookType)
+               {
+                       default:
+                       case ENT_CLIENT_HOOK:
+                               a = self.velocity;
+                               b = self.origin;
+                               break;
+                       case ENT_CLIENT_LGBEAM:
+                       case ENT_CLIENT_GAUNTLET:
+                               a = self.origin;
+                               b = self.velocity;
+                               break;
+               }
+       }
 
-       t = GetPlayerColorForce(self.sv_entnum);
+       t = GetPlayerColorForce(self.owner.sv_entnum);
 
-       if(t == COLOR_TEAM1)
+       switch(self.HookType)
        {
-               tex = "particles/hook_red";
-               rgb = '1 .3 .3';
+               default:
+               case ENT_CLIENT_HOOK:
+                       if(t == COLOR_TEAM1)
+                       {
+                               tex = "particles/hook_red";
+                               rgb = '1 .3 .3';
+                       }
+                       else if(t == COLOR_TEAM2)
+                       {
+                               tex = "particles/hook_blue";
+                               rgb = '.3 .3 1';
+                       }
+                       else if(t == COLOR_TEAM3)
+                       {
+                               tex = "particles/hook_yellow";
+                               rgb = '1 1 .3';
+                       }
+                       else if(t == COLOR_TEAM4)
+                       {
+                               tex = "particles/hook_pink";
+                               rgb = '1 .3 1';
+                       }
+                       else
+                       {
+                               tex = "particles/hook_green";
+                               rgb = '.3 1 .3';
+                       }
+                       break;
+               case ENT_CLIENT_LGBEAM:
+                       tex = "particles/lgbeam";
+                       rgb = '1 1 1';
+                       break;
+               case ENT_CLIENT_GAUNTLET:
+                       tex = "particles/gauntletbeam";
+                       rgb = '1 1 1';
+                       break;
        }
-       else if(t == COLOR_TEAM2)
+
+       Draw_GrapplingHook_trace_callback_tex = tex;
+       Draw_GrapplingHook_trace_callback_rnd = random();
+       WarpZone_TraceBox_ThroughZone(a, '0 0 0', '0 0 0', b, ((self.HookType == ENT_CLIENT_HOOK) ? MOVE_NOTHING : MOVE_NORMAL), world, world, Draw_GrapplingHook_trace_callback);
+       Draw_GrapplingHook_trace_callback_tex = string_null;
+
+       switch(self.HookType)
        {
-               tex = "particles/hook_blue";
-               rgb = '.3 .3 1';
+               default:
+               case ENT_CLIENT_HOOK:
+                       setorigin(self, trace_endpos); // hook endpoint!
+                       self.angles = vectoangles(trace_endpos - WarpZone_TransformOrigin(WarpZone_trace_transform, a));
+                       break;
+               case ENT_CLIENT_LGBEAM:
+               case ENT_CLIENT_GAUNTLET:
+                       setorigin(self, a); // beam origin!
+                       break;
        }
-       else if(t == COLOR_TEAM3)
+}
+
+void Remove_GrapplingHook()
+{
+       sound (self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM);
+}
+
+void Ent_ReadHook(float bIsNew, float type)
+{
+       self.HookType = type;
+
+       float sf;
+       sf = ReadByte();
+
+       self.HookSilent = (sf & 0x80);
+       self.iflags = IFLAG_VELOCITY;
+
+       InterpolateOrigin_Undo();
+
+       if(sf & 1)
        {
-               tex = "particles/hook_yellow";
-               rgb = '1 1 .3';
+               self.owner = playerslots[ReadByte() - 1];
        }
-       else if(t == COLOR_TEAM4)
+       if(sf & 2)
        {
-               tex = "particles/hook_pink";
-               rgb = '1 .3 1';
+               self.origin_x = ReadCoord();
+               self.origin_y = ReadCoord();
+               self.origin_z = ReadCoord();
+               setorigin(self, self.origin);
        }
-       else
+       if(sf & 4)
        {
-               tex = "particles/hook_green";
-               rgb = '.3 1 .3';
+               self.velocity_x = ReadCoord();
+               self.velocity_y = ReadCoord();
+               self.velocity_z = ReadCoord();
        }
 
-       Draw_GrapplingHook_trace_callback_tex = tex;
-       Draw_GrapplingHook_trace_callback_rnd = random();
-       WarpZone_TraceBox_ThroughZone(a, '0 0 0', '0 0 0', b, MOVE_NOMONSTERS, world, world, Draw_GrapplingHook_trace_callback);
-       Draw_GrapplingHook_trace_callback_tex = string_null;
+       InterpolateOrigin_Note();
+
+       if(bIsNew)
+       {
+               self.draw = Draw_GrapplingHook;
+               self.entremove = Remove_GrapplingHook;
+
+               switch(self.HookType)
+               {
+                       default:
+                       case ENT_CLIENT_HOOK:
+                               // for the model
+                               setmodel(self, "models/hook.md3");
+                               self.drawmask = MASK_NORMAL;
+                               break;
+                       case ENT_CLIENT_LGBEAM:
+                               sound (self, CHAN_PROJECTILE, "weapons/lgbeam_fly.wav", VOL_BASE, ATTN_NORM);
+                               break;
+                       case ENT_CLIENT_GAUNTLET:
+                               sound (self, CHAN_PROJECTILE, "weapons/gauntletbeam_fly.wav", VOL_BASE, ATTN_NORM);
+                               break;
+               }
+       }
 }
 
-void Net_GrapplingHook()
+void Hook_Precache()
 {
-       float i;
-       vector start, end;
-       entity p;
-
-       i = ReadShort();
-       end_x = ReadCoord();
-       end_y = ReadCoord();
-       end_z = ReadCoord();
-       start_x = ReadCoord();
-       start_y = ReadCoord();
-       start_z = ReadCoord();
-
-       if(i <= 0 || i >= 256) // not owned by a client
-               return;
-       --i;
-
-       p = playerslots[i];
-       if(!p)
-               return;
-
-       p.HookKillTime = time + 0.1;
-       p.HookStart = start;
-       p.HookEnd = end;
-       p.draw = Draw_GrapplingHook;
+       precache_sound("weapons/lgbeam_fly.wav");
+       precache_sound("weapons/gauntletbeam_fly.wav");
+       precache_model("models/hook.md3");
 }
+
+// TODO: hook: temporarily transform self.origin for drawing the model along warpzones!
index 8b1d5b450a172ad410d74d3a3828d208a92e5f8f..e8c0a0d1001f2c3ed9563f6b9f2ded15b9a0459e 100644 (file)
@@ -421,13 +421,13 @@ void HUD_Panel_ExportCfg(string cfgname)
        if(fh >= 0)
        {
                fputs(fh, strcat("seta hud_skin \"", cvar_string("hud_skin"), "\"", "\n"));
-               fputs(fh, strcat("seta hud_bg \"", cvar_string("hud_bg"), "\"", "\n"));
-               fputs(fh, strcat("seta hud_bg_color \"", cvar_string("hud_bg_color"), "\"", "\n"));
-               fputs(fh, strcat("seta hud_bg_color_team \"", cvar_string("hud_bg_color_team"), "\"", "\n"));
-               fputs(fh, strcat("seta hud_bg_alpha \"", cvar_string("hud_bg_alpha"), "\"", "\n"));
-               fputs(fh, strcat("seta hud_bg_border \"", cvar_string("hud_bg_border"), "\"", "\n"));
-               fputs(fh, strcat("seta hud_bg_padding \"", cvar_string("hud_bg_padding"), "\"", "\n"));
-               fputs(fh, strcat("seta hud_fg_alpha \"", cvar_string("hud_fg_alpha"), "\"", "\n"));
+               fputs(fh, strcat("seta hud_panel_bg \"", cvar_string("hud_panel_bg"), "\"", "\n"));
+               fputs(fh, strcat("seta hud_panel_bg_color \"", cvar_string("hud_panel_bg_color"), "\"", "\n"));
+               fputs(fh, strcat("seta hud_panel_bg_color_team \"", cvar_string("hud_panel_bg_color_team"), "\"", "\n"));
+               fputs(fh, strcat("seta hud_panel_bg_alpha \"", cvar_string("hud_panel_bg_alpha"), "\"", "\n"));
+               fputs(fh, strcat("seta hud_panel_bg_border \"", cvar_string("hud_panel_bg_border"), "\"", "\n"));
+               fputs(fh, strcat("seta hud_panel_bg_padding \"", cvar_string("hud_panel_bg_padding"), "\"", "\n"));
+               fputs(fh, strcat("seta hud_panel_fg_alpha \"", cvar_string("hud_panel_fg_alpha"), "\"", "\n"));
                fputs(fh, "\n");
 
                fputs(fh, strcat("seta hud_dock \"", cvar_string("hud_dock"), "\"", "\n"));
@@ -477,7 +477,7 @@ void HUD_Panel_ExportCfg(string cfgname)
                                        fputs(fh, strcat("seta hud_panel_", panel_name, "_complainbubble_color_unavailable \"", cvar_string(strcat("hud_panel_", panel_name, "_complainbubble_color_unavailable")), "\"", "\n"));
                                        fputs(fh, strcat("seta hud_panel_", panel_name, "_ammo_color \"", cvar_string(strcat("hud_panel_", panel_name, "_ammo_color")), "\"", "\n"));
                                        fputs(fh, strcat("seta hud_panel_", panel_name, "_ammo_alpha \"", cvar_string(strcat("hud_panel_", panel_name, "_ammo_alpha")), "\"", "\n"));
-                                       fputs(fh, strcat("seta hud_panel_", panel_name, "_aspect \"", cvar_string(strcat("hud_panel_", panel_name, "_ammo_alpha")), "\"", "\n"));
+                                       fputs(fh, strcat("seta hud_panel_", panel_name, "_aspect \"", cvar_string(strcat("hud_panel_", panel_name, "_aspect")), "\"", "\n"));
                                        break;
                                case HUD_PANEL_AMMO:
                                        fputs(fh, strcat("seta hud_panel_", panel_name, "_onlycurrent \"", cvar_string(strcat("hud_panel_", panel_name, "_onlycurrent")), "\"", "\n"));
@@ -1380,10 +1380,6 @@ float GetAmmoTypeForWep(float i)
        }
 }
 
-#define acc_color(i) stov(cvar_string(strcat("hud_panel_weapons_accuracy_color", ftos(i))))
-#define MAX_ACCURACY_LEVELS 10
-float acc_lev[MAX_ACCURACY_LEVELS];
-
 void HUD_Weapons(void)
 {
        if(!autocvar_hud_panel_weapons && !autocvar__hud_configure)
@@ -1469,17 +1465,6 @@ void HUD_Weapons(void)
        vector wpnpos;
        vector wpnsize;
 
-       float acc_levels;
-       if(autocvar_hud_panel_weapons_accuracy && !(gametype == GAME_RACE || gametype == GAME_CTS))
-       {
-               acc_levels = tokenize(cvar_string("hud_panel_weapons_accuracy_color_levels"));
-               if (acc_levels > MAX_ACCURACY_LEVELS)
-                       acc_levels = MAX_ACCURACY_LEVELS;
-
-               for (i = 0; i < acc_levels; ++i)
-                       acc_lev[i] = stof(argv(i));
-       }
-
        for(i = 0; i < weapon_cnt; ++i)
        {
                wpnpos = pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows);
@@ -2412,7 +2397,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg)
                if(WEP_VALID(w)) {
                        HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC);
                        if (alsoprint)
-                               print("^1", s1, "^1 ", Weapon_SuicideMessage(type), "\n");
+                               print("^1", sprintf(Weapon_SuicideMessage(type), strcat(s1, "^1")), "\n");
                } else if (type == DEATH_KILL) {
                        HUD_KillNotify_Push(s1, "", 0, DEATH_KILL);
                        if (alsoprint)
@@ -2452,9 +2437,9 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg)
        } else if(msg == MSG_KILL) {
                w = DEATH_WEAPONOF(type);
                if(WEP_VALID(w)) {
-                       HUD_KillNotify_Push(s2, s1, 1, w);
+                       HUD_KillNotify_Push(s1, s2, 1, type);
                        if (alsoprint)
-                               print("^1", s1, "^1 ", Weapon_KillMessage(type), "\n");
+                               print("^1", sprintf(Weapon_KillMessage(type), strcat(s2, "^1"), strcat(s1, "^1")), "\n"); // default order: victim, killer
                }
                else if(type == KILL_TEAM_RED || type == KILL_TEAM_BLUE || type == KILL_TEAM_SPREE) {
                        HUD_KillNotify_Push(s1, s2, 1, type);
@@ -2879,6 +2864,9 @@ void HUD_Notify (void)
                                a = 0;
                }
 
+               float w;
+               w = DEATH_WEAPONOF(killnotify_deathtype[j]);
+
                // TODO: maybe print in team colors?
                //
                // Y [used by] X
@@ -3009,9 +2997,17 @@ void HUD_Notify (void)
                        {
                                s = "weaponelectro";
                        }
-                       else if(WEP_VALID(killnotify_deathtype[j]))
+                       else if(killnotify_deathtype[j] & HITTYPE_SECONDARY && w == WEP_LASER)
+                       {
+                               s = "notify_melee_laser";
+                       }
+                       else if(killnotify_deathtype[j] & HITTYPE_SECONDARY && w == WEP_SHOTGUN)
+                       {
+                               s = "notify_melee_shotgun";
+                       }
+                       else if(WEP_VALID(w))
                        {
-                               self = get_weaponinfo(killnotify_deathtype[j]);
+                               self = get_weaponinfo(w);
                                s = strcat("weapon", self.netname);
                        }
                        else if(killnotify_deathtype[j] == KILL_TEAM_RED)
index 11a039bec6e69eaed5ffbd811c4e1e30c6b4a3a7..89f5edbdcc3228d8d128d4a1b69f87dbf80181fc 100644 (file)
@@ -16,6 +16,11 @@ float scoreboard_bottom;
 float weapon_hits[WEP_MAXCOUNT];
 float weapon_fired[WEP_MAXCOUNT];
 
+#define acc_color(i) stov(cvar_string(strcat("hud_panel_weapons_accuracy_color", ftos(i))))
+#define MAX_ACCURACY_LEVELS 10
+float acc_lev[MAX_ACCURACY_LEVELS];
+float acc_levels;
+
 float complain_weapon;
 string complain_weapon_name;
 float complain_weapon_type;
index e1f325a6798003f93b524defef46167617f063cf..6c27a5251eeb17b8113af5193810bfe5353e69ff 100644 (file)
@@ -317,8 +317,8 @@ void Ent_Projectile()
                        case PROJECTILE_ELECTRO:
                                // only new engines support sound moving with object
                                loopsound(self, CHAN_PROJECTILE, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
-                               self.mins = '0 0 -3';
-                               self.maxs = '0 0 -3';
+                               self.mins = '0 0 -4';
+                               self.maxs = '0 0 -4';
                                self.move_movetype = MOVETYPE_BOUNCE;
                                self.move_touch = SUB_Null;
                                break;
index 5efa9118d62bc9a32e4406a939aca739fdaacac4..29fb20642a90fbb514f7a1244c0d79b4541b1dcb 100644 (file)
@@ -957,7 +957,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
                        weapon_alpha = 0.2 * scoreboard_alpha_fg;
 
                // weapon icon
-               drawpic_aspect(pos, strcat("gfx/hud/", cvar_string("hud_skin"), "/weapon", self.netname), '1 0 0' * sbwidth * (1/weapon_cnt) + '0 1 0' * height * (2/3), '1 1 1', weapon_alpha, DRAWFLAG_NORMAL);
+               drawpic_aspect_skin(pos, strcat("weapon", self.netname), '1 0 0' * sbwidth * (1/weapon_cnt) + '0 1 0' * height * (2/3), '1 1 1', weapon_alpha, DRAWFLAG_NORMAL);
                // the accuracy
                if(weapon_damage) {
                        weapons_with_stats += 1;
@@ -969,19 +969,26 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
                        float padding;
                        padding = ((sbwidth/weapon_cnt) - stringwidth(s, FALSE, '1 0 0' * fontsize)) / 2; // center the accuracy value
 
-                       // yellow_accuracy = value at which accuracy becomes yellow
-                       if(weapon_stats >= 100) {
-                               rgb_x = 0;
-                               rgb_y = 1;
-                       }
-                       else if(weapon_stats > autocvar_hud_panel_weapons_accuracy_yellow) {
-                               rgb_x = 1 - (weapon_stats-autocvar_hud_panel_weapons_accuracy_yellow)/(100-autocvar_hud_panel_weapons_accuracy_yellow); // red value between 1 -> 0
-                               rgb_y = 1;
-                       } else {
-                               rgb_x = 1;
-                               rgb_y = weapon_stats/autocvar_hud_panel_weapons_accuracy_yellow; // green value between 0 -> 1
+                       float weapon_hit, weapon_damage;
+                       weapon_damage = weapon_fired[self.weapon-WEP_FIRST];
+                       if(weapon_damage)
+                       {
+                               weapon_hit = weapon_hits[self.weapon-WEP_FIRST];
+                               weapon_stats = floor(100 * weapon_hit / weapon_damage);
                        }
-                       rgb_z = 0;
+
+                       // find the max level lower than weapon_stats
+                       float j;
+                       j = acc_levels-1;
+                       while ( j && weapon_stats < acc_lev[j] )
+                               --j;
+
+                       // inject color j+1 in color j, how much depending on how much weapon_stats is higher than level j
+                       float factor;
+                       factor = (weapon_stats - acc_lev[j]) / (acc_lev[j+1] - acc_lev[j]);
+                       rgb = acc_color(j);
+                       rgb = rgb + factor * (acc_color(j+1) - rgb);
+
                        drawstring(pos + '1 0 0' * padding + '0 1 0' * height * (2/3), s, '1 1 0' * fontsize, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
                }
                pos_x += sbwidth/weapon_cnt * rows;
index d48cff2227d02fdb0066aec51a8cfa3bb9cc6825..7a5cf3447b1a29d502953812c276d533bb8fbb78 100644 (file)
@@ -59,6 +59,7 @@ const float TE_CSQC_ANNOUNCE = 110;
 const float TE_CSQC_TARGET_MUSIC = 111;
 const float TE_CSQC_NOTIFY = 112;
 const float TE_CSQC_WEAPONCOMPLAIN = 113;
+const float TE_CSQC_CAMPINGRIFLE_SCOPE = 115;
 
 const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder
 const float RACE_NET_CHECKPOINT_CLEAR = 1;
@@ -105,6 +106,9 @@ const float ENT_CLIENT_TUBANOTE = 23;
 const float ENT_CLIENT_WARPZONE = 24;
 const float ENT_CLIENT_WARPZONE_CAMERA = 25;
 const float ENT_CLIENT_TRIGGER_MUSIC = 26;
+const float ENT_CLIENT_HOOK = 27;
+const float ENT_CLIENT_LGBEAM = 28;
+const float ENT_CLIENT_GAUNTLET = 29;
 
 const float ENT_CLIENT_TURRET = 40;
 
index f56cc74661bbb6ab75c677d66b9d2e7e80467446..3633553044c314c4fbc7c846ad6ea7e0e53079ec 100644 (file)
@@ -70,10 +70,14 @@ void XonoticColorpickerString_draw(entity me)
 
        SUPER(XonoticColorpickerString).draw(me);
 
+       vector sz;
+       sz = draw_PictureSize(strcat(me.src, "_selected"));
+       sz = globalToBoxSize(sz, draw_scale);
+
        if(me.disabled)
                me.prevcoords = '1 1 0';
        else
-               draw_Picture(me.imgOrigin + me.prevcoords - '0.05 0.125 0', strcat(me.src, "_selected"), '0.1 0.25 0', '1 1 1', 1);
+               draw_Picture(me.imgOrigin + me.prevcoords - 0.5 * sz, strcat(me.src, "_selected"), sz, '1 1 1', 1);
        draw_alpha = save;
 }
 #endif
index 0c83025600c94105832cf9232e0bdb437aa6bbad..7d32914ddae7b437774f767c0882c7dc59e66179 100644 (file)
@@ -78,6 +78,6 @@ void XonoticHUDPressedKeysDialog_fill(entity me)
        me.TR(me);
                me.TDempty(me, 0.2);
                me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Forced aspect:"));
-                       me.TD(me, 1, 2.6, e = makeXonoticSlider(0.25, 4, 0.25, "hud_panel_pressedkeys_aspect"));
+                       me.TD(me, 1, 2.6, e = makeXonoticSlider(0.2, 4, 0.1, "hud_panel_pressedkeys_aspect"));
 }
 #endif
index b72a30b1e7a9fe7f9c9ae0f2be474a6d42a27b10..d3a21c6bf650686a92e81915e5145e39ead70535 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticHUDExitDialog) EXTENDS(XonoticRootDialog)
        ATTRIB(XonoticHUDExitDialog, title, string, "Panel HUD Setup")
        ATTRIB(XonoticHUDExitDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT)
        ATTRIB(XonoticHUDExitDialog, intendedWidth, float, 0.4)
-       ATTRIB(XonoticHUDExitDialog, rows, float, 20)
+       ATTRIB(XonoticHUDExitDialog, rows, float, 18)
        ATTRIB(XonoticHUDExitDialog, columns, float, 4)
        ATTRIB(XonoticHUDExitDialog, name, string, "HUDExit")
 ENDCLASS(XonoticHUDExitDialog)
@@ -20,12 +20,15 @@ void XonoticHUDExitDialog_fill(entity me)
        me.TR(me);
                me.TD(me, 1, 4, makeXonoticTextLabel(0, "Panel background defaults:"));
        me.TR(me);
-               me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Background:"));
+               me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:"));
+                       me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_bg"))));
+                               e.addValue(e, "Disable", "0");
+                               e.addValue(e, "border_default", "border_default");
+                               e.configureXonoticTextSliderValues(e);
        me.TR(me);
                me.TDempty(me, 0.2);
                me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:"));
                me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_panel_bg_color"));
-                       setDependentStringNotEqual(e, "hud_panel_bg_color", "");
        me.TR(me);
        me.TR(me);
                me.TDempty(me, 0.2);
@@ -62,17 +65,28 @@ void XonoticHUDExitDialog_fill(entity me)
                                e.configureXonoticTextSliderValues(e);
 
        me.TR(me);
-               me.TD(me, 1, 4, makeXonoticTextLabel(0, "Dock settings:"));
+               me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "HUD Dock:"));
+                       me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock"));
+                               e.addValue(e, "Disable", "0");
+                               e.addValue(e, "Small", "dock_small");
+                               e.addValue(e, "Medium", "dock");
+                               e.addValue(e, "Large", "dock_large");
+                               e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:"));
+               me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_dock_color"));
+       me.TR(me);
        me.TR(me);      
                me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Alpha:"));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:"));
                        me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock_alpha"));
                                for(i = 1; i <= 10; ++i)
                                        e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10)));
                                e.configureXonoticTextSliderValues(e);
        me.TR(me);
                me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Team color:"));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team color:"));
                        me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock_color_team"));
                                e.addValue(e, "Disable", "0");
                                for(i = 1; i <= 10; ++i)
index 36334b27127b218ece882fbbc6ea47da559fdad9..66b58df8c356f6f57900ccd9d510bc8dce07c5f4 100644 (file)
@@ -1,3 +1,4 @@
 float autocvar_sv_cheats;
 float autocvar_g_bastet;
 var float autocvar_g_movement_highspeed = 1;
+var float autocvar_sys_ticrate;
index 1543ac156187e0f4c2497ca2b203dfc71293a5b6..9244c93eb0f1016782db538b9b184e3c76821609 100644 (file)
@@ -1063,9 +1063,18 @@ float ClientInit_SendEntity(entity to, float sf)
 {
        WriteByte(MSG_ENTITY, ENT_CLIENT_INIT);
        WriteByte(MSG_ENTITY, g_nexball_meter_period * 32);
-       WriteCoord(MSG_ENTITY, hook_shotorigin_x);
-       WriteCoord(MSG_ENTITY, hook_shotorigin_y);
-       WriteCoord(MSG_ENTITY, hook_shotorigin_z);
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[0]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[1]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[2]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[3]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[0]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[1]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[2]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[3]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[0]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[1]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[2]));
+       WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[3]));
        if(sv_foginterval && world.fog != "")
                WriteString(MSG_ENTITY, world.fog);
        else
@@ -2792,7 +2801,7 @@ void PlayerPreThink (void)
        }
 
        if(!zoomstate_set)
-               SetZoomState(self.BUTTON_ZOOM || (self.BUTTON_ATCK2 && self.weapon == WEP_NEX));
+               SetZoomState(self.BUTTON_ZOOM || (self.BUTTON_ATCK2 && self.weapon == WEP_NEX) || (self.BUTTON_ATCK2 && self.weapon == WEP_CAMPINGRIFLE && cvar("g_balance_campingrifle_secondary") == 0));
 
        float oldspectatee_status;
        oldspectatee_status = self.spectatee_status;
index 3f8581a432df5685604aaf365af5cf449c9b25e0..925d53fa7e3cc218cfeba460f432969db25d7a47 100644 (file)
@@ -125,14 +125,14 @@ void W_HitPlotAnalysis(entity player, vector screenforward, vector screenright,
 
 vector w_shotorg;
 vector w_shotdir;
+vector w_shotend;
 
 // this function calculates w_shotorg and w_shotdir based on the weapon model
 // offset, trueaim and antilag, and won't put w_shotorg inside a wall.
 // make sure you call makevectors first (FIXME?)
-void W_SetupShot_Dir_ProjectileSize(entity ent, vector s_forward, vector mi, vector ma, float antilag, float recoil, string snd, float maxdamage)
+void W_SetupShot_Dir_ProjectileSize_Range(entity ent, vector s_forward, vector mi, vector ma, float antilag, float recoil, string snd, float maxdamage, float range)
 {
        float nudge = 1; // added to traceline target and subtracted from result
-       local vector trueaimpoint;
        local float oldsolid;
        vector vecs, dv;
        oldsolid = ent.dphitcontentsmask;
@@ -141,17 +141,17 @@ void W_SetupShot_Dir_ProjectileSize(entity ent, vector s_forward, vector mi, vec
        else
                ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
        if(antilag)
-               WarpZone_traceline_antilag(world, ent.origin + ent.view_ofs, ent.origin + ent.view_ofs + s_forward * MAX_SHOT_DISTANCE, MOVE_NORMAL, ent, ANTILAG_LATENCY(ent));
+               WarpZone_traceline_antilag(world, ent.origin + ent.view_ofs, ent.origin + ent.view_ofs + s_forward * range, MOVE_NORMAL, ent, ANTILAG_LATENCY(ent));
                // passing world, because we do NOT want it to touch dphitcontentsmask
        else
-               WarpZone_TraceLine(ent.origin + ent.view_ofs, ent.origin + ent.view_ofs + s_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, ent);
+               WarpZone_TraceLine(ent.origin + ent.view_ofs, ent.origin + ent.view_ofs + s_forward * range, MOVE_NOMONSTERS, ent);
        ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
 
        vector vf, vr, vu;
        vf = v_forward;
        vr = v_right;
        vu = v_up;
-       trueaimpoint = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos); // warpzone support
+       w_shotend = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos); // warpzone support
        v_forward = vf;
        v_right = vr;
        v_up = vu;
@@ -169,17 +169,13 @@ void W_SetupShot_Dir_ProjectileSize(entity ent, vector s_forward, vector mi, vec
        W_HitPlotAnalysis(ent, v_forward, v_right, v_up);
 
        if(ent.weaponentity.movedir_x > 0)
-       {
                vecs = ent.weaponentity.movedir;
-               vecs_y = -vecs_y;
-       }
        else
                vecs = '0 0 0';
-
        if(debug_shotorg != '0 0 0')
                vecs = debug_shotorg;
 
-       dv = v_right * vecs_y + v_up * vecs_z;
+       dv = v_right * -vecs_y + v_up * vecs_z;
        w_shotorg = ent.origin + ent.view_ofs + dv;
 
        // now move the shotorg forward as much as requested if possible
@@ -194,17 +190,17 @@ void W_SetupShot_Dir_ProjectileSize(entity ent, vector s_forward, vector mi, vec
                tracebox(w_shotorg, mi, ma, w_shotorg + v_forward * (vecs_x + nudge), MOVE_NORMAL, ent);
        w_shotorg = trace_endpos - v_forward * nudge;
        // calculate the shotdir from the chosen shotorg
-       w_shotdir = normalize(trueaimpoint - w_shotorg);
+       w_shotdir = normalize(w_shotend - w_shotorg);
 
        if (antilag)
        if (!ent.cvar_cl_noantilag)
        {
                if (cvar("g_antilag") == 1) // switch to "ghost" if not hitting original
                {
-                       traceline(w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, MOVE_NORMAL, ent);
+                       traceline(w_shotorg, w_shotorg + w_shotdir * range, MOVE_NORMAL, ent);
                        if (!trace_ent.takedamage)
                        {
-                               traceline_antilag_force (ent, w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, MOVE_NORMAL, ent, ANTILAG_LATENCY(ent));
+                               traceline_antilag_force (ent, w_shotorg, w_shotorg + w_shotdir * range, MOVE_NORMAL, ent, ANTILAG_LATENCY(ent));
                                if (trace_ent.takedamage && trace_ent.classname == "player")
                                {
                                        entity e;
@@ -225,7 +221,7 @@ void W_SetupShot_Dir_ProjectileSize(entity ent, vector s_forward, vector mi, vec
                        {
                                // verify that the shot would miss without antilag
                                // (avoids an issue where guns would always shoot at their origin)
-                               traceline(w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, MOVE_NORMAL, ent);
+                               traceline(w_shotorg, w_shotorg + w_shotdir * range, MOVE_NORMAL, ent);
                                if (!trace_ent.takedamage)
                                {
                                        // verify that the shot would hit if altered
@@ -252,11 +248,16 @@ void W_SetupShot_Dir_ProjectileSize(entity ent, vector s_forward, vector mi, vec
        if (ent.items & IT_STRENGTH)
        if (!g_minstagib)
                sound (ent, CHAN_AUTO, "weapons/strength_fire.wav", VOL_BASE, ATTN_NORM);
+
+       // nudge w_shotend so a trace to w_shotend hits
+       w_shotend = w_shotend + normalize(w_shotend - w_shotorg) * nudge;
 };
 
+#define W_SetupShot_Dir_ProjectileSize(ent,s_forward,mi,ma,antilag,recoil,snd,maxdamage) W_SetupShot_Dir_ProjectileSize_Range(ent, s_forward, mi, ma, antilag, recoil, snd, maxdamage, MAX_SHOT_DISTANCE)
 #define W_SetupShot_ProjectileSize(ent,mi,ma,antilag,recoil,snd,maxdamage) W_SetupShot_Dir_ProjectileSize(ent, v_forward, mi, ma, antilag, recoil, snd, maxdamage)
 #define W_SetupShot_Dir(ent,s_forward,antilag,recoil,snd,maxdamage) W_SetupShot_Dir_ProjectileSize(ent, s_forward, '0 0 0', '0 0 0', antilag, recoil, snd, maxdamage)
 #define W_SetupShot(ent,antilag,recoil,snd,maxdamage) W_SetupShot_ProjectileSize(ent, '0 0 0', '0 0 0', antilag, recoil, snd, maxdamage)
+#define W_SetupShot_Range(ent,antilag,recoil,snd,maxdamage,range) W_SetupShot_Dir_ProjectileSize_Range(ent, v_forward, '0 0 0', '0 0 0', antilag, recoil, snd, maxdamage, range)
 
 void LaserTarget_Think()
 {
@@ -391,228 +392,258 @@ vector weapon_adjust = '10 0 -15';
  *    g_tuba.md3 - pickup model
  */
 
-void CL_Weaponentity_Think()
+// writes:
+//   self.origin, self.angles
+//   self.weaponentity
+//   self.movedir, self.view_ofs
+//   attachment stuff
+//   anim stuff
+// to free:
+//   call again with ""
+//   remove the ent
+void CL_WeaponEntity_SetModel(string name)
 {
-       float tb, v_shot_idx;
-       self.nextthink = time;
-       if (intermission_running)
-               self.frame = self.anim_idle_x;
-       if (self.owner.weaponentity != self)
+       string animfilename;
+       float animfile;
+       float v_shot_idx;
+       if (name != "")
        {
-               if (self.weaponentity)
-                       remove(self.weaponentity);
-               remove(self);
-               return;
-       }
-       if (self.owner.deadflag != DEAD_NO)
-       {
-               self.model = "";
+               // if there is a child entity, hide it until we're sure we use it
                if (self.weaponentity)
                        self.weaponentity.model = "";
-               return;
-       }
-       if (self.cnt != self.owner.weapon || self.dmg != self.owner.modelindex || self.deadflag != self.owner.deadflag)
-       {
-               self.cnt = self.owner.weapon;
-               self.dmg = self.owner.modelindex;
-               self.deadflag = self.owner.deadflag;
+               setmodel(self, strcat("models/weapons/v_", name, ".md3")); // precision set below
+               v_shot_idx = gettagindex(self, "shot"); // used later
+               if(!v_shot_idx)
+                       v_shot_idx = gettagindex(self, "tag_shot");
 
-               string animfilename;
-               float animfile;
-               if (self.owner.weaponname != "")
+               if(qcweaponanimation)
                {
-                       // if there is a child entity, hide it until we're sure we use it
-                       if (self.weaponentity)
-                               self.weaponentity.model = "";
-                       setmodel(self, strcat("models/weapons/v_", self.owner.weaponname, ".md3")); // precision set below
-                       v_shot_idx = gettagindex(self, "shot"); // used later
-                       if(!v_shot_idx)
-                               v_shot_idx = gettagindex(self, "tag_shot");
+                       self.angles = '0 0 0';
+                       makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0' + self.angles_z * '0 0 1');
+                       self.movedir = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust;
+                       self.movedir_x += 32;
+                       self.spawnorigin = self.movedir;
+                       // oldorigin - not calculated here
+               }
+               else
+               {
+                       setmodel(self, strcat("models/weapons/h_", name, ".iqm")); // precision set below
+                       animfilename = strcat("models/weapons/h_", name, ".iqm.animinfo");
+                       animfile = fopen(animfilename, FILE_READ);
+                       // preset some defaults that work great for renamed zym files (which don't need an animinfo)
+                       self.anim_fire1  = '0 1 0.01';
+                       self.anim_fire2  = '1 1 0.01';
+                       self.anim_idle   = '2 1 0.01';
+                       self.anim_reload = '3 1 0.01';
+                       if (animfile >= 0)
+                       {
+                               animparseerror = FALSE;
+                               self.anim_fire1  = animparseline(animfile);
+                               self.anim_fire2  = animparseline(animfile);
+                               self.anim_idle   = animparseline(animfile);
+                               self.anim_reload = animparseline(animfile);
+                               fclose(animfile);
+                               if (animparseerror)
+                                       print("Parse error in ", animfilename, ", some player animations are broken\n");
+                       }
 
-                       if(qcweaponanimation)
+                       // if we have a "weapon" tag, let's attach the v_ model to it ("invisible hand" style model)
+                       // if we don't, this is a "real" animated model
+                       if(gettagindex(self, "weapon"))
                        {
-                               self.angles = '0 0 0';
-                               makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0' + self.angles_z * '0 0 1');
-                               self.movedir = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust;
-                               self.movedir_x += 32;
-                               self.spawnorigin = self.movedir;
-                               // oldorigin - not calculated here
+                               if (!self.weaponentity)
+                                       self.weaponentity = spawn();
+                               setmodel(self.weaponentity, strcat("models/weapons/v_", name, ".md3")); // precision does not matter
+                               setattachment(self.weaponentity, self, "weapon");
+                       }
+                       else if(gettagindex(self, "tag_weapon"))
+                       {
+                               if (!self.weaponentity)
+                                       self.weaponentity = spawn();
+                               setmodel(self.weaponentity, strcat("models/weapons/v_", name, ".md3")); // precision does not matter
+                               setattachment(self.weaponentity, self, "tag_weapon");
                        }
                        else
                        {
-                               setmodel(self, strcat("models/weapons/h_", self.owner.weaponname, ".iqm")); // precision set below
-                               animfilename = strcat("models/weapons/h_", self.owner.weaponname, ".iqm.animinfo");
-                               animfile = fopen(animfilename, FILE_READ);
-                               // preset some defaults that work great for renamed zym files (which don't need an animinfo)
-                               self.anim_fire1  = '0 1 0.01';
-                               self.anim_fire2  = '1 1 0.01';
-                               self.anim_idle   = '2 1 0.01';
-                               self.anim_reload = '3 1 0.01';
-                               if (animfile >= 0)
-                               {
-                                       animparseerror = FALSE;
-                                       self.anim_fire1  = animparseline(animfile);
-                                       self.anim_fire2  = animparseline(animfile);
-                                       self.anim_idle   = animparseline(animfile);
-                                       self.anim_reload = animparseline(animfile);
-                                       fclose(animfile);
-                                       if (animparseerror)
-                                               print("Parse error in ", animfilename, ", some player animations are broken\n");
-                               }
-
-                               // if we have a "weapon" tag, let's attach the v_ model to it ("invisible hand" style model)
-                               // if we don't, this is a "real" animated model
-                               if(gettagindex(self, "weapon"))
-                               {
-                                       if (!self.weaponentity)
-                                               self.weaponentity = spawn();
-                                       setmodel(self.weaponentity, strcat("models/weapons/v_", self.owner.weaponname, ".md3")); // precision does not matter
-                                       setattachment(self.weaponentity, self, "weapon");
-                               }
-                               else if(gettagindex(self, "tag_weapon"))
-                               {
-                                       if (!self.weaponentity)
-                                               self.weaponentity = spawn();
-                                       setmodel(self.weaponentity, strcat("models/weapons/v_", self.owner.weaponname, ".md3")); // precision does not matter
-                                       setattachment(self.weaponentity, self, "tag_weapon");
-                               }
-                               else
-                               {
-                                       if(self.weaponentity)
-                                               remove(self.weaponentity);
-                                       self.weaponentity = world;
-                               }
+                               if(self.weaponentity)
+                                       remove(self.weaponentity);
+                               self.weaponentity = world;
+                       }
 
-                               setorigin(self,'0 0 0');
-                               self.angles = '0 0 0';
-                               self.frame = 0;
-                               self.viewmodelforclient = world;
+                       setorigin(self,'0 0 0');
+                       self.angles = '0 0 0';
+                       self.frame = 0;
+                       self.viewmodelforclient = world;
 
-                               float idx;
+                       float idx;
 
-                               if(v_shot_idx) // v_ model attached to invisible h_ model
+                       if(v_shot_idx) // v_ model attached to invisible h_ model
+                       {
+                               self.movedir = gettaginfo(self.weaponentity, v_shot_idx);
+                       }
+                       else
+                       {
+                               idx = gettagindex(self, "shot");
+                               if(!idx)
+                                       idx = gettagindex(self, "tag_shot");
+                               if(idx)
+                                       self.movedir = gettaginfo(self, idx);
+                               else
                                {
-                                       self.movedir = gettaginfo(self.weaponentity, v_shot_idx);
+                                       print("WARNING: weapon model ", self.model, " does not support the 'shot' tag, will display shots TOTALLY wrong\n");
+                                       self.movedir = '0 0 0';
                                }
+                       }
+
+                       if(self.weaponentity) // v_ model attached to invisible h_ model
+                       {
+                               idx = gettagindex(self.weaponentity, "shell");
+                               if(!idx)
+                                       idx = gettagindex(self.weaponentity, "tag_shell");
+                               if(idx)
+                                       self.spawnorigin = gettaginfo(self.weaponentity, idx);
+                       }
+                       else
+                               idx = 0;
+                       if(!idx)
+                       {
+                               idx = gettagindex(self, "shell");
+                               if(!idx)
+                                       idx = gettagindex(self, "tag_shell");
+                               if(idx)
+                                       self.spawnorigin = gettaginfo(self, idx);
                                else
                                {
-                                       idx = gettagindex(self, "shot");
-                                       if(!idx)
-                                               idx = gettagindex(self, "tag_shot");
-                                       if(idx)
-                                               self.movedir = gettaginfo(self, idx);
-                                       else
-                                       {
-                                               print("WARNING: weapon model ", self.model, " does not support the 'shot' tag, will display shots TOTALLY wrong\n");
-                                               self.movedir = '0 0 0';
-                                       }
+                                       print("WARNING: weapon model ", self.model, " does not support the 'shell' tag, will display casings wrong\n");
+                                       self.spawnorigin = self.movedir;
                                }
+                       }
 
-                               if(self.weaponentity) // v_ model attached to invisible h_ model
+                       if(v_shot_idx)
+                       {
+                               self.oldorigin = '0 0 0'; // use regular attachment
+                       }
+                       else
+                       {
+                               if(self.weaponentity)
                                {
-                                       idx = gettagindex(self.weaponentity, "shell");
+                                       idx = gettagindex(self, "weapon");
                                        if(!idx)
-                                               idx = gettagindex(self.weaponentity, "tag_shell");
-                                       if(idx)
-                                               self.spawnorigin = gettaginfo(self.weaponentity, idx);
+                                               idx = gettagindex(self, "tag_weapon");
                                }
                                else
-                                       idx = 0;
-                               if(!idx)
                                {
-                                       idx = gettagindex(self, "shell");
+                                       idx = gettagindex(self, "handle");
                                        if(!idx)
-                                               idx = gettagindex(self, "tag_shell");
-                                       if(idx)
-                                               self.spawnorigin = gettaginfo(self, idx);
-                                       else
-                                       {
-                                               print("WARNING: weapon model ", self.model, " does not support the 'shell' tag, will display casings wrong\n");
-                                               self.spawnorigin = self.movedir;
-                                       }
+                                               idx = gettagindex(self, "tag_handle");
                                }
-
-                               if(v_shot_idx)
+                               if(idx)
                                {
-                                       self.oldorigin = '0 0 0'; // use regular attachment
+                                       self.oldorigin = self.movedir - gettaginfo(self, idx);
                                }
                                else
                                {
-                                       if(self.weaponentity)
-                                       {
-                                               idx = gettagindex(self, "weapon");
-                                               if(!idx)
-                                                       idx = gettagindex(self, "tag_weapon");
-                                       }
-                                       else
-                                       {
-                                               idx = gettagindex(self, "handle");
-                                               if(!idx)
-                                                       idx = gettagindex(self, "tag_handle");
-                                       }
-                                       if(idx)
-                                       {
-                                               self.oldorigin = self.movedir - gettaginfo(self, idx);
-                                       }
-                                       else
-                                       {
-                                               print("WARNING: weapon model ", self.model, " does not support the 'handle' tag and neither does the v_ model support the 'shot' tag, will display muzzle flashes TOTALLY wrong\n");
-                                               self.oldorigin = '0 0 0'; // there is no way to recover from this
-                                       }
+                                       print("WARNING: weapon model ", self.model, " does not support the 'handle' tag and neither does the v_ model support the 'shot' tag, will display muzzle flashes TOTALLY wrong\n");
+                                       self.oldorigin = '0 0 0'; // there is no way to recover from this
                                }
-
-                               self.viewmodelforclient = self.owner;
                        }
+
+                       self.viewmodelforclient = self.owner;
                }
-               else
-               {
-                       self.model = "";
-                       if(self.weaponentity)
-                               remove(self.weaponentity);
-                       self.weaponentity = world;
-                       self.movedir = '0 0 0';
-                       self.spawnorigin = '0 0 0';
-                       self.oldorigin = '0 0 0';
-                       self.anim_fire1  = '0 1 0.01';
-                       self.anim_fire2  = '0 1 0.01';
-                       self.anim_idle   = '0 1 0.01';
-                       self.anim_reload = '0 1 0.01';
-               }
+       }
+       else
+       {
+               self.model = "";
+               if(self.weaponentity)
+                       remove(self.weaponentity);
+               self.weaponentity = world;
+               self.movedir = '0 0 0';
+               self.spawnorigin = '0 0 0';
+               self.oldorigin = '0 0 0';
+               self.anim_fire1  = '0 1 0.01';
+               self.anim_fire2  = '0 1 0.01';
+               self.anim_idle   = '0 1 0.01';
+               self.anim_reload = '0 1 0.01';
+       }
 
-               self.view_ofs = '0 0 0';
+       self.view_ofs = '0 0 0';
 
-               if(self.movedir_x >= 0)
-               {
-                       vector v0;
-                       v0 = self.movedir;
-                       self.movedir = shotorg_adjust(v0, FALSE, FALSE);
-                       self.view_ofs = shotorg_adjust(v0, FALSE, TRUE) - v0;
-               }
-               self.owner.stat_shotorg = compressShotOrigin(self.movedir);
-               self.movedir = decompressShotOrigin(self.owner.stat_shotorg); // make them match perfectly
+       if(self.movedir_x >= 0)
+       {
+               vector v0;
+               v0 = self.movedir;
+               self.movedir = shotorg_adjust(v0, FALSE, FALSE);
+               self.view_ofs = shotorg_adjust(v0, FALSE, TRUE) - v0;
+       }
+       self.owner.stat_shotorg = compressShotOrigin(self.movedir);
+       self.movedir = decompressShotOrigin(self.owner.stat_shotorg); // make them match perfectly
 
-               self.spawnorigin += self.view_ofs; // offset the casings origin by the same amount
+       self.spawnorigin += self.view_ofs; // offset the casings origin by the same amount
 
-               // check if an instant weapon switch occurred
-               if (qcweaponanimation)
+       // check if an instant weapon switch occurred
+       if (qcweaponanimation)
+       {
+               if (self.state == WS_READY)
                {
-                       if (self.state == WS_READY)
-                       {
-                               self.angles = '0 0 0';
-                               makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0' + self.angles_z * '0 0 1');
-                               setorigin(self, QCWEAPONANIMATION_ORIGIN(self));
-                       }
+                       self.angles = '0 0 0';
+                       makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0' + self.angles_z * '0 0 1');
+                       setorigin(self, QCWEAPONANIMATION_ORIGIN(self));
                }
-               else
-                       setorigin(self, self.view_ofs);
-               // reset animstate now
-               self.wframe = WFRAME_IDLE;
-               self.weapon_morph0time = 0;
-               self.weapon_morph1time = 0;
-               self.weapon_morph2time = 0;
-               self.weapon_morph3time = 0;
-               self.weapon_morph4time = 0;
-               setanim(self, self.anim_idle, TRUE, FALSE, TRUE);
+       }
+       else
+               setorigin(self, self.view_ofs);
+       // reset animstate now
+       self.wframe = WFRAME_IDLE;
+       self.weapon_morph0time = 0;
+       self.weapon_morph1time = 0;
+       self.weapon_morph2time = 0;
+       self.weapon_morph3time = 0;
+       self.weapon_morph4time = 0;
+       setanim(self, self.anim_idle, TRUE, FALSE, TRUE);
+}
+
+vector CL_Weapon_GetShotOrg(float wpn)
+{
+       entity wi, oldself;
+       vector ret;
+       wi = get_weaponinfo(wpn);
+       oldself = self;
+       self = spawn();
+       CL_WeaponEntity_SetModel(wi.mdl);
+       ret = self.movedir;
+       CL_WeaponEntity_SetModel("");
+       remove(self);
+       self = oldself;
+       return ret;
+}
+
+void CL_Weaponentity_Think()
+{
+       float tb;
+       self.nextthink = time;
+       if (intermission_running)
+               self.frame = self.anim_idle_x;
+       if (self.owner.weaponentity != self)
+       {
+               if (self.weaponentity)
+                       remove(self.weaponentity);
+               remove(self);
+               return;
+       }
+       if (self.owner.deadflag != DEAD_NO)
+       {
+               self.model = "";
+               if (self.weaponentity)
+                       self.weaponentity.model = "";
+               return;
+       }
+       if (self.cnt != self.owner.weapon || self.dmg != self.owner.modelindex || self.deadflag != self.owner.deadflag)
+       {
+               self.cnt = self.owner.weapon;
+               self.dmg = self.owner.modelindex;
+               self.deadflag = self.owner.deadflag;
+
+               CL_WeaponEntity_SetModel(self.owner.weaponname);
        }
 
        tb = (self.effects & (EF_TELEPORT_BIT | EF_RESTARTANIM_BIT));
@@ -1357,7 +1388,10 @@ void W_AttachToShotorg(entity flash, vector offset)
        }
        else
        {
-               setattachment(flash, self.weaponentity, "shot");
+               if(gettagindex(self.weaponentity, "shot"))
+                       setattachment(flash, self.weaponentity, "shot");
+               else
+                       setattachment(flash, self.weaponentity, "tag_shot");
                setorigin(flash, offset);
 
                xflash = spawn();
@@ -1372,7 +1406,11 @@ void W_AttachToShotorg(entity flash, vector offset)
                }
                else
                {
-                       setattachment(xflash, self.exteriorweaponentity, "shot");
+                       if(gettagindex(self.exteriorweaponentity, "shot"))
+                               setattachment(xflash, self.exteriorweaponentity, "shot");
+                       else
+                               setattachment(xflash, self.exteriorweaponentity, "tag_shot");
+                       setorigin(xflash, offset);
                }
        }
 }
index 3b4386b57d368ea56859a13ac6a1b82d7e01b776..45962bee7b3e69cb94513c8b57eccb36ba225446 100644 (file)
@@ -363,13 +363,14 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype)
                                attacker.taunt_soundtime = time + 1;
 
                                // TODO: fix this?
-                                       if (deathtype == DEATH_CUSTOM)
-                                               msg = strcat(deathmessage, " by ^1", msg);
-                                       else if (deathtype == DEATH_HURTTRIGGER && inflictor.message2 != "")
-                                       {
-                                               msg = ftos(strstrofs(inflictor.message2, "#", 0));
-                                       }
-                                       Send_KillNotification(s, a, msg, deathtype, MSG_KILL);
+                               if (deathtype == DEATH_CUSTOM)
+                                       msg = strcat(deathmessage, " by ^1", msg);
+                               else if (deathtype == DEATH_HURTTRIGGER && inflictor.message2 != "")
+                               {
+                                       msg = ftos(strstrofs(inflictor.message2, "#", 0));
+                               }
+
+                               Send_KillNotification(a, s, msg, deathtype, MSG_KILL);
 
                                if(g_ctf && targ.flagcarried)
                                {
@@ -389,10 +390,7 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype)
                                if (attacker.killcount > 2) {
                                        Send_KillNotification(a, ftos(attacker.killcount), "", KILL_SPREE, MSG_SPREE);
                                }
-
-                               LogDeath("frag", deathtype, attacker, targ);
-
-                               if (attacker.killcount == 3)
+                               else if (attacker.killcount == 3)
                                {
                                        Send_KillNotification(a, "", "", KILL_SPREE_3, MSG_SPREE);
                                        AnnounceTo(attacker, "03kills");
@@ -427,6 +425,7 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype)
                                        Send_KillNotification(a, "", "", KILL_SPREE_30, MSG_SPREE);
                                        AnnounceTo(attacker, "30kills");
                                }
+                               LogDeath("frag", deathtype, attacker, targ);
                        }
                }
                else
@@ -463,6 +462,7 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype)
 entity damage_targ;
 entity damage_inflictor;
 entity damage_attacker;
+.float prevhitsound;
 
 void Damage (entity targ, entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
 {
@@ -725,10 +725,14 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float
                                {
                                        if(damage > 0)
                                        {
-                                               if(targ.BUTTON_CHAT)
-                                                       attacker.typehitsound += 1;
-                                               else
-                                                       attacker.hitsound += 1;
+                                               if(attacker.weapon != WEP_ELECTRO && attacker.weapon != WEP_LASER || ((attacker.weapon == WEP_ELECTRO && cvar("g_balance_electro_lightning") || attacker.weapon == WEP_LASER) && attacker.prevhitsound + cvar("sv_hitsound_antispam_time") < time))
+                                               {
+                                                       if(targ.BUTTON_CHAT)
+                                                               attacker.typehitsound += 1;
+                                                       else
+                                                               attacker.hitsound += 1;
+                                                       attacker.prevhitsound = time;
+                                               }
 
                                                damage_goodhits += 1;
                                                damage_gooddamage += damage;
index a88fae947bf9b987646fde1e361cffd27038708c..ce3d9b72b8fe9db1f484e27ac4bc620d90bd3b53 100644 (file)
@@ -114,10 +114,37 @@ void GrapplingHook_Stop()
        self.hook_length = -1;
 }
 
+.vector hook_start, hook_end;
+float GrapplingHookSend(entity to, float sf)
+{
+       WriteByte(MSG_ENTITY, ENT_CLIENT_HOOK);
+       sf = sf & 0x7F;
+       if(sound_allowed(MSG_BROADCAST, self.owner))
+               sf |= 0x80;
+       WriteByte(MSG_ENTITY, sf);
+       if(sf & 1)
+       {
+               WriteByte(MSG_ENTITY, num_for_edict(self.owner));
+       }
+       if(sf & 2)
+       {
+               WriteCoord(MSG_ENTITY, self.hook_start_x);
+               WriteCoord(MSG_ENTITY, self.hook_start_y);
+               WriteCoord(MSG_ENTITY, self.hook_start_z);
+       }
+       if(sf & 4)
+       {
+               WriteCoord(MSG_ENTITY, self.hook_end_x);
+               WriteCoord(MSG_ENTITY, self.hook_end_y);
+               WriteCoord(MSG_ENTITY, self.hook_end_z);
+       }
+       return TRUE;
+}
+
 void GrapplingHookThink()
 {
-       float spd, dist, minlength, pullspeed, ropestretch, ropeairfriction, rubberforce, newlength, rubberforce_overstretch;
-       vector dir, org, end, v0, dv, v, myorg;
+       float spd, dist, minlength, pullspeed, ropestretch, ropeairfriction, rubberforce, newlength, rubberforce_overstretch, s;
+       vector dir, org, end, v0, dv, v, myorg, vs;
        if(self.owner.health <= 0 || self.owner.hook != self)   // how did that happen?
        {                                                                                                               // well, better fix it anyway
                remove(self);
@@ -133,8 +160,14 @@ void GrapplingHookThink()
 
        self.nextthink = time;
 
+       s = self.owner.cvar_cl_gunalign;
+       if(s != 1 && s != 2 && s != 4)
+               s = 3; // default value
+       --s;
+       vs = hook_shotorigin[s];
+
        makevectors(self.owner.v_angle);
-       org = self.owner.origin + self.owner.view_ofs + v_forward * hook_shotorigin_x + v_right * hook_shotorigin_y + v_up * hook_shotorigin_z;
+       org = self.owner.origin + self.owner.view_ofs + v_forward * vs_x + v_right * -vs_y + v_up * vs_z;
        myorg = WarpZone_RefSys_TransformOrigin(self.owner, self, org);
 
        if(self.hook_length < 0)
@@ -235,7 +268,18 @@ void GrapplingHookThink()
        }
 
        makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0');
-       te_beam(self.owner, WarpZone_RefSys_TransformOrigin(self, self.owner, self.origin) + v_forward * (-9), org);
+       myorg = WarpZone_RefSys_TransformOrigin(self, self.owner, self.origin) + v_forward * (-9);
+
+       if(myorg != self.hook_start)
+       {
+               self.SendFlags |= 2;
+               self.hook_start = myorg;
+       }
+       if(org != self.hook_end)
+       {
+               self.SendFlags |= 4;
+               self.hook_end = org;
+       }
 }
 
 void GrapplingHookTouch (void)
@@ -282,15 +326,23 @@ void FireGrapplingHook (void)
 {
        local entity missile;
        local vector org;
+       float s;
+       vector vs;
 
        if((arena_roundbased && time < warmup) || (time < game_starttime))
                return;
 
        makevectors(self.v_angle);
 
+       s = self.cvar_cl_gunalign;
+       if(s != 1 && s != 2 && s != 4)
+               s = 3; // default value
+       --s;
+       vs = hook_shotorigin[s];
+
        // UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds
        sound (self, CHAN_WEAPON2, "weapons/hook_fire.wav", VOL_BASE, ATTN_NORM);
-       org = self.origin + self.view_ofs + v_forward * hook_shotorigin_x + v_right * hook_shotorigin_y + v_up * hook_shotorigin_z;
+       org = self.origin + self.view_ofs + v_forward * vs_x + v_right * -vs_y + v_up * vs_z;
        pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1);
 
        missile = WarpZone_RefSys_SpawnSameRefSys(self);
@@ -301,7 +353,7 @@ void FireGrapplingHook (void)
        missile.movetype = MOVETYPE_FLY;
        PROJECTILE_MAKETRIGGER(missile);
 
-       setmodel (missile, "models/hook.md3"); // precision set below
+       //setmodel (missile, "models/hook.md3"); // precision set below
        setsize (missile, '-3 -3 -3', '3 3 3');
        setorigin (missile, org);
 
@@ -322,6 +374,10 @@ void FireGrapplingHook (void)
        missile.event_damage = GrapplingHook_Damage;
        missile.takedamage = DAMAGE_AIM;
        missile.damageforcescale = 0;
+
+       missile.hook_start = missile.hook_end = missile.origin;
+
+       Net_LinkEntity(missile, FALSE, 0, GrapplingHookSend);
 }
 
 //  void GrapplingHookFrame()
@@ -434,9 +490,20 @@ void GrapplingHookFrame()
 void GrappleHookInit()
 {
        if(g_grappling_hook)
-               hook_shotorigin = '8 -8 -12';
+       {
+               hook_shotorigin[0] = '8 8 -12';
+               hook_shotorigin[1] = '8 8 -12';
+               hook_shotorigin[2] = '8 8 -12';
+               hook_shotorigin[3] = '8 8 -12';
+       }
        else
-               hook_shotorigin = shotorg_adjust('26.2148 9.2059 -15.9772', TRUE, FALSE);
+       {
+               weapon_action(WEP_HOOK, WR_PRECACHE);
+               hook_shotorigin[0] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_HOOK), FALSE, FALSE, 1);
+               hook_shotorigin[1] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_HOOK), FALSE, FALSE, 2);
+               hook_shotorigin[2] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_HOOK), FALSE, FALSE, 3);
+               hook_shotorigin[3] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_HOOK), FALSE, FALSE, 4);
+       }
 }
 
 void SetGrappleHookBindings()
index 1ebbb9b8f1984037c5c2acda9c9b4efdb3357c3b..b8e0da557d8358c3b2e9f7ba68c4ef447eea4849 100644 (file)
@@ -14,4 +14,4 @@ float HOOK_WAITING_FOR_RELEASE = 16;
 .float hook_state;
 
 void GrappleHookInit();
-vector hook_shotorigin;
+vector hook_shotorigin[4];
index 2a7a82d463a0d47a47ac7ebd3f46d80d67af1918..1d1f0bb9bd0f1bfee26d37846ad17085026bbdb4 100644 (file)
@@ -37,6 +37,7 @@ void setanim(entity e, vector anim, float looping, float override, float restart
        e.animstate_looping = looping;
        e.animstate_override = override;
        e.frame = e.animstate_startframe;
+       e.frame1time = servertime;
 };
 
 void updateanim(entity e)
index a5165706bae3f9351e22be5d9b48a2f571a79f16..07898df16817501ada15cc655255c3cec5cf9f0e 100644 (file)
@@ -512,6 +512,8 @@ void spawnfunc_worldspawn (void)
        InitGameplayMode();
        readlevelcvars();
        GrappleHookInit();
+       ElectroInit();
+       LaserInit();
 
        player_count = 0;
        bot_waypoints_for_items = cvar("g_waypoints_for_items");
index a6881b293ca52ae2754bc9f80ebfa281a386589f..b5c68ca79bcbb84f2ce8aa11bb8627d26e9106ec 100644 (file)
@@ -951,6 +951,7 @@ void GameCommand(string command)
        if(argv(0) == "debug_shotorg")
        {
                debug_shotorg = stov(argv(1));
+               debug_shotorg_y = -debug_shotorg_y;
                return;
        }
 
index aeee9cecbac843cc4e6203e29de494a0b8e41374..5b0fa2b8caabc429fd3bdae394326bffb1ef616b 100644 (file)
@@ -2330,9 +2330,9 @@ void write_recordmarker(entity pl, float tstart, float dt)
                  " ", ftos(tstart), " ", ftos(dt), "\n"));
 }
 
-vector shotorg_adjustfromclient(vector vecs, float y_is_right, float allowcenter)
+vector shotorg_adjustfromclient(vector vecs, float y_is_right, float allowcenter, float algn)
 {
-       switch(self.owner.cvar_cl_gunalign)
+       switch(algn)
        {
                case 1: // right
                        break;
@@ -2372,7 +2372,7 @@ vector shotorg_adjustfromclient(vector vecs, float y_is_right, float allowcenter
        return vecs;
 }
 
-vector shotorg_adjust(vector vecs, float y_is_right, float visual)
+vector shotorg_adjust_values(vector vecs, float y_is_right, float visual, float algn)
 {
        string s;
        vector v;
@@ -2381,7 +2381,7 @@ vector shotorg_adjust(vector vecs, float y_is_right, float visual)
        {
                if (visual)
                {
-                       vecs = shotorg_adjustfromclient(vecs, y_is_right, TRUE);
+                       vecs = shotorg_adjustfromclient(vecs, y_is_right, TRUE, algn);
                }
                else
                {
@@ -2393,7 +2393,7 @@ vector shotorg_adjust(vector vecs, float y_is_right, float visual)
        {
                if (visual)
                {
-                       vecs = shotorg_adjustfromclient(vecs, y_is_right, TRUE);
+                       vecs = shotorg_adjustfromclient(vecs, y_is_right, TRUE, algn);
                }
                else
                {
@@ -2413,11 +2413,15 @@ vector shotorg_adjust(vector vecs, float y_is_right, float visual)
        }
        else if (cvar("g_shootfromclient"))
        {
-               vecs = shotorg_adjustfromclient(vecs, y_is_right, (cvar("g_shootfromclient") >= 2));
+               vecs = shotorg_adjustfromclient(vecs, y_is_right, (cvar("g_shootfromclient") >= 2), algn);
        }
        return vecs;
 }
 
+vector shotorg_adjust(vector vecs, float y_is_right, float visual)
+{
+       return shotorg_adjust_values(vecs, y_is_right, visual, self.owner.cvar_cl_gunalign);
+}
 
 
 void attach_sameorigin(entity e, entity to, string tag)
index c174177b2002cf0251ed6bc05d8762592f7c0b24..adf4b4a1d89545418734228dddc0b16345100f0a 100644 (file)
@@ -43,6 +43,8 @@ cheats.qh
 portals.qh
 
 g_hook.qh
+w_electro.qh
+w_laser.qh
 
 scores.qh
 
index 8fc8d839da6ca97b686bc86079c7c52cccbdf2f7..f14d5689b175116611764c6d26940387e6b5a075 100644 (file)
@@ -173,6 +173,7 @@ void W_CampingRifle_BulletHail(float mode, void(void) AttackFunc, float fr, floa
 }
 
 .float bot_secondary_campingriflemooth;
+.float sent_campingrifle_scope;
 float w_campingrifle(float req)
 {
        float full;
@@ -219,17 +220,33 @@ float w_campingrifle(float req)
                                self.campingrifle_accumulator += cvar("g_balance_campingrifle_primary_burstcost");
                        }
                        if (self.BUTTON_ATCK2)
-                       if (weapon_prepareattack_check(1, cvar("g_balance_campingrifle_secondary_refire")))
-                       if (time >= self.campingrifle_accumulator + cvar("g_balance_campingrifle_secondary_burstcost"))
-                       {
-                               weapon_prepareattack_do(1, cvar("g_balance_campingrifle_secondary_refire"));
-                               W_CampingRifle_BulletHail(cvar("g_balance_campingrifle_secondary_bullethail"), W_CampingRifle_Attack2, WFRAME_FIRE2, cvar("g_balance_campingrifle_secondary_animtime"), cvar("g_balance_campingrifle_primary_refire"));
-                               self.campingrifle_accumulator += cvar("g_balance_campingrifle_secondary_burstcost");
+                       {       
+                               if (cvar("g_balance_campingrifle_secondary"))
+                               {
+                                       if (weapon_prepareattack_check(1, cvar("g_balance_campingrifle_secondary_refire")))
+                                       if (time >= self.campingrifle_accumulator + cvar("g_balance_campingrifle_secondary_burstcost"))
+                                       {
+                                               weapon_prepareattack_do(1, cvar("g_balance_campingrifle_secondary_refire"));
+                                               W_CampingRifle_BulletHail(cvar("g_balance_campingrifle_secondary_bullethail"), W_CampingRifle_Attack2, WFRAME_FIRE2, cvar("g_balance_campingrifle_secondary_animtime"), cvar("g_balance_campingrifle_primary_refire"));
+                                               self.campingrifle_accumulator += cvar("g_balance_campingrifle_secondary_burstcost");
+                                       }
+                               }
+                               else
+                               {
+                                       if(clienttype(self) == CLIENTTYPE_REAL)
+                                       if(!self.sent_campingrifle_scope)
+                                       {
+                                               msg_entity = self;
+                                               WriteByte(MSG_ONE, SVC_TEMPENTITY);
+                                               WriteByte(MSG_ONE, TE_CSQC_CAMPINGRIFLE_SCOPE);
+                                               self.sent_campingrifle_scope = 1;
+                                       }       
+                               }
                        }
                }
        }
        else if (req == WR_PRECACHE)
-       {               
+       {
                precache_model ("models/weapons/g_campingrifle.md3");
                precache_model ("models/weapons/v_campingrifle.md3");
                precache_model ("models/weapons/h_campingrifle.iqm");
@@ -290,32 +307,32 @@ float w_campingrifle(float req)
        else if (req == WR_SUICIDEMESSAGE)
        {
                if(w_deathtype & HITTYPE_SECONDARY)
-                       w_deathtypestring = "shot themself automatically";
+                       w_deathtypestring = "%s shot themself automatically";
                else
-                       w_deathtypestring = "sniped themself somehow";
+                       w_deathtypestring = "%s sniped themself somehow";
        }
        else if (req == WR_KILLMESSAGE)
        {
                if(w_deathtype & HITTYPE_SECONDARY)
                {
                        if(w_deathtype & HITTYPE_BOUNCE)
-                               w_deathtypestring = "failed to hide from #'s bullet hail";
+                               w_deathtypestring = "%s failed to hide from %s's bullet hail";
                        else
-                               w_deathtypestring = "died in #'s bullet hail";
+                               w_deathtypestring = "%s died in %s's bullet hail";
                }
                else
                {
                        if(w_deathtype & HITTYPE_BOUNCE)
                        {
                                // TODO special headshot message here too?
-                               w_deathtypestring = "failed to hide from #'s rifle";
+                               w_deathtypestring = "%s failed to hide from %s's rifle";
                        }
                        else
                        {
                                if(w_deathtype & HITTYPE_HEADSHOT)
-                                       w_deathtypestring = "got hit in the head by #";
+                                       w_deathtypestring = "%s got hit in the head by %s";
                                else
-                                       w_deathtypestring = "was sniped by #";
+                                       w_deathtypestring = "%s was sniped by %s";
                        }
                }
        }
index d80317a346ef1a1b3a3be3479b3c67e038133aad..3d18ba12d9838f2e9458e9e8c2edb74f195421c2 100644 (file)
@@ -250,16 +250,16 @@ float w_crylink(float req)
        }
        else if (req == WR_SUICIDEMESSAGE)
        {
-               w_deathtypestring = "succeeded at self-destructing themself with the Crylink";
+               w_deathtypestring = "%s succeeded at self-destructing themself with the Crylink";
        }
        else if (req == WR_KILLMESSAGE)
        {
                if(w_deathtype & HITTYPE_BOUNCE)
-                       w_deathtypestring = "could not hide from #'s Crylink"; // unchecked: SPLASH (SECONDARY can't be)
+                       w_deathtypestring = "%s could not hide from %s's Crylink"; // unchecked: SPLASH (SECONDARY can't be)
                else if(w_deathtype & HITTYPE_SPLASH)
-                       w_deathtypestring = "was too close to #'s Crylink"; // unchecked: SECONDARY
+                       w_deathtypestring = "%s was too close to %s's Crylink"; // unchecked: SECONDARY
                else
-                       w_deathtypestring = "took a close look at #'s Crylink"; // unchecked: SECONDARY
+                       w_deathtypestring = "%s took a close look at %s's Crylink"; // unchecked: SECONDARY
        }
        return TRUE;
 }
index 0b35eae662de8cc2848cb04ebe8d9e52a88f428a..92ed5e75a94888f6414aba480ee475986483533e 100644 (file)
@@ -142,7 +142,7 @@ void W_Electro_Attack2()
 {
        local entity proj;
 
-       W_SetupShot_ProjectileSize (self, '0 0 -3', '0 0 -3', FALSE, 2, "weapons/electro_fire2.wav", cvar("g_balance_electro_secondary_damage"));
+       W_SetupShot_ProjectileSize (self, '0 0 -4', '0 0 -4', FALSE, 2, "weapons/electro_fire2.wav", cvar("g_balance_electro_secondary_damage"));
        w_shotdir = v_forward; // no TrueAim for grenades please
 
        pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -166,7 +166,7 @@ void W_Electro_Attack2()
        proj.movetype = MOVETYPE_BOUNCE;
        W_SETUPPROJECTILEVELOCITY_UP(proj, g_balance_electro_secondary);
        proj.touch = W_Plasma_Touch;
-       setsize(proj, '0 0 -3', '0 0 -3');
+       setsize(proj, '0 0 -4', '0 0 -4');
        proj.takedamage = DAMAGE_YES;
        proj.damageforcescale = cvar("g_balance_electro_secondary_damageforcescale");
        proj.health = cvar("g_balance_electro_secondary_health");
@@ -184,19 +184,115 @@ void W_Electro_Attack2()
        CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO, FALSE); // no culling, it has sound
 }
 
+.vector hook_start, hook_end;
+float lgbeam_send(entity to, float sf)
+{
+       WriteByte(MSG_ENTITY, ENT_CLIENT_LGBEAM);
+       sf = sf & 0x7F;
+       if(sound_allowed(MSG_BROADCAST, self.owner))
+               sf |= 0x80;
+       WriteByte(MSG_ENTITY, sf);
+       if(sf & 1)
+       {
+               WriteByte(MSG_ENTITY, num_for_edict(self.owner));
+       }
+       if(sf & 2)
+       {
+               WriteCoord(MSG_ENTITY, self.hook_start_x);
+               WriteCoord(MSG_ENTITY, self.hook_start_y);
+               WriteCoord(MSG_ENTITY, self.hook_start_z);
+       }
+       if(sf & 4)
+       {
+               WriteCoord(MSG_ENTITY, self.hook_end_x);
+               WriteCoord(MSG_ENTITY, self.hook_end_y);
+               WriteCoord(MSG_ENTITY, self.hook_end_z);
+       }
+       return TRUE;
+}
+.entity lgbeam;
+.float prevlgfire;
+void lgbeam_think()
+{
+       self.owner.prevlgfire = time;
+       if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self != self.owner.lgbeam || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK)
+       {
+               remove(self);
+               return;
+       }
+
+       self.nextthink = time;
+
+       makevectors(self.owner.v_angle);
+
+       float dt;
+       dt = frametime;
+       if not(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)
+       {
+               if(cvar("g_balance_electro_primary_ammo"))
+                       dt = min(frametime, self.owner.ammo_cells / cvar("g_balance_electro_primary_ammo"));
+               self.owner.ammo_cells = max(0, self.owner.ammo_cells - cvar("g_balance_electro_primary_ammo") * frametime);
+       }
+
+       W_SetupShot_Range(self.owner, TRUE, 0, "", cvar("g_balance_electro_primary_damage") * dt, cvar("g_balance_electro_primary_range"));
+       WarpZone_traceline_antilag(self.owner, w_shotorg, w_shotend, MOVE_NORMAL, self.owner, ANTILAG_LATENCY(self.owner));
+
+       // apply the damage
+       if(trace_ent)
+       {
+               vector force;
+               force = w_shotdir * cvar("g_balance_electro_primary_force") + '0 0 1' * cvar("g_balance_electro_primary_force_up");
+               Damage (trace_ent, self.owner, self.owner, cvar("g_balance_electro_primary_damage") * dt, WEP_ELECTRO, trace_endpos, force * dt);
+       }
+       W_Plasma_TriggerCombo(trace_endpos, cvar("g_balance_electro_primary_comboradius"), self.owner);
+
+       // draw effect
+       if(w_shotorg != self.hook_start)
+       {
+               self.SendFlags |= 2;
+               self.hook_start = w_shotorg;
+       }
+       if(w_shotend != self.hook_end)
+       {
+               self.SendFlags |= 4;
+               self.hook_end = w_shotend;
+       }
+}
+
 // experimental lightning gun
 void W_Electro_Attack3 (void)
 {
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_cells = self.ammo_cells - cvar("g_balance_electro_primary_ammo");
-       W_SetupShot (self, TRUE, 0, "weapons/crylink_fire2.wav", cvar("g_balance_electro_primary_damage"));
-
-       traceline_antilag(self, w_shotorg, w_shotorg + w_shotdir * cvar("g_balance_electro_primary_radius"), FALSE, self, ANTILAG_LATENCY(self));
+       // only play fire sound if 0.5 sec has passed since player let go the fire button
+       if(time - self.prevlgfire > 0.5)
+       {
+               sound (self, CHAN_WEAPON, "weapons/lgbeam_fire.wav", VOL_BASE, ATTN_NORM);
+       }
 
-       te_lightning1(self, w_shotorg, trace_endpos);
+       entity beam, oldself;
+
+       self.lgbeam = beam = spawn();
+       beam.solid = SOLID_NOT;
+       beam.think = lgbeam_think;
+       beam.owner = self;
+       beam.movetype = MOVETYPE_NONE;
+       beam.shot_spread = 0;
+       beam.bot_dodge = TRUE;
+       beam.bot_dodgerating = cvar("g_balance_electro_primary_damage");
+       Net_LinkEntity(beam, FALSE, 0, lgbeam_send);
+
+       oldself = self;
+       self = beam;
+       self.think();
+       self = oldself;
+}
 
-       if (trace_fraction < 1)
-               Damage(trace_ent, self, self, cvar("g_balance_electro_primary_damage"), WEP_ELECTRO | HITTYPE_SECONDARY, trace_endpos, cvar("g_balance_electro_primary_force") * w_shotdir);
+void ElectroInit()
+{
+       weapon_action(WEP_ELECTRO, WR_PRECACHE);
+       electro_shotorigin[0] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ELECTRO), FALSE, FALSE, 1);
+       electro_shotorigin[1] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ELECTRO), FALSE, FALSE, 2);
+       electro_shotorigin[2] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ELECTRO), FALSE, FALSE, 3);
+       electro_shotorigin[3] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ELECTRO), FALSE, FALSE, 4);
 }
 
 void spawnfunc_weapon_electro (void)
@@ -220,6 +316,7 @@ void w_electro_checkattack()
 }
 
 .float bot_secondary_electromooth;
+.float BUTTON_ATCK_prev;
 float w_electro(float req)
 {
        if (req == WR_AIM)
@@ -248,15 +345,28 @@ float w_electro(float req)
        else if (req == WR_THINK)
        {
                if (self.BUTTON_ATCK)
-               if (weapon_prepareattack(0, cvar("g_balance_electro_primary_refire")))
                {
-                       if(cvar("g_balance_electro_lightning"))
-                               W_Electro_Attack3();
-                       else
-                               W_Electro_Attack();
-                       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_electro_primary_animtime"), w_ready);
+                       if (weapon_prepareattack(0, (cvar("g_balance_electro_lightning") ? 0 : cvar("g_balance_electro_primary_refire"))))
+                       {
+                               if(cvar("g_balance_electro_lightning"))
+                               {
+                                       if (self.BUTTON_ATCK_prev == 0)
+                                       {
+                                               W_Electro_Attack3();
+                                       }
+                                       self.BUTTON_ATCK_prev = 1;
+                               }
+                               else
+                               {
+                                       W_Electro_Attack();
+                               }
+                               weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_electro_primary_animtime"), w_ready);
+                       }
+               } else {
+                       self.BUTTON_ATCK_prev = 0;
                }
-               if (self.BUTTON_ATCK2 && !cvar("g_balance_electro_lightning"))
+
+               if (self.BUTTON_ATCK2)
                if (time >= self.electro_secondarytime)
                if (weapon_prepareattack(1, cvar("g_balance_electro_secondary_refire")))
                {
@@ -277,12 +387,19 @@ float w_electro(float req)
                precache_sound ("weapons/electro_impact.wav");
                precache_sound ("weapons/electro_impact_combo.wav");
                if(cvar("g_balance_electro_lightning"))
-                       precache_sound ("weapons/crylink_fire2.wav");
+               {
+                       precache_sound ("weapons/lgbeam_fire.wav");
+               }
        }
        else if (req == WR_SETUP)
                weapon_setup(WEP_ELECTRO);
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_cells >= cvar("g_balance_electro_primary_ammo");
+       {
+               if(cvar("g_balance_electro_lightning"))
+                       return self.ammo_cells >= cvar("g_balance_electro_primary_ammo") * cvar("g_balance_electro_primary_refire");
+               else
+                       return self.ammo_cells >= cvar("g_balance_electro_primary_ammo");
+       }
        else if (req == WR_CHECKAMMO2)
                return self.ammo_cells >= cvar("g_balance_electro_secondary_ammo");
        else if (req == WR_RESETPLAYER)
@@ -330,27 +447,27 @@ float w_electro(float req)
        else if (req == WR_SUICIDEMESSAGE)
        {
                if(w_deathtype & HITTYPE_SECONDARY)
-                       w_deathtypestring = "could not remember where they put plasma";
+                       w_deathtypestring = "%s could not remember where they put plasma";
                else
-                       w_deathtypestring = "played with plasma";
+                       w_deathtypestring = "%s played with plasma";
        }
        else if (req == WR_KILLMESSAGE)
        {
                if(w_deathtype & HITTYPE_SECONDARY)
                {
                        if(w_deathtype & HITTYPE_SPLASH) // unchecked: BOUNCE
-                               w_deathtypestring = "just noticed #'s blue ball";
+                               w_deathtypestring = "%s just noticed %s's blue ball";
                        else // unchecked: BOUNCE
-                               w_deathtypestring = "got in touch with #'s blue ball";
+                               w_deathtypestring = "%s got in touch with %s's blue ball";
                }
                else
                {
                        if(w_deathtype & HITTYPE_BOUNCE) // combo
-                               w_deathtypestring = "felt the electrifying air of #'s combo";
+                               w_deathtypestring = "%s felt the electrifying air of %s's combo";
                        else if(w_deathtype & HITTYPE_SPLASH)
-                               w_deathtypestring = "got too close to #'s blue beam";
+                               w_deathtypestring = "%s got too close to %s's blue beam";
                        else
-                               w_deathtypestring = "was blasted by #'s blue beam";
+                               w_deathtypestring = "%s was blasted by %s's blue beam";
                }
        }
        return TRUE;
diff --git a/qcsrc/server/w_electro.qh b/qcsrc/server/w_electro.qh
new file mode 100644 (file)
index 0000000..98c0be1
--- /dev/null
@@ -0,0 +1,2 @@
+void ElectroInit();
+vector electro_shotorigin[4];
index 278099c633877a2e056bc2fcbd9a72d20d773af9..368faecbf3b9c340fb945a673102e20e31ba2f97 100644 (file)
@@ -384,36 +384,32 @@ float w_fireball(float req)
        else if (req == WR_SUICIDEMESSAGE)
        {
                if(w_deathtype & HITTYPE_SECONDARY)
-                       w_deathtypestring = "forgot about some firemine";
+                       w_deathtypestring = "%s forgot about some firemine";
                else
-                       w_deathtypestring = "should have used a smaller gun";
+                       w_deathtypestring = "%s should have used a smaller gun";
        }
        else if (req == WR_KILLMESSAGE)
        {
                if(w_deathtype & HITTYPE_SECONDARY)
                {
                        if(w_deathtype & HITTYPE_HEADSHOT)
-                               w_deathtypestring = "tried to catch #'s firemine";
+                               w_deathtypestring = "%s tried to catch %s's firemine";
                        else
-                               w_deathtypestring = "fatefully ignored #'s firemine";
+                               w_deathtypestring = "%s fatefully ignored %s's firemine";
                }
                else
                {
                        if(w_deathtype & HITTYPE_BOUNCE)
                        {
                                if(w_deathtype & HITTYPE_SPLASH) // BFG effect
-                               {
-                                       w_deathtypestring = "could not hide from #'s fireball";
-                               }
+                                       w_deathtypestring = "%s could not hide from %s's fireball";
                                else // laser
-                               {
-                                       w_deathtypestring = "saw the pretty lights of #'s fireball";
-                               }
+                                       w_deathtypestring = "%s saw the pretty lights of %s's fireball";
                        }
                        else if(w_deathtype & HITTYPE_SPLASH)
-                               w_deathtypestring = "got too close to #'s fireball";
+                               w_deathtypestring = "%s got too close to %s's fireball";
                        else
-                               w_deathtypestring = "tasted #'s fireball";
+                               w_deathtypestring = "%s tasted %s's fireball";
                }
        }
        return TRUE;
index a7d9a4935d7202a7a4a2bf18975cdafb4b1c5af1..6848b2a5ad90a8fdd3bef7a70c86f1f22138845e 100644 (file)
@@ -13,6 +13,10 @@ void W_Grenade_Explode (void)
 
        self.event_damage = SUB_Null;
        self.takedamage = DAMAGE_NO;
+
+       if(self.movetype == MOVETYPE_NONE)
+               self.velocity = self.oldvelocity;
+
        RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_primary_damage"), cvar("g_balance_grenadelauncher_primary_edgedamage"), cvar("g_balance_grenadelauncher_primary_radius"), world, cvar("g_balance_grenadelauncher_primary_force"), self.projectiledeathtype, other);
 
        remove (self);
@@ -33,47 +37,83 @@ void W_Grenade_Explode2 (void)
        remove (self);
 }
 
+void W_Grenade_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
+{
+       if (self.health <= 0)
+               return;
+       self.health = self.health - damage;
+       if (self.health <= 0)
+       {
+               W_PrepareExplosionByDamage(attacker, self.think);
+       }
+}
+
 void W_Grenade_Touch1 (void)
 {
        PROJECTILE_TOUCH;
-       W_Grenade_Explode ();
+       if(cvar("g_balance_grenadelauncher_primary_sticky") && other.takedamage != DAMAGE_AIM)
+       {
+               spamsound (self, CHAN_PROJECTILE, "weapons/grenade_stick.wav", VOL_BASE, ATTN_NORM);
+
+               // let it stick whereever it is
+               self.oldvelocity = self.velocity;
+               self.velocity = '0 0 0';
+               self.movetype = MOVETYPE_NONE; // also disables gravity
+               self.gravity = 0; // nope, it does NOT! maybe a bug in CSQC code? TODO
+               UpdateCSQCProjectile(self);
+
+               // do not respond to any more touches
+               self.solid = SOLID_NOT;
+
+               self.nextthink = min(self.nextthink, time + cvar("g_balance_grenadelauncher_primary_lifetime2"));
+       }
+       else
+               W_Grenade_Explode ();
 }
 
 void W_Grenade_Touch2 (void)
 {
        PROJECTILE_TOUCH;
-       if&nb