Exemple #1
0
static void
alp_write(const attrib * a, const void *owner, struct storage *store)
{
  alp_data *ad = (alp_data *) a->data.v;
  write_unit_reference(ad->mage, store);
  write_unit_reference(ad->target, store);
}
static void createcurse_write(const trigger * t, struct storage *store)
{
    createcurse_data *td = (createcurse_data *)t->data.v;
    write_unit_reference(td->mage, store);
    write_unit_reference(td->target, store);
    WRITE_TOK(store, td->type->cname);
    WRITE_FLT(store, (float)td->vigour);
    WRITE_INT(store, td->duration);
    WRITE_FLT(store, (float)td->effect);
    WRITE_INT(store, td->men);
}
Exemple #3
0
static void wall_write(const connection * b, storage * store)
{
    wall_data *fd = (wall_data *)b->data.v;
    write_unit_reference(fd->mage, store);
    WRITE_INT(store, fd->force);
    WRITE_INT(store, fd->countdown);
}
Exemple #4
0
void curse_write(const attrib * a, const void *owner, struct storage *store)
{
  unsigned int flags;
  curse *c = (curse *) a->data.v;
  const curse_type *ct = c->type;
  unit *mage = (c->magician && c->magician->number) ? c->magician : NULL;

  /* copied from c_clearflag */
  flags = (c->flags & ~CURSE_ISNEW) | (c->type->flags & CURSE_ISNEW);

  WRITE_INT(store, c->no);
  WRITE_TOK(store, ct->cname);
  WRITE_INT(store, flags);
  WRITE_INT(store, c->duration);
  WRITE_FLT(store, (float)c->vigour);
  write_unit_reference(mage, store);
  WRITE_FLT(store, (float)c->effect);

  if (c->type->write)
    c->type->write(store, c, owner);
  else if (c->type->typ == CURSETYP_UNIT) {
    WRITE_INT(store, c->data.i);
  }
  if (c->type->typ == CURSETYP_REGION) {
    write_region_reference((region *) c->data.v, store);
  }
}
Exemple #5
0
static void giveitem_write(const trigger * t, struct storage *store)
{
    giveitem_data *td = (giveitem_data *)t->data.v;
    write_unit_reference(td->u, store);
    WRITE_INT(store, td->number);
    WRITE_TOK(store, td->itype->rtype->_name);
}
Exemple #6
0
static void unitmessage_write(const trigger * t, struct storage *store)
{
  unitmessage_data *td = (unitmessage_data *) t->data.v;
  write_unit_reference(td->target, store);
  WRITE_TOK(store, td->string);
  WRITE_INT(store, td->type);
  WRITE_INT(store, td->level);
}
Exemple #7
0
static void shock_write(const trigger * t, struct storage *store)
{
  unit *u = (unit *) t->data.v;
  trigger *next = t->next;
  while (next) {
    /* make sure it is unique! */
    if (next->type == t->type && next->data.v == t->data.v)
      break;
    next = next->next;
  }
  if (next && u) {
    log_error("more than one shock-attribut for %s on a unit. FIXED.\n", unitid(u));
    write_unit_reference(NULL, store);
  } else {
    write_unit_reference(u, store);
  }
}
Exemple #8
0
static void
object_write(const attrib * a, const void *owner, struct storage *store)
{
  const object_data *data = (object_data *) a->data.v;
  int type = (int)data->type;
  WRITE_TOK(store, data->name);
  WRITE_INT(store, type);
  switch (data->type) {
    case TINTEGER:
      WRITE_INT(store, data->data.i);
      break;
    case TREAL:
      WRITE_FLT(store, (float)data->data.real);
      break;
    case TSTRING:
      WRITE_STR(store, data->data.str);
      break;
    case TUNIT:
      write_unit_reference(data->data.u, store);
      break;
    case TFACTION:
      write_faction_reference(data->data.f, store);
      break;
    case TBUILDING:
      write_building_reference(data->data.b, store);
      break;
    case TSHIP:
      /* write_ship_reference(data->data.sh, store); */
      assert(!"not implemented");
      break;
    case TREGION:
      write_region_reference(data->data.r, store);
      break;
    case TNONE:
      break;
    default:
      assert(!"illegal type in object-attribute");
  }
}
Exemple #9
0
static void clonedied_write(const trigger * t, struct storage *store)
{
  unit *u = (unit *) t->data.v;
  write_unit_reference(u, store);
}