From: Samual Lenks Date: Sun, 8 Dec 2013 01:59:20 +0000 (-0500) Subject: Strip lightning gun functionality out of Electro X-Git-Tag: xonotic-v0.8.0~152^2~309 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=bb38e0642682c89b32d671fc4d417986943463d8;p=xonotic%2Fxonotic-data.pk3dir.git Strip lightning gun functionality out of Electro --- diff --git a/qcsrc/client/Defs.qc b/qcsrc/client/Defs.qc index 4a206e55f..a0091a9a9 100644 --- a/qcsrc/client/Defs.qc +++ b/qcsrc/client/Defs.qc @@ -223,7 +223,6 @@ string shortmapname; float tempdb; float ClientProgsDB; vector hook_shotorigin[4]; -vector electro_shotorigin[4]; vector lightning_shotorigin[4]; diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index ca0c46776..6493a8360 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -817,7 +817,6 @@ void CSQC_Ent_Update(float bIsNewEntity) 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_ELECTRO_BEAM: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_ELECTRO_BEAM); break; case ENT_CLIENT_ARC_BEAM: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_ARC_BEAM); break; case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break; case ENT_CLIENT_AUXILIARYXHAIR: Net_AuXair2(bIsNewEntity); break; @@ -954,10 +953,6 @@ void Ent_Init() hook_shotorigin[1] = decompressShotOrigin(ReadInt24_t()); hook_shotorigin[2] = decompressShotOrigin(ReadInt24_t()); hook_shotorigin[3] = decompressShotOrigin(ReadInt24_t()); - electro_shotorigin[0] = decompressShotOrigin(ReadInt24_t()); - electro_shotorigin[1] = decompressShotOrigin(ReadInt24_t()); - electro_shotorigin[2] = decompressShotOrigin(ReadInt24_t()); - electro_shotorigin[3] = decompressShotOrigin(ReadInt24_t()); arc_shotorigin[0] = decompressShotOrigin(ReadInt24_t()); arc_shotorigin[1] = decompressShotOrigin(ReadInt24_t()); arc_shotorigin[2] = decompressShotOrigin(ReadInt24_t()); diff --git a/qcsrc/client/hook.qc b/qcsrc/client/hook.qc index 8beacac88..e2fd94434 100644 --- a/qcsrc/client/hook.qc +++ b/qcsrc/client/hook.qc @@ -75,9 +75,6 @@ void Draw_GrapplingHook() case ENT_CLIENT_HOOK: vs = hook_shotorigin[s]; break; - case ENT_CLIENT_ELECTRO_BEAM: - vs = electro_shotorigin[s]; - break; case ENT_CLIENT_ARC_BEAM: vs = lightning_shotorigin[s]; break; @@ -92,7 +89,6 @@ void Draw_GrapplingHook() a = view_origin + view_forward * vs_x + view_right * -vs_y + view_up * vs_z; b = self.origin; break; - case ENT_CLIENT_ELECTRO_BEAM: case ENT_CLIENT_ARC_BEAM: if(self.HookRange) b = view_origin + view_forward * self.HookRange; @@ -113,7 +109,6 @@ void Draw_GrapplingHook() a = self.velocity; b = self.origin; break; - case ENT_CLIENT_ELECTRO_BEAM: case ENT_CLIENT_ARC_BEAM: a = self.origin; b = self.velocity; @@ -155,12 +150,6 @@ void Draw_GrapplingHook() rgb = '.3 1 .3'; } break; - case ENT_CLIENT_ELECTRO_BEAM: - intensity = bound(0.2, 1 + Noise_Pink(self, frametime) * 1 + Noise_Burst(self, frametime, 0.03) * 0.3, 2); - offset = Noise_Brown(self, frametime) * 10; - tex = "particles/lgbeam"; - rgb = '1 1 1'; - break; case ENT_CLIENT_ARC_BEAM: // todo intensity = bound(0.2, 1 + Noise_Pink(self, frametime) * 1 + Noise_Burst(self, frametime, 0.03) * 0.3, 2); offset = Noise_Brown(self, frametime) * 10; @@ -193,7 +182,6 @@ void Draw_GrapplingHook() self.drawmask = 0; } break; - case ENT_CLIENT_ELECTRO_BEAM: case ENT_CLIENT_ARC_BEAM: setorigin(self, a); // beam origin! break; @@ -204,9 +192,6 @@ void Draw_GrapplingHook() default: case ENT_CLIENT_HOOK: break; - case ENT_CLIENT_ELECTRO_BEAM: - pointparticles(particleeffectnum("electro_lightning"), trace_endpos, normalize(atrans - trace_endpos), frametime * intensity); // todo: new effect - break; case ENT_CLIENT_ARC_BEAM: pointparticles(particleeffectnum("electro_lightning"), trace_endpos, normalize(atrans - trace_endpos), frametime * intensity); // todo: new effect break; @@ -239,7 +224,6 @@ void Ent_ReadHook(float bIsNew, float type) case ENT_CLIENT_HOOK: self.HookRange = 0; break; - case ENT_CLIENT_ELECTRO_BEAM: case ENT_CLIENT_ARC_BEAM: self.HookRange = ReadCoord(); break; @@ -274,9 +258,6 @@ void Ent_ReadHook(float bIsNew, float type) setmodel(self, "models/hook.md3"); self.drawmask = MASK_NORMAL; break; - case ENT_CLIENT_ELECTRO_BEAM: - sound (self, CH_SHOTS_SINGLE, "weapons/lgbeam_fly.wav", VOL_BASE, ATTEN_NORM); - break; case ENT_CLIENT_ARC_BEAM: sound (self, CH_SHOTS_SINGLE, "weapons/lgbeam_fly.wav", VOL_BASE, ATTEN_NORM); break; diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index d437c3f86..19abacb26 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -87,8 +87,7 @@ const float ENT_CLIENT_WARPZONE = 24; const float ENT_CLIENT_WARPZONE_CAMERA = 25; const float ENT_CLIENT_TRIGGER_MUSIC = 26; const float ENT_CLIENT_HOOK = 27; -const float ENT_CLIENT_ELECTRO_BEAM = 28; -const float ENT_CLIENT_ARC_BEAM = 29; +const float ENT_CLIENT_ARC_BEAM = 29; // WEAPONTODO: fix numbers const float ENT_CLIENT_ACCURACY = 30; const float ENT_CLIENT_SHOWNAMES = 31; const float ENT_CLIENT_WARPZONE_TELEPORTED = 32; diff --git a/qcsrc/common/weapons/w_electro.qc b/qcsrc/common/weapons/w_electro.qc index dae89e32d..033890148 100644 --- a/qcsrc/common/weapons/w_electro.qc +++ b/qcsrc/common/weapons/w_electro.qc @@ -12,8 +12,6 @@ REGISTER_WEAPON( ); #ifdef SVQC -void ElectroInit(); -vector electro_shotorigin[4]; var float autocvar_g_balance_electro_combo_comboradius_thruwall = 200; #endif #else @@ -62,7 +60,7 @@ void W_Plasma_Explode (void) self.takedamage = DAMAGE_NO; if (self.movetype == MOVETYPE_BOUNCE) { - RadiusDamage (self, self.realowner, autocvar_g_balance_electro_secondary_damage, autocvar_g_balance_electro_secondary_edgedamage, autocvar_g_balance_electro_secondary_radius, world, world, autocvar_g_balance_electro_secondary_force, self.projectiledeathtype, other); + RadiusDamage(self, self.realowner, autocvar_g_balance_electro_secondary_damage, autocvar_g_balance_electro_secondary_edgedamage, autocvar_g_balance_electro_secondary_radius, world, world, autocvar_g_balance_electro_secondary_force, self.projectiledeathtype, other); } else { @@ -225,162 +223,6 @@ void W_Electro_Attack2() other = proj; MUTATOR_CALLHOOK(EditProjectile); } -.vector hook_start, hook_end; -float lgbeam_send(entity to, float sf) -{ - WriteByte(MSG_ENTITY, ENT_CLIENT_ELECTRO_BEAM); - sf = sf & 0x7F; - if(sound_allowed(MSG_BROADCAST, self.realowner)) - sf |= 0x80; - WriteByte(MSG_ENTITY, sf); - if(sf & 1) - { - WriteByte(MSG_ENTITY, num_for_edict(self.realowner)); - WriteCoord(MSG_ENTITY, autocvar_g_balance_electro_primary_range); - } - if(sf & 2) - { - WriteCoord(MSG_ENTITY, self.hook_start_x); - WriteCoord(MSG_ENTITY, self.hook_start_y); - WriteCoord(MSG_ENTITY, self.hook_start_z); - } - if(sf & 4) - { - WriteCoord(MSG_ENTITY, self.hook_end_x); - WriteCoord(MSG_ENTITY, self.hook_end_y); - WriteCoord(MSG_ENTITY, self.hook_end_z); - } - return TRUE; -} -.entity lgbeam; -.float prevlgfire; -float lgbeam_checkammo() -{ - if(self.realowner.items & IT_UNLIMITED_WEAPON_AMMO) - return TRUE; - else if(autocvar_g_balance_electro_reload_ammo) - return self.realowner.clip_load > 0; - else - return self.realowner.ammo_cells > 0; -} - -entity lgbeam_owner_ent; -void lgbeam_think() -{ - entity owner_player; - owner_player = self.realowner; - - owner_player.prevlgfire = time; - if (self != owner_player.lgbeam) - { - remove(self); - return; - } - - if (owner_player.weaponentity.state != WS_INUSE || !lgbeam_checkammo() || owner_player.deadflag != DEAD_NO || !owner_player.BUTTON_ATCK || owner_player.freezetag_frozen) - { - if(self == owner_player.lgbeam) - owner_player.lgbeam = world; - remove(self); - return; - } - - self.nextthink = time; - - makevectors(owner_player.v_angle); - - float dt, f; - dt = frametime; - - // if this weapon is reloadable, decrease its load. Else decrease the player's ammo - if (!(owner_player.items & IT_UNLIMITED_WEAPON_AMMO)) - { - if(autocvar_g_balance_electro_primary_ammo) - { - if(autocvar_g_balance_electro_reload_ammo) - { - dt = min(dt, owner_player.clip_load / autocvar_g_balance_electro_primary_ammo); - owner_player.clip_load = max(0, owner_player.clip_load - autocvar_g_balance_electro_primary_ammo * frametime); - owner_player.(weapon_load[WEP_ELECTRO]) = owner_player.clip_load; - } - else - { - dt = min(dt, owner_player.ammo_cells / autocvar_g_balance_electro_primary_ammo); - owner_player.ammo_cells = max(0, owner_player.ammo_cells - autocvar_g_balance_electro_primary_ammo * frametime); - } - } - } - - W_SetupShot_Range(owner_player, TRUE, 0, "", 0, autocvar_g_balance_electro_primary_damage * dt, autocvar_g_balance_electro_primary_range); - if(!lgbeam_owner_ent) - { - lgbeam_owner_ent = spawn(); - lgbeam_owner_ent.classname = "lgbeam_owner_ent"; - } - WarpZone_traceline_antilag(lgbeam_owner_ent, w_shotorg, w_shotend, MOVE_NORMAL, lgbeam_owner_ent, ANTILAG_LATENCY(owner_player)); - - // apply the damage - if(trace_ent) - { - vector force; - force = w_shotdir * autocvar_g_balance_electro_primary_force + '0 0 1' * autocvar_g_balance_electro_primary_force_up; - - f = ExponentialFalloff(autocvar_g_balance_electro_primary_falloff_mindist, autocvar_g_balance_electro_primary_falloff_maxdist, autocvar_g_balance_electro_primary_falloff_halflifedist, vlen(WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos) - w_shotorg)); - - if(accuracy_isgooddamage(owner_player, trace_ent)) - accuracy_add(owner_player, WEP_ELECTRO, 0, autocvar_g_balance_electro_primary_damage * dt * f); - Damage (trace_ent, owner_player, owner_player, autocvar_g_balance_electro_primary_damage * dt * f, WEP_ELECTRO, trace_endpos, force * dt); - } - W_Plasma_TriggerCombo(trace_endpos, autocvar_g_balance_electro_primary_comboradius, owner_player); - - // draw effect - if(w_shotorg != self.hook_start) - { - self.SendFlags |= 2; - self.hook_start = w_shotorg; - } - if(w_shotend != self.hook_end) - { - self.SendFlags |= 4; - self.hook_end = w_shotend; - } -} - -// experimental lightning gun -void W_Electro_Attack3 (void) -{ - // only play fire sound if 0.5 sec has passed since player let go the fire button - if(time - self.prevlgfire > 0.5) - sound (self, CH_WEAPON_A, "weapons/lgbeam_fire.wav", VOL_BASE, ATTEN_NORM); - - entity beam, oldself; - - self.lgbeam = beam = spawn(); - beam.classname = "lgbeam"; - beam.solid = SOLID_NOT; - beam.think = lgbeam_think; - beam.owner = beam.realowner = self; - beam.movetype = MOVETYPE_NONE; - beam.shot_spread = 0; - beam.bot_dodge = TRUE; - beam.bot_dodgerating = autocvar_g_balance_electro_primary_damage; - Net_LinkEntity(beam, FALSE, 0, lgbeam_send); - - oldself = self; - self = beam; - self.think(); - self = oldself; -} - -void ElectroInit() -{ - WEP_ACTION(WEP_ELECTRO, WR_INIT); - electro_shotorigin[0] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ELECTRO), FALSE, FALSE, 1); - electro_shotorigin[1] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ELECTRO), FALSE, FALSE, 2); - electro_shotorigin[2] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ELECTRO), FALSE, FALSE, 3); - electro_shotorigin[3] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ELECTRO), FALSE, FALSE, 4); -} - void w_electro_checkattack() { if(self.electro_count > 1) @@ -397,7 +239,6 @@ void w_electro_checkattack() } .float bot_secondary_electromooth; -.float BUTTON_ATCK_prev; float w_electro(float req) { float ammo_amount; @@ -440,12 +281,7 @@ float w_electro(float req) if(autocvar_g_balance_electro_reload_ammo) // forced reload { ammo_amount = 0; - if(autocvar_g_balance_electro_lightning) - { - if(self.clip_load > 0) - ammo_amount = 1; - } - else if(self.clip_load >= autocvar_g_balance_electro_primary_ammo) + if(self.clip_load >= autocvar_g_balance_electro_primary_ammo) ammo_amount = 1; if(self.clip_load >= autocvar_g_balance_electro_secondary_ammo) ammo_amount += 1; @@ -460,54 +296,24 @@ float w_electro(float req) } if (self.BUTTON_ATCK) { - if(autocvar_g_balance_electro_lightning) - if(self.BUTTON_ATCK_prev) - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_electro_primary_animtime, w_ready); - - if (weapon_prepareattack(0, (autocvar_g_balance_electro_lightning ? 0 : autocvar_g_balance_electro_primary_refire))) + if(weapon_prepareattack(0, autocvar_g_balance_electro_primary_refire)) { - if(autocvar_g_balance_electro_lightning) - { - if ((!self.lgbeam) || wasfreed(self.lgbeam)) - { - W_Electro_Attack3(); - } - if(!self.BUTTON_ATCK_prev) - { - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_electro_primary_animtime, w_ready); - self.BUTTON_ATCK_prev = 1; - } - } - else - { W_Electro_Attack(); weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_electro_primary_animtime, w_ready); - } - } - } else { - if(autocvar_g_balance_electro_lightning) - { - if (self.BUTTON_ATCK_prev != 0) - { - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_electro_primary_animtime, w_ready); - ATTACK_FINISHED(self) = time + autocvar_g_balance_electro_primary_refire * W_WeaponRateFactor(); - } - self.BUTTON_ATCK_prev = 0; } - - if (self.BUTTON_ATCK2) + } + else if(self.BUTTON_ATCK2) + { + if (time >= self.electro_secondarytime) + if (weapon_prepareattack(1, autocvar_g_balance_electro_secondary_refire)) { - if (time >= self.electro_secondarytime) - if (weapon_prepareattack(1, autocvar_g_balance_electro_secondary_refire)) - { - W_Electro_Attack2(); - self.electro_count = autocvar_g_balance_electro_secondary_count; - weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_electro_secondary_animtime, w_electro_checkattack); - self.electro_secondarytime = time + autocvar_g_balance_electro_secondary_refire2 * W_WeaponRateFactor(); - } + W_Electro_Attack2(); + self.electro_count = autocvar_g_balance_electro_secondary_count; + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_electro_secondary_animtime, w_electro_checkattack); + self.electro_secondarytime = time + autocvar_g_balance_electro_secondary_refire2 * W_WeaponRateFactor(); } } - + return TRUE; } case WR_INIT: @@ -520,10 +326,6 @@ float w_electro(float req) precache_sound ("weapons/electro_fire2.wav"); precache_sound ("weapons/electro_impact.wav"); precache_sound ("weapons/electro_impact_combo.wav"); - - if(autocvar_g_balance_electro_lightning) - precache_sound ("weapons/lgbeam_fire.wav"); - return TRUE; } case WR_SETUP: @@ -533,19 +335,8 @@ float w_electro(float req) } case WR_CHECKAMMO1: { - if(autocvar_g_balance_electro_lightning) - { - if(!autocvar_g_balance_electro_primary_ammo) - ammo_amount = 1; - else - ammo_amount = self.ammo_cells > 0; - ammo_amount += self.(weapon_load[WEP_ELECTRO]) > 0; - } - else - { - ammo_amount = self.ammo_cells >= autocvar_g_balance_electro_primary_ammo; - ammo_amount += self.(weapon_load[WEP_ELECTRO]) >= autocvar_g_balance_electro_primary_ammo; - } + ammo_amount = self.ammo_cells >= autocvar_g_balance_electro_primary_ammo; + ammo_amount += self.(weapon_load[WEP_ELECTRO]) >= autocvar_g_balance_electro_primary_ammo; return ammo_amount; } case WR_CHECKAMMO2: diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index edc5801e0..4e0c1b916 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -98,20 +98,14 @@ float autocvar_g_balance_electro_combo_force; float autocvar_g_balance_electro_combo_radius; float autocvar_g_balance_electro_combo_speed; float autocvar_g_balance_electro_combo_safeammocheck; -float autocvar_g_balance_electro_lightning; float autocvar_g_balance_electro_primary_ammo; float autocvar_g_balance_electro_primary_animtime; float autocvar_g_balance_electro_primary_comboradius; float autocvar_g_balance_electro_primary_damage; float autocvar_g_balance_electro_primary_edgedamage; -float autocvar_g_balance_electro_primary_falloff_halflifedist; -float autocvar_g_balance_electro_primary_falloff_maxdist; -float autocvar_g_balance_electro_primary_falloff_mindist; float autocvar_g_balance_electro_primary_force; -float autocvar_g_balance_electro_primary_force_up; float autocvar_g_balance_electro_primary_lifetime; float autocvar_g_balance_electro_primary_radius; -float autocvar_g_balance_electro_primary_range; float autocvar_g_balance_electro_primary_refire; float autocvar_g_balance_electro_primary_speed; float autocvar_g_balance_electro_secondary_ammo; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 05b54db06..7bb024edb 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -622,10 +622,6 @@ float ClientInit_SendEntity(entity to, float sf) WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[1])); WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[2])); WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[3])); - WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[0])); - 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(arc_shotorigin[0])); WriteInt24_t(MSG_ENTITY, compressShotOrigin(arc_shotorigin[1])); WriteInt24_t(MSG_ENTITY, compressShotOrigin(arc_shotorigin[2])); diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index d2a227389..5e066cdbb 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -651,7 +651,6 @@ void spawnfunc_worldspawn (void) readlevelcvars(); GrappleHookInit(); ArcInit(); - ElectroInit(); player_count = 0; bot_waypoints_for_items = autocvar_g_waypoints_for_items;