X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_player.qc;h=6310d7ff3ef3cb6daeefb423615dc0f8187161a7;hp=aae39ea66eccbc9e9190e1797fedcabee3e366de;hb=86c9dc7c3696c329496b06375c1e79fb407401ce;hpb=ff442844108257ce535eae6dc08eaf659ff5efd7 diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index aae39ea66e..6310d7ff3e 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -9,7 +9,6 @@ #include "miscfunctions.qh" #include "portals.qh" #include "teamplay.qh" -#include "waypointsprites.qh" #include "weapons/throwing.qh" #include "command/common.qh" #include "../common/animdecide.qh" @@ -19,6 +18,8 @@ #include "../common/playerstats.qh" #include "../csqcmodellib/sv_model.qh" +#include "../common/minigames/sv_minigames.qh" + #include "weapons/weaponstats.qh" #include "../common/animdecide.qh" @@ -152,6 +153,8 @@ void player_anim (void) int animbits = deadbits; if(self.frozen) animbits |= ANIMSTATE_FROZEN; + if(self.movetype == MOVETYPE_FOLLOW) + animbits |= ANIMSTATE_FOLLOW; if(self.crouch) animbits |= ANIMSTATE_DUCK; animdecide_setstate(self, animbits, false); @@ -322,7 +325,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, int deathtyp damage /= sqrt(bound(1.0, attacker.cvar_cl_handicap, 100.0)); } - if(DEATH_ISWEAPON(deathtype, WEP_TUBA)) + if(DEATH_ISWEAPON(deathtype, WEP_TUBA.m_id)) { // tuba causes blood to come out of the ears vector ear1, ear2; @@ -385,14 +388,8 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, int deathtyp self.istypefrag = 0; } - frag_inflictor = inflictor; - frag_attacker = attacker; - frag_target = self; frag_damage = damage; - damage_take = take; - damage_save = save; - damage_force = force; - MUTATOR_CALLHOOK(PlayerDamage_SplitHealthArmor); + MUTATOR_CALLHOOK(PlayerDamage_SplitHealthArmor, inflictor, attacker, self, force, take, save); take = bound(0, damage_take, self.health); save = bound(0, damage_save, self.armorvalue); excess = max(0, damage - take - save); @@ -498,6 +495,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, int deathtyp dh = dh - max(self.health, 0); da = da - max(self.armorvalue, 0); WeaponStats_LogDamage(awep, abot, self.weapon, vbot, dh + da); + MUTATOR_CALLHOOK(PlayerDamaged, attacker, self, dh, da, hitloc); } if (self.health < 1) @@ -535,7 +533,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, int deathtyp if(deathtype == DEATH_KILL) { // for the lemmings fans, a small harmless explosion - pointparticles(particleeffectnum("rocket_explode"), self.origin, '0 0 0', 1); + Send_Effect(EFFECT_ROCKET_EXPLODE, self.origin, '0 0 0', 1); } } @@ -549,11 +547,8 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, int deathtyp if(accuracy_isgooddamage(attacker, self)) attacker.accuracy.(accuracy_frags[w-1]) += 1; - frag_attacker = attacker; - frag_inflictor = inflictor; - frag_target = self; - frag_deathtype = deathtype; - MUTATOR_CALLHOOK(PlayerDies); + MUTATOR_CALLHOOK(PlayerDies, inflictor, attacker, self, deathtype); + excess = frag_damage; WEP_ACTION(self.weapon, WR_PLAYERDEATH); @@ -715,12 +710,28 @@ float Say(entity source, float teamsay, entity privatesay, string msgin, float f } else if(teamsay) { - msgstr = strcat("\{1}\{13}", colorstr, "(", colorprefix, namestr, colorstr, ") ^7", msgin); + if(strstrofs(msgin, "/me", 0) >= 0) + { + //msgin = strreplace("/me", "", msgin); + //msgin = substring(msgin, 3, strlen(msgin)); + msgin = strreplace("/me", strcat(colorstr, "(", colorprefix, namestr, colorstr, ")^7"), msgin); + msgstr = strcat("\{1}\{13}^4* ", "^7", msgin); + } + else + msgstr = strcat("\{1}\{13}", colorstr, "(", colorprefix, namestr, colorstr, ") ^7", msgin); cmsgstr = strcat(colorstr, "(", colorprefix, namestr, colorstr, ")\n^7", msgin); } else { - msgstr = strcat("\{1}", colorprefix, namestr, "^7: ", msgin); + if(strstrofs(msgin, "/me", 0) >= 0) + { + //msgin = strreplace("/me", "", msgin); + //msgin = substring(msgin, 3, strlen(msgin)); + msgin = strreplace("/me", strcat(colorprefix, namestr), msgin); + msgstr = strcat("\{1}^4* ", "^7", msgin); + } + else + msgstr = strcat("\{1}", colorprefix, namestr, "^7: ", msgin); cmsgstr = ""; } msgstr = strcat(strreplace("\n", " ", msgstr), "\n"); // newlines only are good for centerprint @@ -836,7 +847,7 @@ float Say(entity source, float teamsay, entity privatesay, string msgin, float f } if(flood) - print("NOTE: ", playername(source), "^7 is flooding.\n"); + LOG_INFO("NOTE: ", playername(source), "^7 is flooding.\n"); // build sourcemsgstr by cutting off a prefix and replacing it by the other one if(privatesay) @@ -878,6 +889,15 @@ float Say(entity source, float teamsay, entity privatesay, string msgin, float f if(cmsgstr != "") centerprint(privatesay, cmsgstr); } + else if ( teamsay && source.active_minigame ) + { + sprint(source, sourcemsgstr); + dedicated_print(msgstr); // send to server console too + FOR_EACH_REALCLIENT(head) + if(head != source) + if(head.active_minigame == source.active_minigame) + sprint(head, msgstr); + } else if(teamsay > 0) // team message, only sent to team mates { sprint(source, sourcemsgstr); @@ -977,7 +997,7 @@ void PrecachePlayerSounds(string f) { if(tokenize_console(s) != 3) { - dprint("Invalid sound info line: ", s, "\n"); + LOG_TRACE("Invalid sound info line: ", s, "\n"); continue; } PrecacheGlobalSound(strcat(argv(1), " ", argv(2))); @@ -1009,7 +1029,7 @@ float LoadPlayerSounds(string f, float first) fh = fopen(f, FILE_READ); if(fh < 0) { - dprint("Player sound file not found: ", f, "\n"); + LOG_TRACE("Player sound file not found: ", f, "\n"); return 0; } while((s = fgets(fh)))