]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
More work on laser
authorSamual Lenks <samual@xonotic.org>
Mon, 30 Jul 2012 00:20:35 +0000 (20:20 -0400)
committerSamual Lenks <samual@xonotic.org>
Mon, 30 Jul 2012 00:20:35 +0000 (20:20 -0400)
qcsrc/server/g_damage.qc
qcsrc/server/w_laser.qc

index 710c7d4e2a88e7e7fa5ca4fdeb019c5e84ab5d96..ba2eedf85b16c1ee6e0770d9fccb5a8590200f43 100644 (file)
@@ -1138,52 +1138,6 @@ float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector in
                                                        print(sprintf(" D=%f F=%f\n", finaldmg, vlen(force)));
                                        }
 
-                                       // laser force adjustments :P
-                                       if(DEATH_WEAPONOF(deathtype) == WEP_LASER)
-                                       {
-                                               if (targ == attacker)
-                                               {
-                                                       vector vel;
-
-                                                       float force_zscale;
-                                                       float force_velocitybiasramp;
-                                                       float force_velocitybias;
-
-                                                       force_velocitybiasramp = autocvar_sv_maxspeed;
-                                                       if(deathtype & HITTYPE_SECONDARY)
-                                                       {
-                                                               force_zscale = autocvar_g_balance_laser_secondary_force_zscale;
-                                                               force_velocitybias = autocvar_g_balance_laser_secondary_force_velocitybias;
-                                                       }
-                                                       else
-                                                       {
-                                                               force_zscale = autocvar_g_balance_laser_primary_force_zscale;
-                                                               force_velocitybias = autocvar_g_balance_laser_primary_force_velocitybias;
-                                                       }
-
-                                                       vel = targ.velocity;
-                                                       vel_z = 0;
-                                                       vel = normalize(vel) * bound(0, vlen(vel) / force_velocitybiasramp, 1) * force_velocitybias;
-                                                       force =
-                                                               vlen(force)
-                                                               *
-                                                               normalize(normalize(force) + vel);
-
-                                                       force_z *= force_zscale;
-                                               }
-                                               else
-                                               {
-                                                       if(deathtype & HITTYPE_SECONDARY)
-                                                       {
-                                                               force *= autocvar_g_balance_laser_secondary_force_other_scale;
-                                                       }
-                                                       else
-                                                       {
-                                                               force *= autocvar_g_balance_laser_primary_force_other_scale;
-                                                       }
-                                               }
-                                       }
-
                                        //if (targ == attacker)
                                        //{
                                        //      print("hits ", ftos(hits), " / ", ftos(total));
index 2522bd444f5012843e49a201fe6de78191bf1c71..c3e3cb316dd4673c0904bfaa90b635d39dc3002c 100644 (file)
@@ -130,21 +130,28 @@ void W_Laser_Shockwave()
        {
                next = head.chain;
                
-               if((head != self) && !head.shockwave_hit && head.takedamage)
+               if(!head.shockwave_hit && head.takedamage)
                {
-                       // if it's a player, use the view origin as reference (stolen from RadiusDamage functions in g_damage.qc)
-                       center = PLAYER_CENTER(head);
-                       
-                       multiplier_from_accuracy = 1;
-                       multiplier_from_distance = (1 - (distance_to_hit ? min(1, (distance_to_hit / distance_to_end)) : 0));
-                       multiplier = max(autocvar_g_balance_laser_primary_multiplier_min, ((multiplier_from_accuracy * autocvar_g_balance_laser_primary_multiplier_accuracy) + (multiplier_from_distance * autocvar_g_balance_laser_primary_multiplier_distance)));
-                       
-                       final_force = ((normalize(center - attack_hitpos) * autocvar_g_balance_laser_primary_force) * multiplier);
-                       final_damage = (autocvar_g_balance_laser_primary_damage * multiplier + autocvar_g_balance_laser_primary_edgedamage * (1 - multiplier));
-                       Damage(head, self, self, final_damage, WEP_LASER, head.origin, final_force);
+                       if(head == self)
+                       {
+                               // jumping like normal
+                       }
+                       else
+                       {
+                               // if it's a player, use the view origin as reference (stolen from RadiusDamage functions in g_damage.qc)
+                               center = PLAYER_CENTER(head);
+                               
+                               multiplier_from_accuracy = 1;
+                               multiplier_from_distance = (1 - (distance_to_hit ? min(1, (distance_to_hit / distance_to_end)) : 0));
+                               multiplier = max(autocvar_g_balance_laser_primary_multiplier_min, ((multiplier_from_accuracy * autocvar_g_balance_laser_primary_multiplier_accuracy) + (multiplier_from_distance * autocvar_g_balance_laser_primary_multiplier_distance)));
+                               
+                               final_force = ((normalize(center - attack_hitpos) * autocvar_g_balance_laser_primary_force) * multiplier);
+                               final_damage = (autocvar_g_balance_laser_primary_damage * multiplier + autocvar_g_balance_laser_primary_edgedamage * (1 - multiplier));
+                               Damage(head, self, self, final_damage, WEP_LASER, head.origin, final_force);
 
-                       head.shockwave_hit = TRUE;
-                       print("debug: DIRECT HIT: multiplier = ", ftos(multiplier), strcat(", damage = ", ftos(final_damage), ", force = ", ftos(vlen(final_force))),"... multiplier_from_accuracy = ", ftos(multiplier_from_accuracy), ", multiplier_from_distance = ", ftos(multiplier_from_distance), ".\n");
+                               head.shockwave_hit = TRUE;
+                               print("debug: DIRECT HIT: multiplier = ", ftos(multiplier), strcat(", damage = ", ftos(final_damage), ", force = ", ftos(vlen(final_force))),"... multiplier_from_accuracy = ", ftos(multiplier_from_accuracy), ", multiplier_from_distance = ", ftos(multiplier_from_distance), ".\n");
+                       }
                }
                head = next;
        }