+// LordHavoc: search for flags in float fields
+void PF_findflags (void)
+{
+ int e;
+ int f;
+ int s;
+ edict_t *ed;
+
+ e = G_EDICTNUM(OFS_PARM0);
+ f = G_INT(OFS_PARM1);
+ s = (int)G_FLOAT(OFS_PARM2);
+
+ for (e++ ; e < sv.num_edicts ; e++)
+ {
+ pr_xfunction->builtinsprofile++;
+ ed = EDICT_NUM(e);
+ if (ed->e->free)
+ continue;
+ if ((int)E_FLOAT(ed,f) & s)
+ {
+ RETURN_EDICT(ed);
+ return;
+ }
+ }
+
+ RETURN_EDICT(sv.edicts);
+}
+
+// LordHavoc: chained search for flags in float fields
+void PF_findchainflags (void)
+{
+ int i;
+ int f;
+ int s;
+ edict_t *ent, *chain;
+
+ chain = (edict_t *)sv.edicts;
+
+ f = G_INT(OFS_PARM0);
+ s = (int)G_FLOAT(OFS_PARM1);
+
+ ent = NEXT_EDICT(sv.edicts);
+ for (i = 1;i < sv.num_edicts;i++, ent = NEXT_EDICT(ent))
+ {
+ pr_xfunction->builtinsprofile++;
+ if (ent->e->free)
+ continue;
+ if (!((int)E_FLOAT(ent,f) & s))
+ continue;
+
+ ent->v->chain = EDICT_TO_PROG(chain);
+ chain = ent;
+ }
+
+ RETURN_EDICT(chain);
+}
+