]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote branch 'refs/remotes/origin/fruitiex/default_menuskin'
authorRudolf Polzer <divverent@alientrap.org>
Wed, 4 Aug 2010 11:34:42 +0000 (13:34 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Wed, 4 Aug 2010 11:34:42 +0000 (13:34 +0200)
21 files changed:
balanceXPM.cfg [deleted file]
balanceXonotic.cfg
defaultXPM.cfg
defaultXonotic.cfg
gfx/rifle_ring_1.tga
gfx/rifle_ring_2.tga
gfx/rifle_ring_3.tga
gfx/rifle_ring_4.tga
gfx/rifle_ring_5.tga [deleted file]
gfx/rifle_ring_6.tga [deleted file]
gfx/rifle_ring_7.tga [deleted file]
gfx/rifle_ring_8.tga [deleted file]
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/common/mapinfo.qc
qcsrc/common/mapinfo.qh
qcsrc/server/cl_client.qc
qcsrc/server/w_campingrifle.qc
qcsrc/server/w_crylink.qc
qcsrc/server/w_nex.qc
qcsrc/warpzonelib/client.qc

diff --git a/balanceXPM.cfg b/balanceXPM.cfg
deleted file mode 100644 (file)
index 55b6a54..0000000
+++ /dev/null
@@ -1,656 +0,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 -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_uzi -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_grenadelauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_electro -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_nex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_hagar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_rocketlauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_minstanex 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_porto 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_hook 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_hlac 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_campingrifle 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_tuba 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_fireball 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_seeker 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_balance_health_start 125
-set g_balance_armor_start 0
-set g_start_ammo_shells 14
-set g_start_ammo_nails 0
-set g_start_ammo_rockets 0
-set g_start_ammo_cells 0
-set g_start_ammo_fuel 0
-set g_warmup_start_health 250 "starting values when being in warmup-stage"
-set g_warmup_start_armor 100 "starting values when being in warmup-stage"
-set g_warmup_start_ammo_shells 50 "starting values when being in warmup-stage"
-set g_warmup_start_ammo_nails 150 "starting values when being in warmup-stage"
-set g_warmup_start_ammo_rockets 50 "starting values when being in warmup-stage"
-set g_warmup_start_ammo_cells 50 "starting values when being in warmup-stage"
-set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage"
-set g_lms_start_health 250
-set g_lms_start_armor 100
-set g_lms_start_ammo_shells 30
-set g_lms_start_ammo_nails 250
-set g_lms_start_ammo_rockets 100
-set g_lms_start_ammo_cells 200
-set g_lms_start_ammo_fuel 0
-set g_balance_nix_roundtime 25
-set g_balance_nix_incrtime 1.6
-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_ammo_anyway 1
-set g_pickup_weapons_anyway 1
-set g_pickup_shells 10
-set g_pickup_shells_max 30
-set g_pickup_nails 120
-set g_pickup_nails_max 300
-set g_pickup_rockets 25
-set g_pickup_rockets_max 150
-set g_pickup_cells 25
-set g_pickup_cells_max 200
-set g_pickup_fuel 25
-set g_pickup_fuel_jetpack 50
-set g_pickup_fuel_max 100
-set g_pickup_armorsmall 5
-set g_pickup_armorsmall_max 200
-set g_pickup_armorsmall_anyway 1
-set g_pickup_armormedium 25
-set g_pickup_armormedium_max 200
-set g_pickup_armormedium_anyway 1
-set g_pickup_armorbig 50
-set g_pickup_armorbig_max 200
-set g_pickup_armorbig_anyway 1
-set g_pickup_armorlarge 100
-set g_pickup_armorlarge_max 200
-set g_pickup_armorlarge_anyway 1
-set g_pickup_healthsmall 5
-set g_pickup_healthsmall_max 200
-set g_pickup_healthsmall_anyway 1
-set g_pickup_healthmedium 25
-set g_pickup_healthmedium_max 100
-set g_pickup_healthmedium_anyway 0
-set g_pickup_healthlarge 50
-set g_pickup_healthlarge_max 100
-set g_pickup_healthlarge_anyway 0
-set g_pickup_healthmega 100
-set g_pickup_healthmega_max 200
-set g_pickup_healthmega_anyway 1
-set g_pickup_respawntime_short 15
-set g_pickup_respawntime_medium 20
-set g_pickup_respawntime_long 30
-set g_pickup_respawntime_powerup 120
-set g_pickup_respawntime_weapon 5
-set g_pickup_respawntime_ammo 25
-set g_pickup_respawntimejitter_short 0
-set g_pickup_respawntimejitter_medium 0
-set g_pickup_respawntimejitter_long 0
-set g_pickup_respawntimejitter_powerup 10
-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 200
-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 200
-set g_balance_armor_blockpercent 0.7
-set g_balance_fuel_regen 0.1 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)"
-set g_balance_fuel_regenlinear 0
-set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen counter
-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.65
-set g_balance_weaponswitchdelay 0.1
-set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
-set g_weaponratefactor 1 "weapon fire rate multiplier"
-set g_weapondamagefactor 1 "weapon damage multiplier"
-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 800
-set g_balance_falldamage_factor 0.20
-set g_balance_falldamage_maxdamage 15
-// }}}
-
-// {{{ powerups
-set g_balance_powerup_invincible_takedamage 0.3
-set g_balance_powerup_invincible_time 30
-set g_balance_powerup_strength_damage 3
-set g_balance_powerup_strength_force 4
-set g_balance_powerup_strength_time 30
-set g_balance_powerup_strength_selfdamage 1.5
-set g_balance_powerup_strength_selfforce 1.5
-// }}}
-
-// {{{ jetpack/hook
-set g_jetpack_antigravity 0.8 "factor of gravity compensation of the jetpack"
-set g_jetpack_acceleration_side 1200 "acceleration of the jetpack in xy direction"
-set g_jetpack_acceleration_up 600 "acceleration of the jetpack in z direction (note: you have to factor in gravity here, if antigravity is not 1)"
-set g_jetpack_maxspeed_side 1500 "max speed of the jetpack in xy direction"
-set g_jetpack_maxspeed_up 600 "max speed of the jetpack in z direction"
-set g_jetpack_fuel 8 "fuel per second for jetpack"
-set g_jetpack_attenuation 2 "jetpack sound attenuation"
-
-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 20 // dps 33, hope that's not too high
-set g_balance_laser_primary_edgedamage 20
-set g_balance_laser_primary_force 235
-set g_balance_laser_primary_radius 60
-set g_balance_laser_primary_speed 4000
-set g_balance_laser_primary_spread 0
-set g_balance_laser_primary_refire 0.6
-set g_balance_laser_primary_animtime 0.6
-set g_balance_laser_primary_lifetime 5
-set g_balance_laser_primary_shotangle 0
-set g_balance_laser_primary_delay 0
-set g_balance_laser_primary_gauntlet 0
-set g_balance_laser_secondary 1 // when 1, a secondary laser mode exists
-set g_balance_laser_secondary_damage 110 // dps
-set g_balance_laser_secondary_edgedamage 0
-set g_balance_laser_secondary_force 1000
-set g_balance_laser_secondary_radius 60
-set g_balance_laser_secondary_speed 0
-set g_balance_laser_secondary_spread 0
-set g_balance_laser_secondary_refire 0.066
-set g_balance_laser_secondary_animtime 0.066
-set g_balance_laser_secondary_lifetime 0
-set g_balance_laser_secondary_shotangle 0
-set g_balance_laser_secondary_delay 0
-set g_balance_laser_secondary_gauntlet 1
-// }}}
-// {{{ shotgun
-set g_balance_shotgun_primary_bullets 16
-set g_balance_shotgun_primary_damage 4
-set g_balance_shotgun_primary_force 20
-set g_balance_shotgun_primary_spread 0.16
-set g_balance_shotgun_primary_refire 1
-set g_balance_shotgun_primary_animtime 0.4
-set g_balance_shotgun_primary_ammo 1
-set g_balance_shotgun_primary_speed 12000
-set g_balance_shotgun_primary_bulletconstant 75 // 3.8qu
-set g_balance_shotgun_secondary 1
-set g_balance_shotgun_secondary_melee_delay 0.35 // match the anim
-set g_balance_shotgun_secondary_melee_range 60
-set g_balance_shotgun_secondary_melee_swing 50
-set g_balance_shotgun_secondary_melee_time 0.1
-set g_balance_shotgun_secondary_damage 115
-set g_balance_shotgun_secondary_force 150
-set g_balance_shotgun_secondary_refire 1.1
-set g_balance_shotgun_secondary_animtime 1
-// }}}
-// {{{ uzi
-set g_balance_uzi_first 1
-set g_balance_uzi_first_damage 17
-set g_balance_uzi_first_force 35
-set g_balance_uzi_first_spread 0.03
-set g_balance_uzi_first_refire 0.2
-set g_balance_uzi_first_ammo 2
-set g_balance_uzi_sustained_damage 7
-set g_balance_uzi_sustained_force 7.5
-set g_balance_uzi_sustained_spread 0.1
-set g_balance_uzi_sustained_refire 0.075
-set g_balance_uzi_sustained_ammo 1
-set g_balance_uzi_speed 18000
-set g_balance_uzi_bulletconstant 115 // 13.1qu
-// }}}
-// {{{ mortar // TODO
-set g_balance_grenadelauncher_primary2secondary 0
-set g_balance_grenadelauncher_primary_sticky 0
-set g_balance_grenadelauncher_primary_damage 60
-set g_balance_grenadelauncher_primary_edgedamage 35
-set g_balance_grenadelauncher_primary_force 300
-set g_balance_grenadelauncher_primary_radius 100
-set g_balance_grenadelauncher_primary_speed 2000
-set g_balance_grenadelauncher_primary_speed_up 200
-set g_balance_grenadelauncher_primary_speed_z 0
-set g_balance_grenadelauncher_primary_spread 0
-set g_balance_grenadelauncher_primary_lifetime 5
-set g_balance_grenadelauncher_primary_lifetime2 0.65
-set g_balance_grenadelauncher_primary_refire 0.8
-set g_balance_grenadelauncher_primary_animtime 0.2
-set g_balance_grenadelauncher_primary_ammo 2
-set g_balance_grenadelauncher_primary_health 72
-set g_balance_grenadelauncher_secondary_sticky 1
-set g_balance_grenadelauncher_secondary_damage 100
-set g_balance_grenadelauncher_secondary_edgedamage 30
-set g_balance_grenadelauncher_secondary_force 300
-set g_balance_grenadelauncher_secondary_radius 150
-set g_balance_grenadelauncher_secondary_speed 1000
-set g_balance_grenadelauncher_secondary_speed_up 200
-set g_balance_grenadelauncher_secondary_speed_z 0
-set g_balance_grenadelauncher_secondary_spread 0
-set g_balance_grenadelauncher_secondary_lifetime 5
-set g_balance_grenadelauncher_secondary_lifetime2 1
-set g_balance_grenadelauncher_secondary_refire 0.8
-set g_balance_grenadelauncher_secondary_animtime 0.2
-set g_balance_grenadelauncher_secondary_ammo 2
-set g_balance_grenadelauncher_secondary_health 72
-set g_balance_grenadelauncher_secondary_damageforcescale 0
-set g_balance_grenadelauncher_secondary_bouncefactor 0.7
-set g_balance_grenadelauncher_secondary_bouncestop 0.12
-// }}}
-// {{{ electro // TODO
-set g_balance_electro_lightning 1
-set g_balance_electro_primary_damage 100
-set g_balance_electro_primary_edgedamage 0
-set g_balance_electro_primary_force 600
-set g_balance_electro_primary_force_up 125
-set g_balance_electro_primary_radius 850
-set g_balance_electro_primary_comboradius 75
-set g_balance_electro_primary_speed 0
-set g_balance_electro_primary_spread 0
-set g_balance_electro_primary_lifetime 0
-set g_balance_electro_primary_refire 0.03333333
-set g_balance_electro_primary_animtime 0.03333333
-set g_balance_electro_primary_ammo 6
-set g_balance_electro_primary_range 800
-set g_balance_electro_secondary_damage 40
-set g_balance_electro_secondary_spread 0
-set g_balance_electro_secondary_edgedamage 0
-set g_balance_electro_secondary_force 100
-set g_balance_electro_secondary_radius 100
-set g_balance_electro_secondary_speed 500
-set g_balance_electro_secondary_speed_up 200
-set g_balance_electro_secondary_speed_z 0
-set g_balance_electro_secondary_spread 0.08
-set g_balance_electro_secondary_lifetime 3.5
-set g_balance_electro_secondary_refire 0.5
-set g_balance_electro_secondary_refire2 0
-set g_balance_electro_secondary_animtime 0.5
-set g_balance_electro_secondary_ammo 2
-set g_balance_electro_secondary_health 10
-set g_balance_electro_secondary_damageforcescale 4
-set g_balance_electro_secondary_count 1
-set g_balance_electro_combo_damage 40
-set g_balance_electro_combo_edgedamage 0
-set g_balance_electro_combo_force 80
-set g_balance_electro_combo_radius 250
-set g_balance_electro_combo_comboradius 0
-set g_balance_electro_combo_speed 400
-// }}}
-// {{{ crylink
-set g_balance_crylink_primary_damage 10
-set g_balance_crylink_primary_edgedamage 8
-set g_balance_crylink_primary_force 25
-set g_balance_crylink_primary_radius 100
-set g_balance_crylink_primary_speed 1100
-set g_balance_crylink_primary_spread 0.1
-set g_balance_crylink_primary_shots 7
-set g_balance_crylink_primary_bounces 1
-set g_balance_crylink_primary_refire 0.8
-set g_balance_crylink_primary_animtime 0.4
-set g_balance_crylink_primary_ammo 2
-set g_balance_crylink_primary_bouncedamagefactor 0.2
-
-set g_balance_crylink_primary_middle_lifetime 5 // range: 10000 full, fades to 20000
-set g_balance_crylink_primary_middle_fadetime 5
-set g_balance_crylink_primary_star_lifetime 0.8 // range: 800 full, fades to 1300
-set g_balance_crylink_primary_star_fadetime 0.25
-set g_balance_crylink_primary_other_lifetime 0.8 // range: 800 full, fades to 1300
-set g_balance_crylink_primary_other_fadetime 0.25
-
-set g_balance_crylink_secondary 1
-set g_balance_crylink_secondary_damage 4
-set g_balance_crylink_secondary_edgedamage 0
-set g_balance_crylink_secondary_force 16
-set g_balance_crylink_secondary_radius 15
-set g_balance_crylink_secondary_speed 1600
-set g_balance_crylink_secondary_spread 0.03
-set g_balance_crylink_secondary_shots 3
-set g_balance_crylink_secondary_bounces 0
-set g_balance_crylink_secondary_refire 0.1
-set g_balance_crylink_secondary_animtime 0.1
-set g_balance_crylink_secondary_ammo 1
-set g_balance_crylink_secondary_bouncedamagefactor 0.5
-
-set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000
-set g_balance_crylink_secondary_middle_fadetime 5
-set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000
-set g_balance_crylink_secondary_line_fadetime 2
-// }}}
-// {{{ nex
-set g_balance_nex_primary_damage 100
-set g_balance_nex_primary_force 200
-set g_balance_nex_primary_refire 1.25
-set g_balance_nex_primary_animtime 1
-set g_balance_nex_primary_ammo 5
-set g_balance_nex_primary_damagefalloff_mindist 1000
-set g_balance_nex_primary_damagefalloff_maxdist 3000
-set g_balance_nex_primary_damagefalloff_halflife 2000
-set g_balance_nex_primary_damagefalloff_forcehalflife 2000
-
-set g_balance_nex_secondary 0
-set g_balance_nex_secondary_damage 100
-set g_balance_nex_secondary_force 200
-set g_balance_nex_secondary_refire 1.25
-set g_balance_nex_secondary_animtime 1
-set g_balance_nex_secondary_ammo 5
-set g_balance_nex_secondary_damagefalloff_mindist 1000
-set g_balance_nex_secondary_damagefalloff_maxdist 3000
-set g_balance_nex_secondary_damagefalloff_halflife 2000
-set g_balance_nex_secondary_damagefalloff_forcehalflife 2000
-// }}}
-// {{{ minstanex
-set g_balance_minstanex_refire 1.25
-set g_balance_minstanex_animtime 1
-set g_balance_minstanex_ammo 10
-// }}}
-// {{{ hagar
-set g_balance_hagar_primary_damage 12
-set g_balance_hagar_primary_edgedamage 12
-set g_balance_hagar_primary_force 70
-set g_balance_hagar_primary_radius 70
-set g_balance_hagar_primary_spread 0.1
-set g_balance_hagar_primary_speed 1800
-set g_balance_hagar_primary_lifetime 5
-set g_balance_hagar_primary_refire 0.12
-set g_balance_hagar_primary_ammo 1
-set g_balance_hagar_secondary 1
-set g_balance_hagar_secondary_damage 12
-set g_balance_hagar_secondary_edgedamage 12
-set g_balance_hagar_secondary_force 70
-set g_balance_hagar_secondary_radius 50
-set g_balance_hagar_secondary_spread 0.15
-set g_balance_hagar_secondary_speed 1800
-set g_balance_hagar_secondary_lifetime_min 5
-set g_balance_hagar_secondary_lifetime_rand 0
-set g_balance_hagar_secondary_refire 0.12
-set g_balance_hagar_secondary_ammo 1
-// }}}
-// {{{ rocketlauncher // TODO
-set g_balance_rocketlauncher_damage 100
-set g_balance_rocketlauncher_edgedamage 33
-set g_balance_rocketlauncher_force 350
-set g_balance_rocketlauncher_radius 125
-set g_balance_rocketlauncher_speed 1000
-set g_balance_rocketlauncher_speedaccel 0
-set g_balance_rocketlauncher_speedstart 1000
-set g_balance_rocketlauncher_lifetime 5
-set g_balance_rocketlauncher_refire 1
-set g_balance_rocketlauncher_animtime 0.2
-set g_balance_rocketlauncher_ammo 3
-set g_balance_rocketlauncher_health 0
-set g_balance_rocketlauncher_damageforcescale 0
-set g_balance_rocketlauncher_detonatedelay -1 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
-set g_balance_rocketlauncher_guiderate 45 // max degrees per second
-set g_balance_rocketlauncher_guideratedelay 0.01 // immediate
-set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
-set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in
-set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again
-set g_balance_rocketlauncher_laserguided_speed 1000 //650
-set g_balance_rocketlauncher_laserguided_speedaccel 0
-set g_balance_rocketlauncher_laserguided_speedstart 1000
-set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5
-set g_balance_rocketlauncher_laserguided_allow_steal 1
-set g_balance_rocketlauncher_remote_damage 50
-set g_balance_rocketlauncher_remote_edgedamage 16.5
-set g_balance_rocketlauncher_remote_radius 120
-set g_balance_rocketlauncher_remote_force 350
-// }}}
-// {{{ porto
-set g_balance_porto_primary_refire 1.5
-set g_balance_porto_primary_animtime 0.3
-set g_balance_porto_primary_speed 2000
-set g_balance_porto_primary_lifetime 5
-set g_balance_portal_health 200 // these get recharged whenever the portal is used
-set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
-// }}}
-// {{{ hook
-set g_balance_hook_primary_fuel 5 // hook monkeys set 0
-set g_balance_hook_primary_refire 0 // hook monkeys set 0
-set g_balance_hook_primary_animtime 0.3 // good shoot anim
-set g_balance_hook_primary_hooked_time_max 0 // infinite
-set g_balance_hook_primary_hooked_time_free 2 // 2s being hooked are free
-set g_balance_hook_primary_hooked_fuel 5 // fuel per second hooked
-set g_balance_hook_secondary_damage 25 // not much
-set g_balance_hook_secondary_edgedamage 5 // not much
-set g_balance_hook_secondary_radius 500 // LOTS
-set g_balance_hook_secondary_force -2000 // LOTS
-set g_balance_hook_secondary_ammo 50 // a whole pack
-set g_balance_hook_secondary_lifetime 5 // infinite
-set g_balance_hook_secondary_speed 0 // not much throwing
-set g_balance_hook_secondary_gravity 5 // fast falling
-set g_balance_hook_secondary_refire 3 // don't drop too many bombs...
-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
-set g_balance_hlac_primary_spread_max 0
-set g_balance_hlac_primary_spread_add 0
-set g_balance_hlac_primary_spread_crouchmod 0
-
-set g_balance_hlac_primary_damage 15
-set g_balance_hlac_primary_edgedamage 0
-set g_balance_hlac_primary_force 70
-set g_balance_hlac_primary_radius 30
-set g_balance_hlac_primary_speed 2500
-set g_balance_hlac_primary_lifetime 5
-
-set g_balance_hlac_primary_refire 0.1
-set g_balance_hlac_primary_animtime 0.4
-set g_balance_hlac_primary_ammo 1
-
-set g_balance_hlac_secondary 1
-set g_balance_hlac_secondary_spread 0.15
-set g_balance_hlac_secondary_spread_crouchmod 0.5
-
-set g_balance_hlac_secondary_damage 20
-set g_balance_hlac_secondary_edgedamage 0
-set g_balance_hlac_secondary_force 40
-set g_balance_hlac_secondary_radius 35
-set g_balance_hlac_secondary_speed 2500
-set g_balance_hlac_secondary_lifetime 5
-
-set g_balance_hlac_secondary_refire 1
-set g_balance_hlac_secondary_animtime 0.7
-set g_balance_hlac_secondary_ammo 10
-set g_balance_hlac_secondary_shots 6
-// }}}
-// {{{ campingrifle
-set g_balance_campingrifle_magazinecapacity 0
-set g_balance_campingrifle_reloadtime 2 // matches reload anim
-set g_balance_campingrifle_auto_reload_after_changing_weapons 0
-set g_balance_campingrifle_bursttime 0
-set g_balance_campingrifle_tracer 1
-set g_balance_campingrifle_primary_damage 50
-set g_balance_campingrifle_primary_headshotaddeddamage 35
-set g_balance_campingrifle_primary_spread 0
-set g_balance_campingrifle_primary_force 2
-set g_balance_campingrifle_primary_speed 35000
-set g_balance_campingrifle_primary_lifetime 5
-set g_balance_campingrifle_primary_refire 0.8
-set g_balance_campingrifle_primary_animtime 0.8
-set g_balance_campingrifle_primary_ammo 10
-set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu
-set g_balance_campingrifle_primary_burstcost 0
-set g_balance_campingrifle_primary_bullethail 0 // empty magazine on shot
-set g_balance_campingrifle_secondary 0
-set g_balance_campingrifle_secondary_damage 15
-set g_balance_campingrifle_secondary_headshotaddeddamage 25 // 50 damage only on head
-set g_balance_campingrifle_secondary_spread 0.008
-set g_balance_campingrifle_secondary_force 1
-set g_balance_campingrifle_secondary_speed 20000
-set g_balance_campingrifle_secondary_lifetime 5
-set g_balance_campingrifle_secondary_refire 0.15
-set g_balance_campingrifle_secondary_animtime 0.1
-set g_balance_campingrifle_secondary_ammo 10
-set g_balance_campingrifle_secondary_bulletconstant 130 // 18.3qu
-set g_balance_campingrifle_secondary_burstcost 0
-set g_balance_campingrifle_secondary_bullethail 0 // empty magazine on shot
-// }}}
-// {{{ tuba
-set g_balance_tuba_refire 0.05
-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
-// }}}
-// {{{ seeker
-set g_balance_seeker_flac_ammo 0.5
-set g_balance_seeker_flac_animtime 0.1
-set g_balance_seeker_flac_damage 15
-set g_balance_seeker_flac_edgedamage 10
-set g_balance_seeker_flac_force 50
-set g_balance_seeker_flac_lifetime 0.1
-set g_balance_seeker_flac_lifetime_rand 0.05
-set g_balance_seeker_flac_radius 100
-set g_balance_seeker_flac_refire 0.1
-set g_balance_seeker_flac_speed 3000
-set g_balance_seeker_flac_speed_up 1000
-set g_balance_seeker_flac_speed_z 0
-set g_balance_seeker_flac_spread 0.4
-set g_balance_seeker_missile_accel 1.05
-set g_balance_seeker_missile_ammo 2
-set g_balance_seeker_missile_animtime 0.3
-set g_balance_seeker_missile_count 3
-set g_balance_seeker_missile_damage 33
-set g_balance_seeker_missile_damageforcescale 4
-set g_balance_seeker_missile_decel 0.9
-set g_balance_seeker_missile_delay 0.25
-set g_balance_seeker_missile_edgedamage 10
-set g_balance_seeker_missile_force 250
-set g_balance_seeker_missile_health 5
-set g_balance_seeker_missile_lifetime 15
-set g_balance_seeker_missile_proxy 0
-set g_balance_seeker_missile_proxy_delay 0.2
-set g_balance_seeker_missile_proxy_maxrange 45
-set g_balance_seeker_missile_radius 80
-set g_balance_seeker_missile_refire 0.5
-set g_balance_seeker_missile_smart 1
-set g_balance_seeker_missile_smart_mindist 800
-set g_balance_seeker_missile_smart_trace_max 2500
-set g_balance_seeker_missile_smart_trace_min 1000
-set g_balance_seeker_missile_speed 700
-set g_balance_seeker_missile_speed_accel 0
-set g_balance_seeker_missile_speed_up 300
-set g_balance_seeker_missile_speed_z 0
-set g_balance_seeker_missile_speed_max 1250
-set g_balance_seeker_missile_spread 0
-set g_balance_seeker_missile_turnrate 0.65
-set g_balance_seeker_tag_ammo 1
-set g_balance_seeker_tag_animtime 0.3
-set g_balance_seeker_tag_damageforcescale 4
-set g_balance_seeker_tag_health 5
-set g_balance_seeker_tag_lifetime 15
-set g_balance_seeker_tag_refire 0.7
-set g_balance_seeker_tag_speed 9000
-set g_balance_seeker_tag_spread 0
-// End new seeker
index dd4f1b9fa0f39b3599311bae7597bceb21ad6408..39b9b26ccc3d4451db82a29a5fc0020b0f707f3f 100644 (file)
@@ -8,14 +8,14 @@ set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide
 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 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_porto 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_hook 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_hlac 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_campingrifle 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_tuba 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_fireball 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
-set g_start_weapon_seeker 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_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 -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_campingrifle -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_fireball -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
+set g_start_weapon_seeker -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 20
@@ -23,14 +23,14 @@ set g_start_ammo_nails 0
 set g_start_ammo_rockets 0
 set g_start_ammo_cells 0
 set g_start_ammo_fuel 0
-set g_warmup_start_health 250 "starting values when being in warmup-stage"
+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 250
+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 250
@@ -218,7 +218,7 @@ set g_balance_laser_primary_lifetime 5
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0
 set g_balance_laser_primary_gauntlet 0
-set g_balance_laser_secondary 1 // when 1, a secondary laser mode exists
+set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
 set g_balance_laser_secondary_damage 200 // dps
 set g_balance_laser_secondary_edgedamage 0
 set g_balance_laser_secondary_force 1300
@@ -234,7 +234,7 @@ set g_balance_laser_secondary_gauntlet 1
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 20
-set g_balance_shotgun_primary_damage 4
+set g_balance_shotgun_primary_damage 3
 set g_balance_shotgun_primary_force 20
 set g_balance_shotgun_primary_spread 0.16
 set g_balance_shotgun_primary_refire 1
@@ -329,7 +329,7 @@ set g_balance_electro_secondary_speed_z 0
 set g_balance_electro_secondary_spread 0.08
 set g_balance_electro_secondary_lifetime 3.5
 set g_balance_electro_secondary_refire 0.2
-set g_balance_electro_secondary_refire2 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 10
@@ -345,7 +345,7 @@ set g_balance_electro_combo_speed 400
 // {{{ crylink
 set g_balance_crylink_primary_damage 10
 set g_balance_crylink_primary_edgedamage 8
-set g_balance_crylink_primary_force -150
+set g_balance_crylink_primary_force -60
 set g_balance_crylink_primary_radius 100
 set g_balance_crylink_primary_speed 1100
 set g_balance_crylink_primary_spread 0.1
@@ -366,7 +366,7 @@ set g_balance_crylink_primary_other_fadetime 0.25
 set g_balance_crylink_secondary 1
 set g_balance_crylink_secondary_damage 4
 set g_balance_crylink_secondary_edgedamage 0
-set g_balance_crylink_secondary_force -40
+set g_balance_crylink_secondary_force -20
 set g_balance_crylink_secondary_radius 15
 set g_balance_crylink_secondary_speed 1600
 set g_balance_crylink_secondary_spread 0.03
@@ -529,7 +529,7 @@ set g_balance_campingrifle_auto_reload_after_changing_weapons 0
 set g_balance_campingrifle_bursttime 0
 set g_balance_campingrifle_tracer 1
 set g_balance_campingrifle_primary_damage 60
-set g_balance_campingrifle_primary_headshotaddeddamage 35
+set g_balance_campingrifle_primary_headshotaddeddamage 50
 set g_balance_campingrifle_primary_spread 0
 set g_balance_campingrifle_primary_force 2
 set g_balance_campingrifle_primary_speed 35000
@@ -542,7 +542,7 @@ set g_balance_campingrifle_primary_burstcost 0
 set g_balance_campingrifle_primary_bullethail 0 // empty magazine on shot
 set g_balance_campingrifle_secondary 1
 set g_balance_campingrifle_secondary_damage 25
-set g_balance_campingrifle_secondary_headshotaddeddamage 15 // 40 damage only on head
+set g_balance_campingrifle_secondary_headshotaddeddamage 20 // 45 damage only on head
 set g_balance_campingrifle_secondary_spread 0.008
 set g_balance_campingrifle_secondary_force 1
 set g_balance_campingrifle_secondary_speed 20000
index 3141a2409ce510d4a63d3de22a394148ea003a72..37aee96d07a9f96acdff42e9cccfae4441f29119 100644 (file)
@@ -1,44 +1,22 @@
 exec defaultXonotic.cfg
+exec physicsXPM.cfg
 
-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 g_weaponreplace_seeker 0
-set sv_q3acompat_machineshotgunswap 0
-
-// other options
-set sv_fragmessage_information_ping 1
-set sv_fragmessage_information_handicap 2
-set sv_fragmessage_information_stats 1
-set sv_fragmessage_information_typefrag 1
-
-set sv_defaultcharacter 1
-set sv_defaultplayermodel "models/player/nyx.iqm"
-set sv_defaultplayercolors 60 // force some visible color for now
+set g_start_weapon_laser 0
+set g_balance_weaponswitchdelay 0
 
-set g_jump_grunt 1
-set g_footsteps 1
 set g_shootfromcenter 1
-set g_fullbrightplayers 1 // until all models are visible with this set to 0
+
 set g_forced_respawn 1
+
 set g_mirrordamage 0
 set g_friendlyfire 1
 
 set timelimit_overtimes 1
-set timelimit_override 15 // for now, maybe not in future
 
-exec physicsXPM.cfg
-exec balanceFruit.cfg
+set sv_fragmessage_information_stats 0
+
+// force a visible playermodel!
+set sv_defaultcharacter 1
+set sv_defaultplayermodel "models/player/nyx.iqm"
+set sv_defaultplayercolors 60
+set g_fullbrightplayers 1
index 037505dd0a0a7ef79a202a061bc8591cf557a4ff..6b0a9be7d9233b766832a72252b3baaca8573dae 100644 (file)
@@ -338,9 +338,9 @@ set g_respawn_ghosts_speed 5 "the speed with which respawn ghosts float and rota
 set g_respawn_ghosts_maxtime 6 "maximum amount of time a respawn ghost can last, minimum time is half this value. 0 disables and ghosts fade when the body would"
 
 // fragmessage: This allows extra information to be displayed with the frag centerprints. 
-set sv_fragmessage_information_ping 0 "Enable ping display information, 0 = Never display; 1 = Always display (If the player is a bot, it will say bot instead of the ping.)"
+set sv_fragmessage_information_ping 1 "Enable ping display information, 0 = Never display; 1 = Always display (If the player is a bot, it will say bot instead of the ping.)"
 set sv_fragmessage_information_handicap 1 "Enable handicap display information, 0 = Never display; 1 = Only when the player has handicap on; 2 = Always display (Displays Off if off)"
-set sv_fragmessage_information_stats 0 "Enable statistics (health/armor) display information, 0 = Never display; 1 = Always display (Only available for the person who was killed)"
+set sv_fragmessage_information_stats 1 "Enable statistics (health/armor) display information, 0 = Never display; 1 = Always display (Only available for the person who was killed)"
 set sv_fragmessage_information_typefrag 1 "Enable typefrag display information, 0 = Never display; 1 = Always display"
 
 // use default physics
@@ -849,7 +849,7 @@ exec balanceXonotic.cfg
 
 set g_bloodloss 0   "amount of health below which blood loss occurs"
 
-set g_footsteps 0      "serverside footstep sounds"
+set g_footsteps 1      "serverside footstep sounds"
 
 set g_deathglow 1.25 "when enabled, players stop glowing after they die (the value specifies glow fading speed)"
 
@@ -1529,7 +1529,7 @@ prvm_leaktest_ignore_classnames "ctf_team dom_team tdm_team"
 
 sv_allowdownloads_inarchive 1 // for csprogs.dat
 
-set g_jump_grunt 0     "Do you make a grunting noise every time you jump? Is it the same grunting noise every time?"
+set g_jump_grunt 1     "Do you make a grunting noise every time you jump? Is it the same grunting noise every time?"
 
 alias allready "sv_cmd allready"
 
index a90927cac2c5c4280bc1ec3c8e1f87f4b9f5b97c..914de35ffa0f709f2f257554ca4187ebb079810c 100644 (file)
Binary files a/gfx/rifle_ring_1.tga and b/gfx/rifle_ring_1.tga differ
index 6f6ca4c9cf33528aa14a2469bbb81a93d4d76841..db0a8088be0106996cf474cd367365ad19c7db09 100644 (file)
Binary files a/gfx/rifle_ring_2.tga and b/gfx/rifle_ring_2.tga differ
index 68f6df7ffb0870e33b5d5a44b786a653d60f0121..20348c2588810cc2c791573a69deafe3be839dc8 100644 (file)
Binary files a/gfx/rifle_ring_3.tga and b/gfx/rifle_ring_3.tga differ
index 0a5db15dca9a1076d2c7e9aa0f7aa45e192c0b73..07975e27202d90216b12a08b34822d3063265f24 100644 (file)
Binary files a/gfx/rifle_ring_4.tga and b/gfx/rifle_ring_4.tga differ
diff --git a/gfx/rifle_ring_5.tga b/gfx/rifle_ring_5.tga
deleted file mode 100644 (file)
index d5cc95b..0000000
Binary files a/gfx/rifle_ring_5.tga and /dev/null differ
diff --git a/gfx/rifle_ring_6.tga b/gfx/rifle_ring_6.tga
deleted file mode 100644 (file)
index 4a126e7..0000000
Binary files a/gfx/rifle_ring_6.tga and /dev/null differ
diff --git a/gfx/rifle_ring_7.tga b/gfx/rifle_ring_7.tga
deleted file mode 100644 (file)
index 846212b..0000000
Binary files a/gfx/rifle_ring_7.tga and /dev/null differ
diff --git a/gfx/rifle_ring_8.tga b/gfx/rifle_ring_8.tga
deleted file mode 100644 (file)
index 137e24d..0000000
Binary files a/gfx/rifle_ring_8.tga and /dev/null differ
index 78b45fae37864270e14a40aa830643c6cf105a27..d1a76320f429527c6f454d7709d470dab357d6e8 100644 (file)
@@ -1050,6 +1050,9 @@ void Ent_Init()
        g_balance_grenadelauncher_secondary_bouncefactor = ReadCoord();
        g_balance_grenadelauncher_secondary_bouncestop = ReadCoord();
 
+       nex_scope = !ReadByte();
+       campingrifle_scope = !ReadByte();
+
        if(!postinit)
                PostInit();
 }
@@ -1277,14 +1280,6 @@ void Net_WeaponComplain() {
        complain_weapon_time = time;
 }
 
-void Net_CampingrifleScope() {
-       campingrifle_scope = TRUE;
-}
-
-void Net_NexScope() {
-       nex_scope = TRUE;
-}
-
 // CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer.
 // You must ALWAYS first acquire the temporary ID, which is sent as a byte.
 // Return value should be 1 if CSQC handled the temporary entity, otherwise return 0 to have the engine process the event.
@@ -1355,14 +1350,6 @@ float CSQC_Parse_TempEntity()
                        Net_WeaponComplain();
                        bHandled = true;
                        break;
-               case TE_CSQC_CAMPINGRIFLE_SCOPE:
-                       Net_CampingrifleScope();
-                       bHandled = true;
-                       break;
-               case TE_CSQC_NEX_SCOPE:
-                       Net_NexScope();
-                       bHandled = true;
-                       break;
                default:
                        // No special logic for this temporary entity; return 0 so the engine can handle it
                        bHandled = false;
index 05f1fe97e247209bb4be8d83d07966b825c66d1a..d3a5ea6a2d87db4e3905d7a3090dcbfd75548471 100644 (file)
@@ -775,7 +775,7 @@ void CSQC_UpdateView(float w, float h)
                                if (activeweapon == WEP_CAMPINGRIFLE)
                                {
                                        ring_scale = cvar("crosshair_campingrifle_ring_size");
-                                       bullets = bound(0, getstati(STAT_BULLETS_LOADED), 8);
+                                       bullets = bound(0, getstati(STAT_BULLETS_LOADED), 4);
                                }
                                else
                                        bullets = 0;
index 53a07186b6a126461fa1af1a05f2445e7ee33539..1fd2cf8093422d3cafd2b3760e8db48f16d28391 100644 (file)
@@ -388,12 +388,37 @@ void _MapInfo_Map_Reset()
        MapInfo_Map_maxs = '0 0 0';
 }
 
-void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType)
+string MapInfo_GetDefault(float t)
+{
+       switch(t)
+       {
+               case MAPINFO_TYPE_DEATHMATCH:      return "30 20 0";
+               case MAPINFO_TYPE_TEAM_DEATHMATCH: return "50 20 2 0";
+               case MAPINFO_TYPE_DOMINATION:      return "200 20 0";
+               case MAPINFO_TYPE_CTF:             return "300 20 10 0";
+               case MAPINFO_TYPE_RUNEMATCH:       return "200 20 0";
+               case MAPINFO_TYPE_LMS:             return "9 20 0";
+               case MAPINFO_TYPE_ARENA:           return "10 20 0";
+               case MAPINFO_TYPE_CA:              return "10 20 0";
+               case MAPINFO_TYPE_KEYHUNT:         return "1000 20 3 0";
+               case MAPINFO_TYPE_ASSAULT:         return "20 0";
+               case MAPINFO_TYPE_RACE:            return "20 5 7 15 0";
+               case MAPINFO_TYPE_ONSLAUGHT:       return "20 0";
+               case MAPINFO_TYPE_NEXBALL:         return "5 20 0";
+               case MAPINFO_TYPE_CTS:             return "20 0 0";
+               default:                           return "";
+       }
+}
+
+void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType, float load_default)
 {
        string sa;
        MapInfo_Map_supportedGametypes |= pThisType;
        if(!(pThisType & pWantedType))
                return;
+
+       if(load_default)
+               _MapInfo_Map_ApplyGametype(MapInfo_GetDefault(pThisType), pWantedType, pThisType, FALSE);
        
        if(pWantedType == MAPINFO_TYPE_ASSAULT || pWantedType == MAPINFO_TYPE_ONSLAUGHT || pWantedType == MAPINFO_TYPE_RACE || pWantedType == MAPINFO_TYPE_CTS) // these modes don't use fraglimit
        {
@@ -401,32 +426,39 @@ void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType)
        }
        else
        {
-               cvar_set("fraglimit", car(s));
+               sa = car(s);
+               if(sa != "")
+                       cvar_set("fraglimit", sa);
                s = cdr(s);
        }
 
-       cvar_set("timelimit", car(s));
+       sa = car(s);
+       if(sa != "")
+               cvar_set("timelimit", sa);
        s = cdr(s);
 
        if(pWantedType == MAPINFO_TYPE_TEAM_DEATHMATCH)
        {
-               sa = car(s); if(sa == "") sa = "2";
-               cvar_set("g_tdm_teams", sa);
+               sa = car(s);
+               if(sa != "")
+                       cvar_set("g_tdm_teams", sa);
                s = cdr(s);
        }
 
        if(pWantedType == MAPINFO_TYPE_KEYHUNT)
        {
-               sa = car(s); if(sa == "") sa = "3";
-               cvar_set("g_keyhunt_teams", sa);
+               sa = car(s);
+               if(sa != "")
+                       cvar_set("g_keyhunt_teams", sa);
                s = cdr(s);
        }
 
        if(pWantedType == MAPINFO_TYPE_CTF)
        {
-               sa = car(s); if(sa == "") sa = "10";
-               if(cvar("g_ctf_win_mode") < 2)
-                       cvar_set("fraglimit", sa);
+               sa = car(s);
+               if(sa != "")
+                       if(cvar("g_ctf_win_mode") < 2)
+                               cvar_set("fraglimit", sa);
                s = cdr(s);
        }
 
@@ -437,28 +469,43 @@ void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType)
                cvar_set("g_race_qualifying_timelimit", sa);
                s = cdr(s);
 
-               sa = car(s); if(sa == "") sa = "10";
-               if(cvar("g_race_teams") < 2)
-                       cvar_set("fraglimit", sa);
+               sa = car(s);
+               if(sa != "")
+                       if(cvar("g_race_teams") < 2)
+                               cvar_set("fraglimit", sa);
                s = cdr(s);
 
-               sa = car(s); if(sa == "") sa = "20";
-               if(cvar("g_race_teams") >= 2)
-                       cvar_set("fraglimit", sa);
+               sa = car(s);
+               if(sa != "")
+                       if(cvar("g_race_teams") >= 2)
+                               cvar_set("fraglimit", sa);
                s = cdr(s);
        }
 
        if(pWantedType == MAPINFO_TYPE_CTS)
        {
-               sa = car(s); if(sa == "") sa = cvar_string("fraglimit");
-               if(cvar("g_race_teams"))
-                       cvar_set("fraglimit", sa);
+               sa = car(s);
+
+               // this is the skill of the map
+               // not parsed by anything yet
+               // for map databases
+               //if(sa != "")
+               //      cvar_set("fraglimit", sa);
+
                s = cdr(s);
        }
 
-       sa = car(s); if(sa == "") sa = "0";
-       cvar_set("leadlimit", sa);
-       s = cdr(s);
+       if(pWantedType == MAPINFO_TYPE_ASSAULT || pWantedType == MAPINFO_TYPE_ONSLAUGHT || pWantedType == MAPINFO_TYPE_CTS) // these modes don't use fraglimit
+       {
+               cvar_set("leadlimit", "0");
+       }
+       else
+       {
+               sa = car(s);
+               if(sa != "")
+                       cvar_set("leadlimit", sa);
+               s = cdr(s);
+       }
 }
 
 float MapInfo_Type_FromString(string t)
@@ -481,6 +528,26 @@ float MapInfo_Type_FromString(string t)
        else                    return 0;
 }
 
+string MapInfo_Type_ToString(float t)
+{
+       if     (t == MAPINFO_TYPE_DEATHMATCH)      return "dm";
+       else if(t == MAPINFO_TYPE_TEAM_DEATHMATCH) return "tdm";
+       else if(t == MAPINFO_TYPE_DOMINATION)      return "dom";
+       else if(t == MAPINFO_TYPE_CTF)             return "ctf";
+       else if(t == MAPINFO_TYPE_RUNEMATCH)       return "rune";
+       else if(t == MAPINFO_TYPE_LMS)             return "lms";
+       else if(t == MAPINFO_TYPE_ARENA)           return "arena";
+       else if(t == MAPINFO_TYPE_CA)              return "ca";
+       else if(t == MAPINFO_TYPE_KEYHUNT)         return "kh";
+       else if(t == MAPINFO_TYPE_ASSAULT)         return "as";
+       else if(t == MAPINFO_TYPE_ONSLAUGHT)       return "ons";
+       else if(t == MAPINFO_TYPE_RACE)            return "rc";
+       else if(t == MAPINFO_TYPE_NEXBALL)         return "nexball";
+       else if(t == MAPINFO_TYPE_CTS)             return "cts";
+       else if(t == MAPINFO_TYPE_ALL)             return "all";
+       else                                       return "";
+}
+
 void _MapInfo_Parse_Settemp(string pFilename, string acl, float type, string s, float recurse)
 {
        string t;
@@ -650,20 +717,10 @@ float MapInfo_Get_ByName(string pFilename, float pAllowGenerate, float pGametype
                        fputs(fh, "// uncomment this if you added weapon pickups: has weapons\n");
                if(MapInfo_Map_flags & MAPINFO_FLAG_FRUSTRATING)
                        fputs(fh, "frustrating\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DEATHMATCH)      fputs(fh, "type dm 30 20\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_TEAM_DEATHMATCH) fputs(fh, "type tdm 50 20 2\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DOMINATION)      fputs(fh, "type dom 200 20\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTF)             fputs(fh, "type ctf 300 20 10\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RUNEMATCH)       fputs(fh, "type rune 200 20\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_LMS)             fputs(fh, "type lms 9 20\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ARENA)           fputs(fh, "type arena 10 20\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CA)              fputs(fh, "type ca 10 20\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_KEYHUNT)         fputs(fh, "type kh 1000 20 3\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ASSAULT)         fputs(fh, "type as 20\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE)            fputs(fh, "type rc 20 5 7 15\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT)       fputs(fh, "type ons 20\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_NEXBALL)         fputs(fh, "type nexball 5 20\n");
-               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTS)             fputs(fh, "type cts 20 -1\n");
+
+               for(i = 1; i <= MapInfo_Map_supportedGametypes; i *= 2)
+                       if(MapInfo_Map_supportedGametypes & i)
+                               fputs(fh, sprintf("type %s %s\n", i, MapInfo_GetDefault(i)));
 
                fh2 = fopen(strcat("scripts/", pFilename, ".arena"), FILE_READ);
                if(fh2 >= 0)
@@ -733,7 +790,7 @@ float MapInfo_Get_ByName(string pFilename, float pAllowGenerate, float pGametype
                        t = car(s); s = cdr(s);
                        f = MapInfo_Type_FromString(t);
                        if(f)
-                               _MapInfo_Map_ApplyGametype (s, pGametypeToSet, f);
+                               _MapInfo_Map_ApplyGametype (s, pGametypeToSet, f, TRUE);
                        else
                                dprint("Map ", pFilename, " supports unknown game type ", t, ", ignored\n");
                }
@@ -827,7 +884,7 @@ float MapInfo_Get_ByName(string pFilename, float pAllowGenerate, float pGametype
                if(!(MapInfo_Map_supportedGametypes & pGametypeToSet))
                {
                        print("Can't select the requested game type. Trying anyway with stupid settings.\n");
-                       _MapInfo_Map_ApplyGametype("0 0 0", pGametypeToSet, MAPINFO_TYPE_DEATHMATCH);
+                       _MapInfo_Map_ApplyGametype(MapInfo_GetDefault(MAPINFO_TYPE_DEATHMATCH), pGametypeToSet, MAPINFO_TYPE_DEATHMATCH, FALSE);
                }
        }
 
index 11096ea3463ab97a382a26bade3e98c61dbe106f..4e6ac985517df071103f4ea3e70c0d1d53c2229d 100644 (file)
@@ -69,6 +69,7 @@ string MapInfo_ListAllowedMaps(float pFlagsRequired, float pFlagsForbidden);
 
 // gets a gametype from a string
 float MapInfo_Type_FromString(string t);
+string MapInfo_Type_ToString(float t);
 string MapInfo_GetGameTypeCvar(float t);
 void MapInfo_SwitchGameType(float t);
 
index 9244c93eb0f1016782db538b9b184e3c76821609..dcebed41a8be8a0307e4f7edcfb8931846533f66 100644 (file)
@@ -1083,6 +1083,8 @@ float ClientInit_SendEntity(entity to, float sf)
        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
+       WriteByte(MSG_ENTITY, cvar("g_balance_nex_secondary")); // client has to know if it should zoom or not
+       WriteByte(MSG_ENTITY, cvar("g_balance_campingrifle_secondary")); // client has to know if it should zoom or not
        return TRUE;
 }
 
index f14d5689b175116611764c6d26940387e6b5a075..1cd280e007b531f7f23122fbde2c16890e7fa9f3 100644 (file)
@@ -173,7 +173,6 @@ void W_CampingRifle_BulletHail(float mode, void(void) AttackFunc, float fr, floa
 }
 
 .float bot_secondary_campingriflemooth;
-.float sent_campingrifle_scope;
 float w_campingrifle(float req)
 {
        float full;
@@ -231,17 +230,6 @@ float w_campingrifle(float req)
                                                self.campingrifle_accumulator += cvar("g_balance_campingrifle_secondary_burstcost");
                                        }
                                }
-                               else
-                               {
-                                       if(clienttype(self) == CLIENTTYPE_REAL)
-                                       if(!self.sent_campingrifle_scope)
-                                       {
-                                               msg_entity = self;
-                                               WriteByte(MSG_ONE, SVC_TEMPENTITY);
-                                               WriteByte(MSG_ONE, TE_CSQC_CAMPINGRIFLE_SCOPE);
-                                               self.sent_campingrifle_scope = 1;
-                                       }       
-                               }
                        }
                }
        }
index 3d18ba12d9838f2e9458e9e8c2edb74f195421c2..e9015f5806e4ec5124ae3c9e75187e7b74b57714 100644 (file)
@@ -6,22 +6,54 @@ REGISTER_WEAPON(CRYLINK, w_crylink, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_TYPE_SPLA
 
 .entity realowner;
 
+.entity queuenext;
+.entity queueprev;
+
+// force projectile to explode
+void W_Crylink_LinkExplode (entity e, entity e2)
+{
+       float a;
+       a = bound(0, 1 - (time - e.fade_time) * e.fade_rate, 1);
+
+       RadiusDamage (e, e.realowner, cvar("g_balance_crylink_primary_damage") * a, cvar("g_balance_crylink_primary_edgedamage") * a, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * a, e.projectiledeathtype, other);
+
+       if(e.queuenext != e2)
+               W_Crylink_LinkExplode(e.queuenext, e2);
+       remove (e);
+}
+
 // NO bounce protection, as bounces are limited!
 void W_Crylink_Touch (void)
 {
        float finalhit;
        float f;
-       PROJECTILE_TOUCH;
+       //PROJECTILE_TOUCH;
+       local entity savenext, saveprev;
+       savenext = self.queuenext;
+       saveprev = self.queueprev;
+       if(WarpZone_Projectile_Touch())
+       {
+               if(wasfreed(self))
+               {
+                       savenext.queueprev = saveprev;
+                       saveprev.queuenext = savenext;
+               }
+               return;
+       }
+
+       float a;
+       a = bound(0, 1 - (time - self.fade_time) * self.fade_rate, 1);
+
        finalhit = ((self.cnt <= 0) || (other.takedamage != DAMAGE_NO));
        if(finalhit)
                f = 1;
        else
                f = cvar("g_balance_crylink_primary_bouncedamagefactor");
-       if(self.alpha)
-               f *= self.alpha;
-       RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, self.projectiledeathtype, other);
-       if (finalhit)
+       if(a)
+               f *= a;
+       if (RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, self.projectiledeathtype, other) || finalhit)
        {
+               W_Crylink_LinkExplode(self.queuenext, self);
                remove (self);
                return;
        }
@@ -38,17 +70,33 @@ void W_Crylink_Touch2 (void)
 {
        float finalhit;
        float f;
-       PROJECTILE_TOUCH;
+       //PROJECTILE_TOUCH;
+       local entity savenext, saveprev;
+       savenext = self.queuenext;
+       saveprev = self.queueprev;
+       if(WarpZone_Projectile_Touch())
+       {
+               if(wasfreed(self))
+               {
+                       savenext.queueprev = saveprev;
+                       saveprev.queuenext = savenext;
+               }
+               return;
+       }
+
+       float a;
+       a = 1 - (time - self.fade_time) * self.fade_rate;
+
        finalhit = ((self.cnt <= 0) || (other.takedamage != DAMAGE_NO));
        if(finalhit)
                f = 1;
        else
                f = cvar("g_balance_crylink_secondary_bouncedamagefactor");
-       if(self.alpha)
-               f *= self.alpha;
-       RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, self.projectiledeathtype, other);
-       if (finalhit)
+       if(a)
+               f *= a;
+       if (RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, self.projectiledeathtype, other) || finalhit)
        {
+               W_Crylink_LinkExplode(self.queuenext, self);
                remove (self);
                return;
        }
@@ -61,10 +109,17 @@ void W_Crylink_Touch2 (void)
        //      CSQCProjectile(proj, TRUE, PROJECTILE_CRYLINK, TRUE);
 }
 
+void W_Crylink_Fadethink (void)
+{
+       self.queuenext.queueprev = self.queueprev;
+       self.queueprev.queuenext = self.queuenext;
+       remove(self);
+}
+
 void W_Crylink_Attack (void)
 {
        local float counter, shots;
-       local entity proj;
+       local entity proj, prevproj, firstproj;
        local vector s;
        vector forward, right, up;
 
@@ -85,6 +140,21 @@ void W_Crylink_Attack (void)
                proj.classname = "spike";
                proj.bot_dodge = TRUE;
                proj.bot_dodgerating = cvar("g_balance_crylink_primary_damage");
+               if(counter == 0) { // first projectile, store in firstproj for now
+                       firstproj = proj;
+               }
+               else if(counter == shots - 1) { // last projectile, link up with first projectile
+                       prevproj.queuenext = proj;
+                       firstproj.queueprev = proj;
+                       proj.queuenext = firstproj;
+                       proj.queueprev = prevproj;
+               }
+               else { // else link up with previous projectile
+                       prevproj.queuenext = proj;
+                       proj.queueprev = prevproj;
+               }
+
+               prevproj = proj;
 
                proj.movetype = MOVETYPE_BOUNCEMISSILE;
                PROJECTILE_MAKETRIGGER(proj);
@@ -107,12 +177,26 @@ void W_Crylink_Attack (void)
                s = s * cvar("g_balance_crylink_primary_spread") * g_weaponspreadfactor;
                W_SetupProjectileVelocityEx(proj, w_shotdir + right * s_y + up * s_z, v_up, cvar("g_balance_crylink_primary_speed"), 0, 0, 0);
                proj.touch = W_Crylink_Touch;
+
+               proj.think = W_Crylink_Fadethink;
                if(counter == 0)
-                       SUB_SetFade(proj, time + cvar("g_balance_crylink_primary_middle_lifetime"), cvar("g_balance_crylink_primary_middle_fadetime"));
+               {
+                       proj.fade_time = time + cvar("g_balance_crylink_primary_middle_lifetime");
+                       self.fade_rate = 1 / cvar("g_balance_crylink_primary_middle_fadetime");
+                       proj.nextthink = time + cvar("g_balance_crylink_primary_middle_lifetime") + cvar("g_balance_crylink_primary_middle_fadetime");
+               }
                else if(counter <= 3)
-                       SUB_SetFade(proj, time + cvar("g_balance_crylink_primary_star_lifetime"), cvar("g_balance_crylink_primary_star_fadetime"));
+               {
+                       proj.fade_time = time + cvar("g_balance_crylink_primary_star_lifetime");
+                       self.fade_rate = 1 / cvar("g_balance_crylink_primary_star_fadetime");
+                       proj.nextthink = time + cvar("g_balance_crylink_primary_star_lifetime") + cvar("g_balance_crylink_primary_star_fadetime");
+               }
                else
-                       SUB_SetFade(proj, time + cvar("g_balance_crylink_primary_other_lifetime"), cvar("g_balance_crylink_primary_other_fadetime"));
+               {
+                       proj.fade_time = time + cvar("g_balance_crylink_primary_other_lifetime");
+                       self.fade_rate = 1 / cvar("g_balance_crylink_primary_other_fadetime");
+                       proj.nextthink = time + cvar("g_balance_crylink_primary_other_lifetime") + cvar("g_balance_crylink_primary_other_fadetime");
+               }
                proj.cnt = cvar("g_balance_crylink_primary_bounces");
                //proj.scale = 1 + 1 * proj.cnt;
 
@@ -131,7 +215,7 @@ void W_Crylink_Attack (void)
 void W_Crylink_Attack2 (void)
 {
        local float counter, shots;
-       local entity proj;
+       local entity proj, prevproj, firstproj;
 
        if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
                self.ammo_cells = self.ammo_cells - cvar("g_balance_crylink_secondary_ammo");
@@ -147,6 +231,21 @@ void W_Crylink_Attack2 (void)
                proj.classname = "spike";
                proj.bot_dodge = TRUE;
                proj.bot_dodgerating = cvar("g_balance_crylink_secondary_damage");
+               if(counter == 0) { // first projectile, store in firstproj for now
+                       firstproj = proj;
+               }
+               else if(counter == shots - 1) { // last projectile, link up with first projectile
+                       prevproj.queuenext = proj;
+                       firstproj.queueprev = proj;
+                       proj.queuenext = firstproj;
+                       proj.queueprev = prevproj;
+               }
+               else { // else link up with previous projectile
+                       prevproj.queuenext = proj;
+                       proj.queueprev = prevproj;
+               }
+
+               prevproj = proj;
 
                proj.movetype = MOVETYPE_BOUNCEMISSILE;
                PROJECTILE_MAKETRIGGER(proj);
@@ -158,10 +257,19 @@ void W_Crylink_Attack2 (void)
 
                W_SetupProjectileVelocityEx(proj, (w_shotdir + (((counter + 0.5) / shots) * 2 - 1) * v_right * cvar("g_balance_crylink_secondary_spread") * g_weaponspreadfactor), v_up, cvar("g_balance_crylink_secondary_speed"), 0, 0, 0);
                proj.touch = W_Crylink_Touch2;
+               proj.think = W_Crylink_Fadethink;
                if(counter == (shots - 1) / 2)
-                       SUB_SetFade(proj, time + cvar("g_balance_crylink_secondary_middle_lifetime"), cvar("g_balance_crylink_secondary_middle_fadetime"));
+               {
+                       proj.fade_time = time + cvar("g_balance_crylink_secondary_middle_lifetime");
+                       self.fade_rate = 1 / cvar("g_balance_crylink_secondary_middle_fadetime");
+                       proj.nextthink = time + cvar("g_balance_crylink_secondary_middle_lifetime") + cvar("g_balance_crylink_secondary_middle_fadetime");
+               }
                else
-                       SUB_SetFade(proj, time + cvar("g_balance_crylink_secondary_line_lifetime"), cvar("g_balance_crylink_secondary_line_fadetime"));
+               {
+                       proj.fade_time = time + cvar("g_balance_crylink_secondary_line_lifetime");
+                       self.fade_rate = 1 / cvar("g_balance_crylink_secondary_line_fadetime");
+                       proj.nextthink = time + cvar("g_balance_crylink_secondary_line_lifetime") + cvar("g_balance_crylink_secondary_line_fadetime");
+               }
                proj.cnt = cvar("g_balance_crylink_secondary_bounces");
                //proj.scale = 1 + 1 * proj.cnt;
 
index 3a85e113adc6a9ccbe7bd33469122e155664078f..a6ec07d6a819791392f8716325d6556900668445 100644 (file)
@@ -64,7 +64,6 @@ void W_Nex_Attack (float issecondary)
 
 void spawnfunc_weapon_nex (void); // defined in t_items.qc
 
-.float sent_nex_scope;
 float w_nex(float req)
 {
        if (req == WR_AIM)
@@ -92,17 +91,6 @@ float w_nex(float req)
                                        weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_nex_secondary_animtime"), w_ready);
                                }
                        }
-                       else
-                       {
-                               if(clienttype(self) == CLIENTTYPE_REAL)
-                               if(!self.sent_nex_scope)
-                               {
-                                       msg_entity = self;
-                                       WriteByte(MSG_ONE, SVC_TEMPENTITY);
-                                       WriteByte(MSG_ONE, TE_CSQC_NEX_SCOPE);
-                                       self.sent_nex_scope = 1;
-                               }       
-                       }
                }
        }
        else if (req == WR_PRECACHE)
index c71f984a9f7fe7e85aee1c4e36ec7fcca3279c93..3c3eaf5a3dacda1350719773fe293690f8f8e1c5 100644 (file)
@@ -102,6 +102,39 @@ void WarpZone_Outside()
        //cvar_set("cl_forwardspeed", ftos(warpzone_fixingview_forwardspeed));
 }
 
+vector WarpZone_FixNearClip(vector o, vector c0, vector c1, vector c2, vector c3)
+{
+       float nearclipdistance;
+       vector mi, ma;
+       entity e;
+       float pd;
+
+       mi_x = min5(o_x, c0_x, c1_x, c2_x, c3_x);
+       ma_x = max5(o_x, c0_x, c1_x, c2_x, c3_x);
+       mi_y = min5(o_y, c0_y, c1_y, c2_y, c3_y);
+       ma_y = max5(o_y, c0_y, c1_y, c2_y, c3_y);
+       mi_z = min5(o_z, c0_z, c1_z, c2_z, c3_z);
+       ma_z = max5(o_z, c0_z, c1_z, c2_z, c3_z);
+
+       e = WarpZone_Find(mi, ma);
+       if(e)
+       {
+               if(WarpZone_PlaneDist(e, o) < 0)
+                       return '0 0 0';
+                       // can't really be, though, but if it is, this is not my warpzone, but a random different one in the same mins/maxs
+               pd = min4(
+                               WarpZone_PlaneDist(e, c0),
+                               WarpZone_PlaneDist(e, c1),
+                               WarpZone_PlaneDist(e, c2),
+                               WarpZone_PlaneDist(e, c3)
+                       );
+               if(pd < 0)
+                       return e.warpzone_forward * -pd;
+       }
+
+       return '0 0 0';
+}
+
 float warpzone_saved;
 vector warpzone_saved_origin;
 vector warpzone_saved_angles;
@@ -112,12 +145,21 @@ var float autocvar_cl_rollkillspeed = 10;
 void WarpZone_FixView()
 {
        float pd, f;
+       vector o;
        entity e;
+       vector corner0, corner1, corner2, corner3, nearclip;
+
        warpzone_saved = 0;
        warpzone_saved_origin = warpzone_fixview_origin;
        warpzone_saved_angles = warpzone_fixview_angles;
        warpzone_saved_cl_viewangles = warpzone_fixview_cl_viewangles;
 
+       nearclip = '0 0 1' * (cvar("r_nearclip") * 1.125);
+       corner0 = cs_unproject('0 0 0' + nearclip);
+       corner1 = cs_unproject('1 0 0' * cvar("vid_conwidth") + nearclip);
+       corner2 = cs_unproject('0 1 0' * cvar("vid_conheight") + nearclip);
+       corner3 = cs_unproject('1 0 0' * cvar("vid_conwidth") + '0 1 0' * cvar("vid_conheight") + nearclip);
+
 #ifndef KEEP_ROLL
        if(warpzone_fixview_angles_z != 0 || warpzone_fixview_cl_viewangles_z != 0)
        {
@@ -139,6 +181,10 @@ void WarpZone_FixView()
        {
                warpzone_saved = 1;
                warpzone_fixview_origin = WarpZone_TransformOrigin(e, warpzone_fixview_origin);
+               corner0 = WarpZone_TransformOrigin(e, corner0);
+               corner1 = WarpZone_TransformOrigin(e, corner1);
+               corner2 = WarpZone_TransformOrigin(e, corner2);
+               corner3 = WarpZone_TransformOrigin(e, corner3);
                warpzone_fixview_angles = WarpZone_TransformVAngles(e, warpzone_fixview_angles);
                warpzone_fixview_cl_viewangles = WarpZone_TransformVAngles(e, warpzone_fixview_cl_viewangles);
                WarpZone_Inside();
@@ -147,16 +193,11 @@ void WarpZone_FixView()
                WarpZone_Outside();
 
        // if we are near any warpzone planes - MOVE AWAY (work around nearclip)
-       float nearclip = 4;
-       e = WarpZone_Find(warpzone_fixview_origin - '1 1 1' * nearclip, warpzone_fixview_origin + '1 1 1' * nearclip);
-       if(e)
+       o = WarpZone_FixNearClip(warpzone_fixview_origin, corner0, corner1, corner2, corner3);
+       if(o != '0 0 0')
        {
-               pd = WarpZone_PlaneDist(e, warpzone_fixview_origin);
-               if(pd >= 0 && pd < nearclip)
-               {
-                       warpzone_saved = 1;
-                       warpzone_fixview_origin = warpzone_fixview_origin + e.warpzone_forward * (nearclip - pd);
-               }
+               warpzone_saved = 1;
+               warpzone_fixview_origin += o;
        }
 
        if(warpzone_saved == 1)