#include "common.qh" #include "equip.qh" #include "math.qh" .float equip_state; ..float itemfield; .float itemfield_1; .float itemfield_2; .float itemfield_3; .float itemfield_4; float (entity e, float eid) equip_flag = { if (eid < 24) { e.itemfield = itemfield_1; } else if (eid < 48) { e.itemfield = itemfield_2; eid -= 24; } else if (eid < 72) { e.itemfield = itemfield_3; eid -= 48; } else if (eid < 96) { e.itemfield = itemfield_4; eid -= 72; } return (1 << eid); }; float (entity e, float eid) equip_query = { eid = equip_flag (e, eid); if (e.(e.itemfield) & eid) return TRUE; else return FALSE; }; float (entity e, float eid) equip_grant = { eid = equip_flag (e, eid); if (e.(e.itemfield) & eid) return FALSE; e.(e.itemfield) |= eid; return TRUE; }; float (entity e, float eid) equip_remove = { eid = equip_flag (e, eid); if (e.(e.itemfield) & eid) { e.(e.itemfield) -= eid; return TRUE; } return FALSE; }; float _equip_iter_id; /* Returns EQUIPID_* or -1 when done */ float (entity iteme) equip_iter = { local float ret, flag; while (1) { if (_equip_iter_id >= EQUIPID_LAST) { _equip_iter_id = 0; return -1; } flag = equip_flag (iteme, _equip_iter_id); ret = _equip_iter_id; _equip_iter_id++; if (iteme.(iteme.itemfield) & flag) return ret; } return -1; /* Keep compiler from complaining */ };