void death(char monst) { char **dp, *killer; struct tm *lt; static time_t date; struct tm *localtime(); signal(SIGINT, SIG_IGN); purse -= purse / 10; signal(SIGINT, leave); clear(); killer = killname(monst, FALSE); if (!tombstone) { mvprintw(LINES - 2, 0, "Killed by "); killer = killname(monst, FALSE); if (monst != 's' && monst != 'h') printw("a%s ", vowelstr(killer)); printw("%s with %d gold", killer, purse); } else { time(&date); lt = localtime(&date); move(8, 0); dp = rip; while (*dp) addstr(*dp++); mvaddstr(17, center(killer), killer); if (monst == 's' || monst == 'h') mvaddch(16, 32, ' '); else mvaddstr(16, 33, vowelstr(killer)); mvaddstr(14, center(whoami), whoami); sprintf(prbuf, "%d Au", purse); move(15, center(prbuf)); addstr(prbuf); sprintf(prbuf, "%4d", 1900+lt->tm_year); mvaddstr(18, 26, prbuf); } move(LINES - 1, 0); refresh(); score(purse, amulet ? 3 : 0, monst); printf("[Press return to continue]"); fflush(stdout); (void) fgets(prbuf,10,stdin); my_exit(0); }
void listen(void) { struct linked_list *item; struct thing *tp; int thief_bonus = -50; int mcount = 0; if (player.t_ctype == C_THIEF) thief_bonus = 10; for (item = mlist; item != NULL; item = next(item)) { tp = THINGPTR(item); if (DISTANCE(hero, tp->t_pos) < 81 && rnd(70) < (thief_bonus + 4 * pstats.s_dext + 6 * pstats.s_lvl)) { msg("You hear a%s %s nearby.", vowelstr(monsters[tp->t_index].m_name), monsters[tp->t_index].m_name); mcount++; } } if (mcount == 0) msg("You hear nothing."); }
/* * init_check: * Check out too see if it is proper to play the game now */ init_check() { if (too_much()) { printf("Sorry, %s, but the system is too loaded now.\n", whoami); printf("Try again later. Meanwhile, why not enjoy a%s %s?\n", vowelstr(fruit), fruit); if (author()) printf("However, since you're a good guy, it's up to you\n"); else exit(1); } }
/* * killname: * Convert a code to a monster name */ char * killname(char monst, bool doart) { struct h_list *hp; char *sp; bool article; static struct h_list nlist[] = { {'a', "arrow", TRUE}, {'b', "bolt", TRUE}, {'d', "dart", TRUE}, {'h', "hypothermia", FALSE}, {'s', "starvation", FALSE}, {'\0'} }; if (isupper(monst)) { sp = monsters[monst-'A'].m_name; article = TRUE; } else { sp = "Wally the Wonder Badger"; article = FALSE; for (hp = nlist; hp->h_ch; hp++) if (hp->h_ch == monst) { sp = hp->h_desc; article = hp->h_print; break; } } if (doart && article) sprintf(prbuf, "a%s ", vowelstr(sp)); else prbuf[0] = '\0'; strcat(prbuf, sp); return prbuf; }
std::string Ring::InventoryName() const { std::ostringstream ss; ItemCategory& info = *Category(); std::string stone = info.identifier(); if (info.is_discovered() || game->wizard().reveal_items()) { ss << "A" << ring_num(this) << " ring of " << info.name(); if (!short_msgs()) ss << "(" << stone << ")"; } else if (!info.guess().empty()) { ss << "A ring called " << info.guess(); if (!short_msgs()) ss << "(" << stone << ")"; } else ss << "A" << vowelstr(stone.c_str()) << " " << stone << " ring"; return ss.str(); }