diff-xonotic-mod-dec_5_2011.diff
| b/bots.txt | ||
|---|---|---|
| 1 |
//bot configuration: name model skin shirt pants team keyboard use moving dodging ping weapon use aggressivity range aiming calmhand mouse fightthink aithink |
|
| 1 |
//bot configuration: name model skin shirt pants team keyboard use moving dodging ping weapon use aggressivity range aiming calmhand .mouse fightthink aithink |
|
| 2 | 2 |
//default team values (team-override): 1 = red, 2 = blue, 3 = yellow, 4 = pink |
| 3 | 3 |
//use -1 for shirt-color or pants-color to get random colors |
| 4 | 4 |
Hellfire ignis 0 4 0 0 0 0 -0.5 -1 1 1 -0.5 -1 -1 2 0.5 -1 |
| ... | ... | |
| 19 | 19 |
Sensible seraphina 0 9 9 0 0 0 0.5 -1 0 -1 0 -1 2.5 -1.5 1 0.5 |
| 20 | 20 |
Shadow seraphinamasked 0 4 8 0 -0.5 2 1 0 0 -1 0 -1 0 1 -1 -0.5 |
| 21 | 21 |
Resurrection umbra 0 1 1 0 0 -0.5 -0.5 0 2 -1 -1 -1 0 -1 1 1 |
| 22 |
StormHitler megaerebus 0 4 4 1 7 7 7 0 1 9.5 -2.5 7 2 2 2 2 |
|
| 23 |
Desu suiseiseki.zym 0 -1 -1 0 1 1 0 1 -1 -3 3 5 2 0 -1 -1 |
|
| 24 |
Quark crash.zym 0 6 5 0 5 1.5 -2 -1 0 -1 1 10 0 2 10 10 |
|
| 25 |
Xolar xonos.dpm 0 12 1 0 0 2 2 0 2 2 1 0.5 -1 1 -1 -1 |
|
| 26 |
NR-5 xonos.dpm 1 0 0 0 2 2 -2 0 -1 0 -1 2 1 -1 1 1 |
|
| 27 |
QR-S crash.zym 0 0 0 0 7 2 2 -1 2 -1 0 10 0 5 10 10 |
|
| 28 |
QR-B crash.zym 0 11 11 0 2 1 0 -1 0 2 1 10 0 0 10 10 |
|
| 29 |
Reptile lurk.zym 0 3 3 0 0 1 2 0.5 2 0.5 -0.5 1 0 0 2 2 |
|
| 30 |
Lurk lurk.zym 0 12 7 0 0 -1 -1 -1 0 2 0 1 0 2 -1 -1 |
|
| 31 |
Velic lurk.zym 0 7 2 0 0 0 0 -0.5 -1 1 0.5 0.5 -0.5 1 0.5 1 |
|
| 32 |
Mulder nexus.zym 1 4 0 0 7 7 7 0 1 2 -1 5 2 3 2 2 |
|
| 33 | ||
| 34 | ||
| 35 |
//name model skin shirt pants team keyb moving dodging ping wepuse aggrs range aiming cahnd .mouse fightthink aithink |
|
| 36 |
//bot configuration: |
|
| 37 | ||
| 38 |
//default team values (team-override): 1 = red, 2 = blue, 3 = yellow, 4 = pink |
|
| 39 |
//use -1 for shirt-color or pants-color to get random colors |
|
| 40 | ||
| b/fastweap.cfg | ||
|---|---|---|
| 1 |
// ______ _____ _________ ________ _____ ____ _ _ _____ |
|
| 2 |
// | ____/\ / ____|__ __\ \ / / ____| /\ | __ \ / __ \| \ | |/ ____| |
|
| 3 |
// | |__ / \ | (___ | | \ \ /\ / /| |__ / \ | |__) | | | | \| | (___ |
|
| 4 |
// | __/ /\ \ \___ \ | | \ \/ \/ / | __| / /\ \ | ___/| | | | . ` |\___ \ |
|
| 5 |
// | | / ____ \ ____) | | | \ /\ / | |____ / ____ \| | | |__| | |\ |____) | |
|
| 6 |
// |_|/_/ \_\_____/ |_| \/ \/ |______/_/ \_\_| \____/|_| \_|_____/ |
|
| 7 |
// |
|
| 8 |
// Config. |
|
| 9 | ||
| 10 |
////Here is the config for the "weapons_deadly" command |
|
| 11 |
////on CAEthaver2's Nexuiz server. (AKA: fastweapons config) |
|
| 12 |
// |
|
| 13 |
//Nexuiz: First we exec the nexuiz 2.5 config. |
|
| 14 |
//exec default25.cfg |
|
| 15 |
//Xonotic: First we exec the xonotic balance |
|
| 16 |
exec balanceXonotic.cfg |
|
| 17 |
exec vehicle_spiderbot.cfg |
|
| 18 |
exec vehicle_raptor.cfg |
|
| 19 |
exec vehicle_racer.cfg |
|
| 20 |
exec vehicle_spiderbot_ballistics.cfg |
|
| 21 |
exec vehicle_climbjet.cfg |
|
| 22 |
exec vehicle_forklift.cfg |
|
| 23 |
//exec vehicles.cfg |
|
| 24 | ||
| 25 |
// |
|
| 26 |
////The reason this setting was created was to have the weapons feel |
|
| 27 |
////"real": This is the damage they would do if they were actual weapons. |
|
| 28 |
////Most of them can kill in 1 or 2 shots. The diffrences in the weapons |
|
| 29 |
////are how they kill |
|
| 30 |
// |
|
| 31 |
////You can do whatever you want with this file. |
|
| 32 |
////No restrictions (I don't think this is even a copyrightable "work") |
|
| 33 |
////--MikeeUSA-- |
|
| 34 |
// |
|
| 35 |
////Below, commented out, is the stuff you need to put in your server.cfg |
|
| 36 |
////to have the weapons_deadly and weapons_normal commands working, also |
|
| 37 |
////directly below is some sample g_weaponreplace code, you don't need to |
|
| 38 |
////do anything with it by default (it exists so if you have weaponreplace on |
|
| 39 |
////you will know you have to add your settings there as when the weapons |
|
| 40 |
////commands run they exec weapons.cfg first and that clears all ////weapreplacements aswell) |
|
| 41 |
// |
|
| 42 |
//alias nexnexnex "g_weaponreplace_nex \"nex nex nex\"" |
|
| 43 |
//alias standardweapreplace nexnexnex |
|
| 44 |
//alias weapons_normal "exec weapons.cfg; set g_ballistics_force_uzi_bulletconstant 115; set g_ballistics_force_shotgun_bulletconstant 50; set g_balance_crylink_primary_bounces 1; set g_balance_crylink_secondary_bounces 0; set g_balance_crylink_secondary_shots 7; set g_balance_crylink_primary_shots 4; standardweapreplace;" |
|
| 45 |
//alias weapons_deadly "exec weapons.cfg; set g_balance_crylink_primary_bounces 1; set g_balance_crylink_secondary_bounces 0; set g_balance_crylink_secondary_shots 7; set g_balance_crylink_primary_shots 4; set g_ballistics_force_uzi_bulletconstant 115; set g_ballistics_force_shotgun_bulletconstant 50; exec fastweap.cfg; standardweapreplace;" |
|
| 46 |
// |
|
| 47 |
////OK That is it, the rest is the settings :) |
|
| 48 | ||
| 49 |
set g_balance_laser_primary_force "165" |
|
| 50 | ||
| 51 |
//Energy weapons don't need reload (their strength) |
|
| 52 | ||
| 53 |
set g_balance_hlac_reload_ammo 0 |
|
| 54 |
set g_balance_minstanex_reload_ammo 0 |
|
| 55 |
set g_balance_nex_reload_ammo 0 |
|
| 56 |
set g_balance_crylink_reload_ammo 0 |
|
| 57 |
set g_balance_electro_reload_ammo 0 |
|
| 58 | ||
| 59 | ||
| 60 |
//What should gib and what should not |
|
| 61 |
set g_balance_tuba_nogibs 1 |
|
| 62 |
set g_balance_laser_nogibs 1 |
|
| 63 |
set g_balance_nex_nogibs 1 |
|
| 64 |
set g_balance_minstanex_nogibs 0 |
|
| 65 |
set g_balance_crylink_nogibs 1 // I don't think the crylink has enough elec to destroy a body |
|
| 66 |
set g_balance_electro_nogibs 1 |
|
| 67 |
set g_balance_hlac_nogibs 1 |
|
| 68 |
set g_balance_shotgun_nogibs 0 |
|
| 69 |
set g_balance_rifle_nogibs 1 // The bullet goes through, it doesn't explode inside the person |
|
| 70 |
set g_balance_uzi_nogibs 1 // Ditto |
|
| 71 |
set g_balance_rocketlauncher_nogibs 0 |
|
| 72 |
set g_balance_grenadelauncher_nogibs 0 |
|
| 73 |
set g_balance_hagar_nogibs 0 |
|
| 74 |
set g_balance_seeker_nogibs 0 |
|
| 75 |
set g_balance_minelayer_nogibs 0 |
|
| 76 |
set g_balance_fireball_nogibs 1 |
|
| 77 |
|
|
| 78 |
set g_balance_shotgunautomat_nogibs 0 |
|
| 79 |
set g_balance_nukelayer_nogibs 0 |
|
| 80 |
set g_balance_pistol_nogibs 1 |
|
| 81 | ||
| 82 |
set sv_gibhealth_weapon_nogib_add 999 |
|
| 83 | ||
| 84 |
//Uzi, The machinegun. Shoots through sheetrock walls with ease. |
|
| 85 |
set g_balance_uzi_speed 18000 |
|
| 86 |
set g_balance_uzi_sustained_refire "0.05" |
|
| 87 |
set g_balance_uzi_first_refire "0.1" |
|
| 88 |
set g_balance_uzi_sustained_damage "25" |
|
| 89 |
set g_balance_uzi_first_damage "25" |
|
| 90 |
set g_balance_uzi_first_spread "0.007" |
|
| 91 |
set g_balance_uzi_spread_add "0.001" |
|
| 92 |
set g_balance_uzi_spread_min "0.018" |
|
| 93 |
set g_balance_uzi_spread_max "0.14" |
|
| 94 |
set g_balance_uzi_bulletconstant "115" |
|
| 95 |
set g_balance_uzi_reload_ammo "30" |
|
| 96 |
set g_balance_uzi_burst_refire "0.01" |
|
| 97 |
set g_balance_uzi_sustained_headshotaddeddamage 80 |
|
| 98 |
set g_balance_uzi_first_headshotaddeddamage 80 |
|
| 99 | ||
| 100 | ||
| 101 |
//Shotgun. Will shoot through a door, a window, or a thin wall. |
|
| 102 |
set g_balance_shotgun_primary_speed 12000 |
|
| 103 |
set g_balance_shotgun_primary_bullets "22" |
|
| 104 |
set g_balance_shotgun_primary_bulletconstant "100" |
|
| 105 |
set g_balance_shotgun_primary_damage "12" |
|
| 106 |
set g_balance_shotgun_primary_force "90" |
|
| 107 |
set g_balance_shotgun_secondary_bullets "22" |
|
| 108 |
set g_balance_shotgun_primary_spread "0.06" |
|
| 109 |
set g_balance_shotgun_secondary_spread "0.14" |
|
| 110 |
set g_balance_shotgun_primary_force "90" |
|
| 111 |
set g_balance_shotgun_reload_ammo "5" |
|
| 112 | ||
| 113 |
exec shotgunautomat.cfg |
|
| 114 |
//ShotgunAutomat. Will shoot through a door, a window, or a thin wall... Quickly. |
|
| 115 |
set g_balance_shotgunautomat_primary_refire 0.13 |
|
| 116 |
set g_balance_shotgunautomat_primary_animtime 0.1 |
|
| 117 |
set g_balance_shotgunautomat_primary_speed 12000 |
|
| 118 |
set g_balance_shotgunautomat_primary_bullets "22" |
|
| 119 |
set g_balance_shotgunautomat_primary_bulletconstant "100" |
|
| 120 |
set g_balance_shotgunautomat_primary_ammo "1" |
|
| 121 |
set g_balance_shotgunautomat_primary_damage "12" |
|
| 122 |
set g_balance_shotgunautomat_primary_force "90" |
|
| 123 |
set g_balance_shotgunautomat_primary_spread "0.06" |
|
| 124 |
set g_balance_shotgunautomat_secondary_refire 0.8 |
|
| 125 |
set g_balance_shotgunautomat_secondary_animtime 0.2 |
|
| 126 |
set g_balance_shotgunautomat_secondary_speed 12000 |
|
| 127 |
set g_balance_shotgunautomat_secondary_bullets "66" |
|
| 128 |
set g_balance_shotgunautomat_secondary_bulletconstant "100" |
|
| 129 |
set g_balance_shotgunautomat_secondary_ammo "3" |
|
| 130 |
set g_balance_shotgunautomat_secondary_damage "12" |
|
| 131 |
set g_balance_shotgunautomat_secondary_force "90" |
|
| 132 |
set g_balance_shotgunautomat_secondary_spread "0.14" |
|
| 133 |
set g_balance_shotgunautomat_reload_ammo "9" |
|
| 134 | ||
| 135 |
exec nukelayer.cfg |
|
| 136 |
set g_balance_nukelayer_limit 1 |
|
| 137 |
set g_balance_nukelayer_reload_ammo 0 //Since we only allow one, no point to having this set. |
|
| 138 | ||
| 139 |
set g_balance_rocketlauncher_health 28 |
|
| 140 |
set g_balance_rocketlauncher_speed 2200 |
|
| 141 |
set g_balance_rocketlauncher_speedaccel 1800 |
|
| 142 |
set g_balance_rocketlauncher_speedstart 800 |
|
| 143 |
set g_balance_rocketlauncher_radius "253" |
|
| 144 |
set g_balance_rocketlauncher_damage "300" |
|
| 145 |
set g_balance_rocketlauncher_edgedamage "125" |
|
| 146 |
set g_balance_rocketlauncher_force 500 |
|
| 147 |
set g_balance_rocketlauncher_remote_radius "221" //0.875 * primary, rounded down |
|
| 148 |
set g_balance_rocketlauncher_remote_damage "262" //0.875 * primary, rounded down |
|
| 149 |
set g_balance_rocketlauncher_remote_edgedamage "109" //0.875 * primary, rounded down |
|
| 150 |
set g_balance_rocketlauncher_remote_force 500 |
|
| 151 |
set g_balance_rocketlauncher_ammo 4 |
|
| 152 |
set g_balance_rocketlauncher_reload_ammo 20 //Looks like there's 5 in the rotary, plus possibly 6 in the other side maybe. X by 4 |
|
| 153 |
set g_balance_rocketlauncher_reload_time 2 |
|
| 154 | ||
| 155 |
set g_balance_grenadelauncher_primary_damage "100" |
|
| 156 |
set g_balance_grenadelauncher_primary_edgedamage "60" |
|
| 157 |
set g_balance_grenadelauncher_primary_radius 140 |
|
| 158 |
set g_balance_grenadelauncher_primary_health 30 |
|
| 159 |
set g_balance_grenadelauncher_secondary_health 30 |
|
| 160 |
set g_balance_grenadelauncher_secondary_damage "100" |
|
| 161 |
set g_balance_grenadelauncher_secondary_edgedamage "60" |
|
| 162 |
set g_balance_grenadelauncher_secondary_radius 140 |
|
| 163 |
set g_balance_grenadelauncher_primary_ammo 2 |
|
| 164 |
set g_balance_grenadelauncher_secondary_ammo 2 |
|
| 165 |
set g_balance_grenadelauncher_reload_ammo 12 //default: 12 //fast shooter |
|
| 166 |
set g_balance_grenadelauncher_reload_time 0.8 //quick reload |
|
| 167 | ||
| 168 |
set g_balance_grenadelauncher_secondary_fragments 500 |
|
| 169 |
set g_balance_grenadelauncher_secondary_fragment_damage 40 |
|
| 170 |
set g_balance_grenadelauncher_secondary_fragment_speed 700 |
|
| 171 |
set g_balance_grenadelauncher_secondary_fragment_bulletconstant 1000 //1000 bulletconstant * 500speed = goes through thin wall |
|
| 172 |
set g_balance_grenadelauncher_secondary_fragment_headshotbonus 40 |
|
| 173 |
set g_balance_grenadelauncher_secondary_fragment_force 15 |
|
| 174 |
set g_balance_grenadelauncher_secondary_fragment_tracer 0 |
|
| 175 |
set g_balance_grenadelauncher_secondary_fragment_gravity 1 |
|
| 176 | ||
| 177 |
set g_balance_grenadelauncher_primary_fragments 100 |
|
| 178 |
set g_balance_grenadelauncher_primary_fragment_damage 80 |
|
| 179 |
set g_balance_grenadelauncher_primary_fragment_speed 700 |
|
| 180 |
set g_balance_grenadelauncher_primary_fragment_bulletconstant 1500 |
|
| 181 |
set g_balance_grenadelauncher_primary_fragment_headshotbonus 60 |
|
| 182 |
set g_balance_grenadelauncher_primary_fragment_force 30 |
|
| 183 |
set g_balance_grenadelauncher_primary_fragment_tracer 1 |
|
| 184 |
set g_balance_grenadelauncher_primary_fragment_gravity 1 |
|
| 185 | ||
| 186 |
set g_balance_nex_damage "150" // Nexuiz |
|
| 187 |
set g_balance_nex_primary_damage "150" // Xonotic |
|
| 188 | ||
| 189 |
set g_balance_hagar_primary_damage "70" |
|
| 190 |
set g_balance_hagar_secondary_damage "70" |
|
| 191 |
set g_balance_hagar_secondary_ammo 1 |
|
| 192 |
set g_balance_hagar_primary_ammo 1 |
|
| 193 |
set g_balance_hagar_reload_ammo 100 //100 round belt of 'nades |
|
| 194 |
set g_balance_hagar_reload_time 3 //Takes awhile to get the next 'nade belt hooked up |
|
| 195 | ||
| 196 |
set g_balance_crylink_primary_force -55 |
|
| 197 |
set g_balance_crylink_primary_damage 18 |
|
| 198 |
set g_balance_crylink_primary_bounces "7" |
|
| 199 |
set g_balance_crylink_primary_shots "6" |
|
| 200 |
set g_balance_crylink_secondary_force -40 |
|
| 201 |
set g_balance_crylink_secondary_damage 18 |
|
| 202 |
set g_balance_crylink_secondary_shots "11" |
|
| 203 |
set g_balance_crylink_secondary_refire "0.3" |
|
| 204 | ||
| 205 |
// set g_balance_electro_primary_damage "110" // Nexuiz |
|
| 206 |
//set g_balance_electro_primary_damage "220" // Old Xonotic where electro was like a lightning gun |
|
| 207 |
set g_balance_electro_primary_damage "90" |
|
| 208 |
set g_balance_electro_secondary_damage "80" |
|
| 209 |
set g_balance_electro_secondary_count "100" |
|
| 210 |
set g_balance_electro_primary_force 200 |
|
| 211 |
set g_balance_electro_secondary_force 200 |
|
| 212 |
set g_balance_electro_combo_force 120 |
|
| 213 | ||
| 214 |
set g_balance_seeker_missile_health 1 |
|
| 215 |
set g_balance_seeker_missile_damage 90 |
|
| 216 |
set g_balance_seeker_missile_edgedamage 30 |
|
| 217 |
set g_balance_seeker_missile_radius 90 |
|
| 218 |
set g_balance_seeker_flac_damage 25 |
|
| 219 |
set g_balance_seeker_flac_edgedamage 20 |
|
| 220 |
set g_balance_seeker_type 0 |
|
| 221 |
set g_balance_seeker_tag_speed 10000 |
|
| 222 | ||
| 223 | ||
| 224 |
set g_balance_hlac_primary_damage 55 |
|
| 225 |
set g_balance_hlac_primary_refire 0.1 |
|
| 226 |
set g_balance_hlac_secondary_damage 55 |
|
| 227 | ||
| 228 |
//Sniper Rifle. Will shoot through concrete, has long range. |
|
| 229 |
//##Nexuiz sniper/camping rifle: |
|
| 230 |
set g_balance_campingrifle_primary_damage 95 |
|
| 231 |
set g_balance_campingrifle_primary_headshotaddeddamage 260 |
|
| 232 |
set g_balance_campingrifle_secondary_force 10 |
|
| 233 |
set g_balance_campingrifle_secondary_burstcost 0 |
|
| 234 |
set g_balance_campingrifle_primary_speed 55000 // Old 40000 |
|
| 235 |
set g_balance_campingrifle_primary_bulletconstant 119 // Old 480 |
|
| 236 |
set g_balance_campingrifle_secondary_refire 0.06 |
|
| 237 |
set g_balance_campingrifle_secondary_animtime 0.06 |
|
| 238 |
set g_balance_campingrifle_secondary_speed 30000 |
|
| 239 |
set g_balance_campingrifle_magazinecapacity 30 |
|
| 240 |
//set g_ballistics_force_shotgun_bulletconstant 130 //OLD |
|
| 241 |
//set g_ballistics_force_uzi_bulletconstant 245 //OLD |
|
| 242 |
set g_balance_campingrifle_secondary_ammo 3 |
|
| 243 |
set g_balance_campingrifle_primary_ammo 3 |
|
| 244 |
set g_balance_campingrifle_secondary_tracer 1 |
|
| 245 |
set g_balance_campingrifle_primary_tracer 0 |
|
| 246 |
//##Old Xonotic sniper/camping rifle |
|
| 247 |
set g_balance_sniperrifle_primary_damage 95 |
|
| 248 |
set g_balance_sniperrifle_primary_headshotaddeddamage 260 |
|
| 249 |
set g_balance_sniperrifle_secondary_force 10 |
|
| 250 |
set g_balance_sniperrifle_secondary_burstcost 0 |
|
| 251 |
set g_balance_sniperrifle_primary_speed 55000 |
|
| 252 |
set g_balance_sniperrifle_primary_bulletconstant 119 |
|
| 253 |
set g_balance_sniperrifle_primary_refire "0.5" |
|
| 254 |
set g_balance_sniperrifle_secondary_refire 0.06 |
|
| 255 |
set g_balance_sniperrifle_secondary_animtime 0.06 |
|
| 256 |
set g_balance_sniperrifle_secondary_speed 30000 |
|
| 257 |
set g_balance_sniperrifle_magazinecapacity 30 |
|
| 258 |
set g_balance_sniperrifle_secondary_ammo 3 |
|
| 259 |
set g_balance_sniperrifle_primary_ammo 3 |
|
| 260 |
set g_balance_sniperrifle_secondary_tracer 1 |
|
| 261 |
set g_balance_sniperrifle_primary_tracer 0 |
|
| 262 |
//##Newer Xonotic |
|
| 263 |
set g_balance_rifle_primary_damage 95 |
|
| 264 |
set g_balance_rifle_primary_headshotaddeddamage 260 |
|
| 265 |
set g_balance_rifle_secondary_force 10 |
|
| 266 |
set g_balance_rifle_secondary_burstcost 0 |
|
| 267 |
set g_balance_rifle_primary_speed 55000 |
|
| 268 |
set g_balance_rifle_primary_bulletconstant 119 |
|
| 269 |
set g_balance_rifle_primary_refire "0.5" |
|
| 270 |
set g_balance_rifle_secondary_refire 0.06 |
|
| 271 |
set g_balance_rifle_secondary_animtime 0.06 |
|
| 272 |
set g_balance_rifle_secondary_speed 30000 |
|
| 273 |
set g_balance_rifle_reload_ammo 18 |
|
| 274 |
set g_balance_rifle_secondary_ammo 9 |
|
| 275 |
set g_balance_rifle_secondary_shots 3 |
|
| 276 |
set g_balance_rifle_primary_ammo 3 |
|
| 277 |
set g_balance_rifle_secondary_tracer 1 |
|
| 278 |
set g_balance_rifle_primary_tracer 0 |
|
| 279 |
set g_balance_rifle_secondary_damage 30 |
|
| 280 |
set g_balance_rifle_secondary_headshotaddeddamage 20 |
|
| 281 | ||
| 282 |
set g_balance_minelayer_health 15 |
|
| 283 |
set g_balance_minelayer_limit 100 |
|
| 284 |
set g_balance_minelayer_lifetime 99999 |
|
| 285 |
set g_balance_minelayer_damage 100 |
|
| 286 |
set g_balance_minelayer_remotedamage 120 |
|
| 287 |
set g_balance_minelayer_ammo 4 |
|
| 288 |
set g_balance_minelayer_reload_ammo 0 // 40 if one wants to reload after 10 |
|
| 289 |
set g_balance_minelayer_reload_time 1.25 |
|
| 290 | ||
| 291 |
set g_balance_fireball_primary_damagetime 9 |
|
| 292 |
set g_balance_fireball_primary_lifetime 10 |
|
| 293 |
set g_balance_fireball_primary_refire 0.5 |
|
| 294 |
set g_balance_fireball_primary_laserradius 256 |
|
| 295 |
set g_balance_fireball_secondary_edgedamage 20 |
|
| 296 |
set g_balance_fireball_secondary_damage 120 |
|
| 297 |
set g_balance_fireball_secondary_laserradius 192 |
|
| 298 |
set g_balance_fireball_secondary_lifetime 30 |
|
| 299 |
set g_balance_fireball_secondary_refire 0.9 |
|
| 300 | ||
| 301 |
//##Mod, pistol |
|
| 302 |
// {{{ pistol
|
|
| 303 |
exec pistol.cfg |
|
| 304 |
set g_balance_pistol_bursttime 0 |
|
| 305 |
set g_balance_pistol_primary_tracer 0 //bullet too slow for tracer |
|
| 306 |
set g_balance_pistol_primary_shots 1 |
|
| 307 |
set g_balance_pistol_primary_damage 14 //same as uzi, same ammo |
|
| 308 |
set g_balance_pistol_primary_headshotaddeddamage 80 |
|
| 309 |
set g_balance_pistol_primary_spread 0.02 |
|
| 310 |
set g_balance_pistol_primary_force 20 |
|
| 311 |
set g_balance_pistol_primary_speed 16000 //reduced from uzi due to shorter barrel |
|
| 312 |
set g_balance_pistol_primary_lifetime 5 |
|
| 313 |
set g_balance_pistol_primary_refire 0.2 |
|
| 314 |
set g_balance_pistol_primary_animtime 0.2 |
|
| 315 |
set g_balance_pistol_primary_ammo 1 |
|
| 316 |
set g_balance_pistol_primary_bulletconstant 115 |
|
| 317 |
set g_balance_pistol_primary_burstcost 0 |
|
| 318 |
set g_balance_pistol_primary_bullethail 0 // empty magazine on shot |
|
| 319 |
set g_balance_pistol_secondary 1 |
|
| 320 |
set g_balance_pistol_secondary_reload 0 |
|
| 321 |
set g_balance_pistol_secondary_tracer 0 |
|
| 322 |
set g_balance_pistol_secondary_shots 1 |
|
| 323 |
set g_balance_pistol_secondary_damage 10 |
|
| 324 |
set g_balance_pistol_secondary_headshotaddeddamage 80 |
|
| 325 |
set g_balance_pistol_secondary_spread 0.06 |
|
| 326 |
set g_balance_pistol_secondary_force 20 |
|
| 327 |
set g_balance_pistol_secondary_speed 16000 |
|
| 328 |
set g_balance_pistol_secondary_lifetime 5 |
|
| 329 |
set g_balance_pistol_secondary_refire 0.05 |
|
| 330 |
set g_balance_pistol_secondary_animtime 0.05 |
|
| 331 |
set g_balance_pistol_secondary_ammo 1 |
|
| 332 |
set g_balance_pistol_secondary_bulletconstant 115 |
|
| 333 |
set g_balance_pistol_secondary_burstcost 0 |
|
| 334 |
set g_balance_pistol_secondary_bullethail 0 // empty magazine on shot |
|
| 335 |
set g_balance_pistol_reload_ammo 10 //default: 10 |
|
| 336 |
set g_balance_pistol_reload_time 2 |
|
| 337 |
// }}} |
|
| 338 | ||
| 339 |
//1 q-unit |
|
| 340 |
//set g_ballistics_mindistance 1 |
|
| 341 |
//0 q-unit |
|
| 342 |
set g_ballistics_mindistance 0 |
|
| 343 | ||
| 344 |
//set g_casings 2 |
|
| 345 |
set g_antilag_bullets 0 |
|
| 346 | ||
| 347 |
////Vehicle stuff |
|
| 348 | ||
| 349 |
//Spiderbot: Anti armor 20 mm gatling gun cannons, Anti-personell rockets. |
|
| 350 |
set g_vehicle_spiderbot_health 10600 |
|
| 351 |
set g_vehicle_spiderbot_rocket_damage 250 |
|
| 352 |
set g_vehicle_spiderbot_rocket_edgedamage 150 |
|
| 353 |
set g_vehicle_spiderbot_rocket_force 200 |
|
| 354 |
set g_vehicle_spiderbot_rocket_radius 300 |
|
| 355 |
set g_vehicle_spiderbot_rocket_speed 1800 |
|
| 356 |
set g_vehicle_spiderbot_crush_dmg 100 |
|
| 357 |
set g_vehicle_spiderbot_health_regen 20 |
|
| 358 | ||
| 359 |
set g_vehicle_spiderbot_minigun_refire 0.01 |
|
| 360 |
set g_vehicle_spiderbot_minigun_damage 50 // 20mm shells do damage. |
|
| 361 | ||
| 362 |
set g_vehicle_spiderbot_minigun_expelbulletcasings 1 |
|
| 363 |
set g_vehicle_spiderbot_minigun_enableballistics 1 |
|
| 364 |
set g_vehicle_spiderbot_minigun_speed 48000 |
|
| 365 |
set g_vehicle_spiderbot_minigun_force 4 |
|
| 366 |
set g_vehicle_spiderbot_minigun_bulletconstant 470 // 20mm shells are good penetrators. |
|
| 367 | ||
| 368 |
//Raptor flying vehicle: good for destroying ground troops (energy cannon) and spiderbot formations (bomblets) |
|
| 369 |
set g_vehicle_raptor_bomblets 66 |
|
| 370 |
set g_vehicle_raptor_bomblet_alt 2200 |
|
| 371 |
set g_vehicle_raptor_bomblet_time 0.1 |
|
| 372 |
set g_vehicle_raptor_bomblet_spread 0.65 |
|
| 373 |
set g_vehicle_raptor_bomblet_damage 300 |
|
| 374 |
set g_vehicle_raptor_bomblet_edgedamage 150 |
|
| 375 |
set g_vehicle_raptor_bomblet_radius 600 |
|
| 376 |
set g_vehicle_raptor_bomblet_force 300 |
|
| 377 |
set g_vehicle_raptor_bombs_refire 6 |
|
| 378 | ||
| 379 |
set g_vehicle_raptor_cannon_cost 6 |
|
| 380 |
set g_vehicle_raptor_cannon_damage 60 |
|
| 381 |
set g_vehicle_raptor_cannon_radius 45 |
|
| 382 |
set g_vehicle_raptor_cannon_refire 0.0025 |
|
| 383 |
set g_vehicle_raptor_cannon_speed 9000 |
|
| 384 |
set g_vehicle_raptor_cannon_spread 0.0125 |
|
| 385 | ||
| 386 |
set g_vehicle_raptor_energy 840 |
|
| 387 |
set g_vehicle_raptor_energy_regen 40 |
|
| 388 |
set g_vehicle_raptor_energy_regen_pause 1 |
|
| 389 | ||
| 390 |
set g_vehicle_raptor_health 800 |
|
| 391 |
set g_vehicle_raptor_health_regen 0 |
|
| 392 |
set g_vehicle_raptor_health_regen_pause 0 |
|
| 393 | ||
| 394 |
//Raptor misc |
|
| 395 |
set g_vehicle_raptor_guns_turnspeed 90 |
|
| 396 |
set g_vehicle_raptor_guns_turnlimit 20 |
|
| 397 |
set g_vehicle_raptor_guns_pitchlimit_up 12 |
|
| 398 |
set g_vehicle_raptor_guns_pitchlimit_down 32 |
|
| 399 | ||
| 400 |
set g_vehicle_raptor_movestyle 1 |
|
| 401 | ||
| 402 |
set g_vehicle_raptor_turnroll 0.1 |
|
| 403 | ||
| 404 |
set g_vehicle_raptor_turnspeed 70 |
|
| 405 |
set g_vehicle_raptor_pitchspeed 30 |
|
| 406 |
set g_vehicle_raptor_pitchlimit 35 |
|
| 407 | ||
| 408 |
set g_vehicle_raptor_speed_forward 1000 |
|
| 409 |
set g_vehicle_raptor_speed_strafe 750 |
|
| 410 |
set g_vehicle_raptor_speed_up 600 |
|
| 411 |
set g_vehicle_raptor_speed_down 900 |
|
| 412 |
set g_vehicle_raptor_friction 0.7 |
|
| 413 | ||
| 414 |
set g_vehicle_raptor_cannon_locktarget 1 |
|
| 415 |
set g_vehicle_raptor_cannon_locking_time 0.5 |
|
| 416 |
set g_vehicle_raptor_cannon_locking_releasetime 0.5 |
|
| 417 |
set g_vehicle_raptor_cannon_locked_time 1 |
|
| 418 |
set g_vehicle_raptor_cannon_predicttarget 1 |
|
| 419 | ||
| 420 |
set g_vehicle_racer_laser_refire 0.065 |
|
| 421 |
set g_vehicle_racer_laser_damage 30 |
|
| 422 | ||
| 423 |
set g_balance_rocketlauncher_enableshockwave 1 |
|
| 424 |
set g_vehicle_raptor_bomblet_explode_enableshockwave 1 |
|
| 425 | ||
| b/grenadelauncherfragmentation.cfg | ||
|---|---|---|
| 1 |
set g_balance_grenadelauncher_secondary_fragments 300 |
|
| 2 |
set g_balance_grenadelauncher_secondary_fragment_damage 20 |
|
| 3 |
set g_balance_grenadelauncher_secondary_fragment_speed 700 |
|
| 4 |
set g_balance_grenadelauncher_secondary_fragment_bulletconstant 1000 |
|
| 5 |
set g_balance_grenadelauncher_secondary_fragment_headshotbonus 20 |
|
| 6 |
set g_balance_grenadelauncher_secondary_fragment_force 15 |
|
| 7 |
set g_balance_grenadelauncher_secondary_fragment_tracer 0 |
|
| 8 |
set g_balance_grenadelauncher_secondary_fragment_gravity 1 |
|
| 9 | ||
| 10 |
set g_balance_grenadelauncher_primary_fragments 100 |
|
| 11 |
set g_balance_grenadelauncher_primary_fragment_damage 40 |
|
| 12 |
set g_balance_grenadelauncher_primary_fragment_speed 700 |
|
| 13 |
set g_balance_grenadelauncher_primary_fragment_bulletconstant 1000 |
|
| 14 |
set g_balance_grenadelauncher_primary_fragment_headshotbonus 40 |
|
| 15 |
set g_balance_grenadelauncher_primary_fragment_force 25 |
|
| 16 |
set g_balance_grenadelauncher_primary_fragment_tracer 1 |
|
| 17 |
set g_balance_grenadelauncher_primary_fragment_gravity 1 |
|
| b/models/weapons/h_nukelayer.iqm.framegroups | ||
|---|---|---|
| 1 |
1 8 20 0 // fire |
|
| 2 |
9 5 20 0 // fire2 |
|
| 3 |
15 200 20 1 // idle |
|
| 4 |
215 40 20 0 // reload |
|
| b/models/weapons/h_pistol.dpm.framegroups | ||
|---|---|---|
| 1 |
1 8 20 0 // fire |
|
| 2 |
9 5 20 0 // fire2 |
|
| 3 |
15 200 20 1 // idle |
|
| 4 |
215 39 20 0 // reload |
|
| b/models/weapons/h_pistol.iqm.framegroups | ||
|---|---|---|
| 1 |
1 8 20 0 // fire |
|
| 2 |
9 5 20 0 // fire2 |
|
| 3 |
15 200 20 1 // idle |
|
| 4 |
215 40 20 0 // reload |
|
| b/models/weapons/h_shotgunautomat.iqm.framegroups | ||
|---|---|---|
| 1 |
1 8 20 0 // fire |
|
| 2 |
9 23 20 0 // fire2 |
|
| 3 |
32 200 20 1 // idle |
|
| 4 |
232 40 20 0 // reload |
|
| 5 |
// compile opts used in the iqm exporter (apparently needed to prevent insane ram usage): |
|
| 6 |
// fire:1:8, fire2:1:23, idle:1:200, reload:1:40 |
|
| b/models/weapons/wip/h_nukelayer.iqm.framegroups | ||
|---|---|---|
| 1 |
1 8 20 0 // fire |
|
| 2 |
9 5 20 0 // fire2 |
|
| 3 |
15 200 20 1 // idle |
|
| 4 |
215 40 20 0 // reload |
|
| b/nukelayer.cfg | ||
|---|---|---|
| 1 |
// {{{ nukelayer
|
|
| 2 |
set g_balance_nukelayer_damage 20000 |
|
| 3 |
set g_balance_nukelayer_edgedamage 1000 |
|
| 4 |
set g_balance_nukelayer_force 2500 |
|
| 5 |
set g_balance_nukelayer_radius 8191 |
|
| 6 |
set g_balance_nukelayer_proximityradius 0 |
|
| 7 |
set g_balance_nukelayer_speed 1000 |
|
| 8 |
set g_balance_nukelayer_lifetime 99999999 |
|
| 9 |
set g_balance_nukelayer_lifetime_countdown 0.5 |
|
| 10 |
set g_balance_nukelayer_refire 1.5 |
|
| 11 |
set g_balance_nukelayer_animtime 0.4 |
|
| 12 |
set g_balance_nukelayer_ammo 400 |
|
| 13 |
set g_balance_nukelayer_health 15 |
|
| 14 |
set g_balance_nukelayer_limit 1 // 0 disables the limit |
|
| 15 |
set g_balance_nukelayer_protection 0 // don't explode if the nuke would hurt the owner or a team mate |
|
| 16 |
set g_balance_nukelayer_damageforcescale 0 |
|
| 17 |
set g_balance_nukelayer_detonatedelay 10 // 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 |
|
| 18 |
set g_balance_nukelayer_time 0.5 |
|
| 19 |
set g_balance_nukelayer_remote_damage 20000 |
|
| 20 |
set g_balance_nukelayer_remote_edgedamage 1000 |
|
| 21 |
set g_balance_nukelayer_remote_radius 8191 |
|
| 22 |
set g_balance_nukelayer_remote_force 3000 |
|
| 23 |
set g_balance_nukelayer_reload_ammo 400 //default: 15 |
|
| 24 |
set g_balance_nukelayer_reload_time 10 |
|
| 25 |
set g_balance_nukelayer_enableshockwave 1 |
|
| 26 |
// }}} |
|
| 27 | ||
| 28 | ||
| 29 | ||
| 30 |
seta crosshair_nukelayer "" "crosshair to display when wielding the nukelayer" |
|
| 31 |
seta crosshair_nukelayer_color "1.00 0.50 0.15" "crosshair color to display when wielding the nukelayer" |
|
| 32 |
seta crosshair_nukelayer_alpha 1.15 "crosshair alpha value to display when wielding the nukelayer" |
|
| 33 |
seta crosshair_nukelayer_size 0.9 "crosshair size when wielding the nukelayer" |
|
| 34 | ||
| 35 |
seta crosshair_ring_nukelayer 1 |
|
| 36 |
seta crosshair_ring_nukelayer_alpha 0.15 |
|
| 37 | ||
| 38 | ||
| 39 |
set g_start_weapon_nukelayer -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" |
|
| b/pistol.cfg | ||
|---|---|---|
| 1 |
// {{{ pistol
|
|
| 2 |
set g_balance_pistol_bursttime 0 |
|
| 3 |
set g_balance_pistol_primary_tracer 1 |
|
| 4 |
set g_balance_pistol_primary_shots 1 |
|
| 5 |
set g_balance_pistol_primary_damage 14 |
|
| 6 |
set g_balance_pistol_primary_headshotaddeddamage 0 |
|
| 7 |
set g_balance_pistol_primary_spread 0.04 |
|
| 8 |
set g_balance_pistol_primary_force 20 |
|
| 9 |
set g_balance_pistol_primary_speed 18000 |
|
| 10 |
set g_balance_pistol_primary_lifetime 5 |
|
| 11 |
set g_balance_pistol_primary_refire 0.2 |
|
| 12 |
set g_balance_pistol_primary_animtime 0.2 |
|
| 13 |
set g_balance_pistol_primary_ammo 1 |
|
| 14 |
set g_balance_pistol_primary_bulletconstant 115 |
|
| 15 |
set g_balance_pistol_primary_burstcost 0 |
|
| 16 |
set g_balance_pistol_primary_bullethail 0 // empty magazine on shot |
|
| 17 |
set g_balance_pistol_secondary 1 |
|
| 18 |
set g_balance_pistol_secondary_reload 0 |
|
| 19 |
set g_balance_pistol_secondary_tracer 1 |
|
| 20 |
set g_balance_pistol_secondary_shots 1 |
|
| 21 |
set g_balance_pistol_secondary_damage 10 |
|
| 22 |
set g_balance_pistol_secondary_headshotaddeddamage 0 |
|
| 23 |
set g_balance_pistol_secondary_spread 0.06 |
|
| 24 |
set g_balance_pistol_secondary_force 20 |
|
| 25 |
set g_balance_pistol_secondary_speed 18000 |
|
| 26 |
set g_balance_pistol_secondary_lifetime 5 |
|
| 27 |
set g_balance_pistol_secondary_refire 0.1 |
|
| 28 |
set g_balance_pistol_secondary_animtime 0.1 |
|
| 29 |
set g_balance_pistol_secondary_ammo 1 |
|
| 30 |
set g_balance_pistol_secondary_bulletconstant 115 |
|
| 31 |
set g_balance_pistol_secondary_burstcost 0 |
|
| 32 |
set g_balance_pistol_secondary_bullethail 0 // empty magazine on shot |
|
| 33 |
set g_balance_pistol_reload_ammo 10 //default: 10 |
|
| 34 |
set g_balance_pistol_reload_time 2 |
|
| 35 |
// }}} |
|
| 36 | ||
| 37 |
seta crosshair_pistol "" "crosshair to display when wielding the pistol" |
|
| 38 |
seta crosshair_pistol_color "0.5 0.5 0.1" "crosshair color to display when wielding the pistol" |
|
| 39 |
seta crosshair_pistol_alpha 0.7 "crosshair alpha value to display when wielding the pistol" |
|
| 40 |
seta crosshair_pistol_size 0.3 "crosshair size when wielding the pistol" |
|
| 41 | ||
| 42 |
set g_start_weapon_pistol -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" |
|
| b/qcsrc/client/hud.qc | ||
|---|---|---|
| 425 | 425 |
case WEP_SEEKER: return 2; |
| 426 | 426 |
case WEP_FIREBALL: return 4; |
| 427 | 427 |
case WEP_HOOK: return 3; |
| 428 |
case WEP_SHOTGUNAUTOMAT: return 0; |
|
| 429 |
case WEP_PISTOL: return 1; |
|
| 430 |
case WEP_NUKE_LAYER: return 2; |
|
| 428 | 431 |
default: return -1; |
| 429 | 432 |
} |
| 430 | 433 |
} |
| b/qcsrc/client/waypointsprites.qc | ||
|---|---|---|
| 244 | 244 |
case "wpn-hlac": return '0 1 0'; |
| 245 | 245 |
case "wpn-campingrifle": return '0.5 1 0'; |
| 246 | 246 |
case "wpn-minelayer": return '0.75 1 0'; |
| 247 |
case "wpn-shotgunautomat": return '1 0.30 0'; |
|
| 248 |
case "wpn-nukelayer": return '1 1 0.20'; |
|
| 249 |
case "wpn-uzi": return '1 0.5 0'; |
|
| 247 | 250 |
default: return def; |
| 248 | 251 |
} |
| 249 | 252 |
} |
| ... | ... | |
| 303 | 306 |
case "wpn-hlac": return _("HLAC");
|
| 304 | 307 |
case "wpn-campingrifle": return _("Rifle");
|
| 305 | 308 |
case "wpn-minelayer": return _("Mine Layer");
|
| 309 |
case "wpn-shotgunautomat": return _("ShotgunAutomat");
|
|
| 310 |
case "wpn-nukelayer": return _("Nuke Layer");
|
|
| 306 | 311 |
case "dom-neut": return _("Control point");
|
| 307 | 312 |
case "dom-red": return _("Control point");
|
| 308 | 313 |
case "dom-blue": return _("Control point");
|
| b/qcsrc/menu/xonotic/playermodel.c | ||
|---|---|---|
| 10 | 10 |
ATTRIB(XonoticPlayerModelSelector, currentModelImage, string, string_null) |
| 11 | 11 |
ATTRIB(XonoticPlayerModelSelector, currentModelTitle, string, string_null) |
| 12 | 12 |
ATTRIB(XonoticPlayerModelSelector, currentModelDescription, string, string_null) |
| 13 |
ATTRIB(XonoticPlayerModelSelector, currentModelSpecies, float, 0) |
|
| 13 | 14 |
METHOD(XonoticPlayerModelSelector, go, void(entity, float)) |
| 14 | 15 |
METHOD(XonoticPlayerModelSelector, destroy, void(entity)) |
| 15 | 16 |
ATTRIB(XonoticPlayerModelSelector, origin, vector, '0 0 0') |
| ... | ... | |
| 40 | 41 |
#define BUFMODELS_MODEL 2 |
| 41 | 42 |
#define BUFMODELS_SKIN 3 |
| 42 | 43 |
#define BUFMODELS_DESC 4 |
| 43 |
#define BUFMODELS_COUNT 5 |
|
| 44 |
#define BUFMODELS_SPECIES 5 |
|
| 45 |
#define BUFMODELS_COUNT 6 |
|
| 44 | 46 | |
| 45 | 47 |
void XonoticPlayerModelSelector_configureXonoticPlayerModelSelector(entity me) |
| 46 | 48 |
{
|
| ... | ... | |
| 75 | 77 |
bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_IMAGE, strcat("/", substring(get_model_datafilename(get_model_parameters_modelname, get_model_parameters_modelskin, "tga"), 0, -5)));
|
| 76 | 78 |
bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_MODEL, get_model_parameters_modelname); |
| 77 | 79 |
bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SKIN, ftos(get_model_parameters_modelskin)); |
| 80 |
bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SPECIES, ftos(get_model_parameters_species)); |
|
| 78 | 81 |
get_model_parameters_desc = strcat(get_model_parameters_desc, "\n"); |
| 79 | 82 |
if(get_model_parameters_sex) |
| 80 | 83 |
get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nSex: %s", get_model_parameters_sex));
|
| ... | ... | |
| 135 | 138 |
me.currentSkin = stof(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_SKIN)); |
| 136 | 139 |
me.currentModel = strzone(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_MODEL)); |
| 137 | 140 |
me.currentModelDescription = strzone(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_DESC)); |
| 141 |
me.currentModelSpecies = stof(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_SPECIES)); |
|
| 138 | 142 | |
| 139 | 143 |
// fix the image |
| 140 | 144 |
me.src = me.currentModelImage; |
| ... | ... | |
| 162 | 166 |
// we can't immediately apply here because of flood control |
| 163 | 167 |
cvar_set("_cl_playermodel", me.currentModel);
|
| 164 | 168 |
cvar_set("_cl_playerskin", ftos(me.currentSkin));
|
| 169 |
|
|
| 170 |
// client side variables are fine to change here however |
|
| 171 |
if (me.currentModelSpecies == SPECIES_HUMAN) {
|
|
| 172 |
cvar_set("hud_damage_color", "1 0 0");
|
|
| 173 |
} else if (me.currentModelSpecies == SPECIES_ROBOT_SOLID) {
|
|
| 174 |
cvar_set("hud_damage_color", "0.2 0.1 0.4");
|
|
| 175 |
} else if (me.currentModelSpecies == SPECIES_ALIEN) {
|
|
| 176 |
cvar_set("hud_damage_color", "0.12 0.25 0.06");
|
|
| 177 |
} else if (me.currentModelSpecies == SPECIES_ANIMAL) {
|
|
| 178 |
cvar_set("hud_damage_color", "1 0 0");
|
|
| 179 |
} else if (me.currentModelSpecies == SPECIES_ROBOT_RUSTY) {
|
|
| 180 |
cvar_set("hud_damage_color", "0.2 0.1 0.4");
|
|
| 181 |
} else if (me.currentModelSpecies == SPECIES_ROBOT_SHINY) {
|
|
| 182 |
cvar_set("hud_damage_color", "0.2 0.1 0.4");
|
|
| 183 |
} else if (me.currentModelSpecies == SPECIES_RESERVED) {
|
|
| 184 |
cvar_set("hud_damage_color", "1 0 0");
|
|
| 185 |
} else {
|
|
| 186 |
cvar_set("hud_damage_color", "1 0 0");
|
|
| 187 |
} |
|
| 165 | 188 |
} |
| 166 | 189 | |
| 167 | 190 |
void XonoticPlayerModelSelector_draw(entity me) |
| b/qcsrc/server/autocvars.qh | ||
|---|---|---|
| 1201 | 1201 |
float autocvar_sv_gameplayfix_gravityunaffectedbyticrate; |
| 1202 | 1202 |
float autocvar_g_trueaim_minrange; |
| 1203 | 1203 |
float autocvar_g_debug_defaultsounds; |
| 1204 | ||
| 1205 |
float autocvar_g_balance_shotgunautomat_primary_ammo; |
|
| 1206 |
float autocvar_g_balance_shotgunautomat_primary_animtime; |
|
| 1207 |
float autocvar_g_balance_shotgunautomat_primary_bulletconstant; |
|
| 1208 |
float autocvar_g_balance_shotgunautomat_primary_bullets; |
|
| 1209 |
float autocvar_g_balance_shotgunautomat_primary_damage; |
|
| 1210 |
float autocvar_g_balance_shotgunautomat_primary_force; |
|
| 1211 |
float autocvar_g_balance_shotgunautomat_primary_refire; |
|
| 1212 |
float autocvar_g_balance_shotgunautomat_primary_speed; |
|
| 1213 |
float autocvar_g_balance_shotgunautomat_primary_spread; |
|
| 1214 | ||
| 1215 |
float autocvar_g_balance_shotgunautomat_secondary_ammo; |
|
| 1216 |
float autocvar_g_balance_shotgunautomat_secondary_animtime; |
|
| 1217 |
float autocvar_g_balance_shotgunautomat_secondary_bulletconstant; |
|
| 1218 |
float autocvar_g_balance_shotgunautomat_secondary_bullets; |
|
| 1219 |
float autocvar_g_balance_shotgunautomat_secondary_damage; |
|
| 1220 |
float autocvar_g_balance_shotgunautomat_secondary_force; |
|
| 1221 |
float autocvar_g_balance_shotgunautomat_secondary_refire; |
|
| 1222 |
float autocvar_g_balance_shotgunautomat_secondary_speed; |
|
| 1223 |
float autocvar_g_balance_shotgunautomat_secondary_spread; |
|
| 1224 | ||
| 1225 |
float autocvar_g_balance_shotgunautomat_secondary; |
|
| 1226 |
float autocvar_g_balance_shotgunautomat_secondary_melee_delay; |
|
| 1227 |
float autocvar_g_balance_shotgunautomat_secondary_melee_range; |
|
| 1228 |
float autocvar_g_balance_shotgunautomat_secondary_melee_swing; |
|
| 1229 |
float autocvar_g_balance_shotgunautomat_secondary_melee_time; |
|
| 1230 |
float autocvar_g_balance_shotgunautomat_secondary_melee_no_doubleslap; |
|
| 1231 |
float autocvar_g_balance_shotgunautomat_reload_ammo; |
|
| 1232 |
float autocvar_g_balance_shotgunautomat_reload_time; |
|
| 1233 | ||
| 1234 |
float autocvar_g_balance_nukelayer_ammo; |
|
| 1235 |
float autocvar_g_balance_nukelayer_animtime; |
|
| 1236 |
float autocvar_g_balance_nukelayer_damage; |
|
| 1237 |
float autocvar_g_balance_nukelayer_damageforcescale; |
|
| 1238 |
float autocvar_g_balance_nukelayer_detonatedelay; |
|
| 1239 |
float autocvar_g_balance_nukelayer_edgedamage; |
|
| 1240 |
float autocvar_g_balance_nukelayer_force; |
|
| 1241 |
float autocvar_g_balance_nukelayer_health; |
|
| 1242 |
float autocvar_g_balance_nukelayer_lifetime; |
|
| 1243 |
float autocvar_g_balance_nukelayer_lifetime_countdown; |
|
| 1244 |
float autocvar_g_balance_nukelayer_limit; |
|
| 1245 |
float autocvar_g_balance_nukelayer_protection; |
|
| 1246 |
float autocvar_g_balance_nukelayer_proximityradius; |
|
| 1247 |
float autocvar_g_balance_nukelayer_radius; |
|
| 1248 |
float autocvar_g_balance_nukelayer_refire; |
|
| 1249 |
float autocvar_g_balance_nukelayer_remote_damage; |
|
| 1250 |
float autocvar_g_balance_nukelayer_remote_edgedamage; |
|
| 1251 |
float autocvar_g_balance_nukelayer_remote_force; |
|
| 1252 |
float autocvar_g_balance_nukelayer_remote_radius; |
|
| 1253 |
float autocvar_g_balance_nukelayer_speed; |
|
| 1254 |
float autocvar_g_balance_nukelayer_time; |
|
| 1255 |
float autocvar_g_balance_nukelayer_reload_ammo; |
|
| 1256 |
float autocvar_g_balance_nukelayer_reload_time; |
|
| 1257 |
float autocvar_g_balance_nukelayer_enableshockwave; |
|
| 1258 | ||
| 1259 |
float autocvar_g_balance_rocketlauncher_enableshockwave; |
|
| 1260 | ||
| 1261 |
float autocvar_g_balance_grenadelauncher_primary_fragments; |
|
| 1262 |
float autocvar_g_balance_grenadelauncher_primary_fragment_damage; |
|
| 1263 |
float autocvar_g_balance_grenadelauncher_primary_fragment_speed; |
|
| 1264 |
float autocvar_g_balance_grenadelauncher_primary_fragment_bulletconstant; |
|
| 1265 |
float autocvar_g_balance_grenadelauncher_primary_fragment_headshotbonus; |
|
| 1266 |
float autocvar_g_balance_grenadelauncher_primary_fragment_force; |
|
| 1267 |
float autocvar_g_balance_grenadelauncher_primary_fragment_tracer; |
|
| 1268 |
float autocvar_g_balance_grenadelauncher_primary_fragment_gravity; |
|
| 1269 | ||
| 1270 |
float autocvar_g_balance_grenadelauncher_secondary_fragments; |
|
| 1271 |
float autocvar_g_balance_grenadelauncher_secondary_fragment_damage; |
|
| 1272 |
float autocvar_g_balance_grenadelauncher_secondary_fragment_speed; |
|
| 1273 |
float autocvar_g_balance_grenadelauncher_secondary_fragment_bulletconstant; |
|
| 1274 |
float autocvar_g_balance_grenadelauncher_secondary_fragment_headshotbonus; |
|
| 1275 |
float autocvar_g_balance_grenadelauncher_secondary_fragment_force; |
|
| 1276 |
float autocvar_g_balance_grenadelauncher_secondary_fragment_tracer; |
|
| 1277 |
float autocvar_g_balance_grenadelauncher_secondary_fragment_gravity; |
|
| 1278 | ||
| 1279 |
float autocvar_g_balance_tuba_nogibs; |
|
| 1280 |
float autocvar_g_balance_laser_nogibs; |
|
| 1281 |
float autocvar_g_balance_nex_nogibs; |
|
| 1282 |
float autocvar_g_balance_minstanex_nogibs; |
|
| 1283 |
float autocvar_g_balance_crylink_nogibs; |
|
| 1284 |
float autocvar_g_balance_electro_nogibs; |
|
| 1285 |
float autocvar_g_balance_hlac_nogibs; |
|
| 1286 |
float autocvar_g_balance_shotgun_nogibs; |
|
| 1287 |
float autocvar_g_balance_rifle_nogibs; |
|
| 1288 |
float autocvar_g_balance_uzi_nogibs; |
|
| 1289 |
float autocvar_g_balance_rocketlauncher_nogibs; |
|
| 1290 |
float autocvar_g_balance_grenadelauncher_nogibs; |
|
| 1291 |
float autocvar_g_balance_hagar_nogibs; |
|
| 1292 |
float autocvar_g_balance_minelayer_nogibs; |
|
| 1293 |
float autocvar_g_balance_seeker_nogibs; |
|
| 1294 |
float autocvar_g_balance_fireball_nogibs; |
|
| 1295 |
|
|
| 1296 |
float autocvar_g_balance_shotgunautomat_nogibs; |
|
| 1297 |
float autocvar_g_balance_nukelayer_nogibs; |
|
| 1298 |
float autocvar_g_balance_pistol_nogibs; |
|
| 1299 |
|
|
| 1300 |
float autocvar_sv_gibhealth_weapon_nogib_add; |
|
| 1301 | ||
| 1302 |
float autocvar_g_balance_pistol_bursttime; |
|
| 1303 |
float autocvar_g_balance_pistol_primary_ammo; |
|
| 1304 |
float autocvar_g_balance_pistol_primary_animtime; |
|
| 1305 |
float autocvar_g_balance_pistol_primary_bulletconstant; |
|
| 1306 |
float autocvar_g_balance_pistol_primary_bullethail; |
|
| 1307 |
float autocvar_g_balance_pistol_primary_burstcost; |
|
| 1308 |
float autocvar_g_balance_pistol_primary_damage; |
|
| 1309 |
float autocvar_g_balance_pistol_primary_force; |
|
| 1310 |
float autocvar_g_balance_pistol_primary_headshotaddeddamage; |
|
| 1311 |
float autocvar_g_balance_pistol_primary_lifetime; |
|
| 1312 |
float autocvar_g_balance_pistol_primary_refire; |
|
| 1313 |
float autocvar_g_balance_pistol_primary_shots; |
|
| 1314 |
float autocvar_g_balance_pistol_primary_speed; |
|
| 1315 |
float autocvar_g_balance_pistol_primary_spread; |
|
| 1316 |
float autocvar_g_balance_pistol_primary_tracer; |
|
| 1317 |
float autocvar_g_balance_pistol_secondary; |
|
| 1318 |
float autocvar_g_balance_pistol_secondary_ammo; |
|
| 1319 |
float autocvar_g_balance_pistol_secondary_animtime; |
|
| 1320 |
float autocvar_g_balance_pistol_secondary_bulletconstant; |
|
| 1321 |
float autocvar_g_balance_pistol_secondary_bullethail; |
|
| 1322 |
float autocvar_g_balance_pistol_secondary_burstcost; |
|
| 1323 |
float autocvar_g_balance_pistol_secondary_damage; |
|
| 1324 |
float autocvar_g_balance_pistol_secondary_force; |
|
| 1325 |
float autocvar_g_balance_pistol_secondary_headshotaddeddamage; |
|
| 1326 |
float autocvar_g_balance_pistol_secondary_lifetime; |
|
| 1327 |
float autocvar_g_balance_pistol_secondary_reload; |
|
| 1328 |
float autocvar_g_balance_pistol_secondary_refire; |
|
| 1329 |
float autocvar_g_balance_pistol_secondary_shots; |
|
| 1330 |
float autocvar_g_balance_pistol_secondary_speed; |
|
| 1331 |
float autocvar_g_balance_pistol_secondary_spread; |
|
| 1332 |
float autocvar_g_balance_pistol_secondary_tracer; |
|
| 1333 |
float autocvar_g_balance_pistol_reload_ammo; |
|
| 1334 |
float autocvar_g_balance_pistol_reload_time; |
|
| 1335 | ||
| 1336 |
float autocvar_g_balance_uzi_sustained_headshotaddeddamage; |
|
| 1337 |
float autocvar_g_balance_uzi_first_headshotaddeddamage; |
|
| 1338 | ||
| 1204 | 1339 |
float autocvar_g_loituma; |
| 1340 | ||
| b/qcsrc/server/cl_client.qc | ||
|---|---|---|
| 2344 | 2344 |
self.nex_chargepool_ammo = spectatee.nex_chargepool_ammo; |
| 2345 | 2345 |
self.hagar_load = spectatee.hagar_load; |
| 2346 | 2346 |
self.minelayer_mines = spectatee.minelayer_mines; |
| 2347 |
self.nukelayer_nukes = spectatee.nukelayer_nukes; |
|
| 2347 | 2348 |
self.punchangle = spectatee.punchangle; |
| 2348 | 2349 |
self.view_ofs = spectatee.view_ofs; |
| 2349 | 2350 |
self.v_angle = spectatee.v_angle; |
| b/qcsrc/server/cl_player.qc | ||
|---|---|---|
| 383 | 383 |
self.dmg_take = self.dmg_take + take;//max(take - 10, 0); |
| 384 | 384 |
self.dmg_inflictor = inflictor; |
| 385 | 385 | |
| 386 |
if (self.health <= -autocvar_sv_gibhealth && self.modelindex != 0) |
|
| 386 |
//print(sprintf("Gib Health: %v\n", self.health));
|
|
| 387 |
//This code allows the server to set which weapons can gib and which never gib. |
|
| 388 |
//I grouped the weapons mostly by ammo type, leaving one group for my own weapons. |
|
| 389 |
//The last weapon is the fireball so that one can easily delete references to my weapons if desired. |
|
| 390 |
//Turning off gibbing on the shotgun doesn't work, it seems the last pellet or so are not tracked properly. |
|
| 391 |
//This is perhaps a bug in the ballistic bullet code, but perhaps not as uzi and rifle work fine, however they |
|
| 392 |
//are much slower in spawing ballisticbullets than the shotgun (which spawns many almost all at once). |
|
| 393 |
//Crylink can also eventually gib, but it takes many many shots, with this off it gibs quickly, I'm guessing |
|
| 394 |
//that there is a race condition between DEATH_ISWEAPON and the dmg code, I'm not sure. |
|
| 395 |
//The RocketLauncher and GrenadeLauncher seem to gib regardless. |
|
| 396 |
//I suggest turning off gibbing on the uzi and rifle, perhaps on the crylink and other energy weapons |
|
| 397 |
//This way gibbing is special for powerful weapons that provide the needed shearing force (Explosives, etc) |
|
| 398 |
if ( |
|
| 399 |
(self.health <= -autocvar_sv_gibhealth && self.modelindex != 0) && |
|
| 400 |
!( DEATH_ISWEAPON(deathtype, WEP_TUBA) && autocvar_g_balance_tuba_nogibs) && |
|
| 401 |
!( DEATH_ISWEAPON(deathtype, WEP_LASER) && autocvar_g_balance_laser_nogibs) && |
|
| 402 |
|
|
| 403 |
!( DEATH_ISWEAPON(deathtype, WEP_NEX) && autocvar_g_balance_nex_nogibs) && |
|
| 404 |
!( DEATH_ISWEAPON(deathtype, WEP_MINSTANEX) && autocvar_g_balance_minstanex_nogibs) && |
|
| 405 |
!( DEATH_ISWEAPON(deathtype, WEP_CRYLINK) && autocvar_g_balance_crylink_nogibs) && |
|
| 406 |
!( DEATH_ISWEAPON(deathtype, WEP_ELECTRO) && autocvar_g_balance_electro_nogibs) && |
|
| 407 |
!( DEATH_ISWEAPON(deathtype, WEP_HLAC) && autocvar_g_balance_hlac_nogibs) && |
|
| 408 |
|
|
| 409 |
!( DEATH_ISWEAPON(deathtype, WEP_SHOTGUN) && autocvar_g_balance_shotgun_nogibs) && |
|
| 410 |
|
|
| 411 |
!( DEATH_ISWEAPON(deathtype, WEP_RIFLE) && autocvar_g_balance_rifle_nogibs) && |
|
| 412 |
!( DEATH_ISWEAPON(deathtype, WEP_UZI) && autocvar_g_balance_uzi_nogibs) && |
|
| 413 |
|
|
| 414 |
!( DEATH_ISWEAPON(deathtype, WEP_ROCKET_LAUNCHER) && autocvar_g_balance_rocketlauncher_nogibs) && |
|
| 415 |
!( DEATH_ISWEAPON(deathtype, WEP_GRENADE_LAUNCHER) && autocvar_g_balance_grenadelauncher_nogibs) && |
|
| 416 |
!( DEATH_ISWEAPON(deathtype, WEP_HAGAR) && autocvar_g_balance_hagar_nogibs) && |
|
| 417 |
!( DEATH_ISWEAPON(deathtype, WEP_SEEKER) && autocvar_g_balance_seeker_nogibs) && |
|
| 418 |
!( DEATH_ISWEAPON(deathtype, WEP_MINE_LAYER) && autocvar_g_balance_minelayer_nogibs) && |
|
| 419 |
|
|
| 420 |
!( DEATH_ISWEAPON(deathtype, WEP_SHOTGUNAUTOMAT) && autocvar_g_balance_shotgunautomat_nogibs) && |
|
| 421 |
!( DEATH_ISWEAPON(deathtype, WEP_NUKE_LAYER) && autocvar_g_balance_nukelayer_nogibs) && |
|
| 422 |
!( DEATH_ISWEAPON(deathtype, WEP_PISTOL) && autocvar_g_balance_pistol_nogibs) && |
|
| 423 |
|
|
| 424 |
!( DEATH_ISWEAPON(deathtype, WEP_FIREBALL) && autocvar_g_balance_fireball_nogibs) |
|
| 425 |
) |
|
| 387 | 426 |
{
|
| 388 | 427 |
// don't use any animations as a gib |
| 389 | 428 |
self.frame = 0; |
| ... | ... | |
| 394 | 433 |
Violence_GibSplash(self, 1, 1, attacker); |
| 395 | 434 |
self.modelindex = 0; // restore later |
| 396 | 435 |
self.solid = SOLID_NOT; // restore later |
| 436 |
} else if (self.health <= -autocvar_sv_gibhealth && self.modelindex != 0) {
|
|
| 437 |
//print("No Gib tripped\n");
|
|
| 438 |
//If we failed the first test due solely to the weapon being used on the corpse |
|
| 439 |
//being set to nogib, but for all other reasons gibbing should occur |
|
| 440 |
//Let us give health back to the gib to make sure that it does not gib due to |
|
| 441 |
//the nogib weapon pushing it against a wall. |
|
| 442 |
self.health = -1; |
|
| 443 |
|
|
| 444 |
//We will allow the server admin to set how much health to add to such a gib, to make it resilient |
|
| 445 |
//so that it will not be easily destroyed. By default, nothing. |
|
| 446 |
self.health = self.health + autocvar_sv_gibhealth_weapon_nogib_add; |
|
| 397 | 447 |
} |
| 398 | 448 |
} |
| 399 | 449 | |
| b/qcsrc/server/defs.qh | ||
|---|---|---|
| 616 | 616 |
.float old_clip_load; |
| 617 | 617 |
.float clip_size; |
| 618 | 618 |
.float minelayer_mines; |
| 619 |
.float nukelayer_nukes; |
|
| 619 | 620 | |
| 620 | 621 |
#define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE |
| 621 | 622 |
// when doing this, hagar can go through clones |
| b/qcsrc/server/vehicles/raptor.qc | ||
|---|---|---|
| 24 | 24 |
float autocvar_g_vehicle_raptor_bomblet_radius; |
| 25 | 25 |
float autocvar_g_vehicle_raptor_bomblet_force; |
| 26 | 26 |
float autocvar_g_vehicle_raptor_bomblet_explode_delay; |
| 27 |
float autocvar_g_vehicle_raptor_bomblet_explode_enableshockwave; |
|
| 27 | 28 |
float autocvar_g_vehicle_raptor_bombs_refire; |
| 28 | 29 | |
| 29 | 30 |
float autocvar_g_vehicle_raptor_cannon_turnspeed; |
| ... | ... | |
| 77 | 78 | |
| 78 | 79 |
void raptor_bomblet_boom() |
| 79 | 80 |
{
|
| 81 | ||
| 82 |
if (autocvar_g_vehicle_raptor_bomblet_explode_enableshockwave == 1) {
|
|
| 83 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_vehicle_raptor_bomblet_radius, 0.2, 0.05, 0.25);
|
|
| 84 |
|
|
| 85 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_vehicle_raptor_bomblet_radius, 0.30, 0.05, 1.1);
|
|
| 86 |
} |
|
| 87 | ||
| 80 | 88 |
RadiusDamage (self, self.realowner, autocvar_g_vehicle_raptor_bomblet_damage, |
| 81 | 89 |
autocvar_g_vehicle_raptor_bomblet_edgedamage, |
| 82 | 90 |
autocvar_g_vehicle_raptor_bomblet_radius, world, |
| ... | ... | |
| 745 | 753 |
//precache_model ("models/vehicles/clusterbomb.md3");
|
| 746 | 754 |
precache_model ("models/vehicles/clusterbomb_folded.md3");
|
| 747 | 755 |
precache_model ("models/vehicles/raptor_body.dpm");
|
| 756 |
precache_model ("models/sphere/sphere.md3");
|
|
| 757 |
precache_model ("models/sphere/sphexp.md3");
|
|
| 748 | 758 |
|
| 749 | 759 |
precache_sound ("vehicles/raptor_fly.wav");
|
| 750 | 760 |
precache_sound ("vehicles/raptor_speed.wav");
|
| b/qcsrc/server/vehicles/spiderbot.qc | ||
|---|---|---|
| 32 | 32 |
float autocvar_g_vehicle_spiderbot_shield_regen; |
| 33 | 33 |
float autocvar_g_vehicle_spiderbot_shield_regen_pause; |
| 34 | 34 | |
| 35 |
// Start Ballistic bullet cvars |
|
| 36 |
float autocvar_g_vehicle_spiderbot_minigun_expelbulletcasings; |
|
| 37 |
float autocvar_g_vehicle_spiderbot_minigun_enableballistics; |
|
| 38 |
float autocvar_g_vehicle_spiderbot_minigun_speed; |
|
| 39 |
float autocvar_g_vehicle_spiderbot_minigun_force; |
|
| 40 |
float autocvar_g_vehicle_spiderbot_minigun_bulletconstant; |
|
| 41 |
// End ballistic bullet cvars |
|
| 42 | ||
| 35 | 43 |
float autocvar_g_vehicle_spiderbot_minigun_damage; |
| 36 | 44 |
float autocvar_g_vehicle_spiderbot_minigun_refire; |
| 37 | 45 |
float autocvar_g_vehicle_spiderbot_minigun_spread; |
| ... | ... | |
| 342 | 350 |
v_forward = normalize(v_forward); |
| 343 | 351 |
v += v_forward * 50; |
| 344 | 352 | |
| 353 |
if (autocvar_g_vehicle_spiderbot_minigun_enableballistics == 1) {
|
|
| 354 |
// Start Ballistic bullet |
|
| 355 |
|
|
| 356 |
fireBallisticBullet(v, v_forward, autocvar_g_vehicle_spiderbot_minigun_spread, autocvar_g_vehicle_spiderbot_minigun_speed, 5, autocvar_g_vehicle_spiderbot_minigun_damage, 0, autocvar_g_vehicle_spiderbot_minigun_force, DEATH_SBMINIGUN, 1, 1, autocvar_g_vehicle_spiderbot_minigun_bulletconstant); |
|
| 357 |
endFireBallisticBullet(); |
|
| 358 |
|
|
| 359 |
|
|
| 360 |
sound (gun, CH_WEAPON_A, "weapons/uzi_fire.wav", VOL_BASE, ATTN_NORM); |
|
| 361 | ||
| 362 |
// End Ballistic bullet |
|
| 363 |
} else {
|
|
| 364 |
|
|
| 345 | 365 |
fireBullet (v, v_forward, autocvar_g_vehicle_spiderbot_minigun_spread, autocvar_g_vehicle_spiderbot_minigun_damage, |
| 346 | 366 |
autocvar_g_vehicle_spiderbot_minigun_spread, DEATH_SBMINIGUN, 0); |
| 347 | ||
| 348 |
sound (gun, CH_WEAPON_A, "weapons/uzi_fire.wav", VOL_BASE, ATTN_NORM); |
|
| 367 |
|
|
| 368 |
sound (gun, CH_WEAPON_A, "weapons/uzi_fire.wav", VOL_BASE, ATTN_NORM); |
|
| 349 | 369 |
trailparticles(self, particleeffectnum("spiderbot_minigun_trail"), v, trace_endpos);
|
| 370 |
|
|
| 371 |
} |
|
| 372 |
|
|
| 373 | ||
| 374 |
|
|
| 350 | 375 |
pointparticles(particleeffectnum("spiderbot_minigun_muzzleflash"), v, v_forward * 2500, 1);
|
| 376 |
|
|
| 377 |
if (autocvar_g_vehicle_spiderbot_minigun_expelbulletcasings == 1) {
|
|
| 378 |
if (autocvar_g_casings >= 2) {
|
|
| 379 |
SpawnCasing (((random () * 50 + 50) * v_right) - |
|
| 380 |
(v_forward * (random () * 25 + 25)) - |
|
| 381 |
((random () * 5 - 70) * v_up), 2, |
|
| 382 |
vectoangles(v_forward),'0 250 0', 100, 3, self); |
|
| 383 |
} |
|
| 384 |
} |
|
| 351 | 385 | |
| 352 | 386 |
self = spider; |
| 353 | 387 | |
| b/qcsrc/server/vehicles/vehicles.qh | ||
|---|---|---|
| 5 | 5 |
#include "spiderbot.qc" |
| 6 | 6 |
#include "raptor.qc" |
| 7 | 7 |
//#include "bumblebee.qc" |
| 8 |
//#include "forklift.qc" |
|
| 8 | 9 |
#endif |
| b/qcsrc/server/w_all.qc | ||
|---|---|---|
| 19 | 19 |
#include "w_rifle.qc" |
| 20 | 20 |
#include "w_fireball.qc" |
| 21 | 21 |
#include "w_seeker.qc" |
| 22 |
#include "w_shotgunautomat.qc" |
|
| 23 |
#include "w_nukelayer.qc" |
|
| 24 |
#include "w_pistol.qc" |
|
| b/qcsrc/server/w_grenadelauncher.qc | ||
|---|---|---|
| 22 | 22 | |
| 23 | 23 |
RadiusDamage (self, self.realowner, autocvar_g_balance_grenadelauncher_primary_damage, autocvar_g_balance_grenadelauncher_primary_edgedamage, autocvar_g_balance_grenadelauncher_primary_radius, world, autocvar_g_balance_grenadelauncher_primary_force, self.projectiledeathtype, other); |
| 24 | 24 | |
| 25 |
//Start Grenade Fragmentation |
|
| 26 |
float sc; |
|
| 27 |
for (sc = 0;sc < autocvar_g_balance_grenadelauncher_primary_fragments;sc = sc + 1) {
|
|
| 28 |
|
|
| 29 |
fireBallisticBullet(self.origin,randomvec() * 10 * random(), 1, |
|
| 30 |
autocvar_g_balance_grenadelauncher_primary_fragment_speed, 5, |
|
| 31 |
autocvar_g_balance_grenadelauncher_primary_fragment_damage, |
|
| 32 |
autocvar_g_balance_grenadelauncher_primary_fragment_headshotbonus, |
|
| 33 |
autocvar_g_balance_grenadelauncher_primary_fragment_force, |
|
| 34 |
WEP_SHOTGUN, |
|
| 35 |
autocvar_g_balance_grenadelauncher_primary_fragment_tracer, |
|
| 36 |
autocvar_g_balance_grenadelauncher_primary_fragment_gravity, |
|
| 37 |
autocvar_g_balance_grenadelauncher_primary_fragment_bulletconstant); |
|
| 38 |
|
|
| 39 |
endFireBallisticBullet(); |
|
| 40 |
} |
|
| 41 |
//Finish Grenade Fragmentation |
|
| 42 | ||
| 25 | 43 |
remove (self); |
| 26 | 44 |
} |
| 27 | 45 | |
| ... | ... | |
| 42 | 60 | |
| 43 | 61 |
RadiusDamage (self, self.realowner, autocvar_g_balance_grenadelauncher_secondary_damage, autocvar_g_balance_grenadelauncher_secondary_edgedamage, autocvar_g_balance_grenadelauncher_secondary_radius, world, autocvar_g_balance_grenadelauncher_secondary_force, self.projectiledeathtype, other); |
| 44 | 62 | |
| 63 |
//Start Grenade Fragmentation |
|
| 64 |
float sc; |
|
| 65 |
for (sc = 0;sc < autocvar_g_balance_grenadelauncher_secondary_fragments;sc = sc + 1) {
|
|
| 66 |
|
|
| 67 |
fireBallisticBullet(self.origin,randomvec() * 10 * random(), 1, |
|
| 68 |
autocvar_g_balance_grenadelauncher_secondary_fragment_speed, 5, |
|
| 69 |
autocvar_g_balance_grenadelauncher_secondary_fragment_damage, |
|
| 70 |
autocvar_g_balance_grenadelauncher_secondary_fragment_headshotbonus, |
|
| 71 |
autocvar_g_balance_grenadelauncher_secondary_fragment_force, |
|
| 72 |
WEP_SHOTGUN, |
|
| 73 |
autocvar_g_balance_grenadelauncher_secondary_fragment_tracer, |
|
| 74 |
autocvar_g_balance_grenadelauncher_secondary_fragment_gravity, |
|
| 75 |
autocvar_g_balance_grenadelauncher_secondary_fragment_bulletconstant); |
|
| 76 |
|
|
| 77 |
endFireBallisticBullet(); |
|
| 78 |
} |
|
| 79 |
//Finish Grenade Fragmentation |
|
| 80 | ||
| 45 | 81 |
remove (self); |
| 46 | 82 |
} |
| 47 | 83 | |
| b/qcsrc/server/w_nukelayer.qc | ||
|---|---|---|
| 1 |
#ifdef REGISTER_WEAPON |
|
| 2 |
REGISTER_WEAPON(NUKE_LAYER, w_nukelayer, IT_ROCKETS, 4, WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "nukelayer", "nukelayer", _("Nuke Layer"))
|
|
| 3 |
#else |
|
| 4 |
#ifdef SVQC |
|
| 5 |
void W_Nuke_Think (void); |
|
| 6 |
.float nukelayer_detonate, nuke_explodeanyway; |
|
| 7 |
.float nuke_time; |
|
| 8 | ||
| 9 |
void spawnfunc_weapon_nukelayer (void) |
|
| 10 |
{
|
|
| 11 |
weapon_defaultspawnfunc(WEP_NUKE_LAYER); |
|
| 12 |
} |
|
| 13 | ||
| 14 |
void W_Nuke_Stick (entity to) |
|
| 15 |
{
|
|
| 16 |
spamsound (self, CH_SHOTS, "weapons/mine_stick.wav", VOL_BASE, ATTN_NORM); |
|
| 17 | ||
| 18 |
// in order for nukes to face properly when sticking to the ground, they must be a server side entity rather than a csqc projectile |
|
| 19 | ||
| 20 |
entity newnuke; |
|
| 21 |
newnuke = spawn(); |
|
| 22 |
newnuke.classname = self.classname; |
|
| 23 | ||
| 24 |
newnuke.bot_dodge = self.bot_dodge; |
|
| 25 |
newnuke.bot_dodgerating = self.bot_dodgerating; |
|
| 26 | ||
| 27 |
newnuke.owner = self.owner; |
|
| 28 |
newnuke.realowner = self.realowner; |
|
| 29 |
setsize(newnuke, '-4 -4 -4', '4 4 4'); |
|
| 30 |
setorigin(newnuke, self.origin); |
|
| 31 |
setmodel(newnuke, "models/nukemine.md3"); |
|
| 32 |
newnuke.angles = vectoangles(-trace_plane_normal); // face against the surface |
|
| 33 | ||
| 34 |
newnuke.oldvelocity = self.velocity; |
|
| 35 | ||
| 36 |
newnuke.takedamage = self.takedamage; |
|
| 37 |
newnuke.damageforcescale = self.damageforcescale; |
|
| 38 |
newnuke.health = self.health; |
|
| 39 |
newnuke.event_damage = self.event_damage; |
|
| 40 |
newnuke.spawnshieldtime = self.spawnshieldtime; |
|
| 41 | ||
| 42 |
newnuke.movetype = MOVETYPE_NONE; // lock the nuke in place |
|
| 43 |
newnuke.projectiledeathtype = self.projectiledeathtype; |
|
| 44 | ||
| 45 |
newnuke.nuke_time = self.nuke_time; |
|
| 46 | ||
| 47 |
newnuke.touch = SUB_Null; |
|
| 48 |
newnuke.think = W_Nuke_Think; |
|
| 49 |
newnuke.nextthink = time; |
|
| 50 |
newnuke.cnt = self.cnt; |
|
| 51 |
newnuke.flags = self.flags; |
|
| 52 | ||
| 53 |
remove(self); |
|
| 54 |
self = newnuke; |
|
| 55 | ||
| 56 |
if(to) |
|
| 57 |
SetMovetypeFollow(self, to); |
|
| 58 |
} |
|
| 59 | ||
| 60 |
void W_Nuke_Explode () |
|
| 61 |
{
|
|
| 62 |
if(other.takedamage == DAMAGE_AIM) |
|
| 63 |
if(other.classname == "player") |
|
| 64 |
if(IsDifferentTeam(self.realowner, other)) |
|
| 65 |
if(other.deadflag == DEAD_NO) |
|
| 66 |
if(IsFlying(other)) |
|
| 67 |
AnnounceTo(self.realowner, "airshot"); |
|
| 68 | ||
| 69 |
self.event_damage = SUB_Null; |
|
| 70 |
self.takedamage = DAMAGE_NO; |
|
| 71 | ||
| 72 |
RadiusDamage (self, self.realowner, autocvar_g_balance_nukelayer_damage, autocvar_g_balance_nukelayer_edgedamage, autocvar_g_balance_nukelayer_radius, world, autocvar_g_balance_nukelayer_force, self.projectiledeathtype, other); |
|
| 73 | ||
| 74 | ||
| 75 | ||
| 76 | ||
| 77 | ||
| 78 |
//Start Explosion Shockwave and fireball |
|
| 79 |
if (autocvar_g_balance_nukelayer_enableshockwave == 1) {
|
|
| 80 |
//if (autocvar_g_balance_nukelayer_radius > 8191) {
|
|
| 81 |
//modeleffect_spawn("models/sphere/hugesphere.obj", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.8, 0.05, 0.22);
|
|
| 82 |
//} else |
|
| 83 |
if (autocvar_g_balance_nukelayer_radius > 7999) {
|
|
| 84 |
//Tact Nuke Shockwaves |
|
| 85 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.2, 0.05, 0.08);
|
|
| 86 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 1, 0.05, 0.1);
|
|
| 87 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.9, 0.05, 0.12);
|
|
| 88 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.8, 0.05, 0.14);
|
|
| 89 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.7, 0.05, 0.16);
|
|
| 90 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.8, 0.05, 0.22);
|
|
| 91 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.6, 0.05, 0.32);
|
|
| 92 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.4, 0.05, 0.42);
|
|
| 93 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.2, 0.05, 0.52);
|
|
| 94 |
//Tact Nuke Fireballs |
|
| 95 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.8, 0.05, 0.6);
|
|
| 96 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.7, 0.05, 1.0);
|
|
| 97 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.6, 2, 2.0);
|
|
| 98 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.5, 3, 3.0);
|
|
| 99 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.4, 4, 4.0);
|
|
| 100 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.3, 5, 5.0);
|
|
| 101 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.2, 6, 6.0);
|
|
| 102 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.1, 7, 7.0);
|
|
| 103 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.05, 8, 8.0);
|
|
| 104 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.025, 9, 9.0);
|
|
| 105 |
|
|
| 106 |
} else if (autocvar_g_balance_nukelayer_radius > 5999) {
|
|
| 107 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.6, 0.05, 0.22);
|
|
| 108 |
//Secondary Fireball |
|
| 109 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.60, 0.05, 0.4);
|
|
| 110 |
|
|
| 111 |
} else if (autocvar_g_balance_nukelayer_radius > 3999) {
|
|
| 112 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.4, 0.05, 0.22);
|
|
| 113 |
|
|
| 114 |
} else if (autocvar_g_balance_nukelayer_radius > 1999) {
|
|
| 115 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.2, 0.05, 0.22);
|
|
| 116 |
|
|
| 117 |
} else if (autocvar_g_balance_nukelayer_radius > 499) {
|
|
| 118 |
//Pushes vapor away |
|
| 119 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.1, 0.05, 0.22);
|
|
| 120 |
|
|
| 121 |
} |
|
| 122 |
|
|
| 123 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_radius, 0.95, 0.05, 0.25);
|
|
| 124 |
|
|
| 125 |
} |
|
| 126 |
//End Explosion Shockwave and Fireball |
|
| 127 | ||
| 128 | ||
| 129 | ||
| 130 | ||
| 131 | ||
| 132 |
if (self.realowner.weapon == WEP_NUKE_LAYER) |
|
| 133 |
{
|
|
| 134 |
entity oldself; |
|
| 135 |
oldself = self; |
|
| 136 |
self = self.realowner; |
|
| 137 |
if (!weapon_action(WEP_NUKE_LAYER, WR_CHECKAMMO1)) |
|
| 138 |
{
|
|
| 139 |
self.cnt = WEP_NUKE_LAYER; |
|
| 140 |
ATTACK_FINISHED(self) = time; |
|
| 141 |
self.switchweapon = w_getbestweapon(self); |
|
| 142 |
} |
|
| 143 |
self = oldself; |
|
| 144 |
} |
|
| 145 |
self.realowner.nukelayer_nukes -= 1; |
|
| 146 |
remove (self); |
|
| 147 |
} |
|
| 148 | ||
| 149 |
void W_Nuke_DoRemoteExplode () |
|
| 150 |
{
|
|
| 151 |
self.event_damage = SUB_Null; |
|
| 152 |
self.takedamage = DAMAGE_NO; |
|
| 153 | ||
| 154 |
if(self.movetype == MOVETYPE_NONE || self.movetype == MOVETYPE_FOLLOW) |
|
| 155 |
self.velocity = self.oldvelocity; |
|
| 156 | ||
| 157 |
RadiusDamage (self, self.realowner, autocvar_g_balance_nukelayer_remote_damage, autocvar_g_balance_nukelayer_remote_edgedamage, autocvar_g_balance_nukelayer_remote_radius, world, autocvar_g_balance_nukelayer_remote_force, self.projectiledeathtype | HITTYPE_BOUNCE, world); |
|
| 158 | ||
| 159 | ||
| 160 | ||
| 161 | ||
| 162 |
//Start Explosion Shockwave and fireball |
|
| 163 |
if (autocvar_g_balance_nukelayer_enableshockwave == 1) {
|
|
| 164 |
//if (autocvar_g_balance_nukelayer_remote_radius > 8191) {
|
|
| 165 |
//modeleffect_spawn("models/sphere/hugesphere.obj", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.8, 0.05, 0.22);
|
|
| 166 |
//} else |
|
| 167 |
if (autocvar_g_balance_nukelayer_remote_radius > 7999) {
|
|
| 168 |
//Tact Nuke Shockwaves |
|
| 169 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.2, 0.05, 0.08);
|
|
| 170 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 1, 0.05, 0.1);
|
|
| 171 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.9, 0.05, 0.12);
|
|
| 172 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.8, 0.05, 0.14);
|
|
| 173 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.7, 0.05, 0.16);
|
|
| 174 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.8, 0.05, 0.22);
|
|
| 175 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.6, 0.05, 0.32);
|
|
| 176 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.4, 0.05, 0.42);
|
|
| 177 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.2, 0.05, 0.52);
|
|
| 178 |
//Tact Nuke Fireballs |
|
| 179 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.8, 0.05, 0.6);
|
|
| 180 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.7, 0.05, 1.0);
|
|
| 181 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.6, 2, 2.0);
|
|
| 182 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.5, 3, 3.0);
|
|
| 183 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.4, 4, 4.0);
|
|
| 184 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.3, 5, 5.0);
|
|
| 185 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.2, 6, 6.0);
|
|
| 186 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.1, 7, 7.0);
|
|
| 187 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.05, 8, 8.0);
|
|
| 188 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.025, 9, 9.0);
|
|
| 189 |
|
|
| 190 |
} else if (autocvar_g_balance_nukelayer_remote_radius > 5999) {
|
|
| 191 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.6, 0.05, 0.22);
|
|
| 192 |
//Secondary Fireball |
|
| 193 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.60, 0.05, 0.4);
|
|
| 194 |
|
|
| 195 |
} else if (autocvar_g_balance_nukelayer_remote_radius > 3999) {
|
|
| 196 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.4, 0.05, 0.22);
|
|
| 197 |
|
|
| 198 |
} else if (autocvar_g_balance_nukelayer_remote_radius > 1999) {
|
|
| 199 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.2, 0.05, 0.22);
|
|
| 200 |
|
|
| 201 |
} else if (autocvar_g_balance_nukelayer_remote_radius > 499) {
|
|
| 202 |
//Pushes vapor away |
|
| 203 |
modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.1, 0.05, 0.22);
|
|
| 204 |
|
|
| 205 |
} |
|
| 206 |
|
|
| 207 |
modeleffect_spawn("models/sphere/sphexp.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, autocvar_g_balance_nukelayer_remote_radius, 0.95, 0.05, 0.25);
|
|
| 208 |
|
|
| 209 |
} |
|
| 210 |
//End Explosion Shockwave and Fireball |
|
| 211 |
|
|
| 212 |
|
|
| 213 |
|
|
| 214 |
|
|
| 215 |
if (self.realowner.weapon == WEP_NUKE_LAYER) |
|
| 216 |
{
|
|
| 217 |
entity oldself; |
|
| 218 |
oldself = self; |
|
| 219 |
self = self.realowner; |
|
| 220 |
if (!weapon_action(WEP_NUKE_LAYER, WR_CHECKAMMO1)) |
|
| 221 |
{
|
|
| 222 |
self.cnt = WEP_NUKE_LAYER; |
|
| 223 |
ATTACK_FINISHED(self) = time; |
|
| 224 |
self.switchweapon = w_getbestweapon(self); |
|
| 225 |
} |
|
| 226 |
self = oldself; |
|
| 227 |
} |
|
| 228 |
self.realowner.nukelayer_nukes -= 1; |
|
| 229 |
remove (self); |
|
| 230 |
} |
|
| 231 | ||
| 232 |
void W_Nuke_RemoteExplode () |
|
| 233 |
{
|
|
| 234 |
if(self.realowner.deadflag == DEAD_NO) |
|
| 235 |
if((self.spawnshieldtime >= 0) |
|
| 236 |
? (time >= self.spawnshieldtime) // timer |
|
| 237 |
: (vlen(NearestPointOnBox(self.realowner, self.origin) - self.origin) > autocvar_g_balance_nukelayer_remote_radius) // safety device |
|
| 238 |
) |
|
| 239 |
{
|
|
| 240 |
W_Nuke_DoRemoteExplode(); |
|
| 241 |
} |
|
| 242 |
} |
|
| 243 | ||
| 244 |
void W_Nuke_ProximityExplode () |
|
| 245 |
{
|
|
| 246 |
// make sure no friend is in the nuke's radius. If there is any, explosion is delayed until he's at a safe distance |
|
| 247 |
if(autocvar_g_balance_nukelayer_protection && self.nuke_explodeanyway == 0) |
|
| 248 |
{
|
|
| 249 |
entity head; |
|
| 250 |
head = findradius(self.origin, autocvar_g_balance_nukelayer_radius); |
|
| 251 |
while(head) |
|
| 252 |
{
|
|
| 253 |
if(head == self.realowner || !IsDifferentTeam(head, self.realowner)) |
|
| 254 |
return; |
|