-// LordHavoc: search for flags in float fields
-void PF_findflags (void)
-{
- int e;
- int f;
- int s;
- prvm_edict_t *ed;
-
- e = PRVM_G_EDICTNUM(OFS_PARM0);
- f = PRVM_G_INT(OFS_PARM1);
- s = (int)PRVM_G_FLOAT(OFS_PARM2);
-
- for (e++ ; e < prog->num_edicts ; e++)
- {
- prog->xfunction->builtinsprofile++;
- ed = PRVM_EDICT_NUM(e);
- if (ed->priv.server->free)
- continue;
- if ((int)PRVM_E_FLOAT(ed,f) & s)
- {
- VM_RETURN_EDICT(ed);
- return;
- }
- }
-
- VM_RETURN_EDICT(prog->edicts);
-}
-
-// LordHavoc: chained search for flags in float fields
-void PF_findchainflags (void)
-{
- int i;
- int f;
- int s;
- prvm_edict_t *ent, *chain;
-
- chain = (prvm_edict_t *)prog->edicts;
-
- f = PRVM_G_INT(OFS_PARM0);
- s = (int)PRVM_G_FLOAT(OFS_PARM1);
-
- ent = PRVM_NEXT_EDICT(prog->edicts);
- for (i = 1;i < prog->num_edicts;i++, ent = PRVM_NEXT_EDICT(ent))
- {
- prog->xfunction->builtinsprofile++;
- if (ent->priv.server->free)
- continue;
- if (!((int)PRVM_E_FLOAT(ent,f) & s))
- continue;
-
- ent->fields.server->chain = PRVM_EDICT_TO_PROG(chain);
- chain = ent;
- }
-
- VM_RETURN_EDICT(chain);
-}
-