]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/w_electro.qc
g_blance_electro_secondary_bouncefactor & _bouncestop for electro seoncdary. merge...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / w_electro.qc
index ef0786403abc9787566847a873747e2e4d9b6a1f..1600a1c9a1fe7f8b860743d9b556a1b07f11bd06 100644 (file)
@@ -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"));