From: Rudolf Polzer Date: Sun, 9 May 2010 13:04:19 +0000 (+0200) Subject: Merge branch 'master' into mirceakitsune/per_character_sounds X-Git-Tag: xonotic-v0.1.0preview~637^2^2~6 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=fef280899c7d1bb27078da823b0a64843b2f1129;hp=ef7c4110c22af1dfc0e5807e640168ec3b57fd7a Merge branch 'master' into mirceakitsune/per_character_sounds --- diff --git a/balance.cfg b/balance.cfg index 37a36e8d9d..0a4d8cf7f0 100644 --- a/balance.cfg +++ b/balance.cfg @@ -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 // }}} diff --git a/balance25.cfg b/balance25.cfg index 11cc3a40ba..6f36e9bc50 100644 --- a/balance25.cfg +++ b/balance25.cfg @@ -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 index a23e9b462c..0000000000 --- a/balanceNexrun.cfg +++ /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 -// }}} diff --git a/balanceSamual.cfg b/balanceSamual.cfg index 19f7896188..c4aa8d5a9f 100644 --- a/balanceSamual.cfg +++ b/balanceSamual.cfg @@ -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 index 0000000000..d5c048ed1a --- /dev/null +++ b/balanceXPM.cfg @@ -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 +// }}} diff --git a/config_update.cfg b/config_update.cfg index 0143318be3..372784dd78 100644 --- a/config_update.cfg +++ b/config_update.cfg @@ -20,3 +20,6 @@ _update_configversion_$g_configversion _update_generic set g_configversion 2 + +// we now use mastervolume +volume 1 diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 17503f81af..add2de9b59 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -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 diff --git a/effectinfo.txt b/effectinfo.txt index 7dfb671343..a644a84d47 100644 --- a/effectinfo.txt +++ b/effectinfo.txt @@ -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 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 index 0000000000..d785d644b8 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 index 0000000000..2532d1799d 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 index 0000000000..2532d1799d 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 index 0000000000..a8bf8ad91a 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 index 0000000000..f6a832bb75 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 index 0000000000..c4cda968c9 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 index 0000000000..d54d5d5c0e 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 index 0000000000..38e9653b02 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 index 0000000000..959ef93c32 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 index 0000000000..55ff591b7a 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 index 0000000000..edff6d6a8c 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 index 0000000000..d435e60196 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 index 0000000000..745ee7c1d2 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 index 0000000000..6639525e52 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 index 0000000000..817d849216 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 index 0000000000..643360e270 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 index 0000000000..032ea91d27 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 index 0000000000..55f1e622a7 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 index 0000000000..5ed3a7dfc9 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 index 0000000000..6ba22b53c0 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 index 0000000000..d8ed1d5de9 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 index 0000000000..54fe07eb75 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 index 0000000000..aafd08943f 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 index 0000000000..4e517e2464 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 index 0000000000..40efe7a6bb 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 index 0000000000..bba682482d 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 index 0000000000..aafd08943f 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 index 0000000000..4e517e2464 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 index 0000000000..aafd08943f 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 index 0000000000..4e517e2464 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 index 0000000000..cf34dde26a 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 index 0000000000..56488eca61 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 index 0000000000..73385736ab 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 index 0000000000..e4b6058094 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 index 0000000000..5189ab4963 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 index 0000000000..1c294f77f5 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 index 0000000000..0031c35e35 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 index 0000000000..7fec859bcc 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 index 0000000000..6f9845bf3e 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 index 0000000000..6775942eec 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 index 0000000000..1c294f77f5 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 index 0000000000..110faa18b5 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 index 0000000000..0031c35e35 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 index 0000000000..ac945355ef 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 index 0000000000..0a2e29514d 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 index 0000000000..6b5bd201fe 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 index 0000000000..ad169c2083 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 index 0000000000..68ed15e696 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 index 0000000000..68ed15e696 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 index 0000000000..f935318b30 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 index 0000000000..1bcc41d0fc 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 index 0000000000..237e09b0e2 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 index 0000000000..68ed15e696 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 index 0000000000..55dae24026 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 index 0000000000..68ed15e696 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 index 0000000000..eb4326dfb6 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 index 0000000000..eb4326dfb6 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 index 0000000000..eb4326dfb6 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 index 0000000000..c7d47005e6 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 index 0000000000..9b8e393898 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 index 0000000000..f91a8f238e --- /dev/null +++ b/gfx/menu/wickedx/skinvalues.txt @@ -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 index 0000000000..42e3e98a5c 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 index 0000000000..87ccbe5a67 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 index 0000000000..42e3e98a5c 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 index 0000000000..42e3e98a5c 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 index 0000000000..954c90cffa 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 index 0000000000..1dc567929d Binary files /dev/null and b/gfx/menu/wickedx/tooltip.tga differ diff --git a/particles/particlefont.tga b/particles/particlefont.tga index 5455e7b16c..8ee89adb08 100644 Binary files a/particles/particlefont.tga and b/particles/particlefont.tga differ diff --git a/particles/particlefont.txt b/particles/particlefont.txt index 10073ca6f5..2994f82a1b 100644 --- a/particles/particlefont.txt +++ b/particles/particlefont.txt @@ -1,64 +1,166 @@ -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 index da81a24ee2..0000000000 --- a/physicsNexrun.cfg +++ /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 index 164c48d416..0000000000 --- a/physicsNexrun_old.cfg +++ /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 diff --git a/physicsNoQWBunny.cfg b/physicsNoQWBunny.cfg index 106ecbfbbf..88290d68c4 100644 --- a/physicsNoQWBunny.cfg +++ b/physicsNoQWBunny.cfg @@ -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 index 0000000000..da81a24ee2 --- /dev/null +++ b/physicsXPM.cfg @@ -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 diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 985bcc7eac..d16e91820e 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -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; diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index 9bb7661430..2c898bbcbb 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -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); diff --git a/qcsrc/client/csqc_builtins.qc b/qcsrc/client/csqc_builtins.qc index d3e42cd986..c108a4ca0a 100644 --- a/qcsrc/client/csqc_builtins.qc +++ b/qcsrc/client/csqc_builtins.qc @@ -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) diff --git a/qcsrc/client/damage.qc b/qcsrc/client/damage.qc index 89edacd944..59e84690b8 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -241,16 +241,16 @@ void Ent_DamageInfo(float isNew) break; 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"); diff --git a/qcsrc/client/gibs.qc b/qcsrc/client/gibs.qc index 9842a28753..67951fc3c3 100644 --- a/qcsrc/client/gibs.qc +++ b/qcsrc/client/gibs.qc @@ -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_"; } diff --git a/qcsrc/client/main.qh b/qcsrc/client/main.qh index b7a3d59b34..d2847af00b 100644 --- a/qcsrc/client/main.qh +++ b/qcsrc/client/main.qh @@ -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; diff --git a/qcsrc/client/progs.src b/qcsrc/client/progs.src index 15f230d7f0..e039ce46dc 100644 --- a/qcsrc/client/progs.src +++ b/qcsrc/client/progs.src @@ -49,6 +49,7 @@ effects.qc wall.qc modeleffects.qc tuba.qc +target_music.qc //vehicles/spiderbot.qc Main.qc diff --git a/qcsrc/client/projectile.qc b/qcsrc/client/projectile.qc index 2730a322d2..dc5183f28b 100644 --- a/qcsrc/client/projectile.qc +++ b/qcsrc/client/projectile.qc @@ -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 index 0000000000..34d19dc027 --- /dev/null +++ b/qcsrc/client/target_music.qc @@ -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; +} diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index 92ef9844eb..5daa3e51f7 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -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 diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 003377e8c3..53a07186b6 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -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"), " "); diff --git a/qcsrc/menu/xonotic/dialog_settings_audio.c b/qcsrc/menu/xonotic/dialog_settings_audio.c index 1c589eccd1..7c3c754d4c 100644 --- a/qcsrc/menu/xonotic/dialog_settings_audio.c +++ b/qcsrc/menu/xonotic/dialog_settings_audio.c @@ -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); diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 1fe043f2a8..cf941e9e3c 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -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; } /* diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 6fee98bcd4..ee6d11dfd4 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -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) diff --git a/qcsrc/server/csqcprojectile.qc b/qcsrc/server/csqcprojectile.qc index e585b1e379..d250d39def 100644 --- a/qcsrc/server/csqcprojectile.qc +++ b/qcsrc/server/csqcprojectile.qc @@ -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; } } diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index 338204c0c3..0c446484d2 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -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)) diff --git a/qcsrc/server/g_triggers.qc b/qcsrc/server/g_triggers.qc index 786884454d..c31352ed5d 100644 --- a/qcsrc/server/g_triggers.qc +++ b/qcsrc/server/g_triggers.qc @@ -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; diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 228782748d..c815b0815a 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -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() diff --git a/qcsrc/server/mutators/base.qh b/qcsrc/server/mutators/base.qh index 9ed316ee15..73c16a9cd0 100644 --- a/qcsrc/server/mutators/base.qh +++ b/qcsrc/server/mutators/base.qh @@ -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; diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index b325251cfd..d1d0d1d3af 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -156,6 +156,7 @@ portals.qc target_spawn.qc func_breakable.qc +target_music.qc ../common/items.qc diff --git a/qcsrc/server/scores.qc b/qcsrc/server/scores.qc index 97b78ca797..59480ab656 100644 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@ -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] != "") diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc index 9d32f3234b..d9c3240603 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -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 index 0000000000..daab646998 --- /dev/null +++ b/qcsrc/server/target_music.qc @@ -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); +} diff --git a/qcsrc/server/w_fireball.qc b/qcsrc/server/w_fireball.qc index 05de876937..6bccb7e3f6 100644 --- a/qcsrc/server/w_fireball.qc +++ b/qcsrc/server/w_fireball.qc @@ -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,19 +346,26 @@ 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) { @@ -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; }; diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index 80b7020130..559ced33d8 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -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'); diff --git a/qcsrc/warpzonelib/client.qc b/qcsrc/warpzonelib/client.qc index c16fc898b0..773e90d5ec 100644 --- a/qcsrc/warpzonelib/client.qc +++ b/qcsrc/warpzonelib/client.qc @@ -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); } } diff --git a/qcsrc/warpzonelib/client.qh b/qcsrc/warpzonelib/client.qh index 5ab212a333..e8f44be136 100644 --- a/qcsrc/warpzonelib/client.qh +++ b/qcsrc/warpzonelib/client.qh @@ -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 diff --git a/update-cvarcount.sh b/update-cvarcount.sh index 25ec3c09c7..801314a6d8 100755 --- a/update-cvarcount.sh +++ b/update-cvarcount.sh @@ -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