diff-xonotic-mod-dec_10_2011-3.diff

mikeeusa, 12/10/2011 09:40 am

Download (112.5 KB)

 
b/autoexec/chaos-esque_mod.cfg
1
//CHAOS-ESQUE mod for Xonotic
2
//by MikeeUSA
3
//(C) License: (same as Xonotic): Gnu GPL v2 or later 
4
set g_showweaponspawns 1
5

  
6
set g_antilag_bullets 0
7
set g_ballistics_force 1
8
set g_casings 2
9

  
10
exec vehicle_spiderbot.cfg
11
exec vehicle_racer.cfg
12
exec vehicle_raptor.cfg
13

  
14
//Main setting config for this mod
15
exec fastweap.cfg
16

  
17
//Looks like we're aming from the sholder, all tacticool,
18
// also can see all the details on the sides of the guns, which is nice
19
// also can shoot crouched from behind cover without hitting the cover
20
exec shootfromrightshoulder.cfg
21

  
22
// When you die, you are dead on the floor
23
set g_respawn_ghosts 0
24

  
25
set g_projectiles_newton_style 2
26
set g_projectiles_newton_style_2_maxfactor 1000000
27
//0.01 causes nades to shoot many of it's projectiles downward
28
set g_projectiles_newton_style_2_minfactor 0.8
29

  
30
//So we may use the new weapons:
31
set g_weaponreplace_uzi "uzi uzi shotgunautomat"
32
set g_weaponreplace_nex "nex nex rifle"
33
set g_weaponreplace_rifle "rifle rifle minstanex"
34
set g_weaponreplace_hagar "hagar hagar minelayer"
35
set g_weaponreplace_minelayer "minelayer minelayer porto"
36
set g_weaponreplace_electro "electro electro fireball"
37
set g_weaponreplace_rocketlauncher "rocketlauncher rocketlauncher seeker"
38

  
39
//Give everyone a pistol at start too
40
set g_start_weapon_pistol 1
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 250
286
set g_balance_minelayer_edgedamage 20
287
set g_balance_minelayer_remotedamage 120
288
set g_balance_minelayer_ammo 4
289
set g_balance_minelayer_reload_ammo 0 // 40 if one wants to reload after 10
290
set g_balance_minelayer_reload_time 1.25
291
set g_balance_minelayer_persistent 1
292

  
293
set g_balance_fireball_primary_damagetime 9
294
set g_balance_fireball_primary_lifetime 10
295
set g_balance_fireball_primary_refire 0.5
296
set g_balance_fireball_primary_laserradius 256
297
set g_balance_fireball_secondary_edgedamage 20
298
set g_balance_fireball_secondary_damage 120
299
set g_balance_fireball_secondary_laserradius 192
300
set g_balance_fireball_secondary_lifetime 30
301
set g_balance_fireball_secondary_refire 0.9
302

  
303
//##Mod, pistol
304
// {{{ pistol
305
exec pistol.cfg
306
set g_balance_pistol_bursttime 0
307
set g_balance_pistol_primary_tracer 0 //bullet too slow for tracer
308
set g_balance_pistol_primary_shots 1
309
set g_balance_pistol_primary_damage 14 //same as uzi, same ammo
310
set g_balance_pistol_primary_headshotaddeddamage 80
311
set g_balance_pistol_primary_spread 0.02
312
set g_balance_pistol_primary_force 20
313
set g_balance_pistol_primary_speed 16000 //reduced from uzi due to shorter barrel
314
set g_balance_pistol_primary_lifetime 5
315
set g_balance_pistol_primary_refire 0.2
316
set g_balance_pistol_primary_animtime 0.2
317
set g_balance_pistol_primary_ammo 1
318
set g_balance_pistol_primary_bulletconstant 115
319
set g_balance_pistol_primary_burstcost 0
320
set g_balance_pistol_primary_bullethail 0 // empty magazine on shot
321
set g_balance_pistol_secondary 1
322
set g_balance_pistol_secondary_reload 0
323
set g_balance_pistol_secondary_tracer 0
324
set g_balance_pistol_secondary_shots 1
325
set g_balance_pistol_secondary_damage 10
326
set g_balance_pistol_secondary_headshotaddeddamage 80
327
set g_balance_pistol_secondary_spread 0.06
328
set g_balance_pistol_secondary_force 20
329
set g_balance_pistol_secondary_speed 16000
330
set g_balance_pistol_secondary_lifetime 5
331
set g_balance_pistol_secondary_refire 0.05
332
set g_balance_pistol_secondary_animtime 0.05
333
set g_balance_pistol_secondary_ammo 1
334
set g_balance_pistol_secondary_bulletconstant 115
335
set g_balance_pistol_secondary_burstcost 0
336
set g_balance_pistol_secondary_bullethail 0 // empty magazine on shot
337
set g_balance_pistol_reload_ammo 10 //default: 10
338
set g_balance_pistol_reload_time 2
339
// }}}
340

  
341
//1 q-unit
342
//set g_ballistics_mindistance 1
343
//0 q-unit
344
set g_ballistics_mindistance 0
345

  
346
//set g_casings 2
347
set g_antilag_bullets 0
348

  
349
////Vehicle stuff
350

  
351
//Spiderbot: Anti armor 20 mm gatling gun cannons, Anti-personell rockets.
352
set g_vehicle_spiderbot_health            10600
353
set g_vehicle_spiderbot_rocket_damage     250
354
set g_vehicle_spiderbot_rocket_edgedamage 150
355
set g_vehicle_spiderbot_rocket_force      200
356
set g_vehicle_spiderbot_rocket_radius     300
357
set g_vehicle_spiderbot_rocket_speed      1800
358
set g_vehicle_spiderbot_crush_dmg         100
359
set g_vehicle_spiderbot_health_regen              20
360

  
361
set g_vehicle_spiderbot_minigun_refire    0.01
362
set g_vehicle_spiderbot_minigun_damage    50          // 20mm shells do damage.
363

  
364
set g_vehicle_spiderbot_minigun_expelbulletcasings 1
365
set g_vehicle_spiderbot_minigun_enableballistics 1
366
set g_vehicle_spiderbot_minigun_speed 48000 
367
set g_vehicle_spiderbot_minigun_force 4
368
set g_vehicle_spiderbot_minigun_bulletconstant 470    // 20mm shells are good penetrators.
369

  
370
//Raptor flying vehicle: good for destroying ground troops (energy cannon) and spiderbot formations (bomblets)
371
set g_vehicle_raptor_bomblets           66
372
set g_vehicle_raptor_bomblet_alt        2200
373
set g_vehicle_raptor_bomblet_time       0.1
374
set g_vehicle_raptor_bomblet_spread     0.65
375
set g_vehicle_raptor_bomblet_damage     300
376
set g_vehicle_raptor_bomblet_edgedamage 150
377
set g_vehicle_raptor_bomblet_radius     600
378
set g_vehicle_raptor_bomblet_force      300
379
set g_vehicle_raptor_bombs_refire       6
380

  
381
set g_vehicle_raptor_cannon_cost     6
382
set g_vehicle_raptor_cannon_damage   60
383
set g_vehicle_raptor_cannon_radius   45
384
set g_vehicle_raptor_cannon_refire   0.0025
385
set g_vehicle_raptor_cannon_speed    9000
386
set g_vehicle_raptor_cannon_spread   0.0125
387

  
388
set g_vehicle_raptor_energy             840
389
set g_vehicle_raptor_energy_regen       40
390
set g_vehicle_raptor_energy_regen_pause 1
391

  
392
set g_vehicle_raptor_health             800
393
set g_vehicle_raptor_health_regen       0
394
set g_vehicle_raptor_health_regen_pause 0
395

  
396
//Raptor misc
397
set g_vehicle_raptor_guns_turnspeed 90
398
set g_vehicle_raptor_guns_turnlimit 20
399
set g_vehicle_raptor_guns_pitchlimit_up   12
400
set g_vehicle_raptor_guns_pitchlimit_down 32
401

  
402
set g_vehicle_raptor_movestyle 1
403

  
404
set g_vehicle_raptor_turnroll 0.1
405

  
406
set g_vehicle_raptor_turnspeed 70
407
set g_vehicle_raptor_pitchspeed 30
408
set g_vehicle_raptor_pitchlimit 35
409

  
410
set g_vehicle_raptor_speed_forward 1000
411
set g_vehicle_raptor_speed_strafe 750
412
set g_vehicle_raptor_speed_up 600
413
set g_vehicle_raptor_speed_down 900
414
set g_vehicle_raptor_friction 0.7
415

  
416
set g_vehicle_raptor_cannon_locktarget 1
417
set g_vehicle_raptor_cannon_locking_time 0.5
418
set g_vehicle_raptor_cannon_locking_releasetime 0.5
419
set g_vehicle_raptor_cannon_locked_time 1
420
set g_vehicle_raptor_cannon_predicttarget 1
421

  
422
set g_vehicle_racer_laser_refire 0.065
423
set g_vehicle_racer_laser_damage 30
424

  
425
set g_balance_rocketlauncher_enableshockwave 1
426
set g_vehicle_raptor_bomblet_explode_enableshockwave 1
427

  
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
1199 1199
float autocvar_sv_gameplayfix_gravityunaffectedbyticrate;
1200 1200
float autocvar_g_trueaim_minrange;
1201 1201
float autocvar_g_debug_defaultsounds;
1202

  
1203
float autocvar_g_balance_shotgunautomat_primary_ammo;
1204
float autocvar_g_balance_shotgunautomat_primary_animtime;
1205
float autocvar_g_balance_shotgunautomat_primary_bulletconstant;
1206
float autocvar_g_balance_shotgunautomat_primary_bullets;
1207
float autocvar_g_balance_shotgunautomat_primary_damage;
1208
float autocvar_g_balance_shotgunautomat_primary_force;
1209
float autocvar_g_balance_shotgunautomat_primary_refire;
1210
float autocvar_g_balance_shotgunautomat_primary_speed;
1211
float autocvar_g_balance_shotgunautomat_primary_spread;
1212

  
1213
float autocvar_g_balance_shotgunautomat_secondary_ammo;
1214
float autocvar_g_balance_shotgunautomat_secondary_animtime;
1215
float autocvar_g_balance_shotgunautomat_secondary_bulletconstant;
1216
float autocvar_g_balance_shotgunautomat_secondary_bullets;
1217
float autocvar_g_balance_shotgunautomat_secondary_damage;
1218
float autocvar_g_balance_shotgunautomat_secondary_force;
1219
float autocvar_g_balance_shotgunautomat_secondary_refire;
1220
float autocvar_g_balance_shotgunautomat_secondary_speed;
1221
float autocvar_g_balance_shotgunautomat_secondary_spread;
1222

  
1223
float autocvar_g_balance_shotgunautomat_secondary;
1224
float autocvar_g_balance_shotgunautomat_secondary_melee_delay;
1225
float autocvar_g_balance_shotgunautomat_secondary_melee_range;
1226
float autocvar_g_balance_shotgunautomat_secondary_melee_swing;
1227
float autocvar_g_balance_shotgunautomat_secondary_melee_time;
1228
float autocvar_g_balance_shotgunautomat_secondary_melee_no_doubleslap;
1229
float autocvar_g_balance_shotgunautomat_reload_ammo;
1230
float autocvar_g_balance_shotgunautomat_reload_time;
1231

  
1232
float autocvar_g_balance_nukelayer_ammo;
1233
float autocvar_g_balance_nukelayer_animtime;
1234
float autocvar_g_balance_nukelayer_damage;
1235
float autocvar_g_balance_nukelayer_damageforcescale;
1236
float autocvar_g_balance_nukelayer_detonatedelay;
1237
float autocvar_g_balance_nukelayer_edgedamage;
1238
float autocvar_g_balance_nukelayer_force;
1239
float autocvar_g_balance_nukelayer_health;
1240
float autocvar_g_balance_nukelayer_lifetime;
1241
float autocvar_g_balance_nukelayer_lifetime_countdown;
1242
float autocvar_g_balance_nukelayer_limit;
1243
float autocvar_g_balance_nukelayer_protection;
1244
float autocvar_g_balance_nukelayer_proximityradius;
1245
float autocvar_g_balance_nukelayer_radius;
1246
float autocvar_g_balance_nukelayer_refire;
1247
float autocvar_g_balance_nukelayer_remote_damage;
1248
float autocvar_g_balance_nukelayer_remote_edgedamage;
1249
float autocvar_g_balance_nukelayer_remote_force;
1250
float autocvar_g_balance_nukelayer_remote_radius;
1251
float autocvar_g_balance_nukelayer_speed;
1252
float autocvar_g_balance_nukelayer_time;
1253
float autocvar_g_balance_nukelayer_reload_ammo;
1254
float autocvar_g_balance_nukelayer_reload_time;
1255
float autocvar_g_balance_nukelayer_enableshockwave;
1256

  
1257
float autocvar_g_balance_rocketlauncher_enableshockwave;
1258

  
1259
float autocvar_g_balance_grenadelauncher_primary_fragments;
1260
float autocvar_g_balance_grenadelauncher_primary_fragment_damage;
1261
float autocvar_g_balance_grenadelauncher_primary_fragment_speed;
1262
float autocvar_g_balance_grenadelauncher_primary_fragment_bulletconstant;
1263
float autocvar_g_balance_grenadelauncher_primary_fragment_headshotbonus;
1264
float autocvar_g_balance_grenadelauncher_primary_fragment_force;
1265
float autocvar_g_balance_grenadelauncher_primary_fragment_tracer;
1266
float autocvar_g_balance_grenadelauncher_primary_fragment_gravity;
1267

  
1268
float autocvar_g_balance_grenadelauncher_secondary_fragments;
1269
float autocvar_g_balance_grenadelauncher_secondary_fragment_damage;
1270
float autocvar_g_balance_grenadelauncher_secondary_fragment_speed;
1271
float autocvar_g_balance_grenadelauncher_secondary_fragment_bulletconstant;
1272
float autocvar_g_balance_grenadelauncher_secondary_fragment_headshotbonus;
1273
float autocvar_g_balance_grenadelauncher_secondary_fragment_force;
1274
float autocvar_g_balance_grenadelauncher_secondary_fragment_tracer;
1275
float autocvar_g_balance_grenadelauncher_secondary_fragment_gravity;
1276

  
1277
float autocvar_g_balance_tuba_nogibs;
1278
float autocvar_g_balance_laser_nogibs;
1279
float autocvar_g_balance_nex_nogibs;
1280
float autocvar_g_balance_minstanex_nogibs;
1281
float autocvar_g_balance_crylink_nogibs;
1282
float autocvar_g_balance_electro_nogibs;
1283
float autocvar_g_balance_hlac_nogibs;
1284
float autocvar_g_balance_shotgun_nogibs;
1285
float autocvar_g_balance_rifle_nogibs;
1286
float autocvar_g_balance_uzi_nogibs;
1287
float autocvar_g_balance_rocketlauncher_nogibs;
1288
float autocvar_g_balance_grenadelauncher_nogibs;
1289
float autocvar_g_balance_hagar_nogibs;
1290
float autocvar_g_balance_minelayer_nogibs;
1291
float autocvar_g_balance_seeker_nogibs;
1292
float autocvar_g_balance_fireball_nogibs;
1293
	
1294
float autocvar_g_balance_shotgunautomat_nogibs;
1295
float autocvar_g_balance_nukelayer_nogibs;
1296
float autocvar_g_balance_pistol_nogibs;
1297
	
1298
float autocvar_sv_gibhealth_weapon_nogib_add;
1299

  
1300
float autocvar_g_balance_pistol_bursttime;
1301
float autocvar_g_balance_pistol_primary_ammo;
1302
float autocvar_g_balance_pistol_primary_animtime;
1303
float autocvar_g_balance_pistol_primary_bulletconstant;
1304
float autocvar_g_balance_pistol_primary_bullethail;
1305
float autocvar_g_balance_pistol_primary_burstcost;
1306
float autocvar_g_balance_pistol_primary_damage;
1307
float autocvar_g_balance_pistol_primary_force;
1308
float autocvar_g_balance_pistol_primary_headshotaddeddamage;
1309
float autocvar_g_balance_pistol_primary_lifetime;
1310
float autocvar_g_balance_pistol_primary_refire;
1311
float autocvar_g_balance_pistol_primary_shots;
1312
float autocvar_g_balance_pistol_primary_speed;
1313
float autocvar_g_balance_pistol_primary_spread;
1314
float autocvar_g_balance_pistol_primary_tracer;
1315
float autocvar_g_balance_pistol_secondary;
1316
float autocvar_g_balance_pistol_secondary_ammo;
1317
float autocvar_g_balance_pistol_secondary_animtime;
1318
float autocvar_g_balance_pistol_secondary_bulletconstant;
1319
float autocvar_g_balance_pistol_secondary_bullethail;
1320
float autocvar_g_balance_pistol_secondary_burstcost;
1321
float autocvar_g_balance_pistol_secondary_damage;
1322
float autocvar_g_balance_pistol_secondary_force;
1323
float autocvar_g_balance_pistol_secondary_headshotaddeddamage;
1324
float autocvar_g_balance_pistol_secondary_lifetime;
1325
float autocvar_g_balance_pistol_secondary_reload;
1326
float autocvar_g_balance_pistol_secondary_refire;
1327
float autocvar_g_balance_pistol_secondary_shots;
1328
float autocvar_g_balance_pistol_secondary_speed;
1329
float autocvar_g_balance_pistol_secondary_spread;
1330
float autocvar_g_balance_pistol_secondary_tracer;
1331
float autocvar_g_balance_pistol_reload_ammo;
1332
float autocvar_g_balance_pistol_reload_time;
1333

  
1334
float autocvar_g_balance_uzi_sustained_headshotaddeddamage;
1335
float autocvar_g_balance_uzi_first_headshotaddeddamage;
1336

  
1202 1337
float autocvar_g_loituma;
1338

  
1339
float autocvar_g_balance_minelayer_persistent;
1340

  
1203 1341
float autocvar_g_grab_range;
1204 1342
float autocvar_g_sandbox_info;
1205 1343
float autocvar_g_sandbox_readonly;
b/qcsrc/server/cl_client.qc
2255 2255
	self.nex_chargepool_ammo = spectatee.nex_chargepool_ammo;
2256 2256
	self.hagar_load = spectatee.hagar_load;
2257 2257
	self.minelayer_mines = spectatee.minelayer_mines;
2258
	self.nukelayer_nukes = spectatee.nukelayer_nukes;
2258 2259
	self.punchangle = spectatee.punchangle;
2259 2260
	self.view_ofs = spectatee.view_ofs;
2260 2261
	self.v_angle = spectatee.v_angle;
b/qcsrc/server/cl_player.qc
386 386
	self.dmg_take = self.dmg_take + take;//max(take - 10, 0);
387 387
	self.dmg_inflictor = inflictor;
388 388

  
389
	if (self.health <= -autocvar_sv_gibhealth && self.modelindex != 0)
389
	//print(sprintf("Gib Health: %v\n", self.health));
390
	//This code allows the server to set which weapons can gib and which never gib.
391
	//I grouped the weapons mostly by ammo type, leaving one group for my own weapons.
392
	//The last weapon is the fireball so that one can easily delete references to my weapons if desired.
393
	//Turning off gibbing on the shotgun doesn't work, it seems the last pellet or so are not tracked properly.
394
	//This is perhaps a bug in the ballistic bullet code, but perhaps not as uzi and rifle work fine, however they
395
	//are much slower in spawing ballisticbullets than the shotgun (which spawns many almost all at once).
396
	//Crylink can also eventually gib, but it takes many many shots, with this off it gibs quickly, I'm guessing
397
	//that there is a race condition between DEATH_ISWEAPON and the dmg code, I'm not sure.
398
	//The RocketLauncher and GrenadeLauncher seem to gib regardless.
399
	//I suggest turning off gibbing on the uzi and rifle, perhaps on the crylink and other energy weapons
400
	//This way gibbing is special for powerful weapons that provide the needed shearing force (Explosives, etc)
401
	if (
402
	(self.health <= -autocvar_sv_gibhealth && self.modelindex != 0) &&
403
	!( DEATH_ISWEAPON(deathtype, WEP_TUBA) && autocvar_g_balance_tuba_nogibs) &&
404
	!( DEATH_ISWEAPON(deathtype, WEP_LASER) && autocvar_g_balance_laser_nogibs) &&
405
	
406
	!( DEATH_ISWEAPON(deathtype, WEP_NEX) && autocvar_g_balance_nex_nogibs) &&
407
	!( DEATH_ISWEAPON(deathtype, WEP_MINSTANEX) && autocvar_g_balance_minstanex_nogibs) &&
408
	!( DEATH_ISWEAPON(deathtype, WEP_CRYLINK) && autocvar_g_balance_crylink_nogibs) &&
409
	!( DEATH_ISWEAPON(deathtype, WEP_ELECTRO) && autocvar_g_balance_electro_nogibs) &&
410
	!( DEATH_ISWEAPON(deathtype, WEP_HLAC) && autocvar_g_balance_hlac_nogibs) &&
411
	
412
	!( DEATH_ISWEAPON(deathtype, WEP_SHOTGUN) && autocvar_g_balance_shotgun_nogibs) &&
413
	
414
	!( DEATH_ISWEAPON(deathtype, WEP_RIFLE) && autocvar_g_balance_rifle_nogibs) &&
415
	!( DEATH_ISWEAPON(deathtype, WEP_UZI) && autocvar_g_balance_uzi_nogibs) &&
416
	
417
	!( DEATH_ISWEAPON(deathtype, WEP_ROCKET_LAUNCHER) && autocvar_g_balance_rocketlauncher_nogibs) &&
418
	!( DEATH_ISWEAPON(deathtype, WEP_GRENADE_LAUNCHER) && autocvar_g_balance_grenadelauncher_nogibs) &&
419
	!( DEATH_ISWEAPON(deathtype, WEP_HAGAR) && autocvar_g_balance_hagar_nogibs) &&
420
	!( DEATH_ISWEAPON(deathtype, WEP_SEEKER) && autocvar_g_balance_seeker_nogibs) &&
421
	!( DEATH_ISWEAPON(deathtype, WEP_MINE_LAYER) && autocvar_g_balance_minelayer_nogibs) &&
422
	
423
	!( DEATH_ISWEAPON(deathtype, WEP_SHOTGUNAUTOMAT) && autocvar_g_balance_shotgunautomat_nogibs) &&
424
	!( DEATH_ISWEAPON(deathtype, WEP_NUKE_LAYER) && autocvar_g_balance_nukelayer_nogibs) &&
425
	!( DEATH_ISWEAPON(deathtype, WEP_PISTOL) && autocvar_g_balance_pistol_nogibs) &&
426
	
427
	!( DEATH_ISWEAPON(deathtype, WEP_FIREBALL) && autocvar_g_balance_fireball_nogibs)
428
	)
390 429
	{
391 430
		// don't use any animations as a gib
392 431
		self.frame = 0;
......
397 436
		Violence_GibSplash(self, 1, 1, attacker);
398 437
		self.modelindex = 0; // restore later
399 438
		self.solid = SOLID_NOT; // restore later
439
	} else if (self.health <= -autocvar_sv_gibhealth && self.modelindex != 0) {
440
		//print("No Gib tripped\n");
441
		//If we failed the first test due solely to the weapon being used on the corpse 
442
		//being set to nogib, but for all other reasons gibbing should occur
443
		//Let us give health back to the gib to make sure that it does not gib due to
444
		//the nogib weapon pushing it against a wall.
445
		self.health = -1;
446
		
447
		//We will allow the server admin to set how much health to add to such a gib, to make it resilient
448
		//so that it will not be easily destroyed. By default, nothing.
449
		self.health = self.health + autocvar_sv_gibhealth_weapon_nogib_add;
400 450
	}
401 451
}
402 452

  
b/qcsrc/server/defs.qh
617 617
.float old_clip_load;
618 618
.float clip_size;
619 619
.float minelayer_mines;
620
.float nukelayer_nukes;
620 621

  
621 622
.float grab; // 0 = can't grab, 1 = owner can grab, 2 = owner and team mates can grab, 3 = anyone can grab
622 623

  
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_minelayer.qc
184 184

  
185 185
	// a player's mines shall explode if he disconnects or dies
186 186
	// TODO: Do this on team change too -- Samual: But isn't a player killed when they switch teams?
187
	if(self.realowner.classname != "player" || self.realowner.deadflag != DEAD_NO)
187
	if((self.realowner.classname != "player" || self.realowner.deadflag != DEAD_NO)
188
		&& autocvar_g_balance_minelayer_persistent != 1)
188 189
	{
189 190
		other = world;
190 191
		self.projectiledeathtype |= HITTYPE_BOUNCE;
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);
... This diff was truncated because it exceeds the maximum size that can be displayed.