set g_balance_laser_primary_shotangle 0
set g_balance_laser_primary_delay 0
set g_balance_laser_primary_gauntlet 0
-set g_balance_laser_primary_force_zscale 1.3
+set g_balance_laser_primary_force_zscale 1.2
set g_balance_laser_primary_force_velocitybias 0
set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
set g_balance_laser_secondary_damage 35
// {{{ shotgun
set g_balance_shotgun_primary_bullets 10
set g_balance_shotgun_primary_damage 5
-set g_balance_shotgun_primary_force 15
+set g_balance_shotgun_primary_force 5
set g_balance_shotgun_primary_spread 0.07
set g_balance_shotgun_primary_refire 0.8
set g_balance_shotgun_primary_animtime 0.2
// }}}
// {{{ electro
set g_balance_electro_lightning 0
-set g_balance_electro_primary_damage 40
+set g_balance_electro_primary_damage 35
set g_balance_electro_primary_edgedamage 0
set g_balance_electro_primary_force 150
set g_balance_electro_primary_force_up 0
-set g_balance_electro_primary_radius 150
+set g_balance_electro_primary_radius 155
set g_balance_electro_primary_comboradius 0
set g_balance_electro_primary_speed 2000
set g_balance_electro_primary_spread 0
set g_balance_electro_secondary_lifetime 5
set g_balance_electro_secondary_refire 0.1
set g_balance_electro_secondary_refire2 2
-set g_balance_electro_secondary_animtime 0.2
+set g_balance_electro_secondary_animtime 0.15
set g_balance_electro_secondary_ammo 2
set g_balance_electro_secondary_health 10
set g_balance_electro_secondary_damageforcescale 2
set g_balance_electro_combo_speed 1000
// }}}
// {{{ crylink
-set g_balance_crylink_primary_damage 5
-set g_balance_crylink_primary_edgedamage 2
-set g_balance_crylink_primary_force 25
-set g_balance_crylink_primary_radius 65
+set g_balance_crylink_primary_damage 20
+set g_balance_crylink_primary_edgedamage 5
+set g_balance_crylink_primary_force 50
+set g_balance_crylink_primary_radius 50
set g_balance_crylink_primary_speed 2000
set g_balance_crylink_primary_spread 0.075
-set g_balance_crylink_primary_shots 12
+set g_balance_crylink_primary_shots 4
set g_balance_crylink_primary_bounces 1
set g_balance_crylink_primary_refire 1
set g_balance_crylink_primary_animtime 0.4
set g_balance_crylink_primary_ammo 2
set g_balance_crylink_primary_bouncedamagefactor 0.2
set g_balance_crylink_primary_joinspeed 2000
+set g_balance_crylink_primary_joinboost 2
set g_balance_crylink_primary_middle_lifetime 5
set g_balance_crylink_primary_middle_fadetime 5
set g_balance_crylink_primary_star_lifetime 5
-set g_balance_crylink_primary_star_fadetime 2.5
+set g_balance_crylink_primary_star_fadetime 5
set g_balance_crylink_primary_other_lifetime 5
-set g_balance_crylink_primary_other_fadetime 2.5
+set g_balance_crylink_primary_other_fadetime 5
set g_balance_crylink_secondary 1
set g_balance_crylink_secondary_damage 2
set g_balance_rocketlauncher_health 10
set g_balance_rocketlauncher_damageforcescale 0
set g_balance_rocketlauncher_detonatedelay -1 // 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
-set g_balance_rocketlauncher_guiderate 18 // max degrees per second
+set g_balance_rocketlauncher_guiderate 25 // max degrees per second
set g_balance_rocketlauncher_guideratedelay 0.01 // immediate
set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in
set g_balance_rocketlauncher_laserguided_speedstart 1000
set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5
set g_balance_rocketlauncher_laserguided_allow_steal 1
-set g_balance_rocketlauncher_remote_damage 90
-set g_balance_rocketlauncher_remote_edgedamage 20
-set g_balance_rocketlauncher_remote_radius 125
+set g_balance_rocketlauncher_remote_damage 120
+set g_balance_rocketlauncher_remote_edgedamage 25
+set g_balance_rocketlauncher_remote_radius 130
set g_balance_rocketlauncher_remote_force 350
// }}}
// {{{ porto
while (counter < shots)
{
proj = spawn ();
+ proj.crylink_waitrelease = time; // keep track of when each projectile was spawned
proj.realowner = proj.owner = self;
proj.classname = "spike";
proj.bot_dodge = TRUE;
while (counter < shots)
{
proj = spawn ();
+ proj.crylink_waitrelease = time; // keep track of when each projectile was spawned
proj.realowner = proj.owner = self;
proj.classname = "spike";
proj.bot_dodge = TRUE;
{
if (self.BUTTON_ATCK)
{
+ if(self.crylink_lastgroup == world)
+ self.crylink_waitrelease = 0;
+
if (!self.crylink_waitrelease)
if (weapon_prepareattack(0, cvar("g_balance_crylink_primary_refire")))
{
W_Crylink_Attack();
weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_crylink_primary_animtime"), w_ready);
if(cvar("g_balance_crylink_primary_joinspeed") != 0)
- self.crylink_waitrelease = 1;
- }
+ self.crylink_waitrelease = 1; // time + 0.01;
+ }
+
+
}
else if(self.BUTTON_ATCK2 && cvar("g_balance_crylink_secondary"))
{
}
}
else
- {
- if (self.crylink_waitrelease)
+ {
+ if (self.crylink_waitrelease)
{
// fired and released now!
if(self.crylink_lastgroup)
- {
- if(self.crylink_waitrelease == 1)
+ {
+ // Click and hold fire
+ if (time - self.crylink_lastgroup.crylink_waitrelease > 0.1)
{
- W_Crylink_LinkJoin(self.crylink_lastgroup, cvar("g_balance_crylink_primary_joinspeed"));
-
+ //dprint("HoldFire:", ftos(time - self.crylink_lastgroup.crylink_waitrelease), "\nTimer is ", ftos(self.crylink_lastgroup.crylink_waitrelease),"\n");
+ W_Crylink_LinkJoin(self.crylink_lastgroup, cvar("g_balance_crylink_primary_joinspeed"));
// 'splode @ join, if timing is just right, you get the target with the join-explode splash first, then the individual projectile's damage.
- self.crylink_lastgroup.think = W_Crylink_Touch;
- self.crylink_lastgroup.nextthink = w_crylink_linkjoin_time + time;
+ if(w_crylink_linkjoin_time > 0)
+ {
+ self.crylink_lastgroup.think = W_Crylink_Touch;
+ self.crylink_lastgroup.nextthink = w_crylink_linkjoin_time + time;
+ }
}
- else
+ else // tap fire
{
- W_Crylink_LinkJoin(self.crylink_lastgroup, cvar("g_balance_crylink_secondary_joinspeed"));
+ dprint("TapFire:", ftos(time - self.crylink_lastgroup.crylink_waitrelease), "\nTimer is ", ftos(self.crylink_lastgroup.crylink_waitrelease),"\n");
}
}
- }
-
- self.crylink_waitrelease = 0;
+
+ self.crylink_waitrelease = 0;
+ }
}
}
else if (req == WR_PRECACHE)