#include "accuracy.qh"
#include "../mutators/all.qh"
-#include "../../common/constants.qh"
-#include "../../common/teams.qh"
-#include "../../common/util.qh"
-#include "../../common/weapons/all.qh"
+#include <common/constants.qh>
+#include <common/teams.qh>
+#include <common/util.qh>
+#include <common/weapons/all.qh>
int accuracy_byte(float n, float d)
{
bool accuracy_send(entity this, entity to, int sf)
{
- WriteByte(MSG_ENTITY, ENT_CLIENT_ACCURACY);
+ WriteHeader(MSG_ENTITY, ENT_CLIENT_ACCURACY);
entity a = this.owner;
if (IS_SPEC(a)) a = a.enemy;
// init/free
void accuracy_init(entity e)
{
- entity a = e.accuracy = new(accuracy);
- make_pure(a);
+ entity a = e.accuracy = new_pure(accuracy);
a.owner = e;
a.drawonlytoclient = e;
Net_LinkEntity(a, false, 0, accuracy_send);
}
// update accuracy stats
-.float hit_time;
+//.float hit_time;
.float fired_time;
void accuracy_add(entity this, int w, int fired, int hit)
if (b == accuracy_byte(a.accuracy_hit[w], a.accuracy_fired[w])) return; // no change
int sf = 1 << (w % 24);
a.SendFlags |= sf;
- entity e; FOR_EACH_CLIENT(e) if (IS_SPEC(e)) if (e.enemy == this) {
- e.accuracy.SendFlags |= sf;
- }
+ FOREACH_CLIENT(IS_SPEC(it) && it.enemy == this, LAMBDA(it.accuracy.SendFlags |= sf));
}
bool accuracy_isgooddamage(entity attacker, entity targ)
int mutator_check = MUTATOR_CALLHOOK(AccuracyTargetValid, attacker, targ);
if (warmup_stage) return false;
- if (targ.deadflag != DEAD_NO) return false;
- if (targ.frozen) return false;
+ if (IS_DEAD(targ)) return false;
+ if (STAT(FROZEN, targ)) return false;
if (SAME_TEAM(attacker, targ)) return false;
if (mutator_check == MUT_ACCADD_INVALID) return true;