Example #1
0
void rogue_escape(mob_t * m)
{
  int dir;
  int i;
  char line[DEFLEN];
  int stolen;

  if (game->player_gold == 0)
    return;

  if (m->x < player->x)
  {
    dir = -2;
    m->flip = true;
  }
  else
  {
    dir = +2;
    m->flip = false;
  }

  for (i = 0; i < 2; i++)
  {
    m->flags = GFX_HUMAN_FALL1;
    draw_board(); mpause();
    m->flags = GFX_HUMAN_FALL2;
    draw_board(); mpause();
  }

  m->flags = 0;

  while (m->x > view_x - 2 && m->x <= view_x + BOARD_W + 2)
  {
    m->x += dir;
    draw_board(); spause();
  }

  m->type = MOB_NONE;

  if (game->player_gold)
  {
    if (has_eq(EQ_SHADES) && rand() % 10 == 0)
    {
      game->equipment[EQ_SHADES] = false;
      snprintf(line, DEFLEN, "ROGUE STOLE YOUR SHADES AND RAN AWAY!\n\n(WHAT A JERK)");
    }
    else
    {
      stolen = 1 + rand() % ROGUE_STEAL_GOLD;
      game->player_gold -= stolen;
      snprintf(line, DEFLEN, "ROGUE STOLE %d GOLD AND RAN AWAY!", stolen);
    }

    draw_stats();
    flush_input();
    pwait(line);
  }

  return;
}
Example #2
0
/**
   Give the player a random item suitable for the current floor or
   @gold if nothing useful was available.
*/
void give_item(char * msg, int gold, int type)
{
  char line[DEFLEN];

  if (game->weapon == WPN_UNARMED && rand() % 3 == 0)
  {
    give_weapon(WPN_BONECLUB);
    snprintf(line, DEFLEN, "%sYOU FIND A BONE CLUB", msg);
    goto print_msg;
  }

  switch (rand() % 20)
  {
  case 0:
    if (!has_eq(EQ_TORCH))
    {
      give_eq(EQ_TORCH);
      draw_stats();
      snprintf(line, DEFLEN, "%sYOU FIND A TORCH", msg);
      goto print_msg;
    }
    break;

  case 1:
    if (!has_eq(EQ_SHADES))
    {
      give_eq(EQ_SHADES);
      draw_stats();
      snprintf(line, DEFLEN, "%sYOU FIND SOME SHADES\n\nYOU LOOK REALLY COOL NOW", msg);
      goto print_msg;
    }
    break;

  default:
    break;
  }

  game->player_gold += gold;
  game->total_gold_earned += gold;
  draw_stats();
  snprintf(line, DEFLEN, "%sYOU FIND %d GOLD", msg, gold);

print_msg:
  pwait(line);

  return;
}
Example #3
0
tvt invariant_sett::is_eq(std::pair<unsigned, unsigned> p) const
{
  std::pair<unsigned, unsigned> s=p;
  std::swap(s.first, s.second);

  if(has_eq(p))
    return tvt(true);

  if(has_ne(p) || has_ne(s))
    return tvt(false);

  return tvt::unknown();
}
Example #4
0
File: calc.c Project: tommie/xppaut
int do_calc(char *temp, double *z) {
  char val[15];
  int ok;
  int i;
  double newz;
  if (strlen(temp) == 0) {
    *z = 0.0;
    return (1);
  }
  if (has_eq(temp, val, &i)) {

    newz = calculate(&temp[i], &ok); /*  calculate quantity  */

    if (ok == 0)
      return (-1);
    i = find_user_name(PARAMBOX, val);
    if (i > -1) {
      set_val(val, newz); /* a parameter set to value  */
      *z = newz;
      redraw_params();
    } else {
      i = find_user_name(ICBOX, val);
      if (i < 0) {
        err_msg("No such name!");
        return (-1);
      }
      set_val(val, newz);

      last_ic[i] = newz;
      *z = newz;
      redraw_ics();
    }
    return (0);
  }

  newz = calculate(temp, &ok);
  if (ok == 0)
    return (-1);
  *z = newz;
  return (1);
}