]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cl_player.qc
only send armor/health updates as increments of 10
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cl_player.qc
index 85e557c96314268c48705e3edc9c6a906c0174b6..13953f13ac9178c1fffacac276d5fa2b26c6a6ed 100644 (file)
@@ -188,6 +188,7 @@ void player_setupanimsformodel()
        self.anim_forwardleft = '20 1 1';
        self.anim_backright = '21 1 1';
        self.anim_backleft  = '22 1 1';
+       self.anim_melee = '23 1 1';
        animparseerror = FALSE;
        animfilename = strcat(self.model, ".animinfo");
        animfile = fopen(animfilename, FILE_READ);
@@ -214,6 +215,7 @@ void player_setupanimsformodel()
                self.anim_forwardleft  = animparseline(animfile);
                self.anim_backright    = animparseline(animfile);
                self.anim_backleft     = animparseline(animfile);
+               self.anim_melee        = animparseline(animfile);
                fclose(animfile);
 
                // derived anims
@@ -625,6 +627,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht
                frag_inflictor = inflictor;
                frag_target = self;
                MUTATOR_CALLHOOK(PlayerDies);
+               weapon_action(self.weapon, WR_PLAYERDEATH);
 
                if(self.flagcarried)
                {
@@ -732,27 +735,28 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht
        }
 }
 
-.float the_entnum;
-// sendflags use: 1 = origin, 2 = health/armor, 0x80 = same team (includes health)
+// sendflags use: 1 = health (value is 0 or 1 for dead/alive on enemies), 2 = armor, 0x80 = same team (includes health)
 float SendEntity_ShowNames(entity to, float sendflags)
 {
+    float the_health;
+    the_health = self.health;
+
     WriteByte(MSG_ENTITY, ENT_CLIENT_SHOWNAMES);
-    //sendflags &= 127;
-    if(teams_matter && self.team == to.team)
+    WriteByte(MSG_ENTITY, num_for_edict(self.owner));
+
+    sendflags = sendflags & 127;
+    if(teams_matter && self.owner.team == to.team)
         sendflags |= 128;
-    else
-        sendflags &~= 2;
+    else if(self.owner.health >= 1)
+        the_health = 1;
+
     WriteByte(MSG_ENTITY, sendflags);
-    WriteByte(MSG_ENTITY, self.the_entnum);
     if(sendflags & 1)
     {
-        WriteShort(MSG_ENTITY, rint(self.origin_x));
-        WriteShort(MSG_ENTITY, rint(self.origin_y));
-        WriteShort(MSG_ENTITY, rint(self.origin_z));
+        WriteByte(MSG_ENTITY, the_health);
     }
     if(sendflags & 2)
     {
-        WriteByte(MSG_ENTITY, self.health);
         WriteByte(MSG_ENTITY, self.armorvalue);
     }
     return TRUE;
@@ -760,21 +764,17 @@ float SendEntity_ShowNames(entity to, float sendflags)
 
 void shownames_think()
 {
-    if(self.origin != self.owner.origin)
+    self.origin = self.owner.origin + '0 0 1' * 48;
+    if(self.health != max(0, ceil(self.owner.health/10)))
     {
-        setorigin(self, self.owner.origin);
+        self.health = max(0, ceil(self.owner.health/10));
         self.SendFlags |= 1;
     }
-    if(self.health != self.owner.health || self.armorvalue != self.owner.armorvalue)
+    if(self.armorvalue != max(0, ceil(self.owner.armorvalue/10)))
     {
-        self.health = self.owner.health;
-        self.armorvalue = self.owner.armorvalue;
+        self.armorvalue = max(0, ceil(self.owner.armorvalue/10));
         self.SendFlags |= 2;
     }
-    if(self.the_entnum != num_for_edict(self.owner))
-    {
-        self.the_entnum = num_for_edict(self.owner);
-    }
     self.nextthink = time;
 }