set g_balance_laser_primary_lifetime 5
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.25
+set g_balance_laser_primary_force_zscale 1.2
set g_balance_laser_primary_force_velocitybias 0
set g_balance_laser_primary_force_other_scale 1
- set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
+
+ set g_balance_laser_secondary 2 // 0 = switch away to last used weapon, 1 = projectile secondary, 2 = melee secondary
set g_balance_laser_secondary_damage 25
set g_balance_laser_secondary_edgedamage 12.5
set g_balance_laser_secondary_force 400
set g_balance_laser_primary_lifetime 5
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.25
+set g_balance_laser_primary_force_zscale 1.2
set g_balance_laser_primary_force_velocitybias 0
set g_balance_laser_primary_force_other_scale 1
- set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
+
+ set g_balance_laser_secondary 2 // 0 = switch away to last used weapon, 1 = projectile secondary, 2 = melee secondary
set g_balance_laser_secondary_damage 25
set g_balance_laser_secondary_edgedamage 12.5
set g_balance_laser_secondary_force 400
float ClientProgsDB;
vector hook_shotorigin[4];
vector electro_shotorigin[4];
- vector gauntlet_shotorigin[4];
+vector lightning_shotorigin[4];
++
#ifdef BLURTEST
float blurtest_time0, blurtest_time1, blurtest_radius, blurtest_power;
case ENT_CLIENT_WARPZONE_TELEPORTED: WarpZone_Teleported_Read(bIsNewEntity); break;
case ENT_CLIENT_TRIGGER_MUSIC: Ent_ReadTriggerMusic(); break;
case ENT_CLIENT_HOOK: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_HOOK); break;
- case ENT_CLIENT_LGBEAM: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_LGBEAM); break;
+ case ENT_CLIENT_ELECTRO_BEAM: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_ELECTRO_BEAM); break;
+ case ENT_CLIENT_LIGHTNING_BEAM: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_LIGHTNING_BEAM); break;
- case ENT_CLIENT_GAUNTLET: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_GAUNTLET); break;
case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break;
case ENT_CLIENT_AUXILIARYXHAIR: Net_AuXair2(bIsNewEntity); break;
case ENT_CLIENT_TURRET: ent_turret(); break;
electro_shotorigin[1] = decompressShotOrigin(ReadInt24_t());
electro_shotorigin[2] = decompressShotOrigin(ReadInt24_t());
electro_shotorigin[3] = decompressShotOrigin(ReadInt24_t());
- gauntlet_shotorigin[0] = decompressShotOrigin(ReadInt24_t());
- gauntlet_shotorigin[1] = decompressShotOrigin(ReadInt24_t());
- gauntlet_shotorigin[2] = decompressShotOrigin(ReadInt24_t());
- gauntlet_shotorigin[3] = decompressShotOrigin(ReadInt24_t());
+ lightning_shotorigin[0] = decompressShotOrigin(ReadInt24_t());
+ lightning_shotorigin[1] = decompressShotOrigin(ReadInt24_t());
+ lightning_shotorigin[2] = decompressShotOrigin(ReadInt24_t());
+ lightning_shotorigin[3] = decompressShotOrigin(ReadInt24_t());
if(forcefog)
strunzone(forcefog);
case ENT_CLIENT_HOOK:
vs = hook_shotorigin[s];
break;
- case ENT_CLIENT_LGBEAM:
+ case ENT_CLIENT_ELECTRO_BEAM:
vs = electro_shotorigin[s];
break;
- case ENT_CLIENT_GAUNTLET:
- vs = gauntlet_shotorigin[s];
- break;
+ case ENT_CLIENT_LIGHTNING_BEAM:
+ vs = lightning_shotorigin[s];
+ break;
}
if((self.owner.sv_entnum == player_localentnum - 1))
a = view_origin + view_forward * vs_x + view_right * -vs_y + view_up * vs_z;
b = self.origin;
break;
- case ENT_CLIENT_LGBEAM:
+ case ENT_CLIENT_ELECTRO_BEAM:
+ case ENT_CLIENT_LIGHTNING_BEAM:
- case ENT_CLIENT_GAUNTLET:
if(self.HookRange)
b = view_origin + view_forward * self.HookRange;
else
a = self.velocity;
b = self.origin;
break;
- case ENT_CLIENT_LGBEAM:
+ case ENT_CLIENT_ELECTRO_BEAM:
+ case ENT_CLIENT_LIGHTNING_BEAM:
- case ENT_CLIENT_GAUNTLET:
a = self.origin;
b = self.velocity;
break;
self.drawmask = 0;
}
break;
- case ENT_CLIENT_LGBEAM:
+ case ENT_CLIENT_ELECTRO_BEAM:
+ case ENT_CLIENT_LIGHTNING_BEAM:
- case ENT_CLIENT_GAUNTLET:
setorigin(self, a); // beam origin!
break;
}
default:
case ENT_CLIENT_HOOK:
break;
- case ENT_CLIENT_LGBEAM:
- pointparticles(particleeffectnum("electro_lightning"), trace_endpos, normalize(atrans - trace_endpos), frametime * intensity);
+ case ENT_CLIENT_ELECTRO_BEAM:
+ pointparticles(particleeffectnum("electro_lightning"), trace_endpos, normalize(atrans - trace_endpos), frametime * intensity); // todo: new effect
+ break;
+ case ENT_CLIENT_LIGHTNING_BEAM:
+ pointparticles(particleeffectnum("electro_lightning"), trace_endpos, normalize(atrans - trace_endpos), frametime * intensity); // todo: new effect
break;
- case ENT_CLIENT_GAUNTLET:
- pointparticles(particleeffectnum("gauntlet_lightning"), b, normalize(a - b), frametime * intensity);
- break;
}
}
{
default:
case ENT_CLIENT_HOOK:
- case ENT_CLIENT_GAUNTLET:
self.HookRange = 0;
break;
- case ENT_CLIENT_LGBEAM:
+ case ENT_CLIENT_ELECTRO_BEAM:
+ case ENT_CLIENT_LIGHTNING_BEAM:
self.HookRange = ReadCoord();
break;
}
setmodel(self, "models/hook.md3");
self.drawmask = MASK_NORMAL;
break;
- case ENT_CLIENT_LGBEAM:
+ case ENT_CLIENT_ELECTRO_BEAM:
+ sound (self, CH_SHOTS_SINGLE, "weapons/lgbeam_fly.wav", VOL_BASE, ATTN_NORM);
+ break;
+ case ENT_CLIENT_LIGHTNING_BEAM:
sound (self, CH_SHOTS_SINGLE, "weapons/lgbeam_fly.wav", VOL_BASE, ATTN_NORM);
break;
- case ENT_CLIENT_GAUNTLET:
- sound (self, CH_SHOTS_SINGLE, "weapons/gauntletbeam_fly.wav", VOL_BASE, ATTN_NORM);
- break;
}
}
const float ENT_CLIENT_WARPZONE_CAMERA = 25;
const float ENT_CLIENT_TRIGGER_MUSIC = 26;
const float ENT_CLIENT_HOOK = 27;
-const float ENT_CLIENT_LGBEAM = 28;
-const float ENT_CLIENT_ACCURACY = 29;
-const float ENT_CLIENT_SHOWNAMES = 30;
-const float ENT_CLIENT_WARPZONE_TELEPORTED = 31;
-const float ENT_CLIENT_MODEL = 32;
-const float ENT_CLIENT_ITEM = 33;
-const float ENT_CLIENT_BUMBLE_RAYGUN = 34;
-const float ENT_CLIENT_SPAWNPOINT = 35;
-const float ENT_CLIENT_SPAWNEVENT = 36;
-const float ENT_CLIENT_NOTIFICATION = 37;
-
+const float ENT_CLIENT_ELECTRO_BEAM = 28;
+const float ENT_CLIENT_LIGHTNING_BEAM = 29;
- const float ENT_CLIENT_GAUNTLET = 30;
- const float ENT_CLIENT_ACCURACY = 31;
- const float ENT_CLIENT_SHOWNAMES = 32;
- const float ENT_CLIENT_WARPZONE_TELEPORTED = 33;
- const float ENT_CLIENT_MODEL = 34;
- const float ENT_CLIENT_ITEM = 35;
- const float ENT_CLIENT_BUMBLE_RAYGUN = 36;
- const float ENT_CLIENT_SPAWNPOINT = 37;
- const float ENT_CLIENT_SPAWNEVENT = 38;
- const float ENT_CLIENT_NOTIFICATION = 39;
++const float ENT_CLIENT_ACCURACY = 30;
++const float ENT_CLIENT_SHOWNAMES = 31;
++const float ENT_CLIENT_WARPZONE_TELEPORTED = 32;
++const float ENT_CLIENT_MODEL = 33;
++const float ENT_CLIENT_ITEM = 34;
++const float ENT_CLIENT_BUMBLE_RAYGUN = 35;
++const float ENT_CLIENT_SPAWNPOINT = 36;
++const float ENT_CLIENT_SPAWNEVENT = 37;
++const float ENT_CLIENT_NOTIFICATION = 38;
const float ENT_CLIENT_TURRET = 40;
const float ENT_CLIENT_AUXILIARYXHAIR = 50;
float autocvar_g_balance_laser_secondary_damage;
float autocvar_g_balance_laser_secondary_edgedamage;
float autocvar_g_balance_laser_secondary_force;
- float autocvar_g_balance_laser_secondary_force_other_scale;
- float autocvar_g_balance_laser_secondary_force_velocitybias;
- float autocvar_g_balance_laser_secondary_force_zscale;
+ //float autocvar_g_balance_laser_secondary_force_other_scale;
+ //float autocvar_g_balance_laser_secondary_force_velocitybias;
+ //float autocvar_g_balance_laser_secondary_force_zscale;
float autocvar_g_balance_laser_secondary_lifetime;
float autocvar_g_balance_laser_secondary_radius;
- float autocvar_g_balance_laser_secondary_speed;
- float autocvar_g_balance_laser_reload_ammo;
- float autocvar_g_balance_laser_reload_time;
+ float autocvar_g_balance_laser_secondary_refire;
+ //float autocvar_g_balance_laser_secondary_speed;
+ float autocvar_g_balance_laser_shockwave_damage;
+ float autocvar_g_balance_laser_shockwave_distance;
+ float autocvar_g_balance_laser_shockwave_edgedamage;
+ float autocvar_g_balance_laser_shockwave_force;
+ float autocvar_g_balance_laser_shockwave_force_forwardbias;
+ float autocvar_g_balance_laser_shockwave_force_zscale;
+ float autocvar_g_balance_laser_shockwave_jump_damage;
+ float autocvar_g_balance_laser_shockwave_jump_edgedamage;
+ float autocvar_g_balance_laser_shockwave_jump_force;
+ float autocvar_g_balance_laser_shockwave_jump_force_velocitybias;
+ float autocvar_g_balance_laser_shockwave_jump_force_zscale;
+ float autocvar_g_balance_laser_shockwave_jump_multiplier_accuracy;
+ float autocvar_g_balance_laser_shockwave_jump_multiplier_distance;
+ float autocvar_g_balance_laser_shockwave_jump_multiplier_min;
+ float autocvar_g_balance_laser_shockwave_jump_radius;
+ float autocvar_g_balance_laser_shockwave_multiplier_accuracy;
+ float autocvar_g_balance_laser_shockwave_multiplier_distance;
+ float autocvar_g_balance_laser_shockwave_multiplier_min;
+ float autocvar_g_balance_laser_shockwave_splash_damage;
+ float autocvar_g_balance_laser_shockwave_splash_edgedamage;
+ float autocvar_g_balance_laser_shockwave_splash_force;
+ float autocvar_g_balance_laser_shockwave_splash_force_forwardbias;
+ float autocvar_g_balance_laser_shockwave_splash_multiplier_accuracy;
+ float autocvar_g_balance_laser_shockwave_splash_multiplier_distance;
+ float autocvar_g_balance_laser_shockwave_splash_multiplier_min;
+ float autocvar_g_balance_laser_shockwave_splash_radius;
+ float autocvar_g_balance_laser_shockwave_spread_max;
+ float autocvar_g_balance_laser_shockwave_spread_min;
+float autocvar_g_balance_lightning_primary_ammo;
+float autocvar_g_balance_lightning_primary_animtime;
+float autocvar_g_balance_lightning_primary_damage;
+float autocvar_g_balance_lightning_primary_edgedamage;
+float autocvar_g_balance_lightning_primary_falloff_halflifedist;
+float autocvar_g_balance_lightning_primary_falloff_maxdist;
+float autocvar_g_balance_lightning_primary_falloff_mindist;
+float autocvar_g_balance_lightning_primary_force;
+float autocvar_g_balance_lightning_primary_lifetime;
+float autocvar_g_balance_lightning_primary_radius;
+float autocvar_g_balance_lightning_primary_range;
+float autocvar_g_balance_lightning_primary_refire;
+float autocvar_g_balance_lightning_primary_speed;
+float autocvar_g_balance_lightning_secondary_ammo;
+float autocvar_g_balance_lightning_secondary_animtime;
+float autocvar_g_balance_lightning_secondary_damage;
+float autocvar_g_balance_lightning_secondary_damageforcescale;
+float autocvar_g_balance_lightning_secondary_edgedamage;
+float autocvar_g_balance_lightning_secondary_flyingdamage;
+float autocvar_g_balance_lightning_secondary_flyingforce;
+float autocvar_g_balance_lightning_secondary_flyingradius;
+float autocvar_g_balance_lightning_secondary_force;
+float autocvar_g_balance_lightning_secondary_health;
+float autocvar_g_balance_lightning_secondary_lifetime;
+float autocvar_g_balance_lightning_secondary_radius;
+float autocvar_g_balance_lightning_secondary_refire;
+float autocvar_g_balance_lightning_secondary_speed;
float autocvar_g_balance_minelayer_ammo;
float autocvar_g_balance_minelayer_animtime;
float autocvar_g_balance_minelayer_damage;
WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[1]));
WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[2]));
WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[3]));
- WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[0]));
- WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[1]));
- WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[2]));
- WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[3]));
+ WriteInt24_t(MSG_ENTITY, compressShotOrigin(lightning_shotorigin[0]));
+ WriteInt24_t(MSG_ENTITY, compressShotOrigin(lightning_shotorigin[1]));
+ WriteInt24_t(MSG_ENTITY, compressShotOrigin(lightning_shotorigin[2]));
+ WriteInt24_t(MSG_ENTITY, compressShotOrigin(lightning_shotorigin[3]));
+
if(sv_foginterval && world.fog != "")
WriteString(MSG_ENTITY, world.fog);
else
InitGameplayMode();
readlevelcvars();
GrappleHookInit();
+ LightningInit();
ElectroInit();
- LaserInit();
player_count = 0;
bot_waypoints_for_items = autocvar_g_waypoints_for_items;
g_hook.qh
w_electro.qh
- w_laser.qh
+w_lightning.qh
scores.qh