extern char info[] is almost gone.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1387 c06c8d41-db1a-0410-9941-cceddc491573
XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC
UFLQNWY753LLYGHIEO3REFZWKQ7WNVVIHBQPCKCEEX2KQGUFEPZAC
VXJEANI25DSSF6RUTT3HK7FRI5A6D5OHDUM3NENDG6KULMAR6ZHAC
BKL4VOE2R2ZZS35A3HTLVZW5FBIV7Y4YSHSS2PTBLRXMZCIP6JCAC
5Z6ZTK37C3X2YBHO2HX3ULMCHKQXDUDMX4TUIRCBTTP2IQ57BVQAC
PT7EKXV55EVJ2EYFZEL3KCGRI37KKMNXGN76CYVBAUPHKP4ZLDLAC
6KCWO7XCDBGOYSUWVEXC74XC6RZ7ZJQLLSES5IIPCTILTECYMFZAC
6LT6USGJOTDMRJGXLAN2NSZXK2GKWEXDKKUV6SVV7ZC6WI6EKMDQC
IHIJSWVOONSTA2WCHKW3YKBLETUQECFVBVLMET5SGQZ4C6U3GCUQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC
6HQB2N6N75R2RGKJFWRUN7WAC2PNGWQFXTII5DTRLTHZ2BOTMTVAC
RCU52DRCPWJVQ6HME4QR6V6EVQWTBKZTPWDI47UGUDAUBPOO5YNAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
GACH6PWPGGUBEE7PFEPQMOZKSR7HTQGL2WLGF2AQPJD3FCCSKZNQC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
4JNV6RTRY2UR3PZFMCNPRGCBSUAB7QTXYJCSYBIUAFMCCYVGN6PQC
2KTJHQUX2LTU2BCLS5YXVRRKMOYKKIZAPF2LBKORFGSHEN5IO3IAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
NNG27Y5ZQAZX6UD7F7M4F6KEZBEDFXPEEC3LFUSX4ESKT7K6UJQAC
DODCHP2S4I6VZKQAVXX6D76OPNFI2YWZ4XH3HZTMAJZXA2RJ3XRQC
6GQU5BMORHTHJGGVYPGJZSEIHPOVXDAS23BE7OHU4X6WVDYRC2MAC
Q5SFQO7ANODRI6OXKHPFQ4QWKGQ367S64DPURQW2TWK7ANTYO4NQC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
3GSAVTNKEG45AT2U734R5STSRP22WJZL3H6KUFRUWCIA6A4CZE5QC
OP6CTAKWCAU64JXQ3USQYR5E5IFHQHNCACII5UMVRXUTZXJQOAZAC
textcolor( WHITE );
cprintf("You must be new here indeed!");
cprintf(EOL EOL);
textcolor( CYAN );
cprintf("You can be:");
cprintf(EOL EOL);
textcolor( LIGHTGREY );
for (int i = 0; i < TUT_TYPES_NUM; i++)
print_tutorial_menu(i);
textcolor( BROWN );
cprintf(EOL "SPACE - Back to class selection; Bksp - Back to race selection; X - Quit"
EOL "* - Random tutorial"
EOL);
printed = true;
}
keyn = c_getch();
if (keyn == '*')
keyn = 'a' + random2(TUT_TYPES_NUM);
formatted_string::parse_string(
EOL
"<brown>SPACE - Back to class selection; "
"Bksp - Back to race selection; X - Quit"
EOL "* - Random tutorial"
"</brown>" EOL).display();
// activate all triggers
for (int i = 0; i < TUT_EVENTS_NUM; i++)
Options.tutorial_events[i] = 1;
Options.tutorial_left = TUT_EVENTS_NUM;
// store whether explore, stash search or travelling was used
Options.tut_explored = 1;
Options.tut_stashes = 1;
Options.tut_travel = 1;
// used to compare which fighting means was used most often
Options.tut_spell_counter = 0;
Options.tut_throw_counter = 0;
Options.tut_berserk_counter = 0;
Options.tut_melee_counter = 0;
if (keyn == '*')
keyn = 'a' + random2(TUT_TYPES_NUM);
// for occasional healing reminders
Options.tut_last_healed = 0;
Options.random_pick = true; // random choice of starting spellbook
Options.weapon = WPN_HAND_AXE; // easiest choice for fighters
return true;
}
// choose character for tutorial game and set starting values
if (keyn >= 'a' && keyn <= 'a' + TUT_TYPES_NUM - 1)
{
Options.tutorial_type = keyn - 'a';
you.species = get_tutorial_species(Options.tutorial_type);
you.char_class = get_tutorial_job(Options.tutorial_type);
// activate all triggers
Options.tutorial_events.init(true);
Options.tutorial_left = TUT_EVENTS_NUM;
// store whether explore, stash search or travelling was used
Options.tut_explored = true;
Options.tut_stashes = true;
Options.tut_travel = true;
// used to compare which fighting means was used most often
Options.tut_spell_counter = 0;
Options.tut_throw_counter = 0;
Options.tut_berserk_counter = 0;
Options.tut_melee_counter = 0;
// for occasional healing reminders
Options.tut_last_healed = 0;
Options.random_pick = true; // random choice of starting spellbook
Options.weapon = WPN_HAND_AXE; // easiest choice for fighters
return true;
}
if (keyn == CK_BKSP || keyn == ' ')
{
// in this case, undo previous choices
// set_startup_options();
you.species = 0; you.char_class = JOB_UNKNOWN;
Options.race = 0; Options.cls = 0;
}
if (keyn == CK_BKSP || keyn == ' ')
{
// in this case, undo previous choices
// set_startup_options();
you.species = 0;
you.char_class = JOB_UNKNOWN;
Options.race = 0;
Options.cls = 0;
}
switch (keyn)
{
case CK_BKSP:
choose_race();
break;
case ' ':
choose_class();
break;
case 'X':
cprintf(EOL "Goodbye!");
end(0);
break;
default:
printed = false;
goto tut_query;
switch (keyn)
{
case CK_BKSP:
choose_race();
return false;
case ' ':
choose_class();
return false;
case 'X':
cprintf(EOL "Goodbye!");
end(0);
return false; // as if
}
result += "<white>Welcome to Dungeon Crawl!</white>" EOL EOL;
text += "Your object is to lead a ";
snprintf(info, INFO_SIZE, "%s %s ", species_name(get_tutorial_species(Options.tutorial_type), 1),
get_class_name(get_tutorial_job(Options.tutorial_type)));
text += info;
text += "safely through the depths of the dungeon, retrieving the fabled orb of Zot and "
"returning it to the surface. In the beginning, however, let discovery be your "
"main goal. Try to delve as deeply as possible but beware; death lurks around "
"every corner." EOL EOL;
linebreak_string2(text, width);
result += formatted_string::parse_string(text);
result += "For the moment, just remember the following keys and their functions:" EOL;
result += " <white>?</white> - shows the items and the commands" EOL;
result += " <white>S</white> - saves the game, to be resumed later (but note that death is permanent)" EOL;
result += " <white>x</white> - examine something in your vicinity" EOL EOL;
text = "This tutorial will help you play Crawl without reading any documentation. "
"If you feel intrigued, there is more information available in these files "
"(all of which can also be read in-game):" EOL;
linebreak_string2(text, width);
result += formatted_string::parse_string(text);
result += " <lightblue>readme.txt</lightblue> - A very short guide to Crawl." EOL;
result += " <lightblue>manual.txt</lightblue> - This contains all details on races, magic, skills, etc." EOL;
result += " <lightblue>crawl_options.txt</lightblue> - Crawl's interface is highly configurable. This document " EOL;
result += " explains all the options." EOL;
result += EOL;
result += "Press <white>Space</white> to proceed to the basics (the screen division and movement)." EOL;
result += "Press <white>Esc</white> to fast forward to the game start.";
return formatted_string::parse_block(result);
istr << "<white>Welcome to Dungeon Crawl!</white>" EOL EOL
<< "Your object is to lead a "
<< species_name(get_tutorial_species(Options.tutorial_type), 1)
<< " " << get_class_name(get_tutorial_job(Options.tutorial_type))
<<
" safely through the depths of the dungeon, retrieving the "
"fabled orb of Zot and returning it to the surface. "
" In the beginning, however, let discovery be your "
"main goal. Try to delve as deeply as possible but beware; "
"death lurks around every corner." EOL EOL
"For the moment, just remember the following keys "
"and their functions:" EOL
" <white>?</white> - shows the items and the commands" EOL
" <white>S</white> - saves the game, to be resumed later "
"(but note that death is permanent)" EOL
" <white>x</white> - examine something in your vicinity" EOL EOL
"This tutorial will help you play Crawl without reading any "
"documentation. If you feel intrigued, there is more information "
"available in these files (all of which can also be read in-game):"
EOL
" <lightblue>readme.txt</lightblue> - "
"A very short guide to Crawl." EOL
" <lightblue>manual.txt</lightblue> - "
"This contains all details on races, magic, skills, etc." EOL
" <lightblue>crawl_options.txt</lightblue> - "
"Crawl's interface is highly configurable. This document " EOL
" explains all the options." EOL
EOL
"Press <white>Space</white> to proceed to the basics "
"(the screen division and movement)." EOL
"Press <white>Esc</white> to fast forward to the game start.";
std::string broken = istr.str();
linebreak_string2(broken, width);
return formatted_string::parse_block(broken);
result = "<magenta>"
"What you see here is the typical Crawl screen. The upper left map "
"shows your hero as the <white>@<magenta> in the center. The parts "
"of the map you remember but cannot currently see, will be greyed "
"out."
"</magenta>" EOL;
result = "<magenta>"
"What you see here is the typical Crawl screen. The upper left map "
"shows your hero as the <white>@<magenta> in the center. The parts "
"of the map you remember but cannot currently see, will be greyed "
"out."
"</magenta>" EOL;
result += "To the right, important properties of \n";
result += "the character are displayed. The most \n";
result += "basic one is your health, measured as \n";
snprintf(info, INFO_SIZE, "<white>HP: %d/%d<magenta>. ",
you.hp, you.hp_max);
result += info;
// Note: must fill up everything to override the map
istr << "<magenta>"
"To the right, important properties of \n"
"the character are displayed. The most \n"
"basic one is your health, measured as \n"
"<white>HP: " << you.hp << "/" << you.hp_max << "<magenta>. ";
result += " ";
result += "These are your current out \n";
result += "of maximum health points. When health \n";
result += "drops to zero, you die. \n";
snprintf(info, INFO_SIZE, "<white>Magic: %d/%d<magenta>", you.magic_points, you.max_magic_points);
result += info;
result += " is your energy for casting \n";
result += "spells, although more mundane actions \n";
result += "often draw from Magic, too. \n";
result += "Further down, <white>Str<magenta>ength, <white>Dex<magenta>terity and \n";
result += "<white>Int<magenta>elligence are shown and provide an \n";
result += "all-around account of the character's \n";
result += "attributes. \n";
istr << " ";
result += "<lightgrey>";
result += " \n";
result += " --more-- Press <white>Escape</white> to skip the basics\n";
result += " \n";
result += " \n";
return formatted_string::parse_block(result, false);
istr <<
"These are your current out \n"
"of maximum health points. When health \n"
"drops to zero, you die. \n"
"<white>Magic: "
<< you.magic_points << "/" << you.max_magic_points <<
"<magenta> is your energy for casting \n"
"spells, although more mundane actions \n"
"often draw from Magic, too. \n"
"Further down, <white>Str<magenta>ength, <white>Dex<magenta>terity and \n"
"<white>Int<magenta>elligence are shown and provide an \n"
"all-around account of the character's \n"
"attributes. \n"
"<lightgrey>"
" \n"
" --more-- Press <white>Escape</white> to skip the basics\n"
" \n"
" \n";
return formatted_string::parse_block(istr.str(), false);
case TUT_SEEN_POTION:
text = "You have picked up your first potion ('<w>!<magenta>'). Use "
"<w>q<magenta> to drink (quaff) it.";
case TUT_SEEN_POTION:
text << "You have picked up your first potion ('<w>!<magenta>'). "
"Use <w>q<magenta> to drink (quaff) it.";
text = "You have picked up a spellbook ('<w>";
text += ch;
text += "'<magenta>). You can read it by typing <w>r<magenta>, "
"memorise spells via <w>M<magenta> and cast a memorised spell "
"with <w>Z<magenta>.";
text << "You have picked up a spellbook ('<w>"
<< static_cast<char>(ch)
<<
"'<magenta>). You can read it by typing <w>r<magenta>, "
"memorise spells via <w>M<magenta> and cast a memorised "
"spell with <w>Z<magenta>.";
text = "This is the first weapon ('<w>(<magenta>') you've picked up. "
"Use <w>w<magenta> to wield it, but be aware that this weapon "
"might train a different skill from your current one. You can "
"view the weapon's properties with <w>v<magenta>.";
text <<
"This is the first weapon ('<w>(<magenta>') you've picked up. "
"Use <w>w<magenta> to wield it, but be aware that this weapon "
"might train a different skill from your current one. You can "
"view the weapon's properties with <w>v<magenta>.";
snprintf( info, INFO_SIZE, "\nNote that as a %s, you will be unable to wear %s.",
species_name(you.species, 1), you.species == SP_CENTAUR ? "boots" : "helmets");
text += info;
text << "\nNote that as a " << species_name(you.species, 1)
<< "you will be unable to wear "
<< (you.species == SP_CENTAUR ? "boots" : "helmets");
text = "You have picked up a magic staff or a rod, both of which are "
"represented by '<w>";
text += ch;
text += "<magenta>'. Both must be <w>i<magenta>elded to be of use. "
text << "You have picked up a magic staff or a rod, both of which are "
"represented by '<w>"
<< static_cast<char>(ch)
<< "<magenta>'. Both must be <w>i<magenta>elded to be of use. "
text = "The <w>";
text += colour_to_tag(colour);
text += ch;
text += "<magenta> are some downstairs. You can enter the next (deeper) "
text << "The <w>" << colour_to_tag(colour) << static_cast<char>(ch)
<< "<magenta> are some downstairs. You can enter the next (deeper) "
text = "The ";
text += colour_to_tag(colour);
text += ch;
text += "<magenta> is an altar. You can get information about it by pressing "
text << "The " << colour_to_tag(colour) << static_cast<char>(ch)
<< "<magenta> is an altar. You can get information about it by pressing "
text = "The <yellow>";
text += get_screen_glyph(x,y);
text += "<magenta> is a shop. You can enter it by typing <w><<<magenta>.";
text << "The <yellow>" << static_cast<char>(get_screen_glyph(x,y))
<< "<magenta> is a shop. You can enter it by typing "
"<w><<<magenta>.";
text = "The <w>";
text += get_screen_glyph(x,y);
text += "<magenta> is a closed door. You can open it by walking into it. "
text << "The <w>" << static_cast<char>(get_screen_glyph(x,y))
<< "<magenta> is a closed door. You can open it by walking into it. "
text += "\nTo dedicate your kills to ";
text += god_name(you.religion);
text += " <w>p<magenta>ray before battle. Not all gods will be "
text << "\nTo dedicate your kills to "
<< god_name(you.religion)
<< " <w>p<magenta>ray before battle. Not all gods will be "
text += "\nNote that dissection under prayer offers the corpse to ";
text += god_name(you.religion);
text += " - check your god's attitude about this with <w>^<magenta>.";
text << "\nNote that dissection under prayer offers the corpse to "
<< god_name(you.religion)
<< " - check your god's attitude about this with <w>^<magenta>.";
if ( !text.empty() )
print_formatted_paragraph(text, get_tutorial_cols(), MSGCH_TUTORIAL);
if ( !text.str().empty() )
{
std::string s = text.str();
print_formatted_paragraph(s, get_tutorial_cols(), MSGCH_TUTORIAL);
}
{
snprintf(matchtitle, sizeof matchtitle,
"[%s] %s (%d)",
place.c_str(),
res.match.c_str(),
res.matches);
}
else
{
snprintf(matchtitle, sizeof matchtitle,
"[%s] %s",
place.c_str(),
res.match.c_str());
}
std::string mename = matchtitle;
MenuEntry *me = new MenuEntry(mename, MEL_ITEM, 1, hotkey);
matchtitle << " (" << res.matches << ")";
MenuEntry *me = new MenuEntry(matchtitle.str(), MEL_ITEM, 1, hotkey);
strcat(info, (temp_rand == 0) ? "twist" :
(temp_rand == 1) ? "bend" :
(temp_rand == 2) ? "vibrate" :
(temp_rand == 3) ? "flex" :
(temp_rand == 4) ? "wobble"
: "twang");
msg += ((temp_rand == 0) ? "twist" :
(temp_rand == 1) ? "bend" :
(temp_rand == 2) ? "vibrate" :
(temp_rand == 3) ? "flex" :
(temp_rand == 4) ? "wobble"
: "twang");
snprintf(info, INFO_SIZE, "Welcome to %s!",
shop_name(the_shop.x, the_shop.y) );
shop_print(info, 20);
{
std::string welcome_message = "Welcome to ";
welcome_message += shop_name(the_shop.x, the_shop.y);
welcome_message += "!";
shop_print(welcome_message.c_str(), 20);
}
snprintf(info, INFO_SIZE,
"You %s %s!",
wounded_damaged(monster->type) ? "destroy" : "kill",
ptr_monam(monster, DESC_NOCAP_THE));
mpr(info, MSGCH_MONSTER_DAMAGE, MDAM_DEAD);
mprf(MSGCH_MONSTER_DAMAGE, MDAM_DEAD, "You %s %s!",
wounded_damaged(monster->type) ? "destroy" : "kill",
ptr_monam(monster, DESC_NOCAP_THE));
strcpy(info, "You hear a");
if (!monsterNearby)
strcat(info, " distant");
strcat(info, " slurping noise.");
mpr(info, MSGCH_SOUND);
mprf(MSGCH_SOUND, "You hear a%s slurping noise.",
monsterNearby ? "" : " distant");
strcat(info, " shoves you out of the ");
strcat(info, (stair_gfx == '>' || stair_gfx == '<') ? "stairwell!"
: "gateway!");
mpr(info);
msg += " shoves you out of the ";
if (stair_gfx == '>' || stair_gfx == '<')
msg += "stairwell!";
else
msg += "gateway!";
mpr(msg.c_str());
strcat(info, (stair_gfx == '>') ? " comes up the stairs." :
(stair_gfx == '<') ? " comes down the stairs."
: " comes through the gate.");
mpr(info);
if ( stair_gfx == '>' )
msg += " comes up the stairs.";
else if (stair_gfx == '<')
msg += " comes down the stairs.";
else
msg += " comes through the gate.";
mpr(msg.c_str());
strcpy(info, "The Singing Sword ");
temp_rand = random2(32);
strcat(info,
(temp_rand == 0) ? "hums a little tune." :
(temp_rand == 1) ? "breaks into glorious song!" :
(temp_rand == 2) ? "sings." :
(temp_rand == 3) ? "sings loudly." :
(temp_rand == 4) ? "chimes melodiously." :
(temp_rand == 5) ? "makes a horrible noise." :
(temp_rand == 6) ? "sings off-key." :
(temp_rand == 7) ? "sings 'tra-la-la'." :
(temp_rand == 8) ? "burbles away merrily." :
(temp_rand == 9) ? "gurgles." :
(temp_rand == 10) ? "suddenly shrieks!" :
(temp_rand == 11) ? "cackles." :
(temp_rand == 12) ? "warbles." :
(temp_rand == 13) ? "chimes harmoniously." :
(temp_rand == 14) ? "makes beautiful music." :
(temp_rand == 15) ? "produces a loud orchestral chord." :
(temp_rand == 16) ? "whines plaintively." :
(temp_rand == 17) ? "tinkles." :
(temp_rand == 18) ? "rings like a bell." :
(temp_rand == 19) ? "wails mournfully." :
(temp_rand == 20) ? "practices its scales." :
(temp_rand == 21) ? "lilts tunefully." :
(temp_rand == 22) ? "hums tunelessly." :
(temp_rand == 23) ? "sighs." :
(temp_rand == 24) ? "makes a deep moaning sound." :
(temp_rand == 25) ? "makes a popping sound." :
(temp_rand == 26) ? "sings a sudden staccato note." :
(temp_rand == 27) ? "says 'Hi! I'm the Singing Sword!'." :
(temp_rand == 28) ? "whispers something." :
(temp_rand == 29) ? "speaks gibberish." :
(temp_rand == 30) ? "raves incoherently."
: "yells in some weird language.");
mpr(info, MSGCH_SOUND);
const char* suffixes[32] = {
"hums a little tune.", "breaks into glorious song!",
"sings.", "sings loudly.", "chimes melodiously.",
"makes a horrible noise.", "sings off-key.",
"sings 'tra-la-la'.", "burbles away merrily.",
"gurgles.", "suddenly shrieks!", "cackles.", "warbles.",
"chimes harmoniously.", "makes beautiful music.",
"produces a loud orchestral chord.", "whines plaintively.",
"tinkles.", "rings like a bell.", "wails mournfully.",
"practices its scales.", "lilts tunefully.",
"hums tunelessly.", "sighs.", "makes a deep moaning sound.",
"makes a popping sound.", "sings a sudden staccato note.",
"says 'Hi! I'm the Singing Sword!'.", "whispers something.",
"speaks gibberish.", "raves incoherently",
"yells in some weird language." };
mprf("The Singing Sword %s", suffixes[random2(32)]);
strcpy(info, (magnitude <= 100) ? "You feel slightly " :
(magnitude <= 350) ? "You feel somewhat " :
(magnitude <= 800) ? "You feel a quite a bit "
: "You feel a lot ");
if ( magnitude <= 100 )
msg = "You feel slightly ";
else if (magnitude <= 350)
msg = "You feel somewhat ";
else if (magnitude <= 800)
msg = "You feel a quite a bit ";
else
msg = "You feel a lot ";
strcat(info, (temp_rand == 0) ? "frog" :
(temp_rand == 1) ? "pill bug" :
(temp_rand == 2) ? "millipede" :
(temp_rand == 3) ? "eggplant" :
(temp_rand == 4) ? "albino dragon" :
(temp_rand == 5) ? "dragon" :
(temp_rand == 6) ? "human"
: "slug");
strcat(info, "!");
mpr(info);
mprf("You hear the distant roaring of an enraged %s!",
(temp_rand == 0) ? "frog" :
(temp_rand == 1) ? "pill bug" :
(temp_rand == 2) ? "millipede" :
(temp_rand == 3) ? "eggplant" :
(temp_rand == 4) ? "albino dragon" :
(temp_rand == 5) ? "dragon" :
(temp_rand == 6) ? "human"
: "slug");
strcat(info, (temp_rand == 0) ? "coffee." :
(temp_rand == 1) ? "salt." :
(temp_rand == 2) ? "burning hair!" :
(temp_rand == 3) ? "baking bread." :
(temp_rand == 4) ? "something weird." :
(temp_rand == 5) ? "wet wool." :
(temp_rand == 6) ? "sulphur."
: "fire and brimstone!");
mpr(info);
mprf("You smell %s",
(temp_rand == 0) ? "coffee." :
(temp_rand == 1) ? "salt." :
(temp_rand == 2) ? "burning hair!" :
(temp_rand == 3) ? "baking bread." :
(temp_rand == 4) ? "something weird." :
(temp_rand == 5) ? "wet wool." :
(temp_rand == 6) ? "sulphur."
: "fire and brimstone!");
strcat(info, (temp_rand == 0) ? "snatches of song" :
(temp_rand == 1) ? "a voice call someone else's name" :
(temp_rand == 2) ? "a very strange noise" :
(temp_rand == 3) ? "roaring flame" :
(temp_rand == 4) ? "a very strange noise indeed" :
(temp_rand == 5) ? "the chiming of a distant gong" :
(temp_rand == 6) ? "the bellowing of a yak" :
(temp_rand == 7) ? "a crunching sound"
: "the tinkle of an enormous bell");
strcat(info, ".");
mpr(info);
mprf("You hear %s.",
(temp_rand == 0) ? "snatches of song" :
(temp_rand == 1) ? "a voice call someone else's name" :
(temp_rand == 2) ? "a very strange noise" :
(temp_rand == 3) ? "roaring flame" :
(temp_rand == 4) ? "a very strange noise indeed" :
(temp_rand == 5) ? "the chiming of a distant gong" :
(temp_rand == 6) ? "the bellowing of a yak" :
(temp_rand == 7) ? "a crunching sound"
: "the tinkle of an enormous bell");
(i == EQ_BOOTS
&& !(you.species == SP_CENTAUR || you.species == SP_NAGA))
? "Boots " :
(i == EQ_BOOTS
&& (you.species == SP_CENTAUR || you.species == SP_NAGA))
? "Barding"
: "unknown" );
estr << ((i == EQ_CLOAK) ? "Cloak " :
(i == EQ_HELMET) ? "Helmet " :
(i == EQ_GLOVES) ? "Gloves " :
(i == EQ_SHIELD) ? "Shield " :
(i == EQ_BODY_ARMOUR) ? "Armour " :
(i == EQ_BOOTS) ?
((you.species == SP_CENTAUR || you.species == SP_NAGA) ?
"Barding" : "Boots ") : "unknown")
<< " : ";