Exemplo n.º 1
0
void
break_opener_floor (struct pos *p)
{
    struct opener_floor *o = opener_floor_at_pos (p);
    if (! o) return;
    open_door (o->p.l, o->event, anim_cycle, true);
    register_con_undo
    (&undo, p,
     MIGNORE, MIGNORE, o->event + EVENTS, MIGNORE,
     NULL, false, "LOOSE FLOOR BREAKING");
    o->broken = true;
}
Exemplo n.º 2
0
void
break_closer_floor (struct pos *p)
{
  struct closer_floor *c = closer_floor_at_pos (p);
  if (! c) return;
  c->broken = true;
  c->pressed = true;
  register_con_undo
    (&undo, p,
     MIGNORE, MIGNORE, -abs (con (p)->ext.event) - 1,
     false, false, false, false,
     CHPOS_BREAK_CLOSER_FLOOR,
     "LOOSE FLOOR BREAKING");
}
Exemplo n.º 3
0
static void
physics_out (struct anim *k)
{
  /* depressible floors */
  keep_depressible_floor (k);

  /* sound */
  if (k->i == 7 && ! k->reverse) play_sample (drink_sample, NULL, k->id);

  /* consume bottle */
  if (k->i == 0) {
    k->item = con (&k->item_pos)->ext.item;
    register_con_undo (&undo, &k->item_pos,
                       MIGNORE, MIGNORE, NO_ITEM,
                       false, false, false, false,
                       CHPOS_NONE,
                       "CONSUME POTION");
  }
}