X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_electro.qc;h=1600a1c9a1fe7f8b860743d9b556a1b07f11bd06;hp=e885cd0d28d8635b9abe9fd5ce11edb62a9d9eba;hb=ba6acfcf1beb9e3cf79e4bd31cbb18a8159ecf8e;hpb=fb839150d0cd4c4937d183b723b6cc1ed250c66a diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index e885cd0d2..1600a1c9a 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -61,10 +61,13 @@ void W_Plasma_Explode_Combo (void) void W_Plasma_Touch (void) { + //self.velocity = self.velocity * 0.1; + PROJECTILE_TOUCH; if (other.takedamage == DAMAGE_AIM) { W_Plasma_Explode (); } else { + //UpdateCSQCProjectile(self); spamsound (self, CHAN_PROJECTILE, "weapons/electro_bounce.wav", VOL_BASE, ATTN_NORM); self.projectiledeathtype |= HITTYPE_BOUNCE; } @@ -136,6 +139,8 @@ void W_Electro_Attack() //sounds bad CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO_BEAM, TRUE); + + other = proj; MUTATOR_CALLHOOK(EditProjectile); } void W_Electro_Attack2() @@ -172,7 +177,10 @@ void W_Electro_Attack2() proj.health = cvar("g_balance_electro_secondary_health"); proj.event_damage = W_Plasma_Damage; proj.flags = FL_PROJECTILE; - + + proj.bouncefactor = cvar("g_balance_electro_secondary_bouncefactor"); + proj.bouncestop = cvar("g_balance_electro_secondary_bouncestop"); + #if 0 entity p2; p2 = spawn(); @@ -182,7 +190,9 @@ void W_Electro_Attack2() #endif CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO, FALSE); // no culling, it has sound -} + + other = proj; MUTATOR_CALLHOOK(EditProjectile); + } .vector hook_start, hook_end; float lgbeam_send(entity to, float sf) @@ -216,11 +226,18 @@ float lgbeam_send(entity to, float sf) void lgbeam_think() { self.owner.prevlgfire = time; - if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self != self.owner.lgbeam || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK) + if (self != self.owner.lgbeam) { remove(self); return; } + if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK) + { + if(self == self.owner.lgbeam) + self.owner.lgbeam = world; + remove(self); + return; + } self.nextthink = time; @@ -231,8 +248,10 @@ void lgbeam_think() if not(self.owner.items & IT_UNLIMITED_WEAPON_AMMO) { if(cvar("g_balance_electro_primary_ammo")) - dt = min(frametime, self.owner.ammo_cells / cvar("g_balance_electro_primary_ammo")); - self.owner.ammo_cells = max(0, self.owner.ammo_cells - cvar("g_balance_electro_primary_ammo") * frametime); + { + dt = min(dt, self.owner.ammo_cells / cvar("g_balance_electro_primary_ammo")); + self.owner.ammo_cells = max(0, self.owner.ammo_cells - cvar("g_balance_electro_primary_ammo") * frametime); + } } W_SetupShot_Range(self.owner, TRUE, 0, "", cvar("g_balance_electro_primary_damage") * dt, cvar("g_balance_electro_primary_range")); @@ -355,7 +374,7 @@ float w_electro(float req) { if(cvar("g_balance_electro_lightning")) { - if (self.BUTTON_ATCK_prev == 0) + if ((!self.lgbeam) || wasfreed(self.lgbeam)) { W_Electro_Attack3(); }