]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'fruitiex/newpanelhud' into fruitiex/fruitbalance
authorFruitieX <rasse@rasse-lappy.localdomain>
Fri, 9 Jul 2010 19:41:59 +0000 (22:41 +0300)
committerFruitieX <rasse@rasse-lappy.localdomain>
Fri, 9 Jul 2010 19:41:59 +0000 (22:41 +0300)
balance.cfg
balance25.cfg
balanceFruit.cfg
balanceSamual.cfg
balanceXPM.cfg
defaultXPM.cfg
effectinfo.txt
qcsrc/server/autocvars.qh
qcsrc/server/w_electro.qc
qcsrc/server/w_grenadelauncher.qc
qcsrc/server/w_laser.qc

index 156b69aed586e61776ebd45bc3dc5ee7035f6e99..e824e271ba095c3aa0063f6de66215e74e805bc0 100644 (file)
@@ -269,6 +269,7 @@ set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary2secondary 0
+set g_balance_grenadelauncher_primary_sticky 0
 set g_balance_grenadelauncher_primary_damage 70
 set g_balance_grenadelauncher_primary_edgedamage 38
 set g_balance_grenadelauncher_primary_force 400
@@ -278,9 +279,11 @@ set g_balance_grenadelauncher_primary_speed_up 200
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
 set g_balance_grenadelauncher_primary_lifetime 30
+set g_balance_grenadelauncher_primary_lifetime2 1
 set g_balance_grenadelauncher_primary_refire 0.8
 set g_balance_grenadelauncher_primary_animtime 0.3
 set g_balance_grenadelauncher_primary_ammo 2
+set g_balance_grenadelauncher_primary_health 25
 set g_balance_grenadelauncher_secondary_damage 70
 set g_balance_grenadelauncher_secondary_edgedamage 38
 set g_balance_grenadelauncher_secondary_force 400
index a4369249fad75c47203fb17c752354c91dcf8677..963e94153b725e08bbce9a14664edcb0289e8080 100644 (file)
@@ -269,6 +269,7 @@ set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary2secondary 0
+set g_balance_grenadelauncher_primary_sticky 0
 set g_balance_grenadelauncher_primary_damage 70
 set g_balance_grenadelauncher_primary_edgedamage 38
 set g_balance_grenadelauncher_primary_force 400
@@ -278,9 +279,11 @@ set g_balance_grenadelauncher_primary_speed_up 200
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
 set g_balance_grenadelauncher_primary_lifetime 30
+set g_balance_grenadelauncher_primary_lifetime2 1
 set g_balance_grenadelauncher_primary_refire 0.8
 set g_balance_grenadelauncher_primary_animtime 0.3
 set g_balance_grenadelauncher_primary_ammo 2
+set g_balance_grenadelauncher_primary_health 25
 set g_balance_grenadelauncher_secondary_damage 70
 set g_balance_grenadelauncher_secondary_edgedamage 38
 set g_balance_grenadelauncher_secondary_force 400
index 415a45808426df32717ab3684ff11492f19b0cc4..a591ae3883b33da6e9b61ccacdfda9487aab0274 100644 (file)
@@ -139,7 +139,7 @@ set g_balance_fuel_limit 999
 
 // {{{ misc
 set g_balance_selfdamagepercent 0.65
-set g_balance_weaponswitchdelay 0.15
+set g_balance_weaponswitchdelay 0.1
 set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
 set g_weaponratefactor 1 "weapon fire rate multiplier"
 set g_weapondamagefactor 1 "weapon damage multiplier"
@@ -149,7 +149,7 @@ set g_balance_firetransfer_time 0.9
 set g_balance_firetransfer_damage 0.8
 set g_throughfloor_damage 0.5
 set g_throughfloor_force 0.7
-set g_projectiles_newton_style 2
+set g_projectiles_newton_style 0
 // possible values:
 // 0: absolute velocity projectiles (like Quake)
 // 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
@@ -206,14 +206,14 @@ set g_balance_grapplehook_health 130
 
 // {{{ weapon properties
 // {{{ laser
-set g_balance_laser_primary_damage 22
+set g_balance_laser_primary_damage 10
 set g_balance_laser_primary_edgedamage 0
-set g_balance_laser_primary_force 200
-set g_balance_laser_primary_radius 60
+set g_balance_laser_primary_force 75
+set g_balance_laser_primary_radius 10
 set g_balance_laser_primary_speed 0
 set g_balance_laser_primary_spread 0
-set g_balance_laser_primary_refire 0.1
-set g_balance_laser_primary_animtime 0.1
+set g_balance_laser_primary_refire 0.066
+set g_balance_laser_primary_animtime 0.066
 set g_balance_laser_primary_lifetime 0
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0
@@ -226,7 +226,7 @@ set g_balance_laser_secondary_radius 70
 set g_balance_laser_secondary_speed 9000
 set g_balance_laser_secondary_spread 0
 set g_balance_laser_secondary_refire 0.7
-set g_balance_laser_secondary_animtime 0.3
+set g_balance_laser_secondary_animtime 0
 set g_balance_laser_secondary_lifetime 30
 set g_balance_laser_secondary_shotangle 0
 set g_balance_laser_secondary_delay 0
@@ -237,7 +237,7 @@ set g_balance_shotgun_primary_damage 7
 set g_balance_shotgun_primary_force 20
 set g_balance_shotgun_primary_spread 0.16
 set g_balance_shotgun_primary_refire 1
-set g_balance_shotgun_primary_animtime 0.7
+set g_balance_shotgun_primary_animtime 0.4
 set g_balance_shotgun_primary_ammo 1
 set g_balance_shotgun_primary_speed 12000
 set g_balance_shotgun_primary_bulletconstant 75 // 3.8qu
@@ -254,12 +254,12 @@ set g_balance_shotgun_secondary_bulletconstant 75 // 3.8qu
 // }}}
 // {{{ uzi
 set g_balance_uzi_first 1
-set g_balance_uzi_first_damage 24
+set g_balance_uzi_first_damage 14
 set g_balance_uzi_first_force 30
 set g_balance_uzi_first_spread 0.0125
 set g_balance_uzi_first_refire 0.2
 set g_balance_uzi_first_ammo 1
-set g_balance_uzi_sustained_damage 12
+set g_balance_uzi_sustained_damage 7
 set g_balance_uzi_sustained_force 20
 set g_balance_uzi_sustained_spread 0.0125
 set g_balance_uzi_sustained_refire 0.1
@@ -269,29 +269,32 @@ set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
 // {{{ mortar // TODO
 set g_balance_grenadelauncher_primary2secondary 0
-set g_balance_grenadelauncher_primary_damage 60
-set g_balance_grenadelauncher_primary_edgedamage 28
-set g_balance_grenadelauncher_primary_force 200
-set g_balance_grenadelauncher_primary_radius 140
-set g_balance_grenadelauncher_primary_speed 1200
-set g_balance_grenadelauncher_primary_speed_up 200
-set g_balance_grenadelauncher_primary_speed_z 0
+set g_balance_grenadelauncher_primary_sticky 1
+set g_balance_grenadelauncher_primary_damage 100
+set g_balance_grenadelauncher_primary_edgedamage 30
+set g_balance_grenadelauncher_primary_force 300
+set g_balance_grenadelauncher_primary_radius 240
+set g_balance_grenadelauncher_primary_speed 1000
+set g_balance_grenadelauncher_primary_speed_up 0
+set g_balance_grenadelauncher_primary_speed_z 200
 set g_balance_grenadelauncher_primary_spread 0
-set g_balance_grenadelauncher_primary_lifetime 10
+set g_balance_grenadelauncher_primary_lifetime 5
+set g_balance_grenadelauncher_primary_lifetime2 1
 set g_balance_grenadelauncher_primary_refire 0.8
-set g_balance_grenadelauncher_primary_animtime 0.5
+set g_balance_grenadelauncher_primary_animtime 0.2
 set g_balance_grenadelauncher_primary_ammo 2
-set g_balance_grenadelauncher_secondary_damage 65
+set g_balance_grenadelauncher_primary_health 25
+set g_balance_grenadelauncher_secondary_damage 100
 set g_balance_grenadelauncher_secondary_edgedamage 30
 set g_balance_grenadelauncher_secondary_force 300
 set g_balance_grenadelauncher_secondary_radius 200
-set g_balance_grenadelauncher_secondary_speed 800
+set g_balance_grenadelauncher_secondary_speed 600
 set g_balance_grenadelauncher_secondary_speed_up 0
 set g_balance_grenadelauncher_secondary_speed_z 200
 set g_balance_grenadelauncher_secondary_spread 0
-set g_balance_grenadelauncher_secondary_lifetime 2
+set g_balance_grenadelauncher_secondary_lifetime 1.5
 set g_balance_grenadelauncher_secondary_refire 0.8
-set g_balance_grenadelauncher_secondary_animtime 0.5
+set g_balance_grenadelauncher_secondary_animtime 0.2
 set g_balance_grenadelauncher_secondary_ammo 2
 set g_balance_grenadelauncher_secondary_health 0
 set g_balance_grenadelauncher_secondary_damageforcescale 0
@@ -299,18 +302,21 @@ set g_balance_grenadelauncher_secondary_bouncefactor 0.5
 set g_balance_grenadelauncher_secondary_bouncestop 0.075
 // }}}
 // {{{ electro // TODO
-set g_balance_electro_lightning 0
-set g_balance_electro_primary_damage 65
+set g_balance_electro_lightning 1
+set g_balance_electro_primary_damage 2
 set g_balance_electro_primary_edgedamage 0
-set g_balance_electro_primary_force 200
-set g_balance_electro_primary_radius 150
+set g_balance_electro_primary_force 13
+set g_balance_electro_primary_force_up 100
+set g_balance_electro_primary_radius 850
 set g_balance_electro_primary_comboradius 0
-set g_balance_electro_primary_speed 2000
+set g_balance_electro_primary_speed 0
 set g_balance_electro_primary_spread 0
-set g_balance_electro_primary_lifetime 30
-set g_balance_electro_primary_refire 0.6
-set g_balance_electro_primary_animtime 0.3
-set g_balance_electro_primary_ammo 2
+set g_balance_electro_primary_lifetime 0
+set g_balance_electro_primary_refire 0
+set g_balance_electro_primary_animtime 0
+set g_balance_electro_primary_ammo 0.66
+set g_balance_electro_primary_range 800
+set g_balance_electro_primary_velocityfactor 0.75
 set g_balance_electro_secondary_damage 50
 set g_balance_electro_secondary_spread 0.05
 set g_balance_electro_secondary_edgedamage 0
@@ -345,7 +351,7 @@ set g_balance_crylink_primary_spread 0.03
 set g_balance_crylink_primary_shots 4
 set g_balance_crylink_primary_bounces 1
 set g_balance_crylink_primary_refire 0.4
-set g_balance_crylink_primary_animtime 0.3
+set g_balance_crylink_primary_animtime 0.2
 set g_balance_crylink_primary_ammo 2
 set g_balance_crylink_primary_bouncedamagefactor 0.5
 
@@ -366,7 +372,7 @@ set g_balance_crylink_secondary_spread 0.04
 set g_balance_crylink_secondary_shots 7
 set g_balance_crylink_secondary_bounces 0
 set g_balance_crylink_secondary_refire 0.5
-set g_balance_crylink_secondary_animtime 0.3
+set g_balance_crylink_secondary_animtime 0.2
 set g_balance_crylink_secondary_ammo 2
 set g_balance_crylink_secondary_bouncedamagefactor 0.5
 
@@ -423,7 +429,7 @@ set g_balance_rocketlauncher_speedaccel 0
 set g_balance_rocketlauncher_speedstart 1000
 set g_balance_rocketlauncher_lifetime 30
 set g_balance_rocketlauncher_refire 1
-set g_balance_rocketlauncher_animtime 0.3
+set g_balance_rocketlauncher_animtime 0.2
 set g_balance_rocketlauncher_ammo 3
 set g_balance_rocketlauncher_health 0
 set g_balance_rocketlauncher_damageforcescale 0
@@ -505,7 +511,7 @@ set g_balance_campingrifle_magazinecapacity 8
 set g_balance_campingrifle_reloadtime 2 // matches reload anim
 set g_balance_campingrifle_auto_reload_after_changing_weapons 0
 set g_balance_campingrifle_bursttime 0
-set g_balance_campingrifle_tracer 0
+set g_balance_campingrifle_tracer 1
 set g_balance_campingrifle_primary_damage 60
 set g_balance_campingrifle_primary_headshotaddeddamage 100
 set g_balance_campingrifle_primary_spread 0
index 21242f16f0364632fbd0eaeb42bf0fba6d854283..2b716463eb9f298caa8105fa83d34fd8877ed09a 100644 (file)
@@ -269,6 +269,7 @@ set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary2secondary 0
+set g_balance_grenadelauncher_primary_sticky 0
 set g_balance_grenadelauncher_primary_damage 50
 set g_balance_grenadelauncher_primary_edgedamage 38
 set g_balance_grenadelauncher_primary_force 400
@@ -278,9 +279,11 @@ set g_balance_grenadelauncher_primary_speed_up 220
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
 set g_balance_grenadelauncher_primary_lifetime 30
+set g_balance_grenadelauncher_primary_lifetime2 1
 set g_balance_grenadelauncher_primary_refire 0.8
 set g_balance_grenadelauncher_primary_animtime 0.3
 set g_balance_grenadelauncher_primary_ammo 2
+set g_balance_grenadelauncher_primary_health 25
 set g_balance_grenadelauncher_secondary_damage 60
 set g_balance_grenadelauncher_secondary_edgedamage 38
 set g_balance_grenadelauncher_secondary_force 400
index bb0416a3418daac9523bfc87c806ba0c4054d29c..83bd146b09b345f0192f96dacff7a107a5e75d2f 100644 (file)
@@ -270,6 +270,7 @@ set g_balance_uzi_bulletconstant 115 // 13.1qu
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary2secondary 1
+set g_balance_grenadelauncher_primary_sticky 0
 set g_balance_grenadelauncher_primary_damage 60
 set g_balance_grenadelauncher_primary_edgedamage 10
 set g_balance_grenadelauncher_primary_force 250
@@ -279,9 +280,11 @@ set g_balance_grenadelauncher_primary_speed_up 200
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
 set g_balance_grenadelauncher_primary_lifetime 5
+set g_balance_grenadelauncher_primary_lifetime2 1
 set g_balance_grenadelauncher_primary_refire 0.7
 set g_balance_grenadelauncher_primary_animtime 0.3
 set g_balance_grenadelauncher_primary_ammo 2
+set g_balance_grenadelauncher_primary_health 25
 set g_balance_grenadelauncher_secondary_damage 65
 set g_balance_grenadelauncher_secondary_edgedamage 10
 set g_balance_grenadelauncher_secondary_force 300
index f480e22215a7ee43a9480584136a1f1f5a6b929b..3141a2409ce510d4a63d3de22a394148ea003a72 100644 (file)
@@ -19,5 +19,26 @@ set g_weaponreplace_fireball 0
 set g_weaponreplace_seeker 0
 set sv_q3acompat_machineshotgunswap 0
 
+// other options
+set sv_fragmessage_information_ping 1
+set sv_fragmessage_information_handicap 2
+set sv_fragmessage_information_stats 1
+set sv_fragmessage_information_typefrag 1
+
+set sv_defaultcharacter 1
+set sv_defaultplayermodel "models/player/nyx.iqm"
+set sv_defaultplayercolors 60 // force some visible color for now
+
+set g_jump_grunt 1
+set g_footsteps 1
+set g_shootfromcenter 1
+set g_fullbrightplayers 1 // until all models are visible with this set to 0
+set g_forced_respawn 1
+set g_mirrordamage 0
+set g_friendlyfire 1
+
+set timelimit_overtimes 1
+set timelimit_override 15 // for now, maybe not in future
+
 exec physicsXPM.cfg
-exec balanceXPM.cfg
+exec balanceFruit.cfg
index 53926a7a0b203cb37859fb8cc5a92443d0d15ee1..9f98d6af50f9585ea538cbafaac59c6db2dc53f8 100644 (file)
@@ -4743,19 +4743,82 @@ alpha 100 100 500
 // based off morphed's cl_gentle
 // used in qcsrc/server/w_laser.qc
 effect laser_gauntlet
+count 3
+type spark
+color 0xb44215 0x880000
 tex 43 43
-count 1.5
+size 7 10
+alpha 128 512 6280
+airfriction 10
+originjitter 2 2 2
+velocityjitter 150 150 150
+velocitymultiplier 0.2
+sizeincrease -100
+stretchfactor 2.3
+rotate -180 180 4000 -4000
+
+effect laser_gauntlet
+count 6
 type spark
-color 0xff00ff 0xff0000
-size 4 8
-sizeincrease 34
-alpha 128 128 292
-gravity 0
-airfriction 5
-liquidfriction 10
-velocityjitter 50 50 50
+color 0xff4200 0xff0000
+tex 8 15
+size 7 9
+alpha 256 512 6280
+airfriction 12
+originjitter 2 2 2
+velocityjitter 100 100 100
+velocitymultiplier 0.2
+sizeincrease -100
+stretchfactor 2
+
+
+// muzzle flash
+effect laser_gauntletmuzzleflash
+// glow and light
+countabsolute 1
+type smoke
+color 0x220000 0x880000
+tex 65 65
+size 10 15
+alpha 256 512 6280
+airfriction 10
+sizeincrease -100
+stretchfactor 2
+lightradius 150
+lightradiusfade 500
+lightcolor 3 0.1 0.1
+// electricity
+effect laser_gauntletmuzzleflash
+count 3
+type spark
+color 0xb44215 0x880000
+tex 43 43
+size 7 10
+alpha 128 512 6280
+airfriction 10
+originjitter 2 2 2
+velocityjitter 150 150 150
+velocitymultiplier 0.2
+sizeincrease -100
+stretchfactor 2.3
+rotate -180 180 4000 -4000
 
 
+// fire
+effect laser_gauntletmuzzleflash
+count 6
+type spark
+color 0xff4200 0xff0000
+tex 8 15
+size 7 9
+alpha 256 512 6280
+airfriction 12
+originjitter 2 2 2
+velocityjitter 100 100 100
+velocitymultiplier 0.2
+sizeincrease -100
+stretchfactor 2
+
 //torch flame, spawn it as fast as you can  20 times per second or more, supports direction but not required
 //fast fire
 // used nowhere in code, meant for maps
@@ -4907,3 +4970,46 @@ bounce 1.5
 airfriction 5
 liquidfriction 10
 velocityjitter 156 156 156
+
+
+
+// used in qcsrc/server/w_electro.qc:  pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+// used in qcsrc/server/w_electro.qc:  pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+effect electro_lightning
+countabsolute 1
+type smoke
+color 0x283880 0x283880 // 0x202020 0x404040
+tex 65 65
+size 10 10
+alpha 256 256 1500
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+sizeincrease -20
+velocitymultiplier 0.01
+
+effect electro_lightning
+count 3
+type spark
+tex 8 15
+color 0xD9FDFF 0xD9FDFF
+size 3 7
+alpha 110 228 2024
+originjitter 1 1 1
+velocityjitter 150 150 150
+velocitymultiplier 0.5
+airfriction 2
+stretchfactor 1.5
+
+effect electro_lightning
+count 5
+type spark
+tex 41 41
+color 0xD9FDFF 0xD9FDFF
+size 3 4
+alpha 110 228 1500
+originjitter 1 1 1
+velocityjitter 350 350 350
+velocitymultiplier 2.5
+airfriction 8
+gravity 1.3
+stretchfactor 0.1
index 36334b27127b218ece882fbbc6ea47da559fdad9..66b58df8c356f6f57900ccd9d510bc8dce07c5f4 100644 (file)
@@ -1,3 +1,4 @@
 float autocvar_sv_cheats;
 float autocvar_g_bastet;
 var float autocvar_g_movement_highspeed = 1;
+var float autocvar_sys_ticrate;
index 0b35eae662de8cc2848cb04ebe8d9e52a88f428a..32f85285c46edd1f7a4dbab41cf5b6003018a4df 100644 (file)
@@ -184,19 +184,66 @@ void W_Electro_Attack2()
        CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO, FALSE); // no culling, it has sound
 }
 
-// experimental lightning gun
-void W_Electro_Attack3 (void)
+void lgbeam_think()
 {
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_cells = self.ammo_cells - cvar("g_balance_electro_primary_ammo");
-       W_SetupShot (self, TRUE, 0, "weapons/crylink_fire2.wav", cvar("g_balance_electro_primary_damage"));
+    if (!self.owner.BUTTON_ATCK || self.owner.ammo_cells <= 0) // || (self.ammo_cells <= 0 && !(self.items & IT_UNLIMITED_WEAPON_AMMO)))
+    {
+        sound (self, CHAN_PROJECTILE, "sound/misc/null.wav", VOL_BASE, ATTN_NORM);
+        remove(self);
+        return;
+    }
+
+    if (time - self.shot_spread + random() * 0.2 > 0)
+    {
+        self.shot_spread = time + 2;
+        sound (self, CHAN_PROJECTILE, "turrets/phaser.wav", VOL_BASE, ATTN_NORM);
+    }
+
+    if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
+       self.ammo_cells = self.ammo_cells - cvar("g_balance_electro_primary_ammo");
+
+    self.nextthink = time + self.ticrate;
 
-       traceline_antilag(self, w_shotorg, w_shotorg + w_shotdir * cvar("g_balance_electro_primary_radius"), FALSE, self, ANTILAG_LATENCY(self));
+    //w_deathtypestring = "was phased out of existence";
 
-       te_lightning1(self, w_shotorg, trace_endpos);
+    makevectors(self.owner.v_angle);
+    vector angle;
+    angle = v_forward;
 
-       if (trace_fraction < 1)
-               Damage(trace_ent, self, self, cvar("g_balance_electro_primary_damage"), WEP_ELECTRO | HITTYPE_SECONDARY, trace_endpos, cvar("g_balance_electro_primary_force") * w_shotdir);
+    vector force;
+    force = angle * cvar("g_balance_electro_primary_force");
+
+    traceline_antilag(self.owner, self.owner.origin, self.owner.origin + angle * cvar("g_balance_electro_primary_range"), FALSE, self.owner, ANTILAG_LATENCY(self.owner));
+
+    // apply the damage
+    if(trace_fraction < 1)
+    {
+       Damage (trace_ent, self.owner, self.owner, cvar("g_balance_electro_primary_damage"), WEP_ELECTRO, trace_endpos, force);
+       trace_ent.velocity = trace_ent.velocity * cvar("g_balance_electro_primary_velocityfactor") + '0 0 1' * cvar("g_balance_electro_primary_force_up");
+    }
+
+    self.scale = vlen(self.owner.origin - trace_endpos) / 256 * (0.75 + 0.75 * random());
+}
+
+// experimental lightning gun
+void W_Electro_Attack3 (void)
+{
+       entity beam;
+
+       beam = spawn();
+       beam.ticrate = autocvar_sys_ticrate;
+       setmodel(beam,"models/turrets/phaser_beam.md3");
+       beam.effects = EF_LOWPRECISION;
+       beam.solid = SOLID_NOT;
+       beam.think = lgbeam_think;
+       beam.shot_spread = 0;
+       beam.scale = cvar("g_balance_electro_primary_range") / 256;
+       beam.nextthink = time;
+       beam.owner = self;
+       beam.movetype = MOVETYPE_NONE;
+       beam.bot_dodge = TRUE;
+       beam.bot_dodgerating = cvar("g_balance_electro_primary_damage")/autocvar_sys_ticrate;
+       setattachment(beam, self.weaponentity, "shot");
 }
 
 void spawnfunc_weapon_electro (void)
@@ -220,6 +267,7 @@ void w_electro_checkattack()
 }
 
 .float bot_secondary_electromooth;
+.float BUTTON_ATCK_prev;
 float w_electro(float req)
 {
        if (req == WR_AIM)
@@ -251,12 +299,19 @@ float w_electro(float req)
                if (weapon_prepareattack(0, cvar("g_balance_electro_primary_refire")))
                {
                        if(cvar("g_balance_electro_lightning"))
-                               W_Electro_Attack3();
+                       {
+                               if (self.BUTTON_ATCK_prev == 0)
+                               {
+                                       W_Electro_Attack3();
+                               }
+                       }
                        else
+                       {
                                W_Electro_Attack();
+                       }
                        weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_electro_primary_animtime"), w_ready);
                }
-               if (self.BUTTON_ATCK2 && !cvar("g_balance_electro_lightning"))
+               if (self.BUTTON_ATCK2)
                if (time >= self.electro_secondarytime)
                if (weapon_prepareattack(1, cvar("g_balance_electro_secondary_refire")))
                {
@@ -289,6 +344,7 @@ float w_electro(float req)
        {
                self.electro_secondarytime = time;
        }
+       self.BUTTON_ATCK_prev = self.BUTTON_ATCK;
        return TRUE;
 };
 #endif
index a7d9a4935d7202a7a4a2bf18975cdafb4b1c5af1..a6e4d0dc0fc1cad0013db7639dcca143359aaf2b 100644 (file)
@@ -33,10 +33,56 @@ void W_Grenade_Explode2 (void)
        remove (self);
 }
 
+void W_Grenade_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
+{
+       if (self.health <= 0)
+               return;
+       self.health = self.health - damage;
+       if (self.health <= 0)
+       {
+               W_PrepareExplosionByDamage(attacker, self.think);
+       }
+}
+
 void W_Grenade_Touch1 (void)
 {
        PROJECTILE_TOUCH;
-       W_Grenade_Explode ();
+       if(cvar("g_balance_grenadelauncher_primary_sticky") && other.takedamage != DAMAGE_AIM)
+       {
+               entity oldowner;
+               oldowner = self.owner;
+
+               vector temporigin;
+               temporigin = self.origin;
+
+               remove(self);
+               local entity gren;
+
+               gren = spawn ();
+               gren.owner = oldowner;
+               gren.classname = "grenade";
+               gren.bot_dodge = TRUE;
+               gren.bot_dodgerating = cvar("g_balance_grenadelauncher_primary_damage");
+               gren.movetype = MOVETYPE_NONE;
+               PROJECTILE_MAKETRIGGER(gren);
+               gren.projectiledeathtype = WEP_GRENADE_LAUNCHER;
+               setorigin(gren, temporigin);
+               setsize(gren, '0 0 -3', '0 0 -3');
+
+               gren.nextthink = time + cvar("g_balance_grenadelauncher_primary_lifetime2");
+               gren.think = adaptor_think2use_hittype_splash;
+               gren.use = W_Grenade_Explode;
+
+               gren.flags = FL_PROJECTILE;
+
+               gren.takedamage = DAMAGE_YES;
+               gren.health = cvar("g_balance_grenadelauncher_primary_health");
+               gren.event_damage = W_Grenade_Damage;
+
+               CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE, TRUE);   
+       }
+       else
+               W_Grenade_Explode ();
 }
 
 void W_Grenade_Touch2 (void)
@@ -66,17 +112,6 @@ void W_Grenade_Touch2 (void)
        }
 }
 
-void W_Grenade_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
-{
-       if (self.health <= 0)
-               return;
-       self.health = self.health - damage;
-       if (self.health <= 0)
-       {
-               W_PrepareExplosionByDamage(attacker, self.think);
-       }
-}
-
 void W_Grenade_Attack (void)
 {
        local entity gren;
index cdfdaa537c048af9fa45594d5334f35c256eda78..00e0fff7473e2444483c7faa9bd91033a17f7336 100644 (file)
@@ -105,9 +105,11 @@ void W_Laser_Attack2 (void) // gauntlet
 {
        W_SetupShot (self, TRUE, 0, "weapons/gauntlet_fire.wav", cvar("g_balance_laser_primary_damage"));
 
-       WarpZone_traceline_antilag(self, w_shotorg, w_shotorg + w_shotdir * cvar("g_balance_laser_primary_radius"), FALSE, self, ANTILAG_LATENCY(self));
+       WarpZone_traceline_antilag(self, w_shotorg, w_shotorg + w_shotdir * (cvar("g_balance_laser_primary_radius") + vlen(eX * self.velocity_x + eY * self.velocity_y)/5), FALSE, self, ANTILAG_LATENCY(self));
 
-       pointparticles(particleeffectnum("laser_gauntlet"), w_shotorg + w_shotdir * cvar("g_balance_laser_primary_radius"), '0 0 0', 1);
+       pointparticles(particleeffectnum("laser_gauntletmuzzleflash"), w_shotorg, w_shotdir * 1000, 1);
+       pointparticles(particleeffectnum("laser_gauntlet"), w_shotorg + w_shotdir * (cvar("g_balance_laser_primary_radius") + vlen(eX * self.velocity_x + eY * self.velocity_y)/5), w_shotdir * 1000, 1);
+       pointparticles(particleeffectnum("laser_gauntlet"), w_shotorg + w_shotdir * (cvar("g_balance_laser_primary_radius") + vlen(eX * self.velocity_x + eY * self.velocity_y)/5) * 0.5, w_shotdir * 1000, 1);
 
        if (trace_fraction < 1)
                Damage(trace_ent, self, self, cvar("g_balance_laser_primary_damage"), WEP_LASER | HITTYPE_SECONDARY, trace_endpos, cvar("g_balance_laser_primary_force") * w_shotdir);