Merge branch 'master' into mirceakitsune/per_character_sounds
authorRudolf Polzer <divverent@alientrap.org>
Sun, 9 May 2010 13:04:19 +0000 (15:04 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Sun, 9 May 2010 13:04:19 +0000 (15:04 +0200)
109 files changed:
balance.cfg
balance25.cfg
balanceNexrun.cfg [deleted file]
balanceSamual.cfg
balanceXPM.cfg [new file with mode: 0644]
config_update.cfg
defaultXonotic.cfg
effectinfo.txt
gfx/menu/wickedx/background.tga [new file with mode: 0644]
gfx/menu/wickedx/background_ingame.tga [new file with mode: 0644]
gfx/menu/wickedx/background_l2.tga [new file with mode: 0644]
gfx/menu/wickedx/bigbutton_c.tga [new file with mode: 0644]
gfx/menu/wickedx/bigbutton_d.tga [new file with mode: 0644]
gfx/menu/wickedx/bigbutton_f.tga [new file with mode: 0644]
gfx/menu/wickedx/bigbutton_n.tga [new file with mode: 0644]
gfx/menu/wickedx/bigbuttongray_c.tga [new file with mode: 0644]
gfx/menu/wickedx/bigbuttongray_d.tga [new file with mode: 0644]
gfx/menu/wickedx/bigbuttongray_f.tga [new file with mode: 0644]
gfx/menu/wickedx/bigbuttongray_n.tga [new file with mode: 0644]
gfx/menu/wickedx/border.tga [new file with mode: 0644]
gfx/menu/wickedx/button_c.tga [new file with mode: 0644]
gfx/menu/wickedx/button_d.tga [new file with mode: 0644]
gfx/menu/wickedx/button_f.tga [new file with mode: 0644]
gfx/menu/wickedx/button_n.tga [new file with mode: 0644]
gfx/menu/wickedx/buttongray_c.tga [new file with mode: 0644]
gfx/menu/wickedx/buttongray_d.tga [new file with mode: 0644]
gfx/menu/wickedx/buttongray_f.tga [new file with mode: 0644]
gfx/menu/wickedx/buttongray_n.tga [new file with mode: 0644]
gfx/menu/wickedx/charmap.tga [new file with mode: 0755]
gfx/menu/wickedx/charmapbutton.tga [new file with mode: 0644]
gfx/menu/wickedx/checkbox_c0.tga [new file with mode: 0644]
gfx/menu/wickedx/checkbox_c1.tga [new file with mode: 0644]
gfx/menu/wickedx/checkbox_d0.tga [new file with mode: 0644]
gfx/menu/wickedx/checkbox_d1.tga [new file with mode: 0644]
gfx/menu/wickedx/checkbox_f0.tga [new file with mode: 0644]
gfx/menu/wickedx/checkbox_f1.tga [new file with mode: 0644]
gfx/menu/wickedx/checkbox_n0.tga [new file with mode: 0644]
gfx/menu/wickedx/checkbox_n1.tga [new file with mode: 0644]
gfx/menu/wickedx/checkmark.tga [new file with mode: 0644]
gfx/menu/wickedx/closebutton_c.tga [new file with mode: 0644]
gfx/menu/wickedx/closebutton_f.tga [new file with mode: 0644]
gfx/menu/wickedx/closebutton_n.tga [new file with mode: 0644]
gfx/menu/wickedx/color.tga [new file with mode: 0755]
gfx/menu/wickedx/colorbutton_c.tga [new file with mode: 0644]
gfx/menu/wickedx/colorbutton_f.tga [new file with mode: 0644]
gfx/menu/wickedx/colorbutton_n.tga [new file with mode: 0755]
gfx/menu/wickedx/colorpicker.tga [new file with mode: 0755]
gfx/menu/wickedx/colorpicker_m.tga [new file with mode: 0755]
gfx/menu/wickedx/crosshairbutton_c.tga [new file with mode: 0644]
gfx/menu/wickedx/crosshairbutton_d.tga [new file with mode: 0755]
gfx/menu/wickedx/crosshairbutton_f.tga [new file with mode: 0644]
gfx/menu/wickedx/crosshairbutton_n.tga [new file with mode: 0755]
gfx/menu/wickedx/cursor.tga [new file with mode: 0644]
gfx/menu/wickedx/inputbox_f.tga [new file with mode: 0644]
gfx/menu/wickedx/inputbox_n.tga [new file with mode: 0644]
gfx/menu/wickedx/radiobutton_c0.tga [new file with mode: 0644]
gfx/menu/wickedx/radiobutton_c1.tga [new file with mode: 0644]
gfx/menu/wickedx/radiobutton_d0.tga [new file with mode: 0644]
gfx/menu/wickedx/radiobutton_d1.tga [new file with mode: 0644]
gfx/menu/wickedx/radiobutton_f0.tga [new file with mode: 0644]
gfx/menu/wickedx/radiobutton_f1.tga [new file with mode: 0644]
gfx/menu/wickedx/radiobutton_n0.tga [new file with mode: 0644]
gfx/menu/wickedx/radiobutton_n1.tga [new file with mode: 0644]
gfx/menu/wickedx/scrollbar_c.tga [new file with mode: 0644]
gfx/menu/wickedx/scrollbar_f.tga [new file with mode: 0644]
gfx/menu/wickedx/scrollbar_n.tga [new file with mode: 0644]
gfx/menu/wickedx/scrollbar_s.tga [new file with mode: 0644]
gfx/menu/wickedx/skinpreview.jpg [new file with mode: 0755]
gfx/menu/wickedx/skinvalues.txt [new file with mode: 0755]
gfx/menu/wickedx/slider_c.tga [new file with mode: 0644]
gfx/menu/wickedx/slider_d.tga [new file with mode: 0644]
gfx/menu/wickedx/slider_f.tga [new file with mode: 0644]
gfx/menu/wickedx/slider_n.tga [new file with mode: 0644]
gfx/menu/wickedx/slider_s.tga [new file with mode: 0644]
gfx/menu/wickedx/tooltip.tga [new file with mode: 0644]
particles/particlefont.tga
particles/particlefont.txt
physicsNexrun.cfg [deleted file]
physicsNexrun_old.cfg [deleted file]
physicsNoQWBunny.cfg
physicsXPM.cfg [new file with mode: 0644]
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/client/csqc_builtins.qc
qcsrc/client/damage.qc
qcsrc/client/gibs.qc
qcsrc/client/main.qh
qcsrc/client/progs.src
qcsrc/client/projectile.qc
qcsrc/client/target_music.qc [new file with mode: 0644]
qcsrc/common/constants.qh
qcsrc/common/mapinfo.qc
qcsrc/menu/xonotic/dialog_settings_audio.c
qcsrc/server/cl_client.qc
qcsrc/server/cl_player.qc
qcsrc/server/csqcprojectile.qc
qcsrc/server/g_damage.qc
qcsrc/server/g_triggers.qc
qcsrc/server/g_world.qc
qcsrc/server/mutators/base.qh
qcsrc/server/progs.src
qcsrc/server/scores.qc
qcsrc/server/t_items.qc
qcsrc/server/target_music.qc [new file with mode: 0644]
qcsrc/server/w_fireball.qc
qcsrc/server/w_grenadelauncher.qc
qcsrc/warpzonelib/client.qc
qcsrc/warpzonelib/client.qh
update-cvarcount.sh

index 37a36e8..0a4d8cf 100644 (file)
@@ -309,6 +309,8 @@ set g_balance_grenadelauncher_secondary_animtime 0.3
 set g_balance_grenadelauncher_secondary_ammo 2
 set g_balance_grenadelauncher_secondary_health 70
 set g_balance_grenadelauncher_secondary_damageforcescale 4
+set g_balance_grenadelauncher_secondary_bouncefactor 0.5
+set g_balance_grenadelauncher_secondary_bouncestop 0.075
 // }}}
 // {{{ electro
 set g_balance_electro_lightning 0
@@ -553,40 +555,40 @@ set g_balance_tuba_radius 200
 set g_balance_tuba_force 40
 // }}}
 // {{{ fireball
-set g_balance_fireball_primary_ammo 5
-set g_balance_fireball_primary_animtime 0.3
-set g_balance_fireball_primary_damage 40
+set g_balance_fireball_primary_ammo 40
+set g_balance_fireball_primary_animtime 0.15
+set g_balance_fireball_primary_bfgdamage 100
+set g_balance_fireball_primary_bfgforce 0
+set g_balance_fireball_primary_bfgradius 1000
+set g_balance_fireball_primary_damage 200
 set g_balance_fireball_primary_damageforcescale 4
-set g_balance_fireball_primary_damagetime 5
-set g_balance_fireball_primary_force 100
+set g_balance_fireball_primary_edgedamage 0
+set g_balance_fireball_primary_force 700
+set g_balance_fireball_primary_health 50
 set g_balance_fireball_primary_laserburntime 0.5
-set g_balance_fireball_primary_laserdamage 30
+set g_balance_fireball_primary_laserdamage 80
 set g_balance_fireball_primary_laseredgedamage 20
-set g_balance_fireball_primary_laserradius 110
-set g_balance_fireball_primary_lifetime 7
-set g_balance_fireball_primary_refire 2
-set g_balance_fireball_primary_speed 900
-set g_balance_fireball_primary_speed_up 100
-set g_balance_fireball_primary_speed_z 0
+set g_balance_fireball_primary_laserradius 256
+set g_balance_fireball_primary_lifetime 15
+set g_balance_fireball_primary_radius 200
+set g_balance_fireball_primary_refire 5
+set g_balance_fireball_primary_refire2 0
+set g_balance_fireball_primary_speed 650
 set g_balance_fireball_primary_spread 0
-set g_balance_fireball_secondary_ammo 25
-set g_balance_fireball_secondary_animtime 0.15
-set g_balance_fireball_secondary_bfgdamage 100
-set g_balance_fireball_secondary_bfgforce 500
-set g_balance_fireball_secondary_bfgradius 750
-set g_balance_fireball_secondary_damage 150
+set g_balance_fireball_secondary_ammo 5
+set g_balance_fireball_secondary_animtime 0.3
+set g_balance_fireball_secondary_damage 40
 set g_balance_fireball_secondary_damageforcescale 4
-set g_balance_fireball_secondary_edgedamage 0
-set g_balance_fireball_secondary_force 700
-set g_balance_fireball_secondary_health 50
+set g_balance_fireball_secondary_damagetime 5
+set g_balance_fireball_secondary_force 100
 set g_balance_fireball_secondary_laserburntime 0.5
 set g_balance_fireball_secondary_laserdamage 30
 set g_balance_fireball_secondary_laseredgedamage 20
-set g_balance_fireball_secondary_laserradius 256
-set g_balance_fireball_secondary_lifetime 15
-set g_balance_fireball_secondary_radius 200
-set g_balance_fireball_secondary_refire 0
-set g_balance_fireball_secondary_refire2 4
-set g_balance_fireball_secondary_speed 650
+set g_balance_fireball_secondary_laserradius 110
+set g_balance_fireball_secondary_lifetime 7
+set g_balance_fireball_secondary_refire 2
+set g_balance_fireball_secondary_speed 900
+set g_balance_fireball_secondary_speed_up 100
+set g_balance_fireball_secondary_speed_z 0
 set g_balance_fireball_secondary_spread 0
 // }}}
index 11cc3a4..6f36e9b 100644 (file)
@@ -309,6 +309,8 @@ set g_balance_grenadelauncher_secondary_animtime 0.3
 set g_balance_grenadelauncher_secondary_ammo 2
 set g_balance_grenadelauncher_secondary_health 10
 set g_balance_grenadelauncher_secondary_damageforcescale 4
+set g_balance_grenadelauncher_secondary_bouncefactor 0.5
+set g_balance_grenadelauncher_secondary_bouncestop 0.075
 // }}}
 // {{{ electro
 set g_balance_electro_lightning 0
@@ -553,40 +555,40 @@ set g_balance_tuba_radius 200
 set g_balance_tuba_force 40
 // }}}
 // {{{ fireball
-set g_balance_fireball_primary_ammo 5
-set g_balance_fireball_primary_animtime 0.3
-set g_balance_fireball_primary_damage 100
+set g_balance_fireball_primary_ammo 40
+set g_balance_fireball_primary_animtime 0.15
+set g_balance_fireball_primary_bfgdamage 100
+set g_balance_fireball_primary_bfgforce 0
+set g_balance_fireball_primary_bfgradius 1000
+set g_balance_fireball_primary_damage 200
 set g_balance_fireball_primary_damageforcescale 4
-set g_balance_fireball_primary_damagetime 5
-set g_balance_fireball_primary_force 100
+set g_balance_fireball_primary_edgedamage 0
+set g_balance_fireball_primary_force 700
+set g_balance_fireball_primary_health 50
 set g_balance_fireball_primary_laserburntime 0.5
 set g_balance_fireball_primary_laserdamage 80
 set g_balance_fireball_primary_laseredgedamage 20
-set g_balance_fireball_primary_laserradius 128
-set g_balance_fireball_primary_lifetime 7
-set g_balance_fireball_primary_refire 1.5
-set g_balance_fireball_primary_speed 700
-set g_balance_fireball_primary_speed_up 100
-set g_balance_fireball_primary_speed_z 0
+set g_balance_fireball_primary_laserradius 256
+set g_balance_fireball_primary_lifetime 15
+set g_balance_fireball_primary_radius 200
+set g_balance_fireball_primary_refire 5
+set g_balance_fireball_primary_refire2 0
+set g_balance_fireball_primary_speed 650
 set g_balance_fireball_primary_spread 0
-set g_balance_fireball_secondary_ammo 15
-set g_balance_fireball_secondary_animtime 0.15
-set g_balance_fireball_secondary_bfgdamage 200
-set g_balance_fireball_secondary_bfgforce 0
-set g_balance_fireball_secondary_bfgradius 1500
-set g_balance_fireball_secondary_damage 150
+set g_balance_fireball_secondary_ammo 5
+set g_balance_fireball_secondary_animtime 0.3
+set g_balance_fireball_secondary_damage 40
 set g_balance_fireball_secondary_damageforcescale 4
-set g_balance_fireball_secondary_edgedamage 0
-set g_balance_fireball_secondary_force 700
-set g_balance_fireball_secondary_health 50
+set g_balance_fireball_secondary_damagetime 5
+set g_balance_fireball_secondary_force 100
 set g_balance_fireball_secondary_laserburntime 0.5
-set g_balance_fireball_secondary_laserdamage 80
+set g_balance_fireball_secondary_laserdamage 50
 set g_balance_fireball_secondary_laseredgedamage 20
-set g_balance_fireball_secondary_laserradius 256
-set g_balance_fireball_secondary_lifetime 15
-set g_balance_fireball_secondary_radius 200
+set g_balance_fireball_secondary_laserradius 110
+set g_balance_fireball_secondary_lifetime 7
 set g_balance_fireball_secondary_refire 2
-set g_balance_fireball_secondary_refire2 0
-set g_balance_fireball_secondary_speed 650
+set g_balance_fireball_secondary_speed 900
+set g_balance_fireball_secondary_speed_up 100
+set g_balance_fireball_secondary_speed_z 0
 set g_balance_fireball_secondary_spread 0
 // }}}
diff --git a/balanceNexrun.cfg b/balanceNexrun.cfg
deleted file mode 100644 (file)
index a23e9b4..0000000
+++ /dev/null
@@ -1,592 +0,0 @@
-// {{{ weapon replacement
-// NOTE: this only replaces weapons on the map
-// use g_start_weapon_* to also replace the on-startup weapons!
-// example: g_weaponreplace_nex "nex minstanex", then Nexes become MinstaNexes 50% of the times
-// set the cvars to "0" to totally disable a weapon
-set g_weaponreplace_laser ""
-set g_weaponreplace_shotgun "uzi"
-set g_weaponreplace_uzi "shotgun"
-set g_weaponreplace_grenadelauncher ""
-set g_weaponreplace_electro ""
-set g_weaponreplace_crylink ""
-set g_weaponreplace_nex ""
-set g_weaponreplace_hagar ""
-set g_weaponreplace_rocketlauncher ""
-set g_weaponreplace_porto ""
-set g_weaponreplace_minstanex ""
-set g_weaponreplace_hook 0
-set g_weaponreplace_hlac 0
-set g_weaponreplace_campingrifle 0
-set g_weaponreplace_tuba ""
-set g_weaponreplace_fireball 0
-set sv_q3acompat_machineshotgunswap 0
-// }}}
-
-// {{{ 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_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_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_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_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_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_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_fuel 0
-set g_balance_nix_roundtime 25
-set g_balance_nix_incrtime 1.6
-set g_balance_nix_ammo_shells 15
-set g_balance_nix_ammo_nails 45
-set g_balance_nix_ammo_rockets 15
-set g_balance_nix_ammo_cells 15
-set g_balance_nix_ammo_fuel 0
-set g_balance_nix_ammoincr_shells 2
-set g_balance_nix_ammoincr_nails 6
-set g_balance_nix_ammoincr_rockets 2
-set g_balance_nix_ammoincr_cells 2
-set g_balance_nix_ammoincr_fuel 2
-// }}}
-
-// {{{ pickup items
-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_rockets_max 150
-set g_pickup_cells 50
-set g_pickup_cells_max 150
-set g_pickup_fuel 25
-set g_pickup_fuel_jetpack 50
-set g_pickup_fuel_max 999
-set g_pickup_armorsmall 5
-set g_pickup_armorsmall_max 200
-set g_pickup_armormedium 25
-set g_pickup_armormedium_max 200
-set g_pickup_armorbig 50
-set g_pickup_armorbig_max 200
-set g_pickup_armorlarge 100
-set g_pickup_armorlarge_max 200
-set g_pickup_healthsmall 5
-set g_pickup_healthsmall_max 200
-set g_pickup_healthmedium 25
-set g_pickup_healthmedium_max 100
-set g_pickup_healthlarge 50
-set g_pickup_healthlarge_max 100
-set g_pickup_healthmega 100
-set g_pickup_healthmega_max 200
-set g_pickup_respawntime_short 30
-set g_pickup_respawntime_medium 30
-set g_pickup_respawntime_long 30
-set g_pickup_respawntime_powerup 90
-set g_pickup_respawntime_weapon 5
-set g_pickup_respawntime_ammo 30
-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_weapon 0
-set g_pickup_respawntimejitter_ammo 0
-// }}}
-
-// {{{ regen/rot
-set g_balance_health_regen 0
-set g_balance_health_regenlinear 0
-set g_balance_pause_health_regen 0
-set g_balance_pause_health_regen_spawn 0
-set g_balance_health_rot 0
-set g_balance_health_rotlinear 1
-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_armor_regen 0
-set g_balance_armor_regenlinear 0
-set g_balance_armor_rot 0
-set g_balance_armor_rotlinear 1
-set g_balance_pause_armor_rot 1
-set g_balance_pause_armor_rot_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_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
-set g_balance_fuel_rot 0.05
-set g_balance_fuel_rotlinear 0
-set g_balance_pause_fuel_rot 5
-set g_balance_pause_fuel_rot_spawn 10
-set g_balance_fuel_regenstable 50
-set g_balance_fuel_rotstable 100
-set g_balance_fuel_limit 999
-// }}}
-
-// {{{ misc
-set g_balance_selfdamagepercent 0.75
-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"
-set g_weaponforcefactor 1 "weapon force multiplier"
-set g_weaponspreadfactor 1 "weapon spread multiplier"
-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 0
-// possible values:
-// 0: absolute velocity projectiles (like Quake)
-// 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
-// 2: relative velocity projectiles, but aim is precorrected so projectiles hit the crosshair (note: strafe rockets then are SLOWER than ones shot while standing, happens in 1 too when aiming correctly which is hard)
-// 3: absolute velocity + player velocity component in shot direction (note: does NOT yield the right relative velocity, but may be good enough, but it is somewhat prone to sniper rockets)
-// 4: just add the player velocity length to the absolute velocity (tZork's sniper rockets)
-set g_projectiles_newton_style_2_minfactor 0.7
-set g_projectiles_newton_style_2_maxfactor 5
-set g_projectiles_spread_style 4
-// possible values:
-// 0: forward + solid sphere (like Quake) - varies velocity
-// 1: forward + flattened solid sphere
-// 2: forward + solid circle
-// 3: forward + normal distribution 3D - varies velocity
-// 4: forward + normal distribution on a plane
-// 5: forward + circle with 1-r falloff
-// 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
-// }}}
-
-// {{{ powerups
-set g_balance_powerup_invincible_takedamage 0.25
-set g_balance_powerup_invincible_time 30
-set g_balance_powerup_strength_damage 4
-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
-// }}}
-
-// {{{ 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_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"
-
-set g_grappling_hook_tarzan 2 // 2: can also pull players
-set g_balance_grapplehook_speed_fly 1800
-set g_balance_grapplehook_speed_pull 2000
-set g_balance_grapplehook_force_rubber 2000
-set g_balance_grapplehook_force_rubber_overstretch 1000
-set g_balance_grapplehook_length_min 50
-set g_balance_grapplehook_stretch 50
-set g_balance_grapplehook_airfriction 0.2
-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_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_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_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_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_shotangle 0
-set g_balance_laser_secondary_delay 0
-// }}}
-// {{{ shotgun
-set g_balance_shotgun_primary_bullets 36
-set g_balance_shotgun_primary_damage 3
-set g_balance_shotgun_primary_force 10
-set g_balance_shotgun_primary_spread 0.18
-set g_balance_shotgun_primary_refire 1
-set g_balance_shotgun_primary_animtime 0.7
-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
-// }}}
-// {{{ 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 7
-set g_balance_uzi_sustained_force 30
-set g_balance_uzi_sustained_spread 0.02
-set g_balance_uzi_sustained_refire 0.1
-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
-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_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_ammo 2
-set g_balance_grenadelauncher_secondary_damage 65
-set g_balance_grenadelauncher_secondary_edgedamage 10
-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_spread 0
-set g_balance_grenadelauncher_secondary_lifetime 2
-set g_balance_grenadelauncher_secondary_refire 0.8
-set g_balance_grenadelauncher_secondary_animtime 0.5
-set g_balance_grenadelauncher_secondary_ammo 2
-set g_balance_grenadelauncher_secondary_health 0
-set g_balance_grenadelauncher_secondary_damageforcescale 0
-// }}}
-// {{{ electro
-set g_balance_electro_lightning 1
-set g_balance_electro_primary_damage 6
-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_radius 850
-set g_balance_electro_primary_comboradius 0
-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_secondary_force 100
-set g_balance_electro_secondary_radius 150
-set g_balance_electro_secondary_speed 900
-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_ammo 2
-set g_balance_electro_secondary_health 5
-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_combo_edgedamage 0
-set g_balance_electro_combo_force 100
-set g_balance_electro_combo_radius 250
-set g_balance_electro_combo_comboradius 0
-set g_balance_electro_combo_speed 2000
-// }}}
-// {{{ crylink
-set g_balance_crylink_primary_damage 18
-set g_balance_crylink_primary_edgedamage 18
-set g_balance_crylink_primary_force 40
-set g_balance_crylink_primary_radius 110
-set g_balance_crylink_primary_speed 1800
-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_animtime 0.4
-set g_balance_crylink_primary_ammo 2
-set g_balance_crylink_primary_bouncedamagefactor 0.5
-
-set g_balance_crylink_primary_middle_lifetime 5 // range: 35000 full, fades to 70000
-set g_balance_crylink_primary_middle_fadetime 5
-set g_balance_crylink_primary_star_lifetime 0.1 // range: 700 full, fades to 2450
-set g_balance_crylink_primary_star_fadetime 0.25
-set g_balance_crylink_primary_other_lifetime 0.1 // range: 700 full, fades to 2450
-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_shots 3
-set g_balance_crylink_secondary_bounces 0
-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: 35000 full, fades to 70000
-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_fadetime 2
-// }}}
-// {{{ nex
-set g_balance_nex_damage 100
-set g_balance_nex_force 200
-set g_balance_nex_refire 1.25
-set g_balance_nex_animtime 0.8
-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
-// }}}
-// {{{ minstanex
-set g_balance_minstanex_refire 1
-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_force 70
-set g_balance_hagar_primary_radius 50
-set g_balance_hagar_primary_spread 0
-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_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_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_ammo 1
-// }}}
-// {{{ rocketlauncher
-set g_balance_rocketlauncher_damage 90
-set g_balance_rocketlauncher_edgedamage 30
-set g_balance_rocketlauncher_force 350
-set g_balance_rocketlauncher_radius 110
-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_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_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_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
-// }}}
-// {{{ 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_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_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_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_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...
-set g_balance_hook_secondary_animtime 0.3 // good shoot anim
-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_damage 6
-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_refire 0.066
-set g_balance_hlac_primary_animtime 0.066
-set g_balance_hlac_primary_ammo 0.066
-
-set g_balance_hlac_secondary 0
-set g_balance_hlac_secondary_spread 0.06
-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_lifetime 5
-
-set g_balance_hlac_secondary_refire 0.6
-set g_balance_hlac_secondary_animtime 0.6
-set g_balance_hlac_secondary_ammo 10
-set g_balance_hlac_secondary_shots 5
-// }}}
-// {{{ 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_tracer 1
-set g_balance_campingrifle_primary_damage 50
-set g_balance_campingrifle_primary_headshotaddeddamage 80
-set g_balance_campingrifle_primary_spread 0
-set g_balance_campingrifle_primary_force 0
-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_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_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_speed 20000
-set g_balance_campingrifle_secondary_lifetime 5
-set g_balance_campingrifle_secondary_refire 0.1
-set g_balance_campingrifle_secondary_animtime 0.1
-set g_balance_campingrifle_secondary_ammo 4
-set g_balance_campingrifle_secondary_bulletconstant 130 // 18.3qu
-set g_balance_campingrifle_secondary_burstcost 0.35
-// }}}
-// {{{ tuba
-set g_balance_tuba_refire 0.05
-set g_balance_tuba_animtime 0.05
-set g_balance_tuba_attenuation 0.5
-set g_balance_tuba_volume 1
-set g_balance_tuba_fadetime 0.25
-set g_balance_tuba_damage 5
-set g_balance_tuba_edgedamage 0
-set g_balance_tuba_radius 200
-set g_balance_tuba_force 40
-// }}}
-// {{{ fireball
-set g_balance_fireball_primary_ammo 5
-set g_balance_fireball_primary_animtime 0.3
-set g_balance_fireball_primary_damage 40
-set g_balance_fireball_primary_damageforcescale 4
-set g_balance_fireball_primary_damagetime 5
-set g_balance_fireball_primary_force 100
-set g_balance_fireball_primary_laserburntime 0.5
-set g_balance_fireball_primary_laserdamage 30
-set g_balance_fireball_primary_laseredgedamage 20
-set g_balance_fireball_primary_laserradius 110
-set g_balance_fireball_primary_lifetime 7
-set g_balance_fireball_primary_refire 2
-set g_balance_fireball_primary_speed 900
-set g_balance_fireball_primary_spread 0
-set g_balance_fireball_primary_speed_up 100
-set g_balance_fireball_primary_speed_z 0
-set g_balance_fireball_secondary_ammo 25
-set g_balance_fireball_secondary_animtime 0.15
-set g_balance_fireball_secondary_bfgdamage 100
-set g_balance_fireball_secondary_bfgforce 500
-set g_balance_fireball_secondary_bfgradius 750
-set g_balance_fireball_secondary_damage 150
-set g_balance_fireball_secondary_damageforcescale 4
-set g_balance_fireball_secondary_edgedamage 0
-set g_balance_fireball_secondary_force 700
-set g_balance_fireball_secondary_health 50
-set g_balance_fireball_secondary_laserburntime 0.5
-set g_balance_fireball_secondary_laserdamage 30
-set g_balance_fireball_secondary_laseredgedamage 20
-set g_balance_fireball_secondary_laserradius 256
-set g_balance_fireball_secondary_lifetime 15
-set g_balance_fireball_secondary_radius 200
-set g_balance_fireball_secondary_refire 0
-set g_balance_fireball_secondary_refire2 4
-set g_balance_fireball_secondary_speed 650
-set g_balance_fireball_secondary_spread 0
-// }}}
index 19f7896..c4aa8d5 100644 (file)
@@ -309,6 +309,8 @@ set g_balance_grenadelauncher_secondary_animtime 0.3
 set g_balance_grenadelauncher_secondary_ammo 2
 set g_balance_grenadelauncher_secondary_health 70
 set g_balance_grenadelauncher_secondary_damageforcescale 4
+set g_balance_grenadelauncher_secondary_bouncefactor 0.5
+set g_balance_grenadelauncher_secondary_bouncestop 0.075
 // }}}
 // {{{ electro
 set g_balance_electro_lightning 0
@@ -553,40 +555,40 @@ set g_balance_tuba_radius 200
 set g_balance_tuba_force 40
 // }}}
 // {{{ fireball
-set g_balance_fireball_primary_ammo 5
-set g_balance_fireball_primary_animtime 0.3
-set g_balance_fireball_primary_damage 40
+set g_balance_fireball_primary_ammo 40
+set g_balance_fireball_primary_animtime 0.15
+set g_balance_fireball_primary_bfgdamage 100
+set g_balance_fireball_primary_bfgforce 0
+set g_balance_fireball_primary_bfgradius 1000
+set g_balance_fireball_primary_damage 200
 set g_balance_fireball_primary_damageforcescale 4
-set g_balance_fireball_primary_damagetime 5
-set g_balance_fireball_primary_force 100
+set g_balance_fireball_primary_edgedamage 0
+set g_balance_fireball_primary_force 700
+set g_balance_fireball_primary_health 50
 set g_balance_fireball_primary_laserburntime 0.5
-set g_balance_fireball_primary_laserdamage 30
+set g_balance_fireball_primary_laserdamage 80
 set g_balance_fireball_primary_laseredgedamage 20
-set g_balance_fireball_primary_laserradius 110
-set g_balance_fireball_primary_lifetime 7
-set g_balance_fireball_primary_refire 2
-set g_balance_fireball_primary_speed 900
-set g_balance_fireball_primary_speed_up 100
-set g_balance_fireball_primary_speed_z 0
+set g_balance_fireball_primary_laserradius 256
+set g_balance_fireball_primary_lifetime 15
+set g_balance_fireball_primary_radius 200
+set g_balance_fireball_primary_refire 5
+set g_balance_fireball_primary_refire2 0
+set g_balance_fireball_primary_speed 650
 set g_balance_fireball_primary_spread 0
-set g_balance_fireball_secondary_ammo 25
-set g_balance_fireball_secondary_animtime 0.15
-set g_balance_fireball_secondary_bfgdamage 100
-set g_balance_fireball_secondary_bfgforce 500
-set g_balance_fireball_secondary_bfgradius 750
-set g_balance_fireball_secondary_damage 150
+set g_balance_fireball_secondary_ammo 5
+set g_balance_fireball_secondary_animtime 0.3
+set g_balance_fireball_secondary_damage 40
 set g_balance_fireball_secondary_damageforcescale 4
-set g_balance_fireball_secondary_edgedamage 0
-set g_balance_fireball_secondary_force 700
-set g_balance_fireball_secondary_health 50
+set g_balance_fireball_secondary_damagetime 5
+set g_balance_fireball_secondary_force 100
 set g_balance_fireball_secondary_laserburntime 0.5
-set g_balance_fireball_secondary_laserdamage 30
+set g_balance_fireball_secondary_laserdamage 50
 set g_balance_fireball_secondary_laseredgedamage 20
-set g_balance_fireball_secondary_laserradius 256
-set g_balance_fireball_secondary_lifetime 15
-set g_balance_fireball_secondary_radius 200
-set g_balance_fireball_secondary_refire 0
-set g_balance_fireball_secondary_refire2 4
-set g_balance_fireball_secondary_speed 650
+set g_balance_fireball_secondary_laserradius 110
+set g_balance_fireball_secondary_lifetime 7
+set g_balance_fireball_secondary_refire 2
+set g_balance_fireball_secondary_speed 900
+set g_balance_fireball_secondary_speed_up 100
+set g_balance_fireball_secondary_speed_z 0
 set g_balance_fireball_secondary_spread 0
 // }}}
diff --git a/balanceXPM.cfg b/balanceXPM.cfg
new file mode 100644 (file)
index 0000000..d5c048e
--- /dev/null
@@ -0,0 +1,594 @@
+// {{{ weapon replacement
+// NOTE: this only replaces weapons on the map
+// use g_start_weapon_* to also replace the on-startup weapons!
+// example: g_weaponreplace_nex "nex minstanex", then Nexes become MinstaNexes 50% of the times
+// set the cvars to "0" to totally disable a weapon
+set g_weaponreplace_laser ""
+set g_weaponreplace_shotgun "uzi"
+set g_weaponreplace_uzi "shotgun"
+set g_weaponreplace_grenadelauncher ""
+set g_weaponreplace_electro ""
+set g_weaponreplace_crylink ""
+set g_weaponreplace_nex ""
+set g_weaponreplace_hagar ""
+set g_weaponreplace_rocketlauncher ""
+set g_weaponreplace_porto ""
+set g_weaponreplace_minstanex ""
+set g_weaponreplace_hook 0
+set g_weaponreplace_hlac 0
+set g_weaponreplace_campingrifle 0
+set g_weaponreplace_tuba ""
+set g_weaponreplace_fireball 0
+set sv_q3acompat_machineshotgunswap 0
+// }}}
+
+// {{{ 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_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_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_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_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_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_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_fuel 0
+set g_balance_nix_roundtime 25
+set g_balance_nix_incrtime 1.6
+set g_balance_nix_ammo_shells 15
+set g_balance_nix_ammo_nails 45
+set g_balance_nix_ammo_rockets 15
+set g_balance_nix_ammo_cells 15
+set g_balance_nix_ammo_fuel 0
+set g_balance_nix_ammoincr_shells 2
+set g_balance_nix_ammoincr_nails 6
+set g_balance_nix_ammoincr_rockets 2
+set g_balance_nix_ammoincr_cells 2
+set g_balance_nix_ammoincr_fuel 2
+// }}}
+
+// {{{ pickup items
+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_rockets_max 150
+set g_pickup_cells 50
+set g_pickup_cells_max 150
+set g_pickup_fuel 25
+set g_pickup_fuel_jetpack 50
+set g_pickup_fuel_max 999
+set g_pickup_armorsmall 5
+set g_pickup_armorsmall_max 200
+set g_pickup_armormedium 25
+set g_pickup_armormedium_max 200
+set g_pickup_armorbig 50
+set g_pickup_armorbig_max 200
+set g_pickup_armorlarge 100
+set g_pickup_armorlarge_max 200
+set g_pickup_healthsmall 5
+set g_pickup_healthsmall_max 200
+set g_pickup_healthmedium 25
+set g_pickup_healthmedium_max 100
+set g_pickup_healthlarge 50
+set g_pickup_healthlarge_max 100
+set g_pickup_healthmega 100
+set g_pickup_healthmega_max 200
+set g_pickup_respawntime_short 30
+set g_pickup_respawntime_medium 30
+set g_pickup_respawntime_long 30
+set g_pickup_respawntime_powerup 90
+set g_pickup_respawntime_weapon 5
+set g_pickup_respawntime_ammo 30
+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_weapon 0
+set g_pickup_respawntimejitter_ammo 0
+// }}}
+
+// {{{ regen/rot
+set g_balance_health_regen 0
+set g_balance_health_regenlinear 0
+set g_balance_pause_health_regen 0
+set g_balance_pause_health_regen_spawn 0
+set g_balance_health_rot 0
+set g_balance_health_rotlinear 1
+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_armor_regen 0
+set g_balance_armor_regenlinear 0
+set g_balance_armor_rot 0
+set g_balance_armor_rotlinear 1
+set g_balance_pause_armor_rot 1
+set g_balance_pause_armor_rot_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_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
+set g_balance_fuel_rot 0.05
+set g_balance_fuel_rotlinear 0
+set g_balance_pause_fuel_rot 5
+set g_balance_pause_fuel_rot_spawn 10
+set g_balance_fuel_regenstable 50
+set g_balance_fuel_rotstable 100
+set g_balance_fuel_limit 999
+// }}}
+
+// {{{ misc
+set g_balance_selfdamagepercent 0.75
+set g_balance_weaponswitchdelay 0.05
+set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
+set g_weaponratefactor 1 "weapon fire rate multiplier"
+set g_weapondamagefactor 1 "weapon damage multiplier"
+set g_weaponforcefactor 1 "weapon force multiplier"
+set g_weaponspreadfactor 1 "weapon spread multiplier"
+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 0
+// possible values:
+// 0: absolute velocity projectiles (like Quake)
+// 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
+// 2: relative velocity projectiles, but aim is precorrected so projectiles hit the crosshair (note: strafe rockets then are SLOWER than ones shot while standing, happens in 1 too when aiming correctly which is hard)
+// 3: absolute velocity + player velocity component in shot direction (note: does NOT yield the right relative velocity, but may be good enough, but it is somewhat prone to sniper rockets)
+// 4: just add the player velocity length to the absolute velocity (tZork's sniper rockets)
+set g_projectiles_newton_style_2_minfactor 0.7
+set g_projectiles_newton_style_2_maxfactor 5
+set g_projectiles_spread_style 4
+// possible values:
+// 0: forward + solid sphere (like Quake) - varies velocity
+// 1: forward + flattened solid sphere
+// 2: forward + solid circle
+// 3: forward + normal distribution 3D - varies velocity
+// 4: forward + normal distribution on a plane
+// 5: forward + circle with 1-r falloff
+// 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
+// }}}
+
+// {{{ powerups
+set g_balance_powerup_invincible_takedamage 0.25
+set g_balance_powerup_invincible_time 30
+set g_balance_powerup_strength_damage 4
+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
+// }}}
+
+// {{{ 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_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"
+
+set g_grappling_hook_tarzan 2 // 2: can also pull players
+set g_balance_grapplehook_speed_fly 1800
+set g_balance_grapplehook_speed_pull 2000
+set g_balance_grapplehook_force_rubber 2000
+set g_balance_grapplehook_force_rubber_overstretch 1000
+set g_balance_grapplehook_length_min 50
+set g_balance_grapplehook_stretch 50
+set g_balance_grapplehook_airfriction 0.2
+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_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_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_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_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_shotangle 0
+set g_balance_laser_secondary_delay 0
+// }}}
+// {{{ shotgun
+set g_balance_shotgun_primary_bullets 36
+set g_balance_shotgun_primary_damage 3
+set g_balance_shotgun_primary_force 10
+set g_balance_shotgun_primary_spread 0.18
+set g_balance_shotgun_primary_refire 1
+set g_balance_shotgun_primary_animtime 0.7
+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
+// }}}
+// {{{ 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 7
+set g_balance_uzi_sustained_force 30
+set g_balance_uzi_sustained_spread 0.02
+set g_balance_uzi_sustained_refire 0.1
+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
+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_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_ammo 2
+set g_balance_grenadelauncher_secondary_damage 65
+set g_balance_grenadelauncher_secondary_edgedamage 10
+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_spread 0
+set g_balance_grenadelauncher_secondary_lifetime 2
+set g_balance_grenadelauncher_secondary_refire 0.8
+set g_balance_grenadelauncher_secondary_animtime 0.5
+set g_balance_grenadelauncher_secondary_ammo 2
+set g_balance_grenadelauncher_secondary_health 0
+set g_balance_grenadelauncher_secondary_damageforcescale 0
+set g_balance_grenadelauncher_secondary_bouncefactor 0.5
+set g_balance_grenadelauncher_secondary_bouncestop 0.075
+// }}}
+// {{{ electro
+set g_balance_electro_lightning 1
+set g_balance_electro_primary_damage 6
+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_radius 850
+set g_balance_electro_primary_comboradius 0
+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_secondary_force 100
+set g_balance_electro_secondary_radius 150
+set g_balance_electro_secondary_speed 900
+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_ammo 2
+set g_balance_electro_secondary_health 5
+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_combo_edgedamage 0
+set g_balance_electro_combo_force 100
+set g_balance_electro_combo_radius 250
+set g_balance_electro_combo_comboradius 0
+set g_balance_electro_combo_speed 2000
+// }}}
+// {{{ 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_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_animtime 0.4
+set g_balance_crylink_primary_ammo 2
+set g_balance_crylink_primary_bouncedamagefactor 0.5
+
+set g_balance_crylink_primary_middle_lifetime 5 // range: 35000 full, fades to 70000
+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_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_shots 3
+set g_balance_crylink_secondary_bounces 0
+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: 35000 full, fades to 70000
+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_fadetime 2
+// }}}
+// {{{ nex
+set g_balance_nex_damage 100
+set g_balance_nex_force 200
+set g_balance_nex_refire 1.25
+set g_balance_nex_animtime 0.8
+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
+// }}}
+// {{{ minstanex
+set g_balance_minstanex_refire 1
+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_force 70
+set g_balance_hagar_primary_radius 50
+set g_balance_hagar_primary_spread 0
+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_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_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_ammo 1
+// }}}
+// {{{ rocketlauncher
+set g_balance_rocketlauncher_damage 90
+set g_balance_rocketlauncher_edgedamage 30
+set g_balance_rocketlauncher_force 350
+set g_balance_rocketlauncher_radius 110
+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_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_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_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
+// }}}
+// {{{ 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_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_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_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_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...
+set g_balance_hook_secondary_animtime 0.3 // good shoot anim
+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_damage 6
+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_refire 0.066
+set g_balance_hlac_primary_animtime 0.066
+set g_balance_hlac_primary_ammo 0.066
+
+set g_balance_hlac_secondary 0
+set g_balance_hlac_secondary_spread 0.06
+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_lifetime 5
+
+set g_balance_hlac_secondary_refire 0.6
+set g_balance_hlac_secondary_animtime 0.6
+set g_balance_hlac_secondary_ammo 10
+set g_balance_hlac_secondary_shots 5
+// }}}
+// {{{ 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_tracer 1
+set g_balance_campingrifle_primary_damage 50
+set g_balance_campingrifle_primary_headshotaddeddamage 80
+set g_balance_campingrifle_primary_spread 0
+set g_balance_campingrifle_primary_force 0
+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_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_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_speed 20000
+set g_balance_campingrifle_secondary_lifetime 5
+set g_balance_campingrifle_secondary_refire 0.1
+set g_balance_campingrifle_secondary_animtime 0.1
+set g_balance_campingrifle_secondary_ammo 4
+set g_balance_campingrifle_secondary_bulletconstant 130 // 18.3qu
+set g_balance_campingrifle_secondary_burstcost 0.35
+// }}}
+// {{{ tuba
+set g_balance_tuba_refire 0.05
+set g_balance_tuba_animtime 0.05
+set g_balance_tuba_attenuation 0.5
+set g_balance_tuba_volume 1
+set g_balance_tuba_fadetime 0.25
+set g_balance_tuba_damage 5
+set g_balance_tuba_edgedamage 0
+set g_balance_tuba_radius 200
+set g_balance_tuba_force 40
+// }}}
+// {{{ fireball
+set g_balance_fireball_primary_ammo 40
+set g_balance_fireball_primary_animtime 0.15
+set g_balance_fireball_primary_bfgdamage 100
+set g_balance_fireball_primary_bfgforce 0
+set g_balance_fireball_primary_bfgradius 1000
+set g_balance_fireball_primary_damage 200
+set g_balance_fireball_primary_damageforcescale 4
+set g_balance_fireball_primary_edgedamage 0
+set g_balance_fireball_primary_force 700
+set g_balance_fireball_primary_health 50
+set g_balance_fireball_primary_laserburntime 0.5
+set g_balance_fireball_primary_laserdamage 80
+set g_balance_fireball_primary_laseredgedamage 20
+set g_balance_fireball_primary_laserradius 256
+set g_balance_fireball_primary_lifetime 15
+set g_balance_fireball_primary_radius 200
+set g_balance_fireball_primary_refire 5
+set g_balance_fireball_primary_refire2 0
+set g_balance_fireball_primary_speed 650
+set g_balance_fireball_primary_spread 0
+set g_balance_fireball_secondary_ammo 5
+set g_balance_fireball_secondary_animtime 0.3
+set g_balance_fireball_secondary_damage 40
+set g_balance_fireball_secondary_damageforcescale 4
+set g_balance_fireball_secondary_damagetime 5
+set g_balance_fireball_secondary_force 100
+set g_balance_fireball_secondary_laserburntime 0.5
+set g_balance_fireball_secondary_laserdamage 50
+set g_balance_fireball_secondary_laseredgedamage 20
+set g_balance_fireball_secondary_laserradius 110
+set g_balance_fireball_secondary_lifetime 7
+set g_balance_fireball_secondary_refire 2
+set g_balance_fireball_secondary_speed 900
+set g_balance_fireball_secondary_speed_up 100
+set g_balance_fireball_secondary_speed_z 0
+set g_balance_fireball_secondary_spread 0
+// }}}
index 0143318..372784d 100644 (file)
@@ -20,3 +20,6 @@ _update_configversion_$g_configversion
 _update_generic
 
 set g_configversion 2
+
+// we now use mastervolume
+volume 1
index 17503f8..add2de9 100644 (file)
@@ -1434,11 +1434,22 @@ alias sethostname "set menu_use_default_hostname 0; hostname $*"
 set sv_foginterval 0
 
 // Audio track names (for old-style "cd loop NUMBER" usage)
-set g_cdtracks_remaplist "digital-pursuit breakdown-easy brainsukker chaos-fog infight neuronal-diving subcities thru-the-mirror calling-bogus beast-of-insanity thunder brokenlight brokenlight stairs sixtyfour_ desert3 ninesix sixtyfour_revisited northern-lights" "list used by mapinfo system to automatically assign cdtracks - must match the cd remap command"
-set g_cdtracks_dontusebydefault "digital-pursuit thunder brokenlight" "list used by mapinfo system to automatically assign cdtracks - must be a subset of g_cdtracks_remaplist"
+set _cdtrack_first "1"
+alias _cdtrack_0 "g_cdtracks_remaplist \"$g_cdtracks_remaplist $1\""
+alias _cdtrack_1 "g_cdtracks_remaplist \"$1\"; set _cdtrack_first 0"
+alias _cdtrack "_cdtrack_$_cdtrack_first $2"
+set g_cdtracks_remaplist ""
+exec cdtracks.cfg
+unset _cdtrack_first
+unalias _cdtrack_0
+unalias _cdtrack_1
+unalias _cdtrack
+
 cd remap $g_cdtracks_remaplist
 set sv_intermission_cdtrack ""
-set menu_cdtrack brokenlight
+
+set g_cdtracks_dontusebydefault ""
+set menu_cdtrack "ninesix"
 
 // maxidle (in seconds): kick players idle for more than that amount of time
 set sv_maxidle 0
@@ -1807,3 +1818,9 @@ sv_gameplayfix_nogravityonground 1
 
 // autodemo deleting
 seta cl_autodemo_delete_keeprecords 0 "when 1, records with a newly made race/cts demo are kept even if cl_autodemo_delete is used to delete demos"
+
+// freeze camera
+set cl_lockview 0 "when 1, the camera does not move any more"
+
+// we now use mastervolume
+volume 1
index 7dfb671..a644a84 100644 (file)
@@ -595,7 +595,7 @@ velocityjitter 0 0 256
 effect TE_TEI_G3
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 color 0xFFFFFF 0xFFFFFF
 size 4 4
 alpha 128 128 256
@@ -769,10 +769,11 @@ originjitter 11 11 11
 effect teleport
 count 1000
 type spark
-tex 40 40
-color 0x807aff 0x4463d5
-size 1 3
+tex 64 64
+color 0xff8400 0xff2a00
+size 1 1
 alpha 0 256 100
+stretchfactor 2
 //gravity 1
 bounce 1.5
 originjitter 1 1 1
@@ -780,6 +781,14 @@ velocityjitter 1000 1000 1500
 velocitymultiplier 0.5
 airfriction 2
 stretchfactor 0.6
+effect teleport
+countabsolute 1
+type smoke
+tex 65 65
+size 150 150
+alpha 190 190 180
+sizeincrease -80
+color 0xff8400 0xff2a00
 
 
 
@@ -873,20 +882,48 @@ lightcolor 2 2 2
 // used in qcsrc/server/w_hlac.qc:     pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
 // used in qcsrc/server/w_laser.qc:    pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
 effect laser_muzzleflash
-count 1
+// glow and light
+countabsolute 1
 type smoke
-color 0xFFFFFF 0xFFFFFF
-tex 0 8
-size 5 5
-alpha 64 64 128
-airfriction 12
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
+color 0xcc0000 0xff0000
+tex 65 65
+size 10 15
+alpha 256 512 6280
+airfriction 10
+sizeincrease -100
+stretchfactor 2
 lightradius 200
 lightradiusfade 2000
 lightcolor 3 0.1 0.1
-
+// electricity
+effect laser_muzzleflash
+count 6
+type spark
+color 0xb44215 0xff0000
+tex 43 43
+size 5 7
+alpha 256 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_muzzleflash
+count 12
+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
 
 
 // decal
@@ -955,19 +992,17 @@ lightcolor 2 1.5 0.2
 sizeincrease 12
 velocitymultiplier 0.05
 effect shotgun_muzzleflash
-count 10
+count 32
 type spark
-tex 40 40
-color 0xFFFDD9 0xff5a00
-size 2 2
+tex 48 55
+color 0xffdb96 0xff5400
+size 10 20
 alpha 0 128 1024
 originjitter 1 1 1
-velocityjitter 444 444 444
-velocitymultiplier 1.7
-gravity 0.3
+velocityjitter 100 100 100
 airfriction 5
-
-
+stretchfactor 2.5
+velocitymultiplier 0.5
 
 // shotgun pellet impact
 // decal
@@ -976,7 +1011,7 @@ effect shotgun_impact
 countabsolute 1
 type decal
 tex 56 59
-size 3 3
+size 5 8
 alpha 256 256 0
 originjitter 10 10 10
 //lightradius 30
@@ -984,43 +1019,48 @@ originjitter 10 10 10
 //lightcolor 1 1 1
 // dust/smoke drifting away from the impact
 effect shotgun_impact
-count 5
-type smoke
+type alphastatic
+notunderwater
 tex 0 8
-color 0xFFFFFF 0xA37443
-size 7 7
-alpha 0 64 32
-originjitter 1 1 1
-airfriction 7
-liquidfriction 16
-velocityjitter 100 100 100
-sizeincrease 12
-velocitymultiplier 0.25
+count 6
+size 10 20
+sizeincrease 25
+alpha 300 550 756
+velocityjitter 150 150 150
+velocitymultiplier 0.2
+airfriction 5
+color 0x473a37 0x0b0a07
+rotate 0 360 -50 50
 // dust/smoke staying at the impact
 effect shotgun_impact
+type alphastatic
+notunderwater
+tex 36 36
 count 1
-type smoke
-tex 0 8
-color 0xFFFFFF 0xFFFFFF
-size 17 17
-alpha 64 64 32
-sizeincrease 4
+size 10 11
+sizeincrease 74
+alpha 200 350 500
+velocityjitter 11 11 11
+airfriction 5
+color 0x201d1a 0x000000
+bounce 6
+velocitymultiplier 0.03
+rotate 0 360 -50 50
 // sparks
 effect shotgun_impact
 notunderwater
-count 20
+count 3
 type spark
 tex 40 40
 color 0xFDFFD9 0xFDFFD9
 size 0.6 0.6
-alpha 256 256 768
+alpha 0 356 268
 gravity 1
-bounce 1
-airfriction 5
+bounce 1.5
+airfriction 1.1
 originjitter 1 1 1
-velocityjitter 400 400 400
-velocitymultiplier 0.1
-
+velocityjitter 200 200 200
+velocitymultiplier 0.2
 
 
 // used in qcsrc/server/w_uzi.qc:      pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
@@ -1051,10 +1091,10 @@ velocitymultiplier 0.5
 airfriction 12
 
 
-// decal
 // used in qcsrc/server/cl_client.qc:  //pointparticles(particleeffectnum("machinegun_impact"), self.origin + self.view_ofs + '0 0 7', '0 0 0', 1)
 // used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("machinegun_impact"), org2, backoff * 1000, 1)
 // used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("machinegun_impact"), org2, backoff * 1000, 1)
+// decal
 effect machinegun_impact
 countabsolute 1
 type decal
@@ -1067,42 +1107,64 @@ lightradiusfade 800
 lightcolor 6 3.6 0.6
 // dust/smoke drifting away from the impact
 effect machinegun_impact
-count 5
-type smoke
+type alphastatic
+notunderwater
 tex 0 8
-color 0xFFFFFF 0xA37443
-size 7 7
-alpha 0 64 32
-originjitter 1 1 1
-airfriction 7
-liquidfriction 16
-velocityjitter 100 100 100
-sizeincrease 12
-velocitymultiplier 0.25
+count 6
+size 10 20
+sizeincrease 15
+alpha 300 550 456
+velocityjitter 150 150 150
+velocitymultiplier 0.1
+airfriction 5
+color 0x473a37 0x0b0a07
+rotate 0 360 -50 50
 // dust/smoke staying at the impact
 effect machinegun_impact
+type alphastatic
+notunderwater
+tex 36 36
 count 1
-type smoke
-tex 0 8
-color 0xFFFFFF 0xFFFFFF
-size 17 17
-alpha 64 64 32
-sizeincrease 4
+size 10 11
+sizeincrease 74
+alpha 200 350 500
+velocityjitter 11 11 11
+airfriction 5
+color 0x201d1a 0x000000
+bounce 6
+velocitymultiplier 0.03
+rotate 0 360 -50 50
+//derbis
+effect machinegun_impact
+type alphastatic
+notunderwater
+tex 66 68
+count 2
+size 1 5
+airfriction 1
+gravity 1.4
+alpha 300 550 256
+velocityjitter 350 350 350
+velocitymultiplier 0.2
+bounce 1.7
+color 0x63493e 0xffffff
+rotate 0 360 -500 500
 // sparks
 effect machinegun_impact
 notunderwater
-count 20
+count 2
 type spark
 tex 40 40
 color 0xFDFFD9 0xFDFFD9
 size 0.3 0.3
-alpha 256 256 768
+alpha 256 256 168
 gravity 1
 bounce 1
-airfriction 5
+airfriction 2
 originjitter 1 1 1
-velocityjitter 400 400 400
-velocitymultiplier 0.1
+velocityjitter 300 300 300
+velocitymultiplier 0.2
+
 
 
 
@@ -1125,16 +1187,17 @@ lightradius 200
 lightradiusfade 2000
 lightcolor 2 1.5 0.2
 effect grenadelauncher_muzzleflash
-count 30
+count 32
 type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
+tex 48 55
+color 0xffdb96 0xff5400
+size 10 20
 alpha 0 128 1024
 originjitter 1 1 1
-velocityjitter 300 300 300
+velocityjitter 100 100 100
 velocitymultiplier 0.5
-airfriction 12
+airfriction 5
+stretchfactor 2.5
 
 
 
@@ -1143,14 +1206,14 @@ airfriction 12
 // used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_GRENADE"), from, to)
 // used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_GRENADE"), from, to)
 effect TR_GRENADE
-trailspacing 6
-type alphastatic
-color 0x303030 0x000000
+trailspacing 2
+type smoke
+color 0x101010 0x000000
 tex 0 8
-size 1 2
+size 3 2
 bounce 1
-sizeincrease 2
-alpha 100 200 280
+sizeincrease 10
+alpha 300 400 780
 originjitter 1 1 1
 velocityjitter 1 1 1
 velocitymultiplier -0.02
@@ -1191,14 +1254,14 @@ velocityjitter 16 16 16
 // used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_KNIGHTSPIKE"), from, to)
 effect TR_KNIGHTSPIKE // used for MF_TRACER2
 notunderwater
-trailspacing 5
-type alphastatic
+trailspacing 3
+type smoke
 color 0x303030 0x000000
 tex 0 8
 size 3 3
 bounce 1
 sizeincrease 11
-alpha 100 200 400
+alpha 300 400 600
 originjitter 2 2 2
 velocityjitter 3 3 3
 velocitymultiplier -0.02
@@ -1234,55 +1297,55 @@ effect grenade_explode
 countabsolute 1
 type decal
 tex 8 16
-size 72 72
+size 48 48
 alpha 256 256 0
-originjitter 23 23 23
-lightradius 400
-lightradiusfade 750
+originjitter 26 26 26
+lightradius 250
+lightradiusfade 400
 lightcolor 8 4 1
-// fire effect
+// fire effect which expands then slows
 effect grenade_explode
 notunderwater
-count 64
+count 80
 type static
 tex 48 55
-color 0x8f0d00 0xff5a00
-size 33 44
-sizeincrease 45
-alpha 200 256 512
-bounce 1.5
+color 0xe03f00 0x5e0000
+size 16 26
+sizeincrease 20
+alpha 128 228 356
+bounce 4.5
 airfriction 8
 liquidfriction 8
 originjitter 8 8 8
-velocityjitter 512 512 512
-// fire effect 2
+velocityjitter 256 256 256
+// fire effect which make brigt dot inside
 effect grenade_explode
 notunderwater
-count 28
-type smoke
+count 30
+type static
 tex 48 55
-color 0xea691b 0xeed05a
-size 33 44
-sizeincrease 55
-alpha 200 256 612
-bounce 2.5
-airfriction 19
-liquidfriction 19
+color 0xe03f00 0xffdf92
+size 6 16
+sizeincrease 40
+alpha 228 328 756
+bounce 1
+airfriction 8
+liquidfriction 8
 originjitter 8 8 8
-velocityjitter 912 912 912
+velocityjitter 256 256 256
 // smoke
 effect grenade_explode
 type alphastatic
 notunderwater
 tex 0 8
-count 64
+count 20
 size 20 40
-sizeincrease 44
-alpha 200 450 456
-velocityjitter 444 444 444
+sizeincrease 34
+alpha 300 550 556
+velocityjitter 256 256 256
 airfriction 5
 color 0x000000 0x111111
-bounce 2
+bounce 6
 // underwater bubbles
 effect grenade_explode
 underwater
@@ -1290,60 +1353,100 @@ count 64
 type bubble
 tex 62 62
 color 0x404040 0x808080
-size 3 3
+size 3 6
 alpha 128 256 64
 gravity -0.125
 bounce 1.5
 liquidfriction 0.25
 originjitter 16 16 16
-velocityjitter 144 144 144
+velocityjitter 196 196 196
+rotate 0 0 0 0
+// underwatershockwave
+effect grenade_explode
+underwater
+type smoke
+countabsolute 1
+tex 33 33
+size 5 5
+sizeincrease 1500
+alpha 40 40 300
+velocitymultiplier 0.3
 // bouncing sparks
 effect grenade_explode
 notunderwater
-count 64
+count 32
 type spark
 tex 40 40
-color 0xffa800 0xffedaf
-size 1 1
-sizeincrease 2
-alpha 44 256 384
+color 0xffa35b 0xfff2be
+size 1 0.1
+alpha 644 956 484
 gravity 1
-airfriction -1
-bounce 1.5
+airfriction 1
+bounce 1.6
 liquidfriction 0.8
 velocityoffset 0 0 80
 originjitter 16 16 16
-velocityjitter 224 224 324
+velocityjitter 424 424 624
+// derbis
+effect grenade_explode
+notunderwater
+count 24
+type alphastatic
+tex 66 68
+color 0x6a3d25 0xcac5b4
+size 2 6
+alpha 644 956 684
+gravity 1.3
+airfriction 0.5
+bounce 1.6
+velocityjitter 324 324 524
+rotate -180 180 -1000 1000
 
 
 
 // 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_muzzleflash
-count 1
+countabsolute 1
 type smoke
 color 0x283880 0x283880 // 0x202020 0x404040
-tex 0 8
-size 5
+tex 65 65
+size 15 15
 alpha 256 256 512
 originjitter 1.5 1.5 1.5
 velocityjitter 6 6 6
+sizeincrease -10
 velocitymultiplier 0.01
 lightradius 200
 lightradiusfade 2000
 lightcolor 1.5 3 6
+
 effect electro_muzzleflash
-count 30
+count 14
 type spark
-tex 31 31
+tex 8 15
 color 0xD9FDFF 0xD9FDFF
-size 3 3
-alpha 0 128 1024
+size 5 15
+alpha 110 228 2024
 originjitter 1 1 1
-velocityjitter 300 300 300
+velocityjitter 150 150 150
 velocitymultiplier 0.5
-airfriction 12
+airfriction 2
+stretchfactor 1.5
 
+effect electro_muzzleflash
+count 10
+type spark
+tex 41 41
+color 0xD9FDFF 0xD9FDFF
+size 7 6
+alpha 110 228 1024
+originjitter 1 1 1
+velocityjitter 350 350 350
+velocitymultiplier 2.5
+airfriction 8
+gravity 1.3
+stretchfactor 0.1
 
 
 // electro trail
@@ -1391,6 +1494,16 @@ originjitter 17 17 17
 lightradius 250
 lightradiusfade 250
 lightcolor 3.125 4.375 10
+// shockwave
+effect electro_impact
+type smoke
+countabsolute 1
+tex 33 33
+size 32 32
+sizeincrease 1000
+color 0x80C0FF 0x80C0FF
+alpha 40 40 350
+velocitymultiplier 44
 // flare effect
 effect electro_impact
 countabsolute 1
@@ -1413,6 +1526,7 @@ gravity -0.3
 airfriction 6
 originjitter 1 1 1
 velocityjitter 512 512 512
+rotate -180 180 -9999 9999
 // inner cloud of smoke
 effect electro_impact
 count 60
@@ -1452,9 +1566,10 @@ count 128
 type spark
 tex 41 41
 color 0xFDFFD9 0xFDFFD9
-size 16 16
+size 1 2
 alpha 256 256 1024
 bounce 2
+stretchfactor 0.4
 //airfriction 2
 originjitter 1 1 1
 velocityjitter 512 512 512
@@ -1493,11 +1608,13 @@ size 48 48
 alpha 128 128 64
 // large sparks
 effect electro_combo
-count 20
+count 10
 type static
 color 0x2030FF 0x80C0FF
 size 32 32
-alpha 256 256 256
+sizeincrease 50
+tex 0 7
+alpha 156 156 156
 bounce 2
 airfriction 6
 liquidfriction 16
@@ -1507,13 +1624,16 @@ effect electro_combo
 count 64
 type spark
 tex 41 41
-color 0xFDFFD9 0xFDFFD9
-size 16 16
-alpha 444 512 866
-bounce 2
+color 0xa9cacf 0x0054ff
+size 2 4
+stretchfactor 2
+gravity 0.3
+alpha 444 512 700
+velocitymultiplier 3
+bounce 1.6
 //airfriction 2
 originjitter 1 1 1
-velocityjitter 512 512 512
+velocityjitter 312 312 312
 // inner cloud of smoke
 effect electro_combo
 count 0.25
@@ -1524,6 +1644,16 @@ size 24 24
 alpha 256 256 256
 originjitter 20 20 20
 velocityjitter 32 32 32
+// shockwave
+effect electro_combo
+type smoke
+countabsolute 1
+color 0xa9cacf 0x0054ff
+tex 33 33
+size 30 30
+sizeincrease 600
+alpha 40 40 100
+velocitymultiplier 0.3
 
 
 
@@ -1532,12 +1662,10 @@ velocityjitter 32 32 32
 effect crylink_muzzleflash
 count 1
 type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 128 128 256
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
+color 0xdd9cff 0xff0090
+tex 65 65
+size 15 20
+alpha 128 128 2024
 velocitymultiplier 0.01
 lightradius 200
 lightradiusfade 2000
@@ -1545,15 +1673,15 @@ lightcolor 1.6 0.2 2
 effect crylink_muzzleflash
 count 10
 type spark
-tex 40 40
+tex 35 36
 color 0xA080C0 0xA080C0
-size 3 3
+size 5 10
 alpha 0 128 1024
 originjitter 1 1 1
 velocityjitter 200 200 200
 velocitymultiplier 0.3
 airfriction 12
-
+stretchfactor 1.5
 
 
 // crylink impact effect
@@ -1584,7 +1712,7 @@ type spark
 tex 41 41
 color 0xA040C0 0xA040C0
 bounce 2
-size 4 4
+size 1 2
 alpha 256 256 1024
 velocityjitter 256 256 256
 // purple splash
@@ -1609,28 +1737,31 @@ velocityjitter 32 32 32
 // used in qcsrc/server/w_minstanex.qc:        pointparticles(particleeffectnum("nex_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
 // used in qcsrc/client/particles.qc:  pointparticles(particleeffectnum("nex_muzzleflash"), shotorg, normalize(endpos - shotorg) * 1000, 1)
 effect nex_muzzleflash
-count 10
-type smoke
-color 0x202020 0x404040
-tex 0 8
+count 24
+type spark
+color 0x202020 0x0072ff
+tex 48 55
 size 16 16
-alpha 128 128 192
+alpha 328 328 4000
 originjitter 4 4 4
-velocityjitter 24 24 24
-velocitymultiplier 0.02
+velocityjitter 180 180 180
+velocitymultiplier 1.4
+stretchfactor 2
+sizeincrease -100
+airfriction 9
 lightradius 200
 lightradiusfade 200
 lightcolor 2 2.5 3
 effect nex_muzzleflash
-count 150
+count 100
 type spark
 tex 41 41
 color 0xD9FDFF 0xD9FDFF
-size 3 3
+size 1 1
 alpha 0 128 1024
 originjitter 1 1 1
 velocityjitter 600 600 600
-velocitymultiplier 0.5
+velocitymultiplier 1.5
 airfriction 9
 
 
@@ -1639,7 +1770,7 @@ airfriction 9
 //effect nex_beam
 //countabsolute 1
 //type beam
-//tex 60 60
+//tex 200 200
 //color 0xFFFFFF 0xFFFFFF
 //size 6 6
 //alpha 128 128 192
@@ -1698,15 +1829,35 @@ originjitter 14 14 14
 lightradius 200
 lightradiusfade 250
 lightcolor 4 6 8
+rotate -180 180 0 0
+// rotating something
+effect nex_impact
+count 10
+type smoke
+tex 46 46
+color 0x1680A0 0x1680A0
+size 25 28
+sizeincrease 20
+alpha 55 55 50
+rotate 180 -180 500 -500
 // shockwave
 effect nex_impact
 countabsolute 1
 type static
-tex 34 34
+tex 33 33
+color 0x1680A0 0x1680A0
 size 16 16
-alpha 100 100 300
-sizeincrease 200
-
+alpha 50 50 400
+sizeincrease 900
+// shockwave2
+effect nex_impact
+countabsolute 1
+type static
+tex 65 65
+color 0x1680A0 0x1680A0
+size 5 5
+alpha 50 50 100
+sizeincrease 500
 
 // flare effect
 effect nex_impact
@@ -1736,11 +1887,24 @@ color 0xD9FDFF 0xD9FDFF
 size 4 4
 alpha 0 128 512
 bounce 2
+stretchfactor 3
 velocityjitter 600 600 600
 velocitymultiplier 0.5
 airfriction 9
-
-
+// small sparks that live longer
+effect nex_impact
+count 32
+type spark
+tex 41 41
+color 0xD9FDFF 0xD9FDFF
+size 2 2
+alpha 255 255 112
+bounce 1.6
+stretchfactor 0.7
+velocityjitter 300 300 600
+velocitymultiplier 2.5
+airfriction 2
+gravity 1
 
 // used in qcsrc/server/w_hagar.qc:    pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
 // used in qcsrc/server/w_hagar.qc:    pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
@@ -1761,14 +1925,16 @@ lightcolor 2 1.5 0.2
 effect hagar_muzzleflash
 count 30
 type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
+tex 48 55
+color 0xff8400 0xff4200
+size 5 10
 alpha 0 128 1024
 originjitter 1 1 1
-velocityjitter 300 300 300
+velocityjitter 200 200 200
 velocitymultiplier 0.5
 airfriction 12
+stretchfactor 2
+rotate -180 180 -400 400
 
 
 
@@ -1878,18 +2044,19 @@ velocityjitter 96 96 96
 // bouncing sparks
 effect hagar_explode
 notunderwater
-count 16
+count 8
 type spark
-color 0x903010 0xFFD030
-size 2 2
 tex 40 40
-alpha 256 256 384
+color 0xffa35b 0xfff2be
+size 1 0.1
+alpha 644 956 684
 gravity 1
-airfriction 0.2
-bounce 1.5
+airfriction 1
+bounce 1.6
 liquidfriction 0.8
 velocityoffset 0 0 80
-velocityjitter 256 256 256
+originjitter 16 16 16
+velocityjitter 224 224 224
 
 
 
@@ -1910,16 +2077,18 @@ velocitymultiplier -0.13
 //lightradiusfade 2000
 //lightcolor 2 1.5 0.2
 effect rocketlauncher_muzzleflash
-count 30
-type spark
-tex 40 40
+count 12
+type smoke
+tex 35 36
 color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
+size 5 10
+sizeincrease 20
+alpha 10 25 20
+originjitter 3 3 3
+velocityjitter 100 100 100
+velocitymultiplier 0.3
+airfriction 9
+rotate -180 180 -30 30
 
 
 
@@ -1931,10 +2100,11 @@ airfriction 12
 // used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_ROCKET"), from, to)
 effect TR_ROCKET
 trailspacing 5
-type alphastatic
+type smoke
+notunderwater
 color 0x000000 0x666666
 tex 0 8
-size 1 4
+size 3 4
 bounce 1
 sizeincrease 11
 alpha 200 300 200
@@ -1944,10 +2114,10 @@ lightcolor 6 3 1
 originjitter 2 2 2
 velocityjitter 3 3 3
 velocitymultiplier -0.02
+rotate -180 180 -30 30
 //gravity -0.11
 // fire
 effect TR_ROCKET
-notunderwater
 trailspacing 2
 type static
 color 0xffdf72 0x811200
@@ -1960,25 +2130,28 @@ velocityjitter 32 32 32
 velocitymultiplier -1.5
 // bubbles
 effect TR_ROCKET
+type bubble
 underwater
 trailspacing 8
-type bubble
 tex 62 62
-color 0x404040 0x808080
-size 1 1
+size 1 2
 alpha 256 256 256
 gravity -0.125
 bounce 1.5
 liquidfriction 4
 velocityjitter 16 16 16
+velocitymultiplier -0.31
+rotate 0 0 0 0
 // sparks
 effect TR_ROCKET
+notunderwater
 trailspacing 10
 type spark
 tex 40 40
 color 0xFFFDD9 0xFFFDD9
-size 1 1
+size 0.5 0.5
 alpha 444 512 1866
+stretchfactor 0.3
 //gravity 1
 bounce 1
 //velocityoffset 0 0 15
@@ -1992,59 +2165,59 @@ effect rocket_explode
 countabsolute 1
 type decal
 tex 8 16
-size 48 48
+size 72 72
 alpha 256 256 0
-originjitter 26 26 26
-lightradius 250
-lightradiusfade 400
+originjitter 23 23 23
+lightradius 400
+lightradiusfade 750
 lightcolor 8 4 1
-// fire effect which expands then slows
+// fire effect
 effect rocket_explode
 notunderwater
-count 80
+count 64
 type static
 tex 48 55
-color 0xe03f00 0x5e0000
-size 16 26
-sizeincrease 20
-alpha 128 228 356
-bounce 4.5
+color 0x8f0d00 0xff5a00
+size 33 44
+sizeincrease 45
+alpha 200 256 512
+bounce 1.5
 airfriction 8
 liquidfriction 8
 originjitter 8 8 8
-velocityjitter 256 256 256
-// fire effect which make brigt dot inside
+velocityjitter 512 512 512
+// fire effect 2
 effect rocket_explode
 notunderwater
-count 30
-type static
+count 28
+type smoke
 tex 48 55
-color 0xe03f00 0xffdf92
-size 6 16
-sizeincrease 40
-alpha 228 328 756
-bounce 1
-airfriction 8
-liquidfriction 8
+color 0xea691b 0xeed05a
+size 33 44
+sizeincrease 55
+alpha 200 256 612
+bounce 2.5
+airfriction 19
+liquidfriction 19
 originjitter 8 8 8
-velocityjitter 256 256 256
+velocityjitter 912 912 912
 // smoke
 effect rocket_explode
 type alphastatic
 notunderwater
 tex 0 8
-count 20
+count 64
 size 20 40
-sizeincrease 34
-alpha 300 550 556
-velocityjitter 256 256 256
+sizeincrease 44
+alpha 200 450 456
+velocityjitter 444 444 444
 airfriction 5
 color 0x000000 0x111111
-bounce 6
+bounce 2
 // underwater bubbles
 effect rocket_explode
 underwater
-count 32
+count 64
 type bubble
 tex 62 62
 color 0x404040 0x808080
@@ -2054,24 +2227,47 @@ gravity -0.125
 bounce 1.5
 liquidfriction 0.25
 originjitter 16 16 16
-velocityjitter 96 96 96
+velocityjitter 144 144 144
+// underwatershockwave
+effect rocket_explode
+underwater
+type smoke
+countabsolute 1
+tex 33 33
+size 30 30
+sizeincrease 1900
+alpha 40 40 300
+velocitymultiplier 0.3
 // bouncing sparks
 effect rocket_explode
 notunderwater
-count 16
+count 32
 type spark
-color 0x903010 0xFFD030
-size 2 2
 tex 40 40
-alpha 256 256 384
+color 0xffa35b 0xfff2be
+size 1 0.1
+alpha 644 956 484
 gravity 1
-airfriction 0.2
-bounce 1.5
+airfriction 1
+bounce 1.6
 liquidfriction 0.8
 velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-
+originjitter 16 16 16
+velocityjitter 424 424 624
+// derbis
+effect rocket_explode
+notunderwater
+count 24
+type alphastatic
+tex 66 68
+color 0x6a3d25 0xcac5b4
+size 2 6
+alpha 644 956 684
+gravity 1.3
+airfriction 0.5
+bounce 1.6
+velocityjitter 324 324 524
+rotate -180 180 -1000 1000
 
 // used in qcsrc/server/g_hook.qc:     pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1)
 effect grapple_muzzleflash
@@ -2093,7 +2289,7 @@ lightcolor 1 0 0
 effect nex242_misc_laser_beam
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 64
 color 0xff0000 0xff0000
@@ -2117,7 +2313,7 @@ velocitymultiplier 100
 effect nex242_misc_laser_beam_fast
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 640
 color 0xff0000 0xff0000
@@ -2140,7 +2336,7 @@ velocitymultiplier 100
 effect nex242_misc_laser_green_beam
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 64
 color 0x00ff00 0x00ff00
@@ -2162,7 +2358,7 @@ velocitymultiplier 100
 effect nex242_misc_laser_blue_beam
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 64
 color 0x0000ff 0x0000ff
@@ -2184,7 +2380,7 @@ velocitymultiplier 100
 effect nex242_misc_laser_yellow_beam
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 64
 color 0xffff00 0xffff00
@@ -2206,7 +2402,7 @@ velocitymultiplier 100
 effect nex242_misc_laser_cyan_beam
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 64
 color 0x00ffff 0x00ffff
@@ -2228,7 +2424,7 @@ velocitymultiplier 100
 effect nex242_misc_laser_magenta_beam
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 64
 color 0xff00ff 0xff00ff
@@ -2250,7 +2446,7 @@ velocitymultiplier 100
 effect nex242_misc_laser_white_beam
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 64
 color 0xffffff 0xffffff
@@ -2272,7 +2468,7 @@ velocitymultiplier 100
 effect nex242_misc_laser_black_beam
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 64
 color 0x000000 0x000000
@@ -2294,7 +2490,7 @@ velocitymultiplier 100
 effect nex242_misc_laser_orange_beam
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 size 1 1
 alpha 256 256 64
 color 0xff6600 0xff6600
@@ -2452,6 +2648,7 @@ airfriction 3
 liquidfriction 6
 velocityjitter 512 512 512
 
+
 // decal
 // used in qcsrc/server/g_triggers.qc:                                 self.cnt = particleeffectnum("laser_deadly")
 // used in qcsrc/server/g_triggers.qc:                 self.cnt = particleeffectnum("laser_deadly")
@@ -3594,41 +3791,42 @@ originjitter 10 10 10
 effect morphed_damage_dissolve
 tex 43 43
 count 20
-type spark
+type smoke
 color 0xffffff 0x9271fb
-size 62 62
+size 40 40
 sizeincrease -16
-alpha 256 256 328
-gravity -0.4
-airfriction 3
+alpha 456 456 1828
+gravity -1.9
+airfriction 8
 liquidfriction 6
 velocityjitter 256 256 512
+rotate -180 180 -399 -99
 
 effect morphed_damage_dissolve
 tex 43 43
 count 5
-type spark
+type smoke
 color 0x7bdbff 0xbed2ff
-size 62 62
+size 40 40
 sizeincrease -16
-alpha 256 256 328
+alpha 256 256 628
 gravity -0.8
-airfriction 5
+airfriction 9
 liquidfriction 6
 velocityjitter 256 256 512
+rotate -180 180 0 0
 
 effect morphed_damage_dissolve
-tex 0 8
+tex 65 65
 count 10
 type smoke
 color 0xffffff 0x9271fb
 size 44 44
 sizeincrease -16
-alpha 256 256 228
+alpha 156 156 128
 airfriction 3
 liquidfriction 6
-originjitter 32 32 96
-
+originjitter 22 22 76
 
 effect morphed_damage_dissolve
 tex 46 46
@@ -3637,18 +3835,19 @@ type smoke
 color 0xffffff 0x9271fb
 size 32 32
 sizeincrease -16
-alpha 256 256 228
+alpha 56 56 128
 gravity 1
 bounce 1.5
 airfriction 3
 liquidfriction 6
 velocityjitter 400 400 0
+rotate -180 180 999 -999
 
 // Team / hit minsta effects
 effect TE_TEI_G3RED
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 color 0xFF0000 0xFF0000
 size 4 4
 alpha 128 128 256
@@ -3669,7 +3868,7 @@ type smoke
 effect TE_TEI_G3RED_HIT
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 color 0xFF0000 0xFF0000
 size 8 8
 alpha 128 128 256
@@ -3700,7 +3899,7 @@ type smoke
 effect TE_TEI_G3BLUE
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 color 0x0000FF 0x1100FF
 size 4 4
 alpha 128 128 256
@@ -3721,7 +3920,7 @@ type smoke
 effect TE_TEI_G3BLUE_HIT
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 color 0x0000FF 0x1100FF
 size 8 8
 alpha 128 128 256
@@ -3753,7 +3952,7 @@ type smoke
 effect TE_TEI_G3YELLOW
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 color 0xffff00 0xffff11
 size 4 4
 alpha 128 128 256
@@ -3772,7 +3971,7 @@ type smoke
 effect TE_TEI_G3YELLOW_HIT
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 color 0xffff00 0xffff11
 size 8 8
 alpha 128 128 256
@@ -3803,7 +4002,7 @@ type smoke
 effect TE_TEI_G3PINK
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 color 0xFF00FF 0xFF11FF
 size 4 4
 alpha 128 128 256
@@ -3824,7 +4023,7 @@ type smoke
 effect TE_TEI_G3PINK_HIT
 countabsolute 1
 type beam
-tex 60 60
+tex 200 200
 color 0xFF00FF 0xFF11FF
 size 8 8
 alpha 128 128 256
@@ -4498,20 +4697,6 @@ velocityjitter 16 16 16
 
 
 // rocket guiding start
-// smoke
-effect rocket_guide
-type alphastatic
-notunderwater
-tex 0 8
-count 5
-size 10 20
-sizeincrease 17
-alpha 300 550 556
-velocityjitter 128 128 128
-airfriction 5
-color 0x000000 0x111111
-bounce 6
-velocitymultiplier -0.1
 // underwater bubbles
 effect rocket_guide
 underwater
@@ -4533,16 +4718,25 @@ notunderwater
 count 16
 type spark
 color 0x903010 0xFFD030
-size 2 2
+size 0.3 0.7
 tex 40 40
-alpha 256 256 384
+alpha 256 256 984
 gravity 1
 airfriction 0.2
 bounce 1.5
 liquidfriction 0.8
 velocityoffset 0 0 80
-velocityjitter 256 256 256
-velocitymultiplier -0.1
+velocityjitter 156 156 156
+velocitymultiplier -0.3
+stretchfactor 0.4
+effect rocket_guide
+countabsolute 1
+type smoke
+tex 65 65
+color 0x903010 0xFFD030
+size 10 10
+sizeincrease 300
+alpha 100 100 500
 
 
 // gauntlet laser
@@ -4631,16 +4825,85 @@ velocitymultiplier 20
 velocityoffset 0 0 10
 airfriction 1
 
-// effect for respawn ghosts
-// used in qcsrc/server/cl_client.qc:          pointparticles(particleeffectnum("respawn_ghost"), self.origin, '0 0 0', 1)
-effect respawn_ghost
-count 75
-type static
-color 0xA0A0A0 0xFFFFFF
-size 2 2
-alpha 32 64 128
-airfriction 1
-liquidfriction 4
-originoffset 0 0 -8
-originjitter 28 28 16
-velocityjitter 0 0 256
\ No newline at end of file
+//happy death fx for cl_gentle
+effect happy_damage_dissolve
+tex 69 69
+count 30
+type alphastatic
+color 0x00FFFF 0xFF00FF
+size 32 32
+sizeincrease -10
+alpha 256 256 228
+gravity -0.4
+bounce 1.5
+airfriction 3
+liquidfriction 6
+velocityjitter 312 312 312
+effect happy_damage_dissolve
+tex 69 69
+count 30
+type alphastatic
+color 0xFF00FF 0xFFFF00
+size 32 32
+sizeincrease -10
+alpha 256 256 228
+gravity -0.4
+bounce 1.5
+airfriction 3
+liquidfriction 6
+velocityjitter 312 312 312
+effect happy_damage_dissolve
+tex 69 69
+count 30
+type alphastatic
+color 0xFFFF00 0x00FFFF
+size 32 32
+sizeincrease -10
+alpha 256 256 228
+gravity -0.4
+bounce 1.5
+airfriction 3
+liquidfriction 6
+velocityjitter 312 312 312
+
+
+//happy damage fx for cl_gentle
+effect happy_damage_hit
+tex 69 69
+count 0.2
+type alphastatic
+color 0x00FFFF 0xFF00FF
+size 26 26
+sizeincrease -28
+alpha 128 128 192
+gravity -0.4
+bounce 1.5
+airfriction 5
+liquidfriction 10
+velocityjitter 156 156 156
+effect happy_damage_hit
+tex 69 69
+count 0.2
+type alphastatic
+color 0xFF00FF 0xFFFF00
+size 26 26
+sizeincrease -28
+alpha 128 128 192
+gravity -0.4
+bounce 1.5
+airfriction 5
+liquidfriction 10
+velocityjitter 156 156 156
+effect happy_damage_hit
+tex 69 69
+count 0.2
+type alphastatic
+color 0xFFFF00 0x00FFFF
+size 26 26
+sizeincrease -28
+alpha 128 128 192
+gravity -0.4
+bounce 1.5
+airfriction 5
+liquidfriction 10
+velocityjitter 156 156 156
\ No newline at end of file
diff --git a/gfx/menu/wickedx/background.tga b/gfx/menu/wickedx/background.tga
new file mode 100644 (file)
index 0000000..d785d64
Binary files /dev/null and b/gfx/menu/wickedx/background.tga differ
diff --git a/gfx/menu/wickedx/background_ingame.tga b/gfx/menu/wickedx/background_ingame.tga
new file mode 100644 (file)
index 0000000..2532d17
Binary files /dev/null and b/gfx/menu/wickedx/background_ingame.tga differ
diff --git a/gfx/menu/wickedx/background_l2.tga b/gfx/menu/wickedx/background_l2.tga
new file mode 100644 (file)
index 0000000..2532d17
Binary files /dev/null and b/gfx/menu/wickedx/background_l2.tga differ
diff --git a/gfx/menu/wickedx/bigbutton_c.tga b/gfx/menu/wickedx/bigbutton_c.tga
new file mode 100644 (file)
index 0000000..a8bf8ad
Binary files /dev/null and b/gfx/menu/wickedx/bigbutton_c.tga differ
diff --git a/gfx/menu/wickedx/bigbutton_d.tga b/gfx/menu/wickedx/bigbutton_d.tga
new file mode 100644 (file)
index 0000000..f6a832b
Binary files /dev/null and b/gfx/menu/wickedx/bigbutton_d.tga differ
diff --git a/gfx/menu/wickedx/bigbutton_f.tga b/gfx/menu/wickedx/bigbutton_f.tga
new file mode 100644 (file)
index 0000000..c4cda96
Binary files /dev/null and b/gfx/menu/wickedx/bigbutton_f.tga differ
diff --git a/gfx/menu/wickedx/bigbutton_n.tga b/gfx/menu/wickedx/bigbutton_n.tga
new file mode 100644 (file)
index 0000000..d54d5d5
Binary files /dev/null and b/gfx/menu/wickedx/bigbutton_n.tga differ
diff --git a/gfx/menu/wickedx/bigbuttongray_c.tga b/gfx/menu/wickedx/bigbuttongray_c.tga
new file mode 100644 (file)
index 0000000..38e9653
Binary files /dev/null and b/gfx/menu/wickedx/bigbuttongray_c.tga differ
diff --git a/gfx/menu/wickedx/bigbuttongray_d.tga b/gfx/menu/wickedx/bigbuttongray_d.tga
new file mode 100644 (file)
index 0000000..959ef93
Binary files /dev/null and b/gfx/menu/wickedx/bigbuttongray_d.tga differ
diff --git a/gfx/menu/wickedx/bigbuttongray_f.tga b/gfx/menu/wickedx/bigbuttongray_f.tga
new file mode 100644 (file)
index 0000000..55ff591
Binary files /dev/null and b/gfx/menu/wickedx/bigbuttongray_f.tga differ
diff --git a/gfx/menu/wickedx/bigbuttongray_n.tga b/gfx/menu/wickedx/bigbuttongray_n.tga
new file mode 100644 (file)
index 0000000..edff6d6
Binary files /dev/null and b/gfx/menu/wickedx/bigbuttongray_n.tga differ
diff --git a/gfx/menu/wickedx/border.tga b/gfx/menu/wickedx/border.tga
new file mode 100644 (file)
index 0000000..d435e60
Binary files /dev/null and b/gfx/menu/wickedx/border.tga differ
diff --git a/gfx/menu/wickedx/button_c.tga b/gfx/menu/wickedx/button_c.tga
new file mode 100644 (file)
index 0000000..745ee7c
Binary files /dev/null and b/gfx/menu/wickedx/button_c.tga differ
diff --git a/gfx/menu/wickedx/button_d.tga b/gfx/menu/wickedx/button_d.tga
new file mode 100644 (file)
index 0000000..6639525
Binary files /dev/null and b/gfx/menu/wickedx/button_d.tga differ
diff --git a/gfx/menu/wickedx/button_f.tga b/gfx/menu/wickedx/button_f.tga
new file mode 100644 (file)
index 0000000..817d849
Binary files /dev/null and b/gfx/menu/wickedx/button_f.tga differ
diff --git a/gfx/menu/wickedx/button_n.tga b/gfx/menu/wickedx/button_n.tga
new file mode 100644 (file)
index 0000000..643360e
Binary files /dev/null and b/gfx/menu/wickedx/button_n.tga differ
diff --git a/gfx/menu/wickedx/buttongray_c.tga b/gfx/menu/wickedx/buttongray_c.tga
new file mode 100644 (file)
index 0000000..032ea91
Binary files /dev/null and b/gfx/menu/wickedx/buttongray_c.tga differ
diff --git a/gfx/menu/wickedx/buttongray_d.tga b/gfx/menu/wickedx/buttongray_d.tga
new file mode 100644 (file)
index 0000000..55f1e62
Binary files /dev/null and b/gfx/menu/wickedx/buttongray_d.tga differ
diff --git a/gfx/menu/wickedx/buttongray_f.tga b/gfx/menu/wickedx/buttongray_f.tga
new file mode 100644 (file)
index 0000000..5ed3a7d
Binary files /dev/null and b/gfx/menu/wickedx/buttongray_f.tga differ
diff --git a/gfx/menu/wickedx/buttongray_n.tga b/gfx/menu/wickedx/buttongray_n.tga
new file mode 100644 (file)
index 0000000..6ba22b5
Binary files /dev/null and b/gfx/menu/wickedx/buttongray_n.tga differ
diff --git a/gfx/menu/wickedx/charmap.tga b/gfx/menu/wickedx/charmap.tga
new file mode 100755 (executable)
index 0000000..d8ed1d5
Binary files /dev/null and b/gfx/menu/wickedx/charmap.tga differ
diff --git a/gfx/menu/wickedx/charmapbutton.tga b/gfx/menu/wickedx/charmapbutton.tga
new file mode 100644 (file)
index 0000000..54fe07e
Binary files /dev/null and b/gfx/menu/wickedx/charmapbutton.tga differ
diff --git a/gfx/menu/wickedx/checkbox_c0.tga b/gfx/menu/wickedx/checkbox_c0.tga
new file mode 100644 (file)
index 0000000..aafd089
Binary files /dev/null and b/gfx/menu/wickedx/checkbox_c0.tga differ
diff --git a/gfx/menu/wickedx/checkbox_c1.tga b/gfx/menu/wickedx/checkbox_c1.tga
new file mode 100644 (file)
index 0000000..4e517e2
Binary files /dev/null and b/gfx/menu/wickedx/checkbox_c1.tga differ
diff --git a/gfx/menu/wickedx/checkbox_d0.tga b/gfx/menu/wickedx/checkbox_d0.tga
new file mode 100644 (file)
index 0000000..40efe7a
Binary files /dev/null and b/gfx/menu/wickedx/checkbox_d0.tga differ
diff --git a/gfx/menu/wickedx/checkbox_d1.tga b/gfx/menu/wickedx/checkbox_d1.tga
new file mode 100644 (file)
index 0000000..bba6824
Binary files /dev/null and b/gfx/menu/wickedx/checkbox_d1.tga differ
diff --git a/gfx/menu/wickedx/checkbox_f0.tga b/gfx/menu/wickedx/checkbox_f0.tga
new file mode 100644 (file)
index 0000000..aafd089
Binary files /dev/null and b/gfx/menu/wickedx/checkbox_f0.tga differ
diff --git a/gfx/menu/wickedx/checkbox_f1.tga b/gfx/menu/wickedx/checkbox_f1.tga
new file mode 100644 (file)
index 0000000..4e517e2
Binary files /dev/null and b/gfx/menu/wickedx/checkbox_f1.tga differ
diff --git a/gfx/menu/wickedx/checkbox_n0.tga b/gfx/menu/wickedx/checkbox_n0.tga
new file mode 100644 (file)
index 0000000..aafd089
Binary files /dev/null and b/gfx/menu/wickedx/checkbox_n0.tga differ
diff --git a/gfx/menu/wickedx/checkbox_n1.tga b/gfx/menu/wickedx/checkbox_n1.tga
new file mode 100644 (file)
index 0000000..4e517e2
Binary files /dev/null and b/gfx/menu/wickedx/checkbox_n1.tga differ
diff --git a/gfx/menu/wickedx/checkmark.tga b/gfx/menu/wickedx/checkmark.tga
new file mode 100644 (file)
index 0000000..cf34dde
Binary files /dev/null and b/gfx/menu/wickedx/checkmark.tga differ
diff --git a/gfx/menu/wickedx/closebutton_c.tga b/gfx/menu/wickedx/closebutton_c.tga
new file mode 100644 (file)
index 0000000..56488ec
Binary files /dev/null and b/gfx/menu/wickedx/closebutton_c.tga differ
diff --git a/gfx/menu/wickedx/closebutton_f.tga b/gfx/menu/wickedx/closebutton_f.tga
new file mode 100644 (file)
index 0000000..7338573
Binary files /dev/null and b/gfx/menu/wickedx/closebutton_f.tga differ
diff --git a/gfx/menu/wickedx/closebutton_n.tga b/gfx/menu/wickedx/closebutton_n.tga
new file mode 100644 (file)
index 0000000..e4b6058
Binary files /dev/null and b/gfx/menu/wickedx/closebutton_n.tga differ
diff --git a/gfx/menu/wickedx/color.tga b/gfx/menu/wickedx/color.tga
new file mode 100755 (executable)
index 0000000..5189ab4
Binary files /dev/null and b/gfx/menu/wickedx/color.tga differ
diff --git a/gfx/menu/wickedx/colorbutton_c.tga b/gfx/menu/wickedx/colorbutton_c.tga
new file mode 100644 (file)
index 0000000..1c294f7
Binary files /dev/null and b/gfx/menu/wickedx/colorbutton_c.tga differ
diff --git a/gfx/menu/wickedx/colorbutton_f.tga b/gfx/menu/wickedx/colorbutton_f.tga
new file mode 100644 (file)
index 0000000..0031c35
Binary files /dev/null and b/gfx/menu/wickedx/colorbutton_f.tga differ
diff --git a/gfx/menu/wickedx/colorbutton_n.tga b/gfx/menu/wickedx/colorbutton_n.tga
new file mode 100755 (executable)
index 0000000..7fec859
Binary files /dev/null and b/gfx/menu/wickedx/colorbutton_n.tga differ
diff --git a/gfx/menu/wickedx/colorpicker.tga b/gfx/menu/wickedx/colorpicker.tga
new file mode 100755 (executable)
index 0000000..6f9845b
Binary files /dev/null and b/gfx/menu/wickedx/colorpicker.tga differ
diff --git a/gfx/menu/wickedx/colorpicker_m.tga b/gfx/menu/wickedx/colorpicker_m.tga
new file mode 100755 (executable)
index 0000000..6775942
Binary files /dev/null and b/gfx/menu/wickedx/colorpicker_m.tga differ
diff --git a/gfx/menu/wickedx/crosshairbutton_c.tga b/gfx/menu/wickedx/crosshairbutton_c.tga
new file mode 100644 (file)
index 0000000..1c294f7
Binary files /dev/null and b/gfx/menu/wickedx/crosshairbutton_c.tga differ
diff --git a/gfx/menu/wickedx/crosshairbutton_d.tga b/gfx/menu/wickedx/crosshairbutton_d.tga
new file mode 100755 (executable)
index 0000000..110faa1
Binary files /dev/null and b/gfx/menu/wickedx/crosshairbutton_d.tga differ
diff --git a/gfx/menu/wickedx/crosshairbutton_f.tga b/gfx/menu/wickedx/crosshairbutton_f.tga
new file mode 100644 (file)
index 0000000..0031c35
Binary files /dev/null and b/gfx/menu/wickedx/crosshairbutton_f.tga differ
diff --git a/gfx/menu/wickedx/crosshairbutton_n.tga b/gfx/menu/wickedx/crosshairbutton_n.tga
new file mode 100755 (executable)
index 0000000..ac94535
Binary files /dev/null and b/gfx/menu/wickedx/crosshairbutton_n.tga differ
diff --git a/gfx/menu/wickedx/cursor.tga b/gfx/menu/wickedx/cursor.tga
new file mode 100644 (file)
index 0000000..0a2e295
Binary files /dev/null and b/gfx/menu/wickedx/cursor.tga differ
diff --git a/gfx/menu/wickedx/inputbox_f.tga b/gfx/menu/wickedx/inputbox_f.tga
new file mode 100644 (file)
index 0000000..6b5bd20
Binary files /dev/null and b/gfx/menu/wickedx/inputbox_f.tga differ
diff --git a/gfx/menu/wickedx/inputbox_n.tga b/gfx/menu/wickedx/inputbox_n.tga
new file mode 100644 (file)
index 0000000..ad169c2
Binary files /dev/null and b/gfx/menu/wickedx/inputbox_n.tga differ
diff --git a/gfx/menu/wickedx/radiobutton_c0.tga b/gfx/menu/wickedx/radiobutton_c0.tga
new file mode 100644 (file)
index 0000000..68ed15e
Binary files /dev/null and b/gfx/menu/wickedx/radiobutton_c0.tga differ
diff --git a/gfx/menu/wickedx/radiobutton_c1.tga b/gfx/menu/wickedx/radiobutton_c1.tga
new file mode 100644 (file)
index 0000000..68ed15e
Binary files /dev/null and b/gfx/menu/wickedx/radiobutton_c1.tga differ
diff --git a/gfx/menu/wickedx/radiobutton_d0.tga b/gfx/menu/wickedx/radiobutton_d0.tga
new file mode 100644 (file)
index 0000000..f935318
Binary files /dev/null and b/gfx/menu/wickedx/radiobutton_d0.tga differ
diff --git a/gfx/menu/wickedx/radiobutton_d1.tga b/gfx/menu/wickedx/radiobutton_d1.tga
new file mode 100644 (file)
index 0000000..1bcc41d
Binary files /dev/null and b/gfx/menu/wickedx/radiobutton_d1.tga differ
diff --git a/gfx/menu/wickedx/radiobutton_f0.tga b/gfx/menu/wickedx/radiobutton_f0.tga
new file mode 100644 (file)
index 0000000..237e09b
Binary files /dev/null and b/gfx/menu/wickedx/radiobutton_f0.tga differ
diff --git a/gfx/menu/wickedx/radiobutton_f1.tga b/gfx/menu/wickedx/radiobutton_f1.tga
new file mode 100644 (file)
index 0000000..68ed15e
Binary files /dev/null and b/gfx/menu/wickedx/radiobutton_f1.tga differ
diff --git a/gfx/menu/wickedx/radiobutton_n0.tga b/gfx/menu/wickedx/radiobutton_n0.tga
new file mode 100644 (file)
index 0000000..55dae24
Binary files /dev/null and b/gfx/menu/wickedx/radiobutton_n0.tga differ
diff --git a/gfx/menu/wickedx/radiobutton_n1.tga b/gfx/menu/wickedx/radiobutton_n1.tga
new file mode 100644 (file)
index 0000000..68ed15e
Binary files /dev/null and b/gfx/menu/wickedx/radiobutton_n1.tga differ
diff --git a/gfx/menu/wickedx/scrollbar_c.tga b/gfx/menu/wickedx/scrollbar_c.tga
new file mode 100644 (file)
index 0000000..eb4326d
Binary files /dev/null and b/gfx/menu/wickedx/scrollbar_c.tga differ
diff --git a/gfx/menu/wickedx/scrollbar_f.tga b/gfx/menu/wickedx/scrollbar_f.tga
new file mode 100644 (file)
index 0000000..eb4326d
Binary files /dev/null and b/gfx/menu/wickedx/scrollbar_f.tga differ
diff --git a/gfx/menu/wickedx/scrollbar_n.tga b/gfx/menu/wickedx/scrollbar_n.tga
new file mode 100644 (file)
index 0000000..eb4326d
Binary files /dev/null and b/gfx/menu/wickedx/scrollbar_n.tga differ
diff --git a/gfx/menu/wickedx/scrollbar_s.tga b/gfx/menu/wickedx/scrollbar_s.tga
new file mode 100644 (file)
index 0000000..c7d4700
Binary files /dev/null and b/gfx/menu/wickedx/scrollbar_s.tga differ
diff --git a/gfx/menu/wickedx/skinpreview.jpg b/gfx/menu/wickedx/skinpreview.jpg
new file mode 100755 (executable)
index 0000000..9b8e393
Binary files /dev/null and b/gfx/menu/wickedx/skinpreview.jpg differ
diff --git a/gfx/menu/wickedx/skinvalues.txt b/gfx/menu/wickedx/skinvalues.txt
new file mode 100755 (executable)
index 0000000..f91a8f2
--- /dev/null
@@ -0,0 +1,224 @@
+title WickedX
+author sev
+
+// Colors: 'Red Green Blue'
+// Suffixes: Clicked (_c), Disabled (_d), Focused (_f), Normal (_n)
+
+// Background layer scaling:
+//   Crop (c), Letterbox (l), Height (h), Width (w), Stretch (s)
+// Background layer positioning:
+//   Top Left (7), Top Center (8) Top Right (9)
+//   Middle Left (4), Middle Center (5) Middle Right (6)
+//   Bottom Left (1), Bottom Center (2) Bottom Right (3)
+// ALIGN_BACKGROUND(_INGAME) spspsp, s=Scale p=Position
+
+//------------------------------------------------------------------------------
+// Structure (e.g. positions, sizes, margins)
+//------------------------------------------------------------------------------
+// item: color picker
+//   uses "colorpicker" images
+MARGIN_COLORPICKER              '0 0 0'
+
+// item: dialog
+//   uses "border" images
+//   uses "closebutton" images
+MARGIN_TOP                      8
+MARGIN_BOTTOM                   8
+MARGIN_LEFT                     8
+MARGIN_RIGHT                    8
+MARGIN_COLUMNS                  4
+MARGIN_ROWS                     4
+HEIGHT_DIALOGBORDER             1
+
+// font sizes (used for everything)
+FONTSIZE_NORMAL                 12
+HEIGHT_NORMAL                   1.5
+FONTSIZE_TITLE                  16
+HEIGHT_TITLE                    1.5
+HEIGHT_ZOOMEDTITLE              -1
+
+// general 
+//   uses "background" images
+//   uses "background_ingame" images
+ALIGN_BACKGROUND                h5h5
+ALIGN_BACKGROUND_INGAME         h5
+ALPHA_BACKGROUND_INGAME         1
+ALPHA_DISABLED                  0.2
+ALPHA_BEHIND                    0.5
+ALPHA_TEXT                      0.7
+
+// mouse
+//   uses "cursor" images
+SIZE_CURSOR                     '32 32 0'
+OFFSET_CURSOR                   '0 0 0'
+ALPHA_CURSOR_INTRO              0
+
+// nexposee positions of windows (they are the scale transformation
+// centers, NOT the actual positions of the windows!)
+POSITION_DIALOG_MULTIPLAYER     '0.8 0.4 0'
+POSITION_DIALOG_SINGLEPLAYER    '0.2 0.4 0'
+POSITION_DIALOG_SETTINGS        '0.5 0.95 0'
+POSITION_DIALOG_CREDITS         '-0.05 1.2 0'
+POSITION_DIALOG_QUIT            '1.05 1.2 0'
+
+// tooltips
+//   uses "tooltip" images
+MARGIN_TOOLTIP                  '8 8 0'
+BORDER_TOOLTIP                  '16 16 0'
+FONTSIZE_TOOLTIP                12
+ALPHA_TOOLTIP                   0.7
+WIDTH_TOOLTIP                   0.3
+AVOID_TOOLTIP                   '8 8 0'
+
+//------------------------------------------------------------------------------
+// Colors (e.g. font colors, field colors)
+//------------------------------------------------------------------------------
+// item: campaign
+ALPHA_CAMPAIGN_SELECTABLE       0.8
+COLOR_CAMPAIGN_SELECTABLE       '1 1 1'
+ALPHA_CAMPAIGN_CURRENT          1
+COLOR_CAMPAIGN_CURRENT          '1 1 1'
+ALPHA_CAMPAIGN_FUTURE           0.2
+COLOR_CAMPAIGN_FUTURE           '1 1 1'
+ALPHA_CAMPAIGN_DESCRIPTION      0.7
+
+// item: credits list
+COLOR_CREDITS_TITLE             '0.875 0.375 0'
+ALPHA_CREDITS_TITLE             1
+COLOR_CREDITS_FUNCTION          '0 0.1875 0.4375'
+ALPHA_CREDITS_FUNCTION          0.5
+COLOR_CREDITS_PERSON            '0 0.375 0.75'
+ALPHA_CREDITS_PERSON            0.875
+ROWS_CREDITS                    20
+WIDTH_CREDITS                   0.5
+
+// item: cvar list
+ALPHA_CVARLIST_SAVED            1
+ALPHA_CVARLIST_TEMPORARY        0.7    
+COLOR_CVARLIST_CHANGED          '0 0.375 0.75' 
+COLOR_CVARLIST_REVERTBUTTON     '1 0 0'
+COLOR_CVARLIST_UNCHANGED        '1 1 1'
+
+// item: list box
+COLOR_LISTBOX_SELECTED          '0.875 0.375 0'
+ALPHA_LISTBOX_SELECTED          1
+COLOR_LISTBOX_WAITING           '1 1 1'
+ALPHA_LISTBOX_WAITING           0.5
+
+// item: map list
+COLOR_MAPLIST_TITLE             '1 1 1'
+COLOR_MAPLIST_AUTHOR            '0 0.375 0.75'
+COLOR_MAPLIST_INCLUDEDBG        '0 0.1875 0.4375'
+ALPHA_MAPLIST_INCLUDEDFG        1
+ALPHA_MAPLIST_INCLUDEDBG        0.375
+ALPHA_MAPLIST_NOTINCLUDEDFG     0.25
+
+// item: nexposee
+ALPHAS_MAINMENU                 '0.8 0.9 1'
+
+// item: player model
+COLOR_MODELTITLE                '1 1 1'
+ALPHA_MODELTITLE                1
+
+// item: server info
+COLOR_SERVERINFO_NAME           '1 1 1'
+COLOR_SERVERINFO_IP             '0.875 0.375 0'
+
+// item: server list
+ALPHA_SERVERLIST_FULL           0.4
+ALPHA_SERVERLIST_EMPTY          0.7
+COLOR_SERVERLIST_LOWPING        '0 1 0'
+COLOR_SERVERLIST_MEDPING        '1 0.75 0'
+COLOR_SERVERLIST_HIGHPING       '1 0 0'
+ALPHA_SERVERLIST_HIGHPING       0.4
+ALPHA_SERVERLIST_FAVORITE       0.8
+COLOR_SERVERLIST_FAVORITE       '1 1 1'
+
+// item: skin list
+COLOR_SKINLIST_TITLE            '1 1 1'
+COLOR_SKINLIST_AUTHOR           '0 0.375 0.75'
+
+//------------------------------------------------------------------------------
+// Images (colors multiplied to images)
+//------------------------------------------------------------------------------
+// item: button
+//   uses "button" images
+//   uses "buttongray" images
+//   uses "bigbutton" images
+//   uses "bigbuttongray" images
+COLOR_BUTTON_N                  '1 1 1'
+COLOR_BUTTON_C                  '1 1 1'
+COLOR_BUTTON_F                  '1 1 1'
+COLOR_BUTTON_D                  '1 1 1'
+
+// item: checkbox
+//   uses "checkbox" images
+COLOR_CHECKBOX_N                '1 1 1'
+COLOR_CHECKBOX_C                '0.5 0.75 1'
+COLOR_CHECKBOX_F                '0.5 0.75 1'
+COLOR_CHECKBOX_D                '1 1 1'
+
+// item: crosshair button
+//   uses "crosshairbutton" images
+
+// dialog background colors
+//   uses "border" images
+COLOR_DIALOG_MULTIPLAYER        '1 1 1'
+COLOR_DIALOG_SETTINGS           '1 1 1'
+COLOR_DIALOG_TEAMSELECT         '1 1 1'
+COLOR_DIALOG_QUIT               '1 1 1'
+COLOR_DIALOG_ADVANCED           '1 1 1'
+COLOR_DIALOG_MUTATORS           '1 1 1'
+COLOR_DIALOG_MAPINFO            '1 1 1'
+COLOR_DIALOG_USERBIND           '1 1 1'
+COLOR_DIALOG_SINGLEPLAYER       '1 1 1'
+COLOR_DIALOG_CREDITS            '1 1 1'
+COLOR_DIALOG_WEAPONS            '1 1 1'
+COLOR_DIALOG_RADAR              '1 1 1'
+COLOR_DIALOG_SERVERINFO         '1 1 1'
+COLOR_DIALOG_CVARS              '1 0 0'
+
+// item: input box
+//   uses "inputbox" images
+COLOR_INPUTBOX_N                '1 1 1'
+COLOR_INPUTBOX_F                '1 1 1'
+MARGIN_INPUTBOX_CHARS           1
+
+// item: key grabber
+COLOR_KEYGRABBER_TITLES         '1 1 1'
+ALPHA_KEYGRABBER_TITLES         1
+COLOR_KEYGRABBER_KEYS           '1 1 1'
+ALPHA_KEYGRABBER_KEYS           0.7
+
+// item: player color button
+//   uses "colorbutton" images
+//   uses "color" images
+
+// item: player name editor
+//   uses "charmap" images
+//   uses "charmapbutton" images
+
+// item: radio button
+//   uses "radiobutton" images
+COLOR_RADIOBUTTON_N             '1 1 1'
+COLOR_RADIOBUTTON_C             '1 1 1'
+COLOR_RADIOBUTTON_F             '1 1 1'
+COLOR_RADIOBUTTON_D             '1 1 1'
+
+// item: scrollbar
+//   uses "scrollbar" images
+COLOR_SCROLLBAR_N               '1 1 1'
+COLOR_SCROLLBAR_C               '0.5 0.75 1'
+COLOR_SCROLLBAR_F               '0.5 0.75 1'
+COLOR_SCROLLBAR_S               '0.25 0.25 0.25'
+WIDTH_SCROLLBAR                 16
+
+// item: slider
+//   uses "slider" images
+COLOR_SLIDER_N                  '1 1 1'
+COLOR_SLIDER_C                  '0.5 0.75 1'
+COLOR_SLIDER_F                  '0.5 0.75 1'
+COLOR_SLIDER_D                  '1 1 1'
+COLOR_SLIDER_S                  '0.25 0.25 0.25'
+WIDTH_SLIDERTEXT                0.333333333333
+TOLERANCE_SLIDER                '0.2 2 0'
diff --git a/gfx/menu/wickedx/slider_c.tga b/gfx/menu/wickedx/slider_c.tga
new file mode 100644 (file)
index 0000000..42e3e98
Binary files /dev/null and b/gfx/menu/wickedx/slider_c.tga differ
diff --git a/gfx/menu/wickedx/slider_d.tga b/gfx/menu/wickedx/slider_d.tga
new file mode 100644 (file)
index 0000000..87ccbe5
Binary files /dev/null and b/gfx/menu/wickedx/slider_d.tga differ
diff --git a/gfx/menu/wickedx/slider_f.tga b/gfx/menu/wickedx/slider_f.tga
new file mode 100644 (file)
index 0000000..42e3e98
Binary files /dev/null and b/gfx/menu/wickedx/slider_f.tga differ
diff --git a/gfx/menu/wickedx/slider_n.tga b/gfx/menu/wickedx/slider_n.tga
new file mode 100644 (file)
index 0000000..42e3e98
Binary files /dev/null and b/gfx/menu/wickedx/slider_n.tga differ
diff --git a/gfx/menu/wickedx/slider_s.tga b/gfx/menu/wickedx/slider_s.tga
new file mode 100644 (file)
index 0000000..954c90c
Binary files /dev/null and b/gfx/menu/wickedx/slider_s.tga differ
diff --git a/gfx/menu/wickedx/tooltip.tga b/gfx/menu/wickedx/tooltip.tga
new file mode 100644 (file)
index 0000000..1dc5679
Binary files /dev/null and b/gfx/menu/wickedx/tooltip.tga differ
index 5455e7b..8ee89ad 100644 (file)
Binary files a/particles/particlefont.tga and b/particles/particlefont.tga differ
index 10073ca..2994f82 100644 (file)
-0 0.001953125 0.001953125 0.123046875 0.123046875
-1 0.126953125 0.001953125 0.248046875 0.123046875
-2 0.251953125 0.001953125 0.373046875 0.123046875
-3 0.376953125 0.001953125 0.498046875 0.123046875
-4 0.501953125 0.001953125 0.623046875 0.123046875
-5 0.626953125 0.001953125 0.748046875 0.123046875
-6 0.751953125 0.001953125 0.873046875 0.123046875
-7 0.876953125 0.001953125 0.998046875 0.123046875
-8 0.001953125 0.126953125 0.123046875 0.248046875
-9 0.126953125 0.126953125 0.248046875 0.248046875
-10 0.251953125 0.126953125 0.373046875 0.248046875
-11 0.376953125 0.126953125 0.498046875 0.248046875
-12 0.501953125 0.126953125 0.623046875 0.248046875
-13 0.626953125 0.126953125 0.748046875 0.248046875
-14 0.751953125 0.126953125 0.873046875 0.248046875
-15 0.876953125 0.126953125 0.998046875 0.248046875
-16 0.001953125 0.251953125 0.123046875 0.373046875
-17 0.126953125 0.251953125 0.248046875 0.373046875
-18 0.251953125 0.251953125 0.373046875 0.373046875
-19 0.376953125 0.251953125 0.498046875 0.373046875
-20 0.501953125 0.251953125 0.623046875 0.373046875
-21 0.626953125 0.251953125 0.748046875 0.373046875
-22 0.751953125 0.251953125 0.873046875 0.373046875
-23 0.876953125 0.251953125 0.998046875 0.373046875
-24 0.001953125 0.376953125 0.123046875 0.498046875
-25 0.126953125 0.376953125 0.248046875 0.498046875
-26 0.251953125 0.376953125 0.373046875 0.498046875
-27 0.376953125 0.376953125 0.498046875 0.498046875
-28 0.501953125 0.376953125 0.623046875 0.498046875
-29 0.626953125 0.376953125 0.748046875 0.498046875
-30 0.751953125 0.376953125 0.873046875 0.498046875
-31 0.876953125 0.376953125 0.998046875 0.498046875
-32 0.001953125 0.501953125 0.123046875 0.623046875
-33 0.126953125 0.501953125 0.248046875 0.623046875
-34 0.251953125 0.501953125 0.373046875 0.623046875
-35 0.376953125 0.501953125 0.498046875 0.623046875
-36 0.501953125 0.501953125 0.623046875 0.623046875
-37 0.626953125 0.501953125 0.748046875 0.623046875
-38 0.751953125 0.501953125 0.873046875 0.623046875
-39 0.876953125 0.501953125 0.998046875 0.623046875
-40 0.001953125 0.626953125 0.123046875 0.748046875
-41 0.126953125 0.626953125 0.248046875 0.748046875
-42 0.251953125 0.626953125 0.373046875 0.748046875
-43 0.376953125 0.626953125 0.498046875 0.748046875
-44 0.501953125 0.626953125 0.623046875 0.748046875
-45 0.626953125 0.626953125 0.748046875 0.748046875
-46 0.751953125 0.626953125 0.873046875 0.748046875
-47 0.876953125 0.626953125 0.998046875 0.748046875
-48 0.001953125 0.751953125 0.123046875 0.873046875
-49 0.126953125 0.751953125 0.248046875 0.873046875
-50 0.251953125 0.751953125 0.373046875 0.873046875
-51 0.376953125 0.751953125 0.498046875 0.873046875
-52 0.501953125 0.751953125 0.623046875 0.873046875
-53 0.626953125 0.751953125 0.748046875 0.873046875
-54 0.751953125 0.751953125 0.873046875 0.873046875
-55 0.876953125 0.751953125 0.998046875 0.873046875
-56 0.001953125 0.876953125 0.123046875 0.998046875
-57 0.126953125 0.876953125 0.248046875 0.998046875
-58 0.251953125 0.876953125 0.373046875 0.998046875
-59 0.376953125 0.876953125 0.498046875 0.998046875
-// 60 0.501953125 0.876953125 0.623046875 0.998046875
-61 0.626953125 0.876953125 0.748046875 0.998046875
-62 0.751953125 0.876953125 0.873046875 0.998046875
-63 0.876953125 0.876953125 0.998046875 0.998046875
+0 0.00048828125 0.00048828125 0.06201171875 0.06201171875
+1 0.06298828125 0.00048828125 0.12451171875 0.06201171875
+2 0.12548828125 0.00048828125 0.18701171875 0.06201171875
+3 0.18798828125 0.00048828125 0.24951171875 0.06201171875
+4 0.25048828125 0.00048828125 0.31201171875 0.06201171875
+5 0.31298828125 0.00048828125 0.37451171875 0.06201171875
+6 0.37548828125 0.00048828125 0.43701171875 0.06201171875
+7 0.43798828125 0.00048828125 0.49951171875 0.06201171875
+8 0.50048828125 0.00048828125 0.56201171875 0.06201171875
+9 0.56298828125 0.00048828125 0.62451171875 0.06201171875
+10 0.62548828125 0.00048828125 0.68701171875 0.06201171875
+11 0.68798828125 0.00048828125 0.74951171875 0.06201171875
+12 0.75048828125 0.00048828125 0.81201171875 0.06201171875
+13 0.81298828125 0.00048828125 0.87451171875 0.06201171875
+14 0.87548828125 0.00048828125 0.93701171875 0.06201171875
+15 0.93798828125 0.00048828125 0.99951171875 0.06201171875
+16 0.00048828125 0.06298828125 0.06201171875 0.12451171875
+17 0.06298828125 0.06298828125 0.12451171875 0.12451171875
+18 0.12548828125 0.06298828125 0.18701171875 0.12451171875
+19 0.18798828125 0.06298828125 0.24951171875 0.12451171875
+20 0.25048828125 0.06298828125 0.31201171875 0.12451171875
+21 0.31298828125 0.06298828125 0.37451171875 0.12451171875
+22 0.37548828125 0.06298828125 0.43701171875 0.12451171875
+23 0.43798828125 0.06298828125 0.49951171875 0.12451171875
+24 0.50048828125 0.06298828125 0.56201171875 0.12451171875
+25 0.56298828125 0.06298828125 0.62451171875 0.12451171875
+26 0.62548828125 0.06298828125 0.68701171875 0.12451171875
+27 0.68798828125 0.06298828125 0.74951171875 0.12451171875
+28 0.75048828125 0.06298828125 0.81201171875 0.12451171875
+29 0.81298828125 0.06298828125 0.87451171875 0.12451171875
+30 0.87548828125 0.06298828125 0.93701171875 0.12451171875
+31 0.93798828125 0.06298828125 0.99951171875 0.12451171875
+32 0.00048828125 0.12548828125 0.06201171875 0.18701171875
+33 0.06298828125 0.12548828125 0.12451171875 0.18701171875
+34 0.12548828125 0.12548828125 0.18701171875 0.18701171875
+35 0.18798828125 0.12548828125 0.24951171875 0.18701171875
+36 0.25048828125 0.12548828125 0.31201171875 0.18701171875
+37 0.31298828125 0.12548828125 0.37451171875 0.18701171875
+38 0.37548828125 0.12548828125 0.43701171875 0.18701171875
+39 0.43798828125 0.12548828125 0.49951171875 0.18701171875
+40 0.50048828125 0.12548828125 0.56201171875 0.18701171875
+41 0.56298828125 0.12548828125 0.62451171875 0.18701171875
+42 0.62548828125 0.12548828125 0.68701171875 0.18701171875
+43 0.68798828125 0.12548828125 0.74951171875 0.18701171875
+44 0.75048828125 0.12548828125 0.81201171875 0.18701171875
+45 0.81298828125 0.12548828125 0.87451171875 0.18701171875
+46 0.87548828125 0.12548828125 0.93701171875 0.18701171875
+47 0.93798828125 0.12548828125 0.99951171875 0.18701171875
+48 0.00048828125 0.18798828125 0.06201171875 0.24951171875
+49 0.06298828125 0.18798828125 0.12451171875 0.24951171875
+50 0.12548828125 0.18798828125 0.18701171875 0.24951171875
+51 0.18798828125 0.18798828125 0.24951171875 0.24951171875
+52 0.25048828125 0.18798828125 0.31201171875 0.24951171875
+53 0.31298828125 0.18798828125 0.37451171875 0.24951171875
+54 0.37548828125 0.18798828125 0.43701171875 0.24951171875
+55 0.43798828125 0.18798828125 0.49951171875 0.24951171875
+56 0.50048828125 0.18798828125 0.56201171875 0.24951171875
+57 0.56298828125 0.18798828125 0.62451171875 0.24951171875
+58 0.62548828125 0.18798828125 0.68701171875 0.24951171875
+59 0.68798828125 0.18798828125 0.74951171875 0.24951171875
+60 0.75048828125 0.18798828125 0.81201171875 0.24951171875
+61 0.81298828125 0.18798828125 0.87451171875 0.24951171875
+62 0.87548828125 0.18798828125 0.93701171875 0.24951171875
+63 0.93798828125 0.18798828125 0.99951171875 0.24951171875
+64 0.00048828125 0.25048828125 0.06201171875 0.31201171875
+65 0.06298828125 0.25048828125 0.12451171875 0.31201171875
+66 0.12548828125 0.25048828125 0.18701171875 0.31201171875
+67 0.18798828125 0.25048828125 0.24951171875 0.31201171875
+68 0.25048828125 0.25048828125 0.31201171875 0.31201171875
+69 0.31298828125 0.25048828125 0.37451171875 0.31201171875
+70 0.37548828125 0.25048828125 0.43701171875 0.31201171875
+71 0.43798828125 0.25048828125 0.49951171875 0.31201171875
+72 0.50048828125 0.25048828125 0.56201171875 0.31201171875
+73 0.56298828125 0.25048828125 0.62451171875 0.31201171875
+74 0.62548828125 0.25048828125 0.68701171875 0.31201171875
+75 0.68798828125 0.25048828125 0.74951171875 0.31201171875
+76 0.75048828125 0.25048828125 0.81201171875 0.31201171875
+77 0.81298828125 0.25048828125 0.87451171875 0.31201171875
+78 0.87548828125 0.25048828125 0.93701171875 0.31201171875
+79 0.93798828125 0.25048828125 0.99951171875 0.31201171875
+80 0.00048828125 0.31298828125 0.06201171875 0.37451171875
+81 0.06298828125 0.31298828125 0.12451171875 0.37451171875
+82 0.12548828125 0.31298828125 0.18701171875 0.37451171875
+83 0.18798828125 0.31298828125 0.24951171875 0.37451171875
+84 0.25048828125 0.31298828125 0.31201171875 0.37451171875
+85 0.31298828125 0.31298828125 0.37451171875 0.37451171875
+86 0.37548828125 0.31298828125 0.43701171875 0.37451171875
+87 0.43798828125 0.31298828125 0.49951171875 0.37451171875
+88 0.50048828125 0.31298828125 0.56201171875 0.37451171875
+89 0.56298828125 0.31298828125 0.62451171875 0.37451171875
+90 0.62548828125 0.31298828125 0.68701171875 0.37451171875
+91 0.68798828125 0.31298828125 0.74951171875 0.37451171875
+92 0.75048828125 0.31298828125 0.81201171875 0.37451171875
+93 0.81298828125 0.31298828125 0.87451171875 0.37451171875
+94 0.87548828125 0.31298828125 0.93701171875 0.37451171875
+95 0.93798828125 0.31298828125 0.99951171875 0.37451171875
+96 0.00048828125 0.37548828125 0.06201171875 0.43701171875
+97 0.06298828125 0.37548828125 0.12451171875 0.43701171875
+98 0.12548828125 0.37548828125 0.18701171875 0.43701171875
+99 0.18798828125 0.37548828125 0.24951171875 0.43701171875
+100 0.25048828125 0.37548828125 0.31201171875 0.43701171875
+101 0.31298828125 0.37548828125 0.37451171875 0.43701171875
+102 0.37548828125 0.37548828125 0.43701171875 0.43701171875
+103 0.43798828125 0.37548828125 0.49951171875 0.43701171875
+104 0.50048828125 0.37548828125 0.56201171875 0.43701171875
+105 0.56298828125 0.37548828125 0.62451171875 0.43701171875
+106 0.62548828125 0.37548828125 0.68701171875 0.43701171875
+107 0.68798828125 0.37548828125 0.74951171875 0.43701171875
+108 0.75048828125 0.37548828125 0.81201171875 0.43701171875
+109 0.81298828125 0.37548828125 0.87451171875 0.43701171875
+110 0.87548828125 0.37548828125 0.93701171875 0.43701171875
+111 0.93798828125 0.37548828125 0.99951171875 0.43701171875
+112 0.00048828125 0.43798828125 0.06201171875 0.49951171875
+113 0.06298828125 0.43798828125 0.12451171875 0.49951171875
+114 0.12548828125 0.43798828125 0.18701171875 0.49951171875
+115 0.18798828125 0.43798828125 0.24951171875 0.49951171875
+116 0.25048828125 0.43798828125 0.31201171875 0.49951171875
+117 0.31298828125 0.43798828125 0.37451171875 0.49951171875
+118 0.37548828125 0.43798828125 0.43701171875 0.49951171875
+119 0.43798828125 0.43798828125 0.49951171875 0.49951171875
+120 0.50048828125 0.43798828125 0.56201171875 0.49951171875
+121 0.56298828125 0.43798828125 0.62451171875 0.49951171875
+122 0.62548828125 0.43798828125 0.68701171875 0.49951171875
+123 0.68798828125 0.43798828125 0.74951171875 0.49951171875
+124 0.75048828125 0.43798828125 0.81201171875 0.49951171875
+125 0.81298828125 0.43798828125 0.87451171875 0.49951171875
+126 0.87548828125 0.43798828125 0.93701171875 0.49951171875
+127 0.93798828125 0.43798828125 0.99951171875 0.49951171875
+128 0.00048828125 0.50048828125 0.06201171875 0.56201171875
+129 0.06298828125 0.50048828125 0.12451171875 0.56201171875
+130 0.12548828125 0.50048828125 0.18701171875 0.56201171875
+131 0.18798828125 0.50048828125 0.24951171875 0.56201171875
+132 0.25048828125 0.50048828125 0.31201171875 0.56201171875
+133 0.31298828125 0.50048828125 0.37451171875 0.56201171875
+134 0.37548828125 0.50048828125 0.43701171875 0.56201171875
+135 0.43798828125 0.50048828125 0.49951171875 0.56201171875
+136 0.50048828125 0.50048828125 0.56201171875 0.56201171875
+137 0.56298828125 0.50048828125 0.62451171875 0.56201171875
+138 0.62548828125 0.50048828125 0.68701171875 0.56201171875
+139 0.68798828125 0.50048828125 0.74951171875 0.56201171875
+140 0.75048828125 0.50048828125 0.81201171875 0.56201171875
+141 0.81298828125 0.50048828125 0.87451171875 0.56201171875
+142 0.87548828125 0.50048828125 0.93701171875 0.56201171875
+143 0.93798828125 0.50048828125 0.99951171875 0.56201171875
+144 0.00048828125 0.56298828125 0.06201171875 0.62451171875
+145 0.06298828125 0.56298828125 0.12451171875 0.62451171875
+146 0.12548828125 0.56298828125 0.18701171875 0.62451171875
+147 0.18798828125 0.56298828125 0.24951171875 0.62451171875
+148 0.25048828125 0.56298828125 0.31201171875 0.62451171875
+149 0.31298828125 0.56298828125 0.37451171875 0.62451171875
+150 0.37548828125 0.56298828125 0.43701171875 0.62451171875
+151 0.43798828125 0.56298828125 0.49951171875 0.62451171875
+152 0.50048828125 0.56298828125 0.56201171875 0.62451171875
+153 0.56298828125 0.56298828125 0.62451171875 0.62451171875
+154 0.62548828125 0.56298828125 0.68701171875 0.62451171875
+155 0.68798828125 0.56298828125 0.74951171875 0.62451171875
+156 0.75048828125 0.56298828125 0.81201171875 0.62451171875
+157 0.81298828125 0.56298828125 0.87451171875 0.62451171875
+158 0.87548828125 0.56298828125 0.93701171875 0.62451171875
+159 0.93798828125 0.56298828125 0.99951171875 0.62451171875
+200 0 0.62548828125 1 0.68701171875
+201 0 0.68798828125 1 0.74951171875
+202 0 0.75048828125 1 0.81201171875
+203 0 0.81298828125 1 0.87451171875
+204 0 0.87548828125 1 0.93701171875
+205 0 0.93798828125 1 0.99951171875
diff --git a/physicsNexrun.cfg b/physicsNexrun.cfg
deleted file mode 100644 (file)
index da81a24..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Nexrun tweaked to suit CPM
-sv_gravity 800
-sv_maxspeed 320
-// CPMA: 320
-sv_maxairspeed 320
-// CPMA: 320
-sv_stopspeed 100
-sv_accelerate 15
-sv_airaccelerate 1
-sv_friction 8
-edgefriction 1
-sv_stepheight 34
-// CPMA: 18
-sv_jumpvelocity 270
-sv_wateraccelerate 4
-sv_waterfriction 1
-sv_airaccel_sideways_friction 0
-sv_airaccel_qw 0.95
-// CPMA: 1
-sv_airstopaccelerate 2.5
-sv_airstrafeaccelerate 70
-sv_maxairstrafespeed 30
-sv_aircontrol 150
-sv_aircontrol_power 2
-sv_warsowbunny_turnaccel 0
-sv_warsowbunny_accel 0.1593
-sv_warsowbunny_topspeed 925
-sv_warsowbunny_backtosideratio 0.8
-sv_friction_on_land 0
-sv_doublejump 1
-sv_jumpspeedcap_min 0
-sv_jumpspeedcap_max 1
-sv_jumpspeedcap_max_disable_on_ramps 1
diff --git a/physicsNexrun_old.cfg b/physicsNexrun_old.cfg
deleted file mode 100644 (file)
index 164c48d..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// CPMA tweaked to match the speeds in old Nexrun
-sv_gravity 800
-sv_maxspeed 400
-// CPMA: 320
-sv_maxairspeed 400
-// CPMA: 320
-sv_stopspeed 100
-sv_accelerate 15
-sv_airaccelerate 1
-sv_friction 8
-edgefriction 1
-sv_stepheight 34
-// CPMA: 18
-sv_jumpvelocity 270
-sv_wateraccelerate 4
-sv_waterfriction 1
-sv_airaccel_sideways_friction 0
-sv_airaccel_qw 0.95
-// CPMA: 1
-sv_airstopaccelerate 2.5
-sv_airstrafeaccelerate 70
-sv_maxairstrafespeed 30
-sv_aircontrol 150
-sv_aircontrol_power 2
-sv_warsowbunny_turnaccel 0
-sv_warsowbunny_accel 0.1593
-sv_warsowbunny_topspeed 925
-sv_warsowbunny_backtosideratio 0.8
-sv_friction_on_land 0
-sv_doublejump 1
-sv_jumpspeedcap_min 0
-sv_jumpspeedcap_max 1
-sv_jumpspeedcap_max_disable_on_ramps 1
index 106ecbf..88290d6 100644 (file)
@@ -16,8 +16,8 @@ sv_airaccel_qw -0.95
 sv_airstopaccelerate 0
 sv_airstrafeaccelerate 0
 sv_maxairstrafespeed 0
-sv_aircontrol 70
-sv_aircontrol_power 100 // air control kicks in at about -6 degrees
+sv_aircontrol 100
+sv_aircontrol_power 3
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
 sv_warsowbunny_topspeed 925
diff --git a/physicsXPM.cfg b/physicsXPM.cfg
new file mode 100644 (file)
index 0000000..da81a24
--- /dev/null
@@ -0,0 +1,33 @@
+// Nexrun tweaked to suit CPM
+sv_gravity 800
+sv_maxspeed 320
+// CPMA: 320
+sv_maxairspeed 320
+// CPMA: 320
+sv_stopspeed 100
+sv_accelerate 15
+sv_airaccelerate 1
+sv_friction 8
+edgefriction 1
+sv_stepheight 34
+// CPMA: 18
+sv_jumpvelocity 270
+sv_wateraccelerate 4
+sv_waterfriction 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw 0.95
+// CPMA: 1
+sv_airstopaccelerate 2.5
+sv_airstrafeaccelerate 70
+sv_maxairstrafespeed 30
+sv_aircontrol 150
+sv_aircontrol_power 2
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
+sv_friction_on_land 0
+sv_doublejump 1
+sv_jumpspeedcap_min 0
+sv_jumpspeedcap_max 1
+sv_jumpspeedcap_max_disable_on_ramps 1
index 985bcc7..d16e918 100644 (file)
@@ -902,6 +902,7 @@ void(float bIsNewEntity) CSQC_Ent_Update =
                case ENT_CLIENT_TUBANOTE: Ent_TubaNote(bIsNewEntity); break;
                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;
                default:
                        error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));
                        break;
@@ -1016,6 +1017,9 @@ void Ent_Init()
 
        g_weaponswitchdelay = ReadByte() / 255.0;
 
+       g_balance_grenadelauncher_secondary_bouncefactor = ReadCoord();
+       g_balance_grenadelauncher_secondary_bouncestop = ReadCoord();
+
        if(!postinit)
                PostInit();
 }
@@ -1231,6 +1235,10 @@ float CSQC_Parse_TempEntity()
                // NOTE: Could just do return instead of break...
        switch(nTEID)
        {
+               case TE_CSQC_TARGET_MUSIC:
+                       Net_TargetMusic();
+                       bHandled = true;
+                       break;
                case TE_CSQC_PICTURE:
                        Net_MapVote_Picture();
                        bHandled = true;
index 9bb7661..2c898bb 100644 (file)
@@ -343,6 +343,8 @@ string NextFrameCommand;
 void CSQC_SPIDER_HUD();
 void CSQC_RAPTOR_HUD();
 
+vector freeze_pmove_org, freeze_input_angles;
+
 void CSQC_UpdateView(float w, float h)
 {
        entity e;
@@ -361,10 +363,23 @@ void CSQC_UpdateView(float w, float h)
        vo = '0 0 1' * getstati(STAT_VIEWHEIGHT);
 
        warpzone_fixview_origin = pmove_org + vo;
-       warpzone_fixview_angles = input_angles;
+       warpzone_fixview_cl_viewangles = input_angles;
+       warpzone_fixview_angles = view_angles;
        WarpZone_FixView();
        pmove_org = warpzone_fixview_origin - vo;
-       input_angles = warpzone_fixview_angles;
+       input_angles = warpzone_fixview_cl_viewangles;
+       view_angles = warpzone_fixview_angles;
+
+       if(cvar("cl_lockview"))
+       {
+               pmove_org = freeze_pmove_org;
+               input_angles = view_angles = freeze_input_angles;
+               R_SetView(VF_ORIGIN, pmove_org + vo);
+               R_SetView(VF_ANGLES, view_angles);
+               //R_SetView(VF_CL_VIEWANGLES, input_angles);
+       }
+       freeze_pmove_org = pmove_org;
+       freeze_input_angles = input_angles;
 
        // Render the Scene
        if(!intermission || !view_set)
@@ -400,6 +415,7 @@ void CSQC_UpdateView(float w, float h)
        }
 #endif
 
+       TargetMusic_Advance();
        Fog_Force();
 
        drawframetime = max(0.000001, time - drawtime);
index d3e42cd..c108a4c 100644 (file)
@@ -308,3 +308,5 @@ float PI      = 3.14159265358979323846264338327950288419716939937510582097494459
 float log(float f) = #532;
 
 void(entity e, entity ignore) tracetoss = #64;
+
+float(entity e, float ch) getsoundtime = #533; // (DP_SND_GETSOUNDTIME)
index 89edacd..59e8469 100644 (file)
@@ -242,15 +242,15 @@ void Ent_DamageInfo(float isNew)
                        case WEP_FIREBALL:
                                if(secondary)
                                {
+                                       // firemine goes out silently
+                               }
+                               else
+                               {
                                        org2 = org + backoff * 16;
                                        pointparticles(particleeffectnum("fireball_explode"), org2, '0 0 0', 1);
                                        if(!issilent)
                                                sound(self, CHAN_PROJECTILE, "weapons/fireball_impact2.wav", VOL_BASE, ATTN_NORM * 0.25); // long range boom
                                }
-                               else
-                               {
-                                       // firemine goes out silently
-                               }
                                break;
                        default:
                                dprint("Unhandled damage of weapon ", ftos(hitwep), "\n");
index 9842a28..67951fc 100644 (file)
@@ -156,8 +156,10 @@ void Ent_GibSplash(float isNew)
 
        if(type & 0x80)
        {
-               if(cvar("cl_gentle") > 1)
+               if(cvar("cl_gentle") == 2)
                        gentle_prefix = "";
+               else if(cvar("cl_gentle") == 3) 
+                       gentle_prefix = "happy_";
                else
                        gentle_prefix = "morphed_";
        }
index b7a3d59..d2847af 100644 (file)
@@ -163,3 +163,6 @@ float calledhooks;
 #define HOOK_END      2
 
 .float ping, ping_packetloss, ping_movementloss;
+
+float g_balance_grenadelauncher_secondary_bouncefactor;
+float g_balance_grenadelauncher_secondary_bouncestop;
index 15f230d..e039ce4 100644 (file)
@@ -49,6 +49,7 @@ effects.qc
 wall.qc
 modeleffects.qc
 tuba.qc
+target_music.qc
 
 //vehicles/spiderbot.qc
 Main.qc
index 2730a32..dc5183f 100644 (file)
@@ -213,13 +213,15 @@ void Ent_Projectile()
                        self.velocity_x = ReadCoord();
                        self.velocity_y = ReadCoord();
                        self.velocity_z = ReadCoord();
-                       self.gravity = ReadCoord();
-
+                       if(f & 0x10)
+                               self.gravity = ReadCoord();
+                       else
+                               self.gravity = 0; // none
                        self.move_origin = self.origin;
                        self.move_velocity = self.velocity;
                }
 
-               if(time == self.spawntime || (self.count & 0x80) || (f & 0x10))
+               if(time == self.spawntime || (self.count & 0x80) || (f & 0x08))
                {
                        self.trail_oldorigin = self.origin;
                        if(!(self.count & 0x80))
@@ -304,6 +306,8 @@ void Ent_Projectile()
                                self.maxs = '0 0 -3';
                                self.move_movetype = MOVETYPE_BOUNCE;
                                self.move_touch = SUB_Null;
+                               self.move_bounce_factor = g_balance_grenadelauncher_secondary_bouncefactor;
+                               self.move_bounce_stopspeed = g_balance_grenadelauncher_secondary_bouncestop;
                                break;
                        case PROJECTILE_PORTO_RED:
                                self.colormod = '2 1 1';
diff --git a/qcsrc/client/target_music.qc b/qcsrc/client/target_music.qc
new file mode 100644 (file)
index 0000000..34d19dc
--- /dev/null
@@ -0,0 +1,185 @@
+float music_disabled;
+entity music_default;
+entity music_target;
+entity music_trigger;
+
+.float state;
+
+void TargetMusic_Advance()
+{
+       // run AFTER all the thinks!
+       entity best, e;
+       float s0;
+       best = music_default;
+       if(music_target && time < music_target.lifetime)
+               best = music_target;
+       if(music_trigger)
+               best = music_trigger;
+       for(e = world; (e = findfloat(e, enttype, ENT_CLIENT_TRIGGER_MUSIC)); ) if(e.noise)
+       {
+               s0 = e.state;
+               if(getsoundtime(e, CHAN_VOICE) < 0)
+               {
+                       s0 = -1;
+               }
+               if(e == best)
+               {
+                       // increase volume
+                       if(e.fade_time > 0)
+                               e.state = bound(0, e.state + frametime / e.fade_time, 1);
+                       else
+                               e.state = 1;
+               }
+               else
+               {
+                       // decrease volume
+                       if(e.fade_rate > 0)
+                               e.state = bound(0, e.state - frametime / e.fade_rate, 1);
+                       else
+                               e.state = 0;
+               }
+               if(e.state != s0)
+               {
+                       if(s0 < 0)
+                               sound(e, CHAN_VOICE, e.noise, e.volume * e.state * cvar("bgmvolume"), ATTN_NONE); // restart
+                       else
+                               sound(e, CHAN_VOICE, "", e.volume * e.state * cvar("bgmvolume"), ATTN_NONE);
+               }
+       }
+       music_trigger = world;
+}
+
+void Net_TargetMusic()
+{
+       float vol, fai, fao, tim, id;
+       string noi;
+       entity e;
+
+       id = ReadShort();
+       vol = ReadByte() / 255.0;
+       fai = ReadByte() / 16.0;
+       fao = ReadByte() / 16.0;
+       tim = ReadByte();
+       noi = ReadString();
+
+       for(e = world; (e = findfloat(e, enttype, ENT_CLIENT_TRIGGER_MUSIC)); )
+       {
+               if(e.count == id)
+                       break;
+       }
+       if(!e)
+       {
+               e = spawn();
+               e.enttype = ENT_CLIENT_TRIGGER_MUSIC;
+               e.count = id;
+       }
+       if(e.noise != noi)
+       {
+               if(e.noise)
+                       strunzone(e.noise);
+               e.noise = strzone(noi);
+               precache_sound(e.noise);
+               sound(e, CHAN_VOICE, e.noise, 0, ATTN_NONE);
+               if(getsoundtime(e, CHAN_VOICE) < 0)
+               {
+                       print("Cannot initialize sound ", e.noise, "\n");
+                       strunzone(e.noise);
+                       e.noise = string_null;
+               }
+       }
+       e.volume = vol;
+       e.fade_time = fai;
+       e.fade_rate = fao;
+       if(vol > 0)
+       {
+               if(tim == 0)
+               {
+                       music_default = e;
+                       if(!music_disabled)
+                       {
+                               e.state = 2;
+                               localcmd("cd stop\n"); // just in case
+                               music_disabled = 1;
+                       }
+               }
+               else
+               {
+                       music_target = e;
+                       e.lifetime = time + tim;
+               }
+       }
+}
+
+void Ent_TriggerMusic_Think()
+{
+       if(WarpZoneLib_BoxTouchesBrush(view_origin, view_origin, self, world))
+       {
+               music_trigger = self;
+       }
+       self.nextthink = time;
+}
+
+void Ent_TriggerMusic_Remove()
+{
+       if(self.noise)
+               strunzone(self.noise);
+       self.noise = string_null;
+}
+
+void Ent_ReadTriggerMusic()
+{
+       float f;
+       string s;
+       f = ReadByte();
+       if(f & 4)
+       {
+               self.origin_x = ReadCoord();
+               self.origin_y = ReadCoord();
+               self.origin_z = ReadCoord();
+       }
+       if(f & 1)
+       {
+               self.modelindex = ReadShort();
+               if(self.modelindex)
+               {
+                       self.mins_x = ReadCoord();
+                       self.mins_y = ReadCoord();
+                       self.mins_z = ReadCoord();
+                       self.maxs_x = ReadCoord();
+                       self.maxs_y = ReadCoord();
+                       self.maxs_z = ReadCoord();
+               }
+               else
+               {
+                       self.mins    = '0 0 0';
+                       self.maxs_x = ReadCoord();
+                       self.maxs_y = ReadCoord();
+                       self.maxs_z = ReadCoord();
+               }
+
+               self.volume = ReadByte() / 255.0;
+               self.fade_time = ReadByte() / 16.0;
+               self.fade_rate = ReadByte() / 16.0;
+               s = self.noise;
+               if(self.noise)
+                       strunzone(self.noise);
+               self.noise = strzone(ReadString());
+               if(self.noise != s)
+               {
+                       precache_sound(self.noise);
+                       sound(self, CHAN_VOICE, self.noise, 0, ATTN_NONE);
+                       if(getsoundtime(self, CHAN_VOICE) < 0)
+                       {
+                               print("Cannot initialize sound ", self.noise, "\n");
+                               strunzone(self.noise);
+                               self.noise = string_null;
+                       }
+               }
+       }
+
+       setorigin(self, self.origin);
+       setsize(self, self.mins, self.maxs);
+       self.cnt = 1;
+       self.think = Ent_TriggerMusic_Think;
+       self.nextthink = time;
+}
index 92ef984..5daa3e5 100644 (file)
@@ -56,6 +56,7 @@ const float TE_CSQC_PINGPLREPORT = 107;
 const float TE_CSQC_VOTE = 108;
 const float TE_CSQC_VOTERESET = 109;
 const float TE_CSQC_ANNOUNCE = 110;
+const float TE_CSQC_TARGET_MUSIC = 111;
 
 const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder
 const float RACE_NET_CHECKPOINT_CLEAR = 1;
@@ -98,6 +99,7 @@ const float ENT_CLIENT_MODELEFFECT = 22;
 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_TURRET = 40;
 
@@ -368,7 +370,7 @@ float       CHAN_VOICE                              = 2; // Voice/Radio
        // on world: UNUSED
        // on players: voice                             VOICE
        // on entities: ambient                          AMBIENT
-       // on csqc: UNUSED
+       // on csqc: background music                     BGM
 float  CHAN_TRIGGER                    = 3; // Triggers/Items
        // on world: UNUSED
        // on players: item pickup                       ITEMS
index 003377e..53a0718 100644 (file)
@@ -324,6 +324,8 @@ float _MapInfo_Generate(string pFilename) // 0: failure, 1: ok ent, 2: ok bsp
                                        { }
                                else if(startsWith(v, "weapon_"))
                                        MapInfo_Map_supportedFeatures |= MAPINFO_FEATURE_WEAPONS;
+                               else if(v == "target_music" || v == "trigger_music")
+                                       _MapInfo_Map_worldspawn_music = string_null; // don't use regular BGM
                        }
                }
        }
@@ -630,7 +632,7 @@ float MapInfo_Get_ByName(string pFilename, float pAllowGenerate, float pGametype
                        else
                                fputs(fh, strcat("cdtrack ", _MapInfo_Map_worldspawn_music, "\n"));
                }
-               else
+               else if(_MapInfo_Map_worldspawn_music)
                {
                        n = tokenize_console(cvar_string("g_cdtracks_remaplist"));
                        s = strcat(" ", cvar_string("g_cdtracks_dontusebydefault"), " ");
index 1c589ec..7c3c754 100644 (file)
@@ -23,13 +23,14 @@ void fillXonoticAudioSettingsTab(entity me)
        entity e, s, sl;
 
        me.TR(me);
-               s = makeXonoticDecibelsSlider(-20, 0, 0.5, "bgmvolume");
-               me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Music:"));
+               s = makeXonoticDecibelsSlider(-20, 0, 0.5, "mastervolume");
+               me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Master:"));
                me.TD(me, 1, 2, s);
        me.TR(me);
-       me.TR(me);
-               s = makeXonoticDecibelsSlider(-20, 0, 0.5, "volume");
-               me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Master:"));
+               me.TDempty(me, 0.2);
+               s = makeXonoticDecibelsSlider(-20, 0, 0.5, "bgmvolume");
+               makeMulti(s, "snd_csqcchannel2volume");
+               me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Music:"));
                me.TD(me, 1, 2, s);
        me.TR(me);
                me.TDempty(me, 0.2);
index 1fe043f..cf941e9 100644 (file)
@@ -1062,14 +1062,50 @@ float ClientInit_SendEntity(entity to, float sf)
                WriteString(MSG_ENTITY, world.fog);
        else
                WriteString(MSG_ENTITY, "");
-       WriteByte(MSG_ENTITY, cvar("g_balance_armor_blockpercent") * 255.0);
-       WriteByte(MSG_ENTITY, cvar("g_balance_weaponswitchdelay") * 255.0);
+       WriteByte(MSG_ENTITY, self.count * 255.0); // g_balance_armor_blockpercent
+       WriteByte(MSG_ENTITY, self.cnt * 255.0); // g_balance_weaponswitchdelay
+       WriteCoord(MSG_ENTITY, self.bouncefactor); // g_balance_grenadelauncher_secondary_bouncefactor
+       WriteCoord(MSG_ENTITY, self.bouncestop); // g_balance_grenadelauncher_secondary_bouncestop
        return TRUE;
 }
 
+void ClientInit_CheckUpdate()
+{
+       self.nextthink = time;
+       if(self.count != cvar("g_balance_armor_blockpercent"))
+       {
+               self.count = cvar("g_balance_armor_blockpercent");
+               self.SendFlags |= 1;
+       }
+       if(self.cnt != cvar("g_balance_weaponswitchdelay"))
+       {
+               self.cnt = cvar("g_balance_weaponswitchdelay");
+               self.SendFlags |= 1;
+       }
+       if(self.bouncefactor != cvar("g_balance_grenadelauncher_secondary_bouncefactor"))
+       {
+               self.bouncefactor = cvar("g_balance_grenadelauncher_secondary_bouncefactor");
+               self.SendFlags |= 1;
+       }
+       if(self.bouncestop != cvar("g_balance_grenadelauncher_secondary_bouncestop"))
+       {
+               self.bouncestop = cvar("g_balance_grenadelauncher_secondary_bouncestop");
+               self.SendFlags |= 1;
+       }
+}
+
 void ClientInit_Spawn()
 {
-       Net_LinkEntity(spawn(), FALSE, 0, ClientInit_SendEntity);
+       entity o;
+       entity e;
+       e.classname = "clientinit";
+       e.think = ClientInit_CheckUpdate;
+       e.nextthink = time;
+       Net_LinkEntity(e, FALSE, 0, ClientInit_SendEntity);
+       o = self;
+       self = e;
+       ClientInit_CheckUpdate();
+       self = o;
 }
 
 /*
index 6fee98b..ee6d11d 100644 (file)
@@ -594,6 +594,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht
 
                frag_attacker = attacker;
                frag_inflictor = inflictor;
+               frag_target = self;
                MUTATOR_CALLHOOK(PlayerDies);
 
                if(self.flagcarried)
index e585b1e..d250d39 100644 (file)
@@ -4,8 +4,8 @@ float CSQCProjectile_SendEntity(entity to, float sf)
 {
        float ft, fr;
 
-       // note: flag 0x10 = no trail please
-       sf = sf & 0x1F;
+       // note: flag 0x08 = no trail please (teleport bit)
+       sf = sf & 0x0F;
 
        if(self.csqcprojectile_clientanimate)
                sf |= 0x80; // client animated, not interpolated
@@ -21,6 +21,9 @@ float CSQCProjectile_SendEntity(entity to, float sf)
                        sf |= 0x20;
        }
 
+       if(self.gravity != 0)
+               sf |= 0x10;
+
        WriteByte(MSG_ENTITY, ENT_CLIENT_PROJECTILE);
        WriteByte(MSG_ENTITY, sf);
 
@@ -35,7 +38,8 @@ float CSQCProjectile_SendEntity(entity to, float sf)
                        WriteCoord(MSG_ENTITY, self.velocity_x);
                        WriteCoord(MSG_ENTITY, self.velocity_y);
                        WriteCoord(MSG_ENTITY, self.velocity_z);
-                       WriteCoord(MSG_ENTITY, self.gravity);
+                       if(sf & 0x10)
+                               WriteCoord(MSG_ENTITY, self.gravity);
                }
 
                if(sf & 0x20)
@@ -85,7 +89,7 @@ void UpdateCSQCProjectile(entity e)
        if(e.SendEntity == CSQCProjectile_SendEntity)
        {
                // send new origin data
-               e.SendFlags |= 1;
+               e.SendFlags |= 0x01;
        }
 }
 
@@ -93,8 +97,10 @@ void UpdateCSQCProjectileAfterTeleport(entity e)
 {
        if(e.SendEntity == CSQCProjectile_SendEntity)
        {
-               // send new origin data and mark as teleported
-               e.SendFlags |= 0x11;
+               // send new origin data
+               e.SendFlags |= 0x01;
+               // mark as teleported
+               e.SendFlags |= 0x08;
        }
 }
 
index 338204c..0c44648 100644 (file)
@@ -149,6 +149,7 @@ void GiveFrags (entity attacker, entity targ, float f)
        entity oldself;
        oldself = self;
        self = attacker;
+       frag_attacker = attacker;
        frag_target = targ;
        frag_score = f;
        if(MUTATOR_CALLHOOK(GiveFragsForKill))
index 7868844..c31352e 100644 (file)
@@ -533,7 +533,112 @@ void spawnfunc_trigger_heal()
 //
 //////////////////////////////////////////////////////////////
 
+.entity trigger_gravity_check;
+void trigger_gravity_remove(entity own)
+{
+       if(own.trigger_gravity_check.owner == own)
+       {
+               UpdateCSQCProjectile(own);
+               own.gravity = own.trigger_gravity_check.gravity;
+               remove(own.trigger_gravity_check);
+       }
+       else
+               backtrace("Removing a trigger_gravity_check with no valid owner");
+       own.trigger_gravity_check = world;
+}
+void trigger_gravity_check_think()
+{
+       // This spawns when a player enters the gravity zone and checks if he left.
+       // Each frame, self.count is set to 2 by trigger_gravity_touch() and decreased by 1 here.
+       // It the player has left the gravity trigger, this will be allowed to reach 0 and indicate that.
+       if(self.count <= 0)
+       {
+               if(self.owner.trigger_gravity_check == self)
+                       trigger_gravity_remove(self.owner);
+               else
+                       remove(self);
+               return;
+       }
+       else
+       {
+               self.count -= 1;
+               self.nextthink = time;
+       }
+};
+
+void trigger_gravity_use()
+{
+       self.state = !self.state;
+};
+
+void trigger_gravity_touch()
+{
+       float g;
+
+       if(self.state != TRUE)
+               return;
+
+       EXACTTRIGGER_TOUCH;
+
+       g = self.gravity;
+
+       if not(self.spawnflags & 1)
+       {
+               if(other.trigger_gravity_check)
+               {
+                       if(self == other.trigger_gravity_check.enemy)
+                       {
+                               // same?
+                               other.trigger_gravity_check.count = 2; // gravity one more frame...
+                               return;
+                       }
+
+                       // compare prio
+                       if(self.cnt > other.trigger_gravity_check.enemy.cnt)
+                               trigger_gravity_remove(other);
+                       else
+                               return;
+               }
+               other.trigger_gravity_check = spawn();
+               other.trigger_gravity_check.enemy = self;
+               other.trigger_gravity_check.owner = other;
+               other.trigger_gravity_check.gravity = other.gravity;
+               other.trigger_gravity_check.think = trigger_gravity_check_think;
+               other.trigger_gravity_check.nextthink = time;
+               other.trigger_gravity_check.count = 2;
+               if(other.gravity)
+                       g *= other.gravity;
+       }
+
+       if (other.gravity != g)
+       {
+               other.gravity = g;
+               if(self.noise != "")
+                       sound (other, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NORM);
+               UpdateCSQCProjectile(self.owner);
+       }
+};
 
+void spawnfunc_trigger_gravity()
+{
+       if(self.gravity == 1)
+               return;
+
+       EXACTTRIGGER_INIT;
+       self.touch = trigger_gravity_touch;
+       if(self.noise != "")
+               precache_sound(self.noise);
+
+       self.state = TRUE;
+       IFTARGETED
+       {
+               self.use = trigger_gravity_use;
+               if(self.spawnflags & 2)
+                       self.state = FALSE;
+       }
+};
+
+//=============================================================================
 
 // TODO add a way to do looped sounds with sound(); then complete this entity
 .float volume, atten;
index 2287827..c815b08 100644 (file)
@@ -2697,6 +2697,7 @@ float RedirectionThink()
        return TRUE;
 }
 
+void TargetMusic_RestoreGame();
 void RestoreGame()
 {
        // Loaded from a save game
@@ -2710,6 +2711,8 @@ void RestoreGame()
        MapInfo_Enumerate();
        MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures(), MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags(), 1);
        WeaponStats_Init();
+
+       TargetMusic_RestoreGame();
 }
 
 void SV_Shutdown()
index 9ed316e..73c16a9 100644 (file)
@@ -51,10 +51,12 @@ MUTATOR_HOOKABLE(PlayerDies);
        // INPUT:
                entity frag_inflictor;
                entity frag_attacker;
+               entity frag_target; // same as self
 
 MUTATOR_HOOKABLE(GiveFragsForKill);
        // called when someone was fragged by "self", and is expected to change frag_score to adjust scoring for the kill
        // INPUT:
+               entity frag_attacker; // same as self
                entity frag_target;
        // INPUT, OUTPUT:
                float frag_score;
index b325251..d1d0d1d 100644 (file)
@@ -156,6 +156,7 @@ portals.qc
 
 target_spawn.qc
 func_breakable.qc
+target_music.qc
 
 ../common/items.qc
 
index 97b78ca..59480ab 100644 (file)
@@ -324,7 +324,8 @@ float PlayerScore_Add(entity player, float scorefield, float score)
        {
                if(gameover)
                        return 0;
-               error("Adding score to unknown player!");
+               backtrace("Adding score to unknown player!");
+               return 0;
        }
        if(score)
                if(scores_label[scorefield] != "")
index 9d32f32..d9c3240 100644 (file)
@@ -682,6 +682,9 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime,
 {
        startitem_failed = FALSE;
 
+       self.items = itemid;
+       self.weapons = weaponid;
+
        // is it a dropped weapon?
        if (self.classname == "droppedweapon")
        {
@@ -702,9 +705,6 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime,
        }
        else
        {
-               self.items = itemid;
-               self.weapons = weaponid;
-
                if(MUTATOR_CALLHOOK(FilterItem)) // error means we do not want the item
                {
                        startitem_failed = TRUE;
diff --git a/qcsrc/server/target_music.qc b/qcsrc/server/target_music.qc
new file mode 100644 (file)
index 0000000..daab646
--- /dev/null
@@ -0,0 +1,129 @@
+.float lifetime;
+// values:
+//   volume
+//   noise
+//   targetname
+//   lifetime
+//   fade_time
+//   fade_rate
+// when triggered, the music is overridden for activator until lifetime (or forever, if lifetime is 0)
+// when targetname is not set, THIS ONE is default
+void target_music_sendto(float to, float is)
+{
+       WriteByte(to, SVC_TEMPENTITY);
+       WriteByte(to, TE_CSQC_TARGET_MUSIC);
+       WriteShort(to, num_for_edict(self));
+       WriteByte(to, self.volume * 255.0 * is);
+       WriteByte(to, self.fade_time * 16.0);
+       WriteByte(to, self.fade_rate * 16.0);
+       WriteByte(to, self.lifetime);
+       WriteString(to, self.noise);
+}
+void target_music_reset()
+{
+       if(self.targetname == "")
+               target_music_sendto(MSG_ALL, 1);
+}
+void target_music_use()
+{
+       if(!activator)
+               return;
+       msg_entity = activator;
+       target_music_sendto(MSG_ONE, 1);
+}
+void spawnfunc_target_music()
+{
+       self.use = target_music_use;
+       self.reset = target_music_reset;
+       if(!self.volume)
+               self.volume = 1;
+       if(self.targetname == "")
+               target_music_sendto(MSG_INIT, 1);
+       else
+               target_music_sendto(MSG_INIT, 0);
+}
+void TargetMusic_RestoreGame()
+{
+       for(self = world; (self = find(self, classname, "target_music")); )
+       {
+               if(self.targetname == "")
+                       target_music_sendto(MSG_INIT, 1);
+               else
+                       target_music_sendto(MSG_INIT, 0);
+       }
+}
+// values:
+//   volume
+//   noise
+//   targetname
+//   fade_time
+// spawnflags:
+//   1 = START_OFF
+// when triggered, it is disabled/enabled for everyone
+float trigger_music_SendEntity(entity to, float sf)
+{
+       WriteByte(MSG_ENTITY, ENT_CLIENT_TRIGGER_MUSIC);
+       sf &~= 0x80;
+       if(self.cnt)
+               sf |= 0x80;
+       WriteByte(MSG_ENTITY, sf);
+       if(sf & 4)
+       {
+               WriteCoord(MSG_ENTITY, self.origin_x);
+               WriteCoord(MSG_ENTITY, self.origin_y);
+               WriteCoord(MSG_ENTITY, self.origin_z);
+       }
+       if(sf & 1)
+       {
+               if(self.model != "null")
+               {
+                       WriteShort(MSG_ENTITY, self.modelindex);
+                       WriteCoord(MSG_ENTITY, self.mins_x);
+                       WriteCoord(MSG_ENTITY, self.mins_y);
+                       WriteCoord(MSG_ENTITY, self.mins_z);
+                       WriteCoord(MSG_ENTITY, self.maxs_x);
+                       WriteCoord(MSG_ENTITY, self.maxs_y);
+                       WriteCoord(MSG_ENTITY, self.maxs_z);
+               }
+               else
+               {
+                       WriteShort(MSG_ENTITY, 0);
+                       WriteCoord(MSG_ENTITY, self.maxs_x);
+                       WriteCoord(MSG_ENTITY, self.maxs_y);
+                       WriteCoord(MSG_ENTITY, self.maxs_z);
+               }
+               WriteByte(MSG_ENTITY, self.volume * 255.0);
+               WriteByte(MSG_ENTITY, self.fade_time * 16.0);
+               WriteByte(MSG_ENTITY, self.fade_rate * 16.0);
+               WriteString(MSG_ENTITY, self.noise);
+       }
+       return 1;
+}
+void trigger_music_reset()
+{
+       self.cnt = !(self.spawnflags & 1);
+       self.SendFlags |= 0x80;
+}
+void trigger_music_use()
+{
+       self.cnt = !self.cnt;
+       self.SendFlags |= 0x80;
+}
+void spawnfunc_trigger_music()
+{
+       if(self.model != "")
+               setmodel(self, self.model);
+       if(!self.volume)
+               self.volume = 1;
+       if(!self.modelindex)
+       {
+               setorigin(self, self.origin + self.mins);
+               setsize(self, '0 0 0', self.maxs - self.mins);
+       }
+       trigger_music_reset();
+
+       self.use = trigger_music_use;
+       self.reset = trigger_music_reset;
+
+       Net_LinkEntity(self, FALSE, 0, trigger_music_SendEntity);
+}
index 05de876..6bccb7e 100644 (file)
@@ -1,9 +1,9 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(FIREBALL, w_fireball, IT_ROCKETS, 9, WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", "Fireball");
+REGISTER_WEAPON(FIREBALL, w_fireball, IT_FUEL, 9, WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", "Fireball");
 #else
-.float bot_secondary_fireballmooth; // whatever a mooth is
+.float bot_primary_fireballmooth; // whatever a mooth is
 .vector fireball_impactvec;
-.float fireball_secondarytime;
+.float fireball_primarytime;
 
 void W_Fireball_Explode (void)
 {
@@ -18,15 +18,15 @@ void W_Fireball_Explode (void)
 
        // 1. dist damage
        d = (self.owner.health + self.owner.armorvalue);
-       RadiusDamage (self, self.realowner, cvar("g_balance_fireball_secondary_damage"), cvar("g_balance_fireball_secondary_edgedamage"), cvar("g_balance_fireball_secondary_radius"), world, cvar("g_balance_fireball_secondary_force"), self.projectiledeathtype, other);
+       RadiusDamage (self, self.realowner, cvar("g_balance_fireball_primary_damage"), cvar("g_balance_fireball_primary_edgedamage"), cvar("g_balance_fireball_primary_radius"), world, cvar("g_balance_fireball_primary_force"), self.projectiledeathtype, other);
        if(self.realowner.health + self.realowner.armorvalue >= d)
        if(!self.cnt)
        {
-               modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, cvar("g_balance_fireball_secondary_bfgradius"), 0.2, 0.05, 0.25);
+               modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, cvar("g_balance_fireball_primary_bfgradius"), 0.2, 0.05, 0.25);
 
                // 2. bfg effect
                // NOTE: this cannot be made warpzone aware by design. So, better intentionally ignore warpzones here.
-               for(e = findradius(self.origin, cvar("g_balance_fireball_secondary_bfgradius")); e; e = e.chain)
+               for(e = findradius(self.origin, cvar("g_balance_fireball_primary_bfgradius")); e; e = e.chain)
                if(e != self.owner) if(e.takedamage == DAMAGE_AIM) if(e.classname != "player" || !self.owner || IsDifferentTeam(e, self))
                {
                        // can we see fireball?
@@ -39,14 +39,14 @@ void W_Fireball_Explode (void)
                        if(/* trace_startsolid || */ trace_fraction != 1)
                                continue;
                        dist = vlen(self.origin - e.origin - e.view_ofs);
-                       points = (1 - sqrt(dist / cvar("g_balance_fireball_secondary_bfgradius")));
+                       points = (1 - sqrt(dist / cvar("g_balance_fireball_primary_bfgradius")));
                        if(points <= 0)
                                continue;
                        dir = normalize(e.origin + e.view_ofs - self.origin);
-                       Damage(e, self, self.realowner, cvar("g_balance_fireball_secondary_bfgdamage") * points, self.projectiledeathtype | HITTYPE_BOUNCE | HITTYPE_SPLASH, e.origin + e.view_ofs, cvar("g_balance_fireball_secondary_bfgforce") * dir);
+                       Damage(e, self, self.realowner, cvar("g_balance_fireball_primary_bfgdamage") * points, self.projectiledeathtype | HITTYPE_BOUNCE | HITTYPE_SPLASH, e.origin + e.view_ofs, cvar("g_balance_fireball_primary_bfgforce") * dir);
                        pointparticles(particleeffectnum("fireball_bfgdamage"), e.origin, -1 * dir, 1);
 
-                       Damage_RecordDamage(self.owner, self.projectiledeathtype, cvar("g_balance_fireball_secondary_bfgdamage") * points);
+                       Damage_RecordDamage(self.owner, self.projectiledeathtype, cvar("g_balance_fireball_primary_bfgdamage") * points);
                }
        }
 
@@ -102,7 +102,7 @@ void W_Fireball_Think()
                return;
        }
 
-       W_Fireball_LaserPlay(0.1, cvar("g_balance_fireball_secondary_laserradius"), cvar("g_balance_fireball_secondary_laserdamage"), cvar("g_balance_fireball_secondary_laseredgedamage"), cvar("g_balance_fireball_secondary_laserburntime"));
+       W_Fireball_LaserPlay(0.1, cvar("g_balance_fireball_primary_laserradius"), cvar("g_balance_fireball_primary_laserdamage"), cvar("g_balance_fireball_primary_laseredgedamage"), cvar("g_balance_fireball_primary_laserburntime"));
 
        self.nextthink = time + 0.1;
 }
@@ -119,11 +119,11 @@ void W_Fireball_Damage (entity inflictor, entity attacker, float damage, float d
        }
 }
 
-void W_Fireball_Attack2()
+void W_Fireball_Attack1()
 {
        local entity proj;
 
-       W_SetupShot_ProjectileSize (self, '-16 -16 -16', '16 16 16', FALSE, 2, "weapons/fireball_fire2.wav", cvar("g_balance_fireball_secondary_damage") + cvar("g_balance_fireball_secondary_bfgdamage"));
+       W_SetupShot_ProjectileSize (self, '-16 -16 -16', '16 16 16', FALSE, 2, "weapons/fireball_fire2.wav", cvar("g_balance_fireball_primary_damage") + cvar("g_balance_fireball_primary_bfgdamage"));
 
        pointparticles(particleeffectnum("fireball_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
@@ -131,22 +131,22 @@ void W_Fireball_Attack2()
        proj.classname = "plasma_prim";
        proj.owner = proj.realowner = self;
        proj.bot_dodge = TRUE;
-       proj.bot_dodgerating = cvar("g_balance_fireball_secondary_damage");
-       proj.pushltime = time + cvar("g_balance_fireball_secondary_lifetime");
+       proj.bot_dodgerating = cvar("g_balance_fireball_primary_damage");
+       proj.pushltime = time + cvar("g_balance_fireball_primary_lifetime");
        proj.use = W_Fireball_Explode;
        proj.think = W_Fireball_Think;
        proj.nextthink = time;
-       proj.health = cvar("g_balance_fireball_secondary_health");
+       proj.health = cvar("g_balance_fireball_primary_health");
        proj.team = self.team;
        proj.event_damage = W_Fireball_Damage;
        proj.takedamage = DAMAGE_YES;
-       proj.damageforcescale = cvar("g_balance_fireball_secondary_damageforcescale");
+       proj.damageforcescale = cvar("g_balance_fireball_primary_damageforcescale");
        PROJECTILE_MAKETRIGGER(proj);
-       proj.projectiledeathtype = WEP_FIREBALL | HITTYPE_SECONDARY;
+       proj.projectiledeathtype = WEP_FIREBALL;
        setorigin(proj, w_shotorg);
 
        proj.movetype = MOVETYPE_FLY;
-       W_SETUPPROJECTILEVELOCITY(proj, g_balance_fireball_secondary);
+       W_SETUPPROJECTILEVELOCITY(proj, g_balance_fireball_primary);
        proj.angles = vectoangles(proj.velocity);
        proj.touch = W_Fireball_TouchExplode;
        setsize(proj, '-16 -16 -16', '16 16 16');
@@ -162,38 +162,38 @@ void W_Fireball_AttackEffect(float i, vector f_diff)
        pointparticles(particleeffectnum("fireball_preattack_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 }
 
-void W_Fireball_Attack2_Frame4()
+void W_Fireball_Attack1_Frame4()
 {
-       W_Fireball_Attack2();
-       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), w_ready);
+       W_Fireball_Attack1();
+       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), w_ready);
 }
 
-void W_Fireball_Attack2_Frame3()
+void W_Fireball_Attack1_Frame3()
 {
        W_Fireball_AttackEffect(0, '+1.25 +3.75 0');
-       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), W_Fireball_Attack2_Frame4);
+       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), W_Fireball_Attack1_Frame4);
 }
 
-void W_Fireball_Attack2_Frame2()
+void W_Fireball_Attack1_Frame2()
 {
        W_Fireball_AttackEffect(0, '-1.25 +3.75 0');
-       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), W_Fireball_Attack2_Frame3);
+       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), W_Fireball_Attack1_Frame3);
 }
 
-void W_Fireball_Attack2_Frame1()
+void W_Fireball_Attack1_Frame1()
 {
        W_Fireball_AttackEffect(1, '+1.25 -3.75 0');
-       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), W_Fireball_Attack2_Frame2);
+       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), W_Fireball_Attack1_Frame2);
 }
 
-void W_Fireball_Attack2_Frame0()
+void W_Fireball_Attack1_Frame0()
 {
        if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - cvar("g_balance_fireball_secondary_ammo");
+               self.ammo_fuel = self.ammo_fuel - cvar("g_balance_fireball_primary_ammo");
 
        W_Fireball_AttackEffect(0, '-1.25 -3.75 0');
        sound (self, CHAN_WEAPON, "weapons/fireball_prefire2.wav", VOL_BASE, ATTN_NORM);
-       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), W_Fireball_Attack2_Frame1);
+       weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), W_Fireball_Attack1_Frame1);
 }
 
 void W_Firemine_Think()
@@ -207,7 +207,7 @@ void W_Firemine_Think()
        // make it "hot" once it leaves its owner
        if(self.owner)
        {
-               if(vlen(self.origin - self.owner.origin - self.owner.view_ofs) > cvar("g_balance_fireball_primary_laserradius"))
+               if(vlen(self.origin - self.owner.origin - self.owner.view_ofs) > cvar("g_balance_fireball_secondary_laserradius"))
                {
                        self.cnt += 1;
                        if(self.cnt == 3)
@@ -217,7 +217,7 @@ void W_Firemine_Think()
                        self.cnt = 0;
        }
 
-       W_Fireball_LaserPlay(0.1, cvar("g_balance_fireball_primary_laserradius"), cvar("g_balance_fireball_primary_laserdamage"), cvar("g_balance_fireball_primary_laseredgedamage"), cvar("g_balance_fireball_primary_laserburntime"));
+       W_Fireball_LaserPlay(0.1, cvar("g_balance_fireball_secondary_laserradius"), cvar("g_balance_fireball_secondary_laserdamage"), cvar("g_balance_fireball_secondary_laseredgedamage"), cvar("g_balance_fireball_secondary_laserburntime"));
 
        self.nextthink = time + 0.1;
 }
@@ -226,7 +226,7 @@ void W_Firemine_Touch (void)
 {
        PROJECTILE_TOUCH;
        if (other.takedamage == DAMAGE_AIM)
-       if(Fire_AddDamage(other, self.realowner, cvar("g_balance_fireball_primary_damage"), cvar("g_balance_fireball_primary_damagetime"), self.projectiledeathtype | HITTYPE_HEADSHOT) >= 0)
+       if(Fire_AddDamage(other, self.realowner, cvar("g_balance_fireball_secondary_damage"), cvar("g_balance_fireball_secondary_damagetime"), self.projectiledeathtype | HITTYPE_HEADSHOT) >= 0)
        {
                remove(self);
                return;
@@ -234,14 +234,14 @@ void W_Firemine_Touch (void)
        self.projectiledeathtype |= HITTYPE_BOUNCE;
 }
 
-void W_Fireball_Attack1()
+void W_Fireball_Attack2()
 {
        local entity proj;
        vector f_diff;
        float c;
 
        if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - cvar("g_balance_fireball_primary_ammo");
+               self.ammo_fuel = self.ammo_fuel - cvar("g_balance_fireball_secondary_ammo");
 
        c = mod(self.bulletcounter, 4);
        switch(c)
@@ -260,7 +260,7 @@ void W_Fireball_Attack1()
                        f_diff = '+1.25 +3.75 0';
                        break;
        }
-       W_SetupShot_ProjectileSize(self, '-4 -4 -4', '4 4 4', FALSE, 2, "weapons/fireball_fire.wav", cvar("g_balance_fireball_primary_damage"));
+       W_SetupShot_ProjectileSize(self, '-4 -4 -4', '4 4 4', FALSE, 2, "weapons/fireball_fire.wav", cvar("g_balance_fireball_secondary_damage"));
        traceline(w_shotorg, w_shotorg + f_diff_x * v_up + f_diff_y * v_right, MOVE_NORMAL, self);
        w_shotorg = trace_endpos;
 
@@ -270,18 +270,18 @@ void W_Fireball_Attack1()
        proj.owner = proj.realowner = self;
        proj.classname = "grenade";
        proj.bot_dodge = TRUE;
-       proj.bot_dodgerating = cvar("g_balance_fireball_primary_damage");
+       proj.bot_dodgerating = cvar("g_balance_fireball_secondary_damage");
        proj.movetype = MOVETYPE_BOUNCE;
-       proj.projectiledeathtype = WEP_FIREBALL;
+       proj.projectiledeathtype = WEP_FIREBALL | HITTYPE_SECONDARY;
        proj.touch = W_Firemine_Touch;
        PROJECTILE_MAKETRIGGER(proj);
        setsize(proj, '-4 -4 -4', '4 4 4');
        setorigin(proj, w_shotorg);
        proj.think = W_Firemine_Think;
        proj.nextthink = time;
-       proj.damageforcescale = cvar("g_balance_fireball_primary_damageforcescale");
-       proj.pushltime = time + cvar("g_balance_fireball_primary_lifetime");
-       W_SETUPPROJECTILEVELOCITY_UP(proj, g_balance_fireball_primary);
+       proj.damageforcescale = cvar("g_balance_fireball_secondary_damageforcescale");
+       proj.pushltime = time + cvar("g_balance_fireball_secondary_lifetime");
+       W_SETUPPROJECTILEVELOCITY_UP(proj, g_balance_fireball_secondary);
 
        proj.angles = vectoangles(proj.velocity);
        proj.flags = FL_PROJECTILE;
@@ -300,37 +300,37 @@ float w_fireball(float req)
        {
                self.BUTTON_ATCK = FALSE;
                self.BUTTON_ATCK2 = FALSE;
-               if (self.bot_secondary_fireballmooth == 0)
+               if (self.bot_primary_fireballmooth == 0)
                {
-                       if(bot_aim(cvar("g_balance_fireball_primary_speed"), cvar("g_balance_fireball_primary_speed_up"), cvar("g_balance_fireball_primary_lifetime"), TRUE))
+                       if(bot_aim(cvar("g_balance_fireball_primary_speed"), 0, cvar("g_balance_fireball_primary_lifetime"), FALSE))
                        {
                                self.BUTTON_ATCK = TRUE;
-                               if(random() < 0.01) self.bot_secondary_fireballmooth = 1;
+                               if(random() < 0.02) self.bot_primary_fireballmooth = 0;
                        }
                }
                else
                {
-                       if(bot_aim(cvar("g_balance_fireball_secondary_speed"), 0, cvar("g_balance_fireball_secondary_lifetime"), FALSE))
+                       if(bot_aim(cvar("g_balance_fireball_secondary_speed"), cvar("g_balance_fireball_secondary_speed_up"), cvar("g_balance_fireball_secondary_lifetime"), TRUE))
                        {
                                self.BUTTON_ATCK2 = TRUE;
-                               if(random() < 0.02) self.bot_secondary_fireballmooth = 0;
+                               if(random() < 0.01) self.bot_primary_fireballmooth = 1;
                        }
                }
        }
        else if (req == WR_THINK)
        {
                if (self.BUTTON_ATCK)
-               if (weapon_prepareattack(0, cvar("g_balance_fireball_primary_refire")))
+               if (time >= self.fireball_primarytime)
+               if (weapon_prepareattack(1, cvar("g_balance_fireball_primary_refire")))
                {
-                       W_Fireball_Attack1();
-                       weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_fireball_primary_animtime"), w_ready);
+                       W_Fireball_Attack1_Frame0();
+                       self.fireball_primarytime = time + cvar("g_balance_fireball_primary_refire2");
                }
                if (self.BUTTON_ATCK2)
-               if (time >= self.fireball_secondarytime)
-               if (weapon_prepareattack(1, cvar("g_balance_fireball_secondary_refire")))
+               if (weapon_prepareattack(0, cvar("g_balance_fireball_secondary_refire")))
                {
-                       W_Fireball_Attack2_Frame0();
-                       self.fireball_secondarytime = time + cvar("g_balance_fireball_secondary_refire2");
+                       W_Fireball_Attack2();
+                       weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_fireball_secondary_animtime"), w_ready);
                }
        }
        else if (req == WR_PRECACHE)
@@ -346,20 +346,27 @@ float w_fireball(float req)
        else if (req == WR_SETUP)
                weapon_setup(WEP_FIREBALL);
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_rockets >= cvar("g_balance_fireball_primary_ammo");
+               return self.ammo_fuel >= cvar("g_balance_fireball_primary_ammo");
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_rockets >= cvar("g_balance_fireball_secondary_ammo");
+               return self.ammo_fuel >= cvar("g_balance_fireball_secondary_ammo");
        else if (req == WR_SUICIDEMESSAGE)
        {
                if(w_deathtype & HITTYPE_SECONDARY)
-                       w_deathtypestring = "should have used a smaller gun";
-               else
                        w_deathtypestring = "forgot about some firemine";
+               else
+                       w_deathtypestring = "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";
+                       else
+                               w_deathtypestring = "fatefully ignored #'s firemine";
+               }
+               else
+               {
                        if(w_deathtype & HITTYPE_BOUNCE)
                        {
                                if(w_deathtype & HITTYPE_SPLASH) // BFG effect
@@ -376,17 +383,10 @@ float w_fireball(float req)
                        else
                                w_deathtypestring = "tasted #'s fireball";
                }
-               else
-               {
-                       if(w_deathtype & HITTYPE_HEADSHOT)
-                               w_deathtypestring = "tried to catch #'s firemine";
-                       else
-                               w_deathtypestring = "fatefully ignored #'s firemine";
-               }
        }
        else if (req == WR_RESETPLAYER)
        {
-               self.fireball_secondarytime = time;
+               self.fireball_primarytime = time;
        }
        return TRUE;
 };
index 80b7020..559ced3 100644 (file)
@@ -127,6 +127,8 @@ void W_Grenade_Attack2 (void)
        gren.bot_dodge = TRUE;
        gren.bot_dodgerating = cvar("g_balance_grenadelauncher_secondary_damage");
        gren.movetype = MOVETYPE_BOUNCE;
+       gren.bouncefactor = cvar("g_balance_grenadelauncher_secondary_bouncefactor");
+       gren.bouncestop = cvar("g_balance_grenadelauncher_secondary_bouncestop");
        PROJECTILE_MAKETRIGGER(gren);
        gren.projectiledeathtype = WEP_GRENADE_LAUNCHER | HITTYPE_SECONDARY;
        setsize(gren, '0 0 -3', '0 0 -3');
index c16fc89..773e90d 100644 (file)
@@ -112,22 +112,33 @@ void WarpZone_Outside()
 float warpzone_saved;
 vector warpzone_saved_origin;
 vector warpzone_saved_angles;
+vector warpzone_saved_cl_viewangles;
 #ifndef KEEP_ROLL
 var float autocvar_cl_rollkillspeed = 10;
 #endif
 void WarpZone_FixView()
 {
-       float pd;
+       float pd, f;
        entity e;
        warpzone_saved = 0;
        warpzone_saved_origin = warpzone_fixview_origin;
        warpzone_saved_angles = warpzone_fixview_angles;
+       warpzone_saved_cl_viewangles = warpzone_fixview_cl_viewangles;
 
 #ifndef KEEP_ROLL
-       if(autocvar_cl_rollkillspeed)
-               R_SetView(VF_CL_VIEWANGLES_Z, input_angles_z * max(0, (1 - frametime * autocvar_cl_rollkillspeed)));
-       else
-               R_SetView(VF_CL_VIEWANGLES_Z, 0);
+       if(warpzone_fixview_angles_z != 0 || warpzone_fixview_cl_viewangles_z != 0)
+       {
+               if(autocvar_cl_rollkillspeed)
+                       f = max(0, (1 - frametime * autocvar_cl_rollkillspeed));
+               else
+                       f = 0;
+               warpzone_fixview_angles_z *= f;
+               warpzone_fixview_cl_viewangles_z *= f;
+               warpzone_saved_angles_z *= f; // PERMANENTLY apply that change!
+               warpzone_saved_cl_viewangles_z *= f; // PERMANENTLY apply that change!
+               warpzone_saved = 2;
+               R_SetView(VF_CL_VIEWANGLES_Z, warpzone_fixview_angles_z);
+       }
 #endif
 
        e = WarpZone_Find(warpzone_fixview_origin, warpzone_fixview_origin);
@@ -136,6 +147,7 @@ void WarpZone_FixView()
                warpzone_saved = 1;
                warpzone_fixview_origin = WarpZone_TransformOrigin(e, warpzone_fixview_origin);
                warpzone_fixview_angles = WarpZone_TransformVAngles(e, warpzone_fixview_angles);
+               warpzone_fixview_cl_viewangles = WarpZone_TransformVAngles(e, warpzone_fixview_cl_viewangles);
                WarpZone_Inside();
        }
        else
@@ -154,10 +166,10 @@ void WarpZone_FixView()
                }
        }
 
-       if(warpzone_saved)
+       if(warpzone_saved == 1)
        {
                R_SetView(VF_ORIGIN, warpzone_fixview_origin);
-               R_SetView(VF_ANGLES, warpzone_fixview_angles);
+               R_SetView(VF_ANGLES, warpzone_fixview_cl_viewangles);
        }
 }
 void WarpZone_UnFixView()
@@ -166,8 +178,10 @@ void WarpZone_UnFixView()
        {
                warpzone_fixview_origin = warpzone_saved_origin;
                warpzone_fixview_angles = warpzone_saved_angles;
+               warpzone_fixview_cl_viewangles = warpzone_saved_cl_viewangles;
                R_SetView(VF_ORIGIN, warpzone_fixview_origin);
                R_SetView(VF_ANGLES, warpzone_fixview_angles);
+               R_SetView(VF_CL_VIEWANGLES, warpzone_fixview_cl_viewangles);
        }
 }
 
index 5ab212a..e8f44be 100644 (file)
@@ -3,6 +3,7 @@ void WarpZone_Camera_Read(float bIsNewEntity);
 
 vector warpzone_fixview_origin;
 vector warpzone_fixview_angles;
+vector warpzone_fixview_cl_viewangles;
 void WarpZone_FixView(); // this saves the previous values
 void WarpZone_UnFixView(); // and restores them
 
index 25ec3c0..801314a 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-balance_cfgs="balance25.cfg balanceSamual.cfg balanceNexrun.cfg"
+balance_cfgs="balance25.cfg balanceSamual.cfg balanceXPM.cfg"
 
 countw=`awk '/^seta? g_/ { print $2; }' balance.cfg       | sort -u | tr -d '\r' | md5sum | cut -c 1-32`
 for b in $balance_cfgs; do