/* * buy_it: * Buy the item on which the hero stands */ void buy_it() { struct linked_list *item; struct object *obj; int wo; if (purse <= 0) { msg("You have no money."); return; } if ((item = get_item(pack, "buy", ALL)) == NULL) return; obj = OBJPTR(item); if (!(obj->o_flags & ISUNPAID)) { msg("You already own that."); return; } wo = get_worth(obj); if (wo > purse) { msg("You can't afford that!"); msg("It costs %d pieces of gold.", wo); return; } purse-=wo; not_paid--; obj->o_flags &= ~ISUNPAID; }
/* * price_it: * Price the object that the hero stands on */ bool price_it() { static char *bargain[] = { "great bargain", "quality product", "exceptional find", }; struct linked_list *item; struct object *obj; int worth; if (!open_market()) /* after buying hours */ return FALSE; if ((item = find_obj(hero.y, hero.x)) == NULL) return FALSE; obj = OBJPTR(item); if (curprice == NOTPRICED) { worth = get_worth(obj); worth += 50 - rnd(100); if (worth < 25) worth = 25; worth *= 3; /* slightly expensive */ curprice = worth; /* save price */ strcpy(curpurch, obj->o_typname); /* save item */ } msg("That %s is a %s for only %d pieces of gold", curpurch, bargain[rnd(3)], curprice); return TRUE; }
void showpack(char *howso) { char *iname; unsigned int worth; int cnt, ch, oldpurse; struct linked_list *item; struct object *obj; struct linked_list *bag = NULL; cnt = 1; clear(); mvprintw(0, 0, "Contents of your pack %s:\n", howso); ch = 0; oldpurse = purse; purse = 0; for (item = pack; item != NULL; item = next(item)) { obj = OBJPTR(item); worth = get_worth(obj); whatis(item); purse += worth; if (obj->o_type == ARTIFACT && obj->o_which == TR_PURSE) bag = obj->o_bag; iname = inv_name(obj, UPPERCASE); mvprintw(cnt, 0, "%d) %s\n", ch, iname); ch += 1; if (++cnt > LINES - 5 && next(item) != NULL) { cnt = 1; mvaddstr(LINES - 1, 0, morestr); refresh(); wait_for(' '); clear(); } } if (bag != NULL) { mvaddstr(LINES - 1, 0, morestr); refresh(); wait_for(' '); clear(); cnt = 1; ch = 0; mvprintw(0, 0, "Contents of the Magic Purse of Yendor %s:\n", howso); for (item = bag; item != NULL; item = next(item)) { obj = OBJPTR(item); worth = get_worth(obj); whatis(item); purse += worth; mvprintw(cnt, 0, "%d) %s\n", ch, inv_name(obj, UPPERCASE)); ch += 1; if (++cnt > LINES - 5 && next(item) != NULL) { cnt = 1; mvaddstr(LINES - 1, 0, morestr); refresh(); wait_for(' '); clear(); } } } mvprintw(cnt + 1, 0, "Carrying %d gold pieces", oldpurse); mvprintw(cnt + 2, 0, "Carrying objects worth %d gold pieces", purse); purse += oldpurse; refresh(); }
void total_winner(void) { struct linked_list *item; struct object *obj; int worth, oldpurse; char c; struct linked_list *bag = NULL; clear(); standout(); addstr(" \n"); addstr(" @ @ @ @ @ @@@ @ @ \n"); addstr(" @ @ @@ @@ @ @ @ @ \n"); addstr(" @ @ @@@ @ @ @ @ @ @@@ @@@@ @@@ @ @@@ @ \n"); addstr(" @@@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ \n"); addstr(" @ @ @ @ @ @ @ @@@@ @ @ @@@@@ @ @ @ \n"); addstr(" @ @ @ @ @ @@ @ @ @ @ @ @ @ @ @ @ \n"); addstr(" @@@ @@@ @@ @ @ @ @@@@ @@@@ @@@ @@@ @@ @ \n"); addstr(" \n"); addstr(" Congratulations, you have made it to the light of day! \n"); standend(); addstr("\nYou have joined the elite ranks of those who have \n"); addstr("escaped the Dungeons of Doom alive. You journey home \n"); addstr("and sell all your loot at a great profit.\n"); addstr("The White Council approves the recommendation of\n"); if (player.t_ctype == C_FIGHTER) addstr("the fighters guild and appoints you Lord Protector\n"); else if (player.t_ctype == C_ASSASIN) addstr("the assassins guild and appoints you Master Murderer\n"); else if (player.t_ctype == C_NINJA) addstr("the ninja guild and appoints you Master of the Wind\n"); else if (player.t_ctype == C_ILLUSION) addstr("the illusionists guild and appoints you Master Wizard\n"); else if (player.t_ctype == C_MAGICIAN) addstr("the magicians guild and appoints you Master Wizard\n"); else if (player.t_ctype == C_CLERIC) addstr("the temple priests and appoints you Master of the Flowers\n"); else if (player.t_ctype == C_DRUID) addstr("the temple priests and appoints you Master of the Flowers\n"); else if (player.t_ctype == C_RANGER) addstr("the rangers guild and appoints you Master Ranger\n"); else if (player.t_ctype == C_PALADIN) addstr("the paladins guild and appoints you Master Paladin\n"); else if (player.t_ctype == C_THIEF) { addstr("the thieves guild under protest and appoints you\n"); addstr("Master of the Highways\n"); } addstr("of the Land Between the Mountains.\n"); mvaddstr(LINES - 1, 0, spacemsg); refresh(); wait_for(' '); clear(); idenpack(); oldpurse = purse; mvaddstr(0, 0, " Worth Item"); for (c = 'a', item = pack; item != NULL; c++, item = next(item)) { obj = OBJPTR(item); worth = get_worth(obj); purse += worth; if (obj->o_type == ARTIFACT && obj->o_which == TR_PURSE) bag = obj->o_bag; mvprintw(c - 'a' + 1, 0, "%c) %8d %s", c, worth, inv_name(obj, UPPERCASE)); } if (bag != NULL) { mvaddstr(LINES - 1, 0, morestr); refresh(); wait_for(' '); clear(); mvprintw(0, 0, "Contents of the Magic Purse of Yendor:\n"); for (c = 'a', item = bag; item != NULL; c++, item = next(item)) { obj = OBJPTR(item); worth = get_worth(obj); whatis(item); purse += worth; mvprintw(c - 'a' + 1, 0, "%c) %8d %s\n", c, worth, inv_name(obj, UPPERCASE)); } } mvprintw(c - 'a' + 1, 0, " %6d Gold Pieces ", oldpurse); refresh(); if (has_artifact == 255) score(pstats.s_exp, pstats.s_lvl, TOTAL, 0); else score(pstats.s_exp, pstats.s_lvl, WINNER, 0); byebye(); }