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; }
/** 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; }
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(); }
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); }