-.entity accuracy;
.float accuracy_hit[WEP_MAXCOUNT];
.float accuracy_fired[WEP_MAXCOUNT];
-FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(accuracy_hit);
-FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(accuracy_fired);
+.float accuracy_cnt_hit[WEP_MAXCOUNT];
+.float accuracy_cnt_fired[WEP_MAXCOUNT];
float accuracy_byte(float n, float d)
{
b = accuracy_byte(a.(accuracy_hit[w]), a.(accuracy_fired[w]));
a.(accuracy_hit[w]) = hit;
a.(accuracy_fired[w]) = fired;
+
+ if(hit)
+ a.(accuracy_cnt_hit[w]) = 1;
+ a.(accuracy_cnt_fired[w]) = 1;
+
if(b == accuracy_byte(hit, fired))
return;
w = pow(2, w);
a.SendFlags |= w;
}
+.float hit_time;
+.float fired_time;
+
void accuracy_add(entity e, float w, float fired, float hit)
{
entity a;
a.(accuracy_hit[w]) += hit;
if(fired)
a.(accuracy_fired[w]) += fired;
+
+ if(hit && a.hit_time != time) // only run this once per frame
+ {
+ a.(accuracy_cnt_hit[w]) += 1;
+ a.hit_time = time;
+ }
+
+ if(fired && a.fired_time != time) // only run this once per frame
+ {
+ a.(accuracy_cnt_fired[w]) += 1;
+ a.fired_time = time;
+ }
+
if(b == accuracy_byte(a.(accuracy_hit[w]), a.(accuracy_fired[w])))
return;
w = pow(2, w);