diff-xonotic-mod-dec_5_2011.diff

mikeeusa, 12/05/2011 08:00 pm

Download (109.3 KB)

 
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;
... This diff was truncated because it exceeds the maximum size that can be displayed.