unit *getunitg(region *r, const faction *f) { const char *s; s = getstr(); if (!_strcmpl(s, "new")) { return getnewunit(r, f); } return findunitg(atoi(s)); }
struct unittype * makenumunit(double num,int *myerr) { struct unittype *ret; ret=getnewunit(); if (!ret){ *myerr = E_PARSEMEM; return 0; } ret->factor = num; *myerr = 0; return ret; }
int getunit(region * r, const faction *f, unit **uptr) { int n; const char *s; unit *u; s = getstr(); if (!_strcmpl(s, "new")) { unit *u = getnewunit(r, f); if (u) { *uptr = u; return U_UNIT; } else { *uptr = 0; return U_NOTFOUND; } } if (!region_isocean(r) && !_strcmpl(s, "peasants")) { *uptr = 0; return U_PEASANTS; } n = atoi(s); if (n == 0) { *uptr = 0; return U_NONE; } for (u=r->units;u;u=u->next) { if (u->no == n && !u->isnew) { *uptr = u; return U_UNIT; } } *uptr = 0; return U_NOTFOUND; }