X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fg_damage.qc;h=f80e3e133c9924b49843c499ec227ef99ec4e58c;hb=ae62eb7b0a48758de854556a9f1a1d580df36cfc;hp=ad3332adf6a42806eb4e6a64c825ed4657535286;hpb=53b53682eea732737a642591786acf6f815c18dd;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index ad3332adf..f80e3e133 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -39,8 +39,6 @@ void Damage_DamageInfo(vector org, float coredamage, float edgedamage, float rad e.oldorigin_x = compressShortVector(e.velocity); e.species = bloodtype; - dprint(strcat(ftos(e.species), " ********\n")); - Net_LinkEntity(e, FALSE, 0.2, Damage_DamageInfo_SendEntity); } @@ -231,32 +229,34 @@ string Obituary_ExtraFragInfo(entity player) // Extra fragmessage information string handicap_output; string output; - // health/armor of attacker (person who killed you) - if(autocvar_sv_fraginfo_stats && (player.health >= 1)) - if((autocvar_sv_fraginfo_stats == 2) || inWarmupStage) + if(autocvar_sv_fraginfo && ((autocvar_sv_fraginfo == 2) || inWarmupStage)) + { + // health/armor of attacker (person who killed you) + if(autocvar_sv_fraginfo_stats && (player.health >= 1)) health_output = strcat("^7(Health ^1", ftos(rint(player.health)), "^7 / Armor ^2", ftos(rint(player.armorvalue)), "^7)"); - - // ping display - if(autocvar_sv_fraginfo_ping) - ping_output = ((clienttype(player) == CLIENTTYPE_BOT) ? "^2Bot" : strcat("Ping ", ((player.ping >= 150) ? "^1" : "^2"), ftos(rint(player.ping)), "ms")); - // handicap display - if(autocvar_sv_fraginfo_handicap) - { - if(autocvar_sv_fraginfo_handicap == 2) - handicap_output = strcat(output, strcat("Handicap ^2", ((player.cvar_cl_handicap <= 1) ? "Off" : ftos(rint(player.cvar_cl_handicap))))); - else if(player.cvar_cl_handicap) // with _handicap 1, only show this if there actually is a handicap enabled. - handicap_output = strcat("Handicap ^2", ftos(rint(player.cvar_cl_handicap))); + // ping display + if(autocvar_sv_fraginfo_ping) + ping_output = ((clienttype(player) == CLIENTTYPE_BOT) ? "^2Bot" : strcat("Ping ", ((player.ping >= 150) ? "^1" : "^2"), ftos(rint(player.ping)), "ms")); + + // handicap display + if(autocvar_sv_fraginfo_handicap) + { + if(autocvar_sv_fraginfo_handicap == 2) + handicap_output = strcat(output, strcat("Handicap ^2", ((player.cvar_cl_handicap <= 1) ? "Off" : ftos(rint(player.cvar_cl_handicap))))); + else if(player.cvar_cl_handicap) // with _handicap 1, only show this if there actually is a handicap enabled. + handicap_output = strcat("Handicap ^2", ftos(rint(player.cvar_cl_handicap))); + } + + // format the string + output = strcat(health_output, (health_output ? ((ping_output || handicap_output) ? " ^7(" : "") : ((ping_output || handicap_output) ? "^7(" : "")), + ping_output, (handicap_output ? "^7 / " : ""), + handicap_output, ((ping_output || handicap_output) ? "^7)" : "")); + + // add new line to the beginning if there is a message + if(output) { output = strcat("\n", output); } } - // format the string - output = strcat(health_output, (health_output ? ((ping_output || handicap_output) ? " ^7(" : "") : ((ping_output || handicap_output) ? "^7(" : "")), - ping_output, (handicap_output ? "^7 / " : ""), - handicap_output, ((ping_output || handicap_output) ? "^7)" : "")); - - // add new line to the beginning if there is a message - if(output) { output = strcat("\n", output); } - return output; } @@ -406,7 +406,7 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) PlayerStats_Event(targ, PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM, 1); } - if((autocvar_sv_fraginfo_typefrag) && (targ.BUTTON_CHAT)) { + if(targ.BUTTON_CHAT) { Send_CSQC_KillCenterprint(attacker, s, Obituary_ExtraFragInfo(targ), KILL_TYPEFRAG, MSG_KILL); Send_CSQC_KillCenterprint(targ, a, Obituary_ExtraFragInfo(attacker), KILL_TYPEFRAGGED, MSG_KILL); } else { @@ -887,7 +887,23 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float if (vlen(force)) if (self.classname != "player" || time >= self.spawnshieldtime || g_midair) { - self.velocity = self.velocity + damage_explosion_calcpush(self.damageforcescale * force, self.velocity, autocvar_g_balance_damagepush_speedfactor); + vector farce = damage_explosion_calcpush(self.damageforcescale * force, self.velocity, autocvar_g_balance_damagepush_speedfactor); + if(self.movetype == MOVETYPE_PHYSICS) + { + entity farcent; + farcent = spawn(); + farcent.classname = "farce"; + farcent.enemy = self; + farcent.movedir = farce * 10; + if(self.mass) + farcent.movedir = farcent.movedir * self.mass; + farcent.origin = hitloc; + farcent.forcetype = FORCETYPE_FORCEATPOS; + farcent.nextthink = time + 0.1; + farcent.think = SUB_Remove; + } + else + self.velocity = self.velocity + farce; self.flags &~= FL_ONGROUND; UpdateCSQCProjectile(self); }