]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/damage.qc
Merge remote-tracking branch 'origin/master' into morosophos/server-current4
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / damage.qc
index 43573ad5d480916c95b865cf77fb2f65cad1c8f2..cf0dedd97e08e2ef8ada6de35c2e3ff6beb6e7ed 100644 (file)
@@ -531,11 +531,11 @@ void Freeze(entity targ, float revivespeed, int frozen_type, bool show_waypoint)
        FOREACH_CLIENT(IS_PLAYER(it),
        {
                for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
-           {
-               .entity weaponentity = weaponentities[slot];
-               if(it.(weaponentity).hook.aiment == targ)
-                       RemoveHook(it.(weaponentity).hook);
-           }
+               {
+                       .entity weaponentity = weaponentities[slot];
+                       if(it.(weaponentity).hook.aiment == targ)
+                               RemoveHook(it.(weaponentity).hook);
+               }
        });
 
        // add waypoint
@@ -565,11 +565,11 @@ void Unfreeze(entity targ, bool reset_health)
        FOREACH_CLIENT(IS_PLAYER(it),
        {
                for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
-           {
-               .entity weaponentity = weaponentities[slot];
-               if(it.(weaponentity).hook.aiment == targ)
-                       RemoveHook(it.(weaponentity).hook);
-           }
+               {
+                       .entity weaponentity = weaponentities[slot];
+                       if(it.(weaponentity).hook.aiment == targ)
+                               RemoveHook(it.(weaponentity).hook);
+               }
        });
 
        // remove the ice block
@@ -966,7 +966,7 @@ float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector in
                                        center = CENTER_OR_VIEWOFS(targ);
 
                                        force = normalize(center - myblastorigin);
-                                       force = force * (finaldmg / coredamage) * forceintensity;
+                                       force = force * (finaldmg / max(coredamage, edgedamage)) * forceintensity;
                                        hitloc = nearest;
 
                                        // apply special scaling along the z axis if set
@@ -1036,14 +1036,15 @@ float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector in
 
                                                if(autocvar_g_throughfloor_debug)
                                                        LOG_INFOF(" D=%f F=%f", finaldmg, vlen(force));
+
+                                               /*if (targ == attacker)
+                                               {
+                                                       print("hits ", ftos(hits), " / ", ftos(total));
+                                                       print(" finaldmg ", ftos(finaldmg), " force ", ftos(vlen(force)));
+                                                       print(" (", vtos(force), ") (", ftos(a), ")\n");
+                                               }*/
                                        }
 
-                                       //if (targ == attacker)
-                                       //{
-                                       //      print("hits ", ftos(hits), " / ", ftos(total));
-                                       //      print(" finaldmg ", ftos(finaldmg), " force ", vtos(force));
-                                       //      print(" (", ftos(a), ")\n");
-                                       //}
                                        if(finaldmg || force)
                                        {
                                                if(targ.iscreature)
@@ -1068,14 +1069,14 @@ float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector in
        RadiusDamage_running = 0;
 
        if(!DEATH_ISSPECIAL(deathtype))
-               accuracy_add(attacker, DEATH_WEAPONOF(deathtype), 0, min(coredamage, stat_damagedone));
+               accuracy_add(attacker, DEATH_WEAPONOF(deathtype), 0, min(max(coredamage, edgedamage), stat_damagedone));
 
        return total_damage_to_creatures;
 }
 
 float RadiusDamage(entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype, .entity weaponentity, entity directhitentity)
 {
-       return RadiusDamageForSource(inflictor, (inflictor.origin + (inflictor.mins + inflictor.maxs) * 0.5), inflictor.velocity, attacker, coredamage, edgedamage, rad, 
+       return RadiusDamageForSource(inflictor, (inflictor.origin + (inflictor.mins + inflictor.maxs) * 0.5), inflictor.velocity, attacker, coredamage, edgedamage, rad,
                                                                        cantbe, mustbe, false, forceintensity, 1, deathtype, weaponentity, directhitentity);
 }