From: FruitieX Date: Fri, 9 Jul 2010 19:41:59 +0000 (+0300) Subject: Merge branch 'fruitiex/newpanelhud' into fruitiex/fruitbalance X-Git-Tag: xonotic-v0.1.0preview~423^2~66 X-Git-Url: https://de.git.xonotic.org/?a=commitdiff_plain;h=5fca782f85c8971b23b76e610183dd273d4381b2;hp=ede9885b965ca4e0d56277d7284a7d981a02ee4a;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'fruitiex/newpanelhud' into fruitiex/fruitbalance --- diff --git a/balance.cfg b/balance.cfg index 156b69aed..e824e271b 100644 --- a/balance.cfg +++ b/balance.cfg @@ -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 diff --git a/balance25.cfg b/balance25.cfg index a4369249f..963e94153 100644 --- a/balance25.cfg +++ b/balance25.cfg @@ -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 diff --git a/balanceFruit.cfg b/balanceFruit.cfg index 415a45808..a591ae388 100644 --- a/balanceFruit.cfg +++ b/balanceFruit.cfg @@ -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 diff --git a/balanceSamual.cfg b/balanceSamual.cfg index 21242f16f..2b716463e 100644 --- a/balanceSamual.cfg +++ b/balanceSamual.cfg @@ -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 diff --git a/balanceXPM.cfg b/balanceXPM.cfg index bb0416a34..83bd146b0 100644 --- a/balanceXPM.cfg +++ b/balanceXPM.cfg @@ -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 diff --git a/defaultXPM.cfg b/defaultXPM.cfg index f480e2221..3141a2409 100644 --- a/defaultXPM.cfg +++ b/defaultXPM.cfg @@ -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 diff --git a/effectinfo.txt b/effectinfo.txt index 53926a7a0..9f98d6af5 100644 --- a/effectinfo.txt +++ b/effectinfo.txt @@ -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 diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 36334b271..66b58df8c 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -1,3 +1,4 @@ float autocvar_sv_cheats; float autocvar_g_bastet; var float autocvar_g_movement_highspeed = 1; +var float autocvar_sys_ticrate; diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index 0b35eae66..32f85285c 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -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 diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index a7d9a4935..a6e4d0dc0 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -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; diff --git a/qcsrc/server/w_laser.qc b/qcsrc/server/w_laser.qc index cdfdaa537..00e0fff74 100644 --- a/qcsrc/server/w_laser.qc +++ b/qcsrc/server/w_laser.qc @@ -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);