git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9541 c06c8d41-db1a-0410-9941-cceddc491573
HVEU33HIUHCYFINJMVSSOIRUPZGGVC7NMWUN2EADG2W373JP3WOAC
TMLDT7CQ5U43SYJ2NYQHDOECFABG3A4NCII5QBNC2PPY4UC4JHCAC
FSJKED4U2SOUP64DTHF2NEGAYY7EUMSIDKC2SATEXAXEVOCNL3CAC
V6MJ46WTZVSZVTUF7Y5FDDAHD54QMWW4XNUNU6MKHPXUXT7RVG7QC
CBNTD4Q6ZFTB2JGKN4K5X3VOFXEMS5UUPTNIMPIW6RFEMOBGCVVQC
EPRT5LWIQULNZW5XP3ZMAGMEZ5KC4PQTW2BDTEXNH367LDL5NE5QC
I2WJK6VZZCWKSJ2XQH7W4HXRNZZ2MSCKO65IIRFBGGMWMUZ2VZ6QC
SJJMO4TFG3QO46SLHUFSUYXXVZJDULVYTU4RTCM7TQPIGHZTWBDAC
ZNMT5CZHP2FC4HTLNA7KYEDGFBXSCUE5QHJOALVPE6RDPHSEDXRQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
PKXXBHS3LWLPZI2QVRX22MSQ4R2626IXRSNHFFYHXYTLJJQU54LQC
ZGZVOMRXLVC42FV67RBTLBOZWFYRL4UHL54A365BR76OUIYRWQXAC
EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC
XVFTIQ7MSVKQDMQ2HT3IY6FJOZFK4H6OFGTUAID5VGCA5BGVXYPAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
JVSCP4FTW2G57C6YD5HZOZXTODGZH7TR75JQGFJBEPX3LCZH236QC
E6JXIMRH2TX5WHZ6BT2QZ3EANM3PWCHCVYC4XWRJGRBDSP42X2RAC
FWNNTOEERPUKXPE4OC52UABFZLKIU3O5GRNNLDK4QI4HR2IOU36QC
JVFPF4MBNVY2UEXPWJDKTWL6RY7WCXPB6GBOK3WPJOGM6CX3D7HQC
3CRSIZM7N5F46UWBKM2Y3CNKADWZGLI4JWMUO762ND2TT4247RGQC
UC6V7JDZ6CKQNL5AARWFJ4ZPX4ZYCO5J3FW52I52I3PBJO6T6VEAC
CCRQESB4ADT4WA7FGLNZZXAJ6G5QMCTYCZIWORBN45P6ZPILC34AC
7NFVYCNQ54IN77PF334ADAF4YQT6LEABMAIZF4Y4BH5C3CYXYQGQC
2PAHDAPDO6PN4FNGB5N7CQNEGHSE3NOGPXYZMIAOJC4VW34FRVOAC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
QCUMH3C7GXV7ZW444WT5SFAXQOJKJSE2YCQCEHMRYXCWF4QI7UMAC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
BWAQ3FHBBM6G3K3KYP75CRTR343RDQZJRYX5ZGYUEXYBAC3APDLAC
BW3XFNOS6LDAQLHOZ6RXARCMKCY5JVLVDSXDSSAX4DSYM3FANQBAC
NR7PW3FTNYTZEM7RSWVNMWB5NQHRDMMY3TB6L5II5VCW76OAMT6QC
OQ76R2BGEXU64TGDEQF46WVKM3LW5JO67CVITYQSIKE36LQZ725AC
RXZRRWQZH7H3E66ENDI6WTSDDTC5F7MDGIMZTEDYDE4YCUQN4CSAC
MUNICOGJDTT3DH4BIKWYE3LBC2YTSC6XMPB4RGCEABRP6Q7W733QC
HKQTMQVLLOBG2VO47TUGSTQALA3D2YLMEVADXXYNR4RGGKD3F2ZAC
UQ4P6W76CTKR2MQNH3EWPS4QPDXE3YRLJRR6744ZJJ32XKYPXQQQC
HTR7KACUG3OB7ANWNQDJ2DDSAR2FQY6VLNLRAJ7OWW4P2AX5LOGAC
6QVMISKCQYTVHBH2YZLOE77I72NIVUQN2D7ACECQ5TYMVC72LAWQC
5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC
MSRJ3N4NX255RVISUOPTTTY2GG4JVVNNM76HWUZ2EKCYESNI6MLQC
I4HQEB6RVIPJD3EQCNADMQJVGYAIIHTBGFVMPXHDNLYYG5JVIK4AC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
RYT42Z6CED4KV5CCJ45CHZ3DQGLFMDCVH6CSQZNXOILULDG4MXVQC
QLEBDRVUQ3BMCT7LV4EBPG7T5X4KMQJAVLMLHHB7DRCNNGDQBRNQC
VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC
UOWPKKEVEMM6D67GLKB2PKCAWJU2GJJQTOLF6IQ6ZQB5WB3UH5JQC
XKSYV5QUG2PET6BNBZPNI4D7LDBJGWOH335OD3J24AKJWE63J3WQC
PTHJX2MZO5SDSHZMZOWBUPHUEZZPNU6NQAFOC6L3IYMO7C3C4UWQC
H2TREER2QXNII3D6GTVASY5RVE7S7KATVKWRKOOISR5ZGOTLPFZQC
RR2J4VLJCZSAKY3HNS334KI4YUAPOMSETO2HGCGEEIUCUJAYAGSQC
IHOKNI4O7EEW4UBMKHP6XOZNEIQSW4AYOT4O3JXUIXNNR553IQAQC
B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
4FQAKUKUO6PCAZ3N4HUR5XL6E4VA5UQUZ3AEDGRBLVY7W2LMWI7QC
2IJDLTWK74ULETLFTIPUIY2MSG6RNONVAFNFE7MADPT6UNYSSBDAC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
LSFNAB57FI3ERTIMXZI6MRIN6Z6AUZSVX4RKIOEKQWREDP36IYDQC
3KBPG2GCDMENTQJY6UARZAWI57CKHP5JO24LRN243OP4WTUPFK4QC
WDWRHNIIHFS24TXNPNRR43PXFEEJHFPKDURX6IZSW6P25TBMJFXAC
WXSNNK2RXP3DQFAEQGQUZJHFWXJC7ZKG2WURZGL566UDM4YXFSWQC
T57T7U2OARKQBYXPOZ4BOL7JJW4WA356CVOQ6ZZOMOV3JQSGBEVQC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
(!map_bounds(gc)) ? 0
: (!crawl_view.in_grid_los(gc)) ? get_envmap_char(gc.x, gc.y)
: (gc == you.pos()) ? you.symbol
: get_screen_glyph(gc.x, gc.y);
(!map_bounds(gc)) ? 0 :
(!crawl_view.in_grid_los(gc)) ? get_envmap_char(gc.x, gc.y) :
(gc == you.pos()) ? you.symbol
: get_screen_glyph(gc.x, gc.y);
std::string lookup;
if (level == 1)
lookup = "starting";
else if (level <= 3 || level == 4 && coinflip())
lookup = "easy";
else if (level <= 6)
lookup = "moderate";
std::string bookname;
if (god == GOD_XOM && coinflip())
{
bookname = getRandNameString("book_noun") + " of "
+ getRandNameString("Xom_book_title");
}
std::string bookname;
// First try for names respecting the book's previous owner/author
// (if one exists), then check for general difficulty.
if (has_owner)
bookname = getRandNameString(lookup + " owner");
// First try for names respecting the book's previous owner/author
// (if one exists), then check for general difficulty.
if (has_owner)
bookname = getRandNameString(lookup + " owner");
if (!has_owner || bookname.empty())
bookname = getRandNameString(lookup);
if (!has_owner || bookname.empty())
bookname = getRandNameString(lookup);
bookname = uppercase_first(bookname);
if (has_owner)
{
if (bookname.substr(0, 4) == "The ")
bookname = bookname.substr(4);
else if (bookname.substr(0, 2) == "A ")
bookname = bookname.substr(2);
else if (bookname.substr(0, 3) == "An ")
bookname = bookname.substr(3);
}
bookname = uppercase_first(bookname);
if (has_owner)
{
if (bookname.substr(0, 4) == "The ")
bookname = bookname.substr(4);
else if (bookname.substr(0, 2) == "A ")
bookname = bookname.substr(2);
else if (bookname.substr(0, 3) == "An ")
bookname = bookname.substr(3);
if (bookname.find("@level@", 0) != std::string::npos)
{
std::string number;
switch (level)
{
case 1: number = "One"; break;
case 2: number = "Two"; break;
case 3: number = "Three"; break;
case 4: number = "Four"; break;
case 5: number = "Five"; break;
case 6: number = "Six"; break;
case 7: number = "Seven"; break;
case 8: number = "Eight"; break;
case 9: number = "Nine"; break;
default:
number = ""; break;
}
bookname = replace_all(bookname, "@level@", number);
}
if (bookname.find("@level@", 0) != std::string::npos)
{
std::string number;
switch (level)
{
case 1: number = "One"; break;
case 2: number = "Two"; break;
case 3: number = "Three"; break;
case 4: number = "Four"; break;
case 5: number = "Five"; break;
case 6: number = "Six"; break;
case 7: number = "Seven"; break;
case 8: number = "Eight"; break;
case 9: number = "Nine"; break;
default:
number = ""; break;
}
bookname = replace_all(bookname, "@level@", number);
}
return (false);
{
if (completely_random)
return (false);
// Rather than give up at this point, choose schools randomly.
// This way, an acquirement won't fail once the player has
// seen all spells.
if (!_get_weighted_discs(true, god, disc1, disc2))
return (false);
}
if (first_entry + pagesize < static_cast<int>(items.size()) &&
items[first_entry + pagesize]->level != MEL_TITLE )
if (first_entry + pagesize < static_cast<int>(items.size())
&& items[first_entry + pagesize]->level != MEL_TITLE)
// returns values < 0 for edible chunks (non-rotten except for Saprovores),
// 0 for non-chunks, and values > 0 for rotten chunks for non-Saprovores
// Returns values < 0 for edible chunks (non-rotten except for Saprovores),
// 0 for non-chunks, and values > 0 for rotten chunks for non-Saprovores.
description <<
"$It uses its own mana reservoir for casting spells, and "
"recharges automatically by channeling mana from its "
"wielder.";
if (verbose)
{
description <<
"$It uses its own mana reservoir for casting spells, and "
"recharges automatically by channeling mana from its "
"wielder.";
const int max_charges = MAX_ROD_CHARGE;
if (item_ident(item, ISFLAG_KNOW_PLUSES))
{
const int num_charges = item.plus2 / ROD_CHARGE_MULT;
if (max_charges > num_charges)
const int max_charges = MAX_ROD_CHARGE;
if (item_ident(item, ISFLAG_KNOW_PLUSES))
description << "$It can currently hold " << num_charges
<< " charges. It can be magically recharged "
<< "to contain up to " << max_charges
<< " charges.";
const int num_charges = item.plus2 / ROD_CHARGE_MULT;
if (max_charges > num_charges)
{
description << "$It can currently hold " << num_charges
<< " charges. It can be magically recharged "
<< "to contain up to " << max_charges
<< " charges.";
}
else
description << "$It is fully charged.";
static void _describe_cards(std::vector<card_type> cards)
{
ASSERT(!cards.empty());
std::ostringstream data;
for (unsigned int i = 0; i < cards.size(); ++i)
{
std::string name = card_name(cards[i]);
std::string desc = getLongDescription(name + " card");
if (desc.empty())
desc = "No description found.";
data << name << "$$" << desc << "$$";
}
print_description(data.str());
if (getch() == 0)
getch();
clrscr();
cgotoxy(1,1);
textcolor(WHITE);
cprintf("Press a digit to select a card, "
"then another digit to swap it.");
cgotoxy(1,10);
cprintf("Press Enter to accept.");
_redraw_stacked_cards(draws, selected);
// Hand-hacked implementation, instead of using Menu. Oh well.
if (need_prompt_redraw)
{
clrscr();
cgotoxy(1,1);
textcolor(WHITE);
cprintf("Press a digit to select a card, then another digit "
"to swap it.");
cgotoxy(1,10);
cprintf("Press ? for the card descriptions, or Enter to "
"accept.");
_redraw_stacked_cards(draws, selected);
need_prompt_redraw = false;
}
// Hand-hacked implementation, instead of using Menu. Oh well.
mpr("You draw... (choose one card)");
for (int i = 0; i < num_to_draw; ++i)
{
msg::streams(MSGCH_PROMPT) << (static_cast<char>(i + 'a')) << " - "
<< card_name(draws[i]) << std::endl;
}