Beispiel #1
0
/* Legt eine neue Verzauberung an. Sollte es schon einen Zauber
 * dieses Typs geben, gibt es den bestehenden zurück.
 */
static curse *make_curse(unit * mage, attrib ** ap, const curse_type * ct,
  float vigour, int duration, float effect, int men)
{
  curse *c;
  attrib *a;

  a = a_new(&at_curse);
  a_add(ap, a);
  c = (curse *) a->data.v;

  c->type = ct;
  c->flags = 0;
  c->vigour = vigour;
  c->duration = duration;
  c->effect = effect;
  c->magician = mage;

  c->no = newunitid();
  chash(c);

  switch (c->type->typ) {
    case CURSETYP_NORM:
      break;

    case CURSETYP_UNIT:
    {
      c->data.i = men;
      break;
    }

  }
  return c;
}
Beispiel #2
0
static void createunitid(unit * u, int id)
{
  if (id <= 0 || id > MAX_UNIT_NR || ufindhash(id) || dfindhash(id)
    || forbiddenid(id))
    u->no = newunitid();
  else
    u->no = id;
  uhash(u);
}