git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1386 c06c8d41-db1a-0410-9941-cceddc491573
X2FMEN4E345XD26Z2X7JMJ7VGHOGCGIELMHQRE2ITLVNQACP3NOQC
2Q3P7FHAAZRJ337GTR2ZLD72ECBUDJ42MROKVCNKNDV6CGMQOSYAC
5SFYYTKXTWLSBXB4PUB6G3E47W6DNROQNDLN3UJZQ4FN7ML3MADQC
CRX4RG35C3DH57NIXCW4CG4X7SBMSX7TAJR2BAFQ4LQKCLYUNANQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC
WHY6LRRJ5T2NSBE3IUCR4X3TOAH7TTK5NPUPUIFT7TPNJ6J4HBDAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
43ZTEB57FU7KE5EVMYWZONNVJBZCGF3JEAJZIY25LC4LGE65PG5QC
DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC
EIULXYQC3OPXDGTBRDOI7ITILQ22RGEGG6UFCGY2O5HD7SN5NUUQC
TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC
7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC
ZCPJIAG7SEY2TUBAGOFWCEJYXSBT36CZU5VO7BWEGSLJ4K24B4TAC
QDWDUURSNLMT6AXNNJ3DEQCWAKCAIHV6MP5F7QGIBGXOG2BI2NPQC
RYT42Z6CED4KV5CCJ45CHZ3DQGLFMDCVH6CSQZNXOILULDG4MXVQC
IPQ63XIUPHFMCQOZZAVSGCJOZFDRDWZTUUJSAUMARNDUFLBEMYIAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
6L4EP4ZRWWYLT55PD5KTTJON5J2JB5VV5MWNHF5VPZQZ5BKEYZ4QC
KEYK3CH5J46U6TTOKTWRNMYTZXMQXFVEAZUC4ZQ4QCOSJHVIBDRQC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
JW2KRJHES33W7UTWZ6NDO4TLMK4EFU4HKZXBWR2UJOMPCCOTR4CQC
Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC
KR655YT3I3U5DMN5NS3FPUGMDNT4BI56K3SFF2FNJ77C45NFKL5AC
snprintf(buf, sizeof buf, "Learned a level %d spell: %s",
spell_difficulty(static_cast<spell_type>(first)),
spell_title(static_cast<spell_type>(first)));
result << "Learned a level "
<< spell_difficulty(static_cast<spell_type>(first))
<< " spell: "
<< spell_title(static_cast<spell_type>(first));
snprintf(branch_finale, sizeof branch_finale,
"reached %s.", level.c_str());
mark_milestone("branch-finale", branch_finale);
std::ostringstream branch_finale;
branch_finale << "reached " << level << ".";
mark_milestone("branch-finale", branch_finale.str());
// (missing) case 423 - MONS_ANOTHER_LAVA_THING ??? 15jan2000 {dlb}
// no entry in m_list.h 17jan200 {dlb}
// monster has no stats!
// mv: changed ANOTHER_LAVA_THING to SALAMANDER, added stats and
// description
// (missing) case 250 - MONS_PROGRAM_BUG ??? 16jan2000 {dlb}
/* ******************************************************************
// the tunneling worm is no more ...
// not until it can be re-implemented safely {dlb}
case MONS_TUNNELING_WORM:
case MONS_WORM_TAIL:
description += "A gargantuan worm, its huge maw capable of crushing rock into dust with little trouble.";
break;
****************************************************************** */
description += "The embalmed and undead corpse of an ancient ";
if (mons.type == MONS_GREATER_MUMMY)
description += "ruler";
else
description += "servant of darkness";
description += ".";
description << "The embalmed and undead corpse of an ancient "
"servant of darkness.";
switch (mons.type)
{
case MONS_DEEP_ELF_SOLDIER:
description += "This one is just common soldier.";
break;
case MONS_DEEP_ELF_FIGHTER:
description += "This soldier has learned some magic.";
break;
case MONS_DEEP_ELF_KNIGHT:
description += "This one bears the scars of battles past.";
break;
case MONS_DEEP_ELF_MAGE:
description += "Mana crackles between this one's long fingers.";
break;
case MONS_DEEP_ELF_SUMMONER:
case MONS_DEEP_ELF_CONJURER:
description += "This one is a mage specialized in the ancient art ";
if (mons.type == MONS_DEEP_ELF_SUMMONER)
description += "of summoning servants";
else
description += "of hurling energies";
description += " of destruction.";
break;
case MONS_DEEP_ELF_PRIEST:
description += "This one is a servant of the deep elves' god.";
break;
case MONS_DEEP_ELF_HIGH_PRIEST:
description +=
"This one is an exalted servant of the deep elves' god.";
break;
case MONS_DEEP_ELF_DEMONOLOGIST:
description +=
"This mage specialized in demonology, and is marked heavily "
"from long years in contact with unnatural demonic forces.";
break;
case MONS_DEEP_ELF_ANNIHILATOR:
description += "This one likes destructive magics more than most, "
"and is better at them.";
break;
case MONS_DEEP_ELF_SORCERER:
description += "This mighty spellcaster draws power from Hell.";
break;
case MONS_DEEP_ELF_DEATH_MAGE:
description += "A strong negative aura surrounds this one.";
break;
description << "A strong negative aura surrounds this one.";
break;
case MONS_ELF:
// These are only possible from polymorphing or shapeshifting.
description += "This one is remarkably plain looking.";
break;
}
case MONS_ELF:
// These are only possible from polymorphing or shapeshifting.
description << "This one is remarkably plain looking.";
description += "The apparition of ";
description += ghost_description(mons);
description += ".$";
description << "The apparition of " << ghost_description(mons) << ".$";
description += "A vile creature with an elongated head, spiked tail "
"and wicked six-fingered claws. Its awesome strength is matched by "
"its umbrage at being transported to this backwater dimension. ";
description << "A vile creature with an elongated head, spiked tail "
"and wicked six-fingered claws. Its awesome strength is matched "
"by its umbrage at being transported to this backwater dimension.";
snprintf( info, INFO_SIZE, " %d: %s (%d)$", i,
mons_spell_name( hspell_pass[i] ),
hspell_pass[i] );
description += info;
description << " " << i << ": "
<< mons_spell_name(hspell_pass[i])
<< " (" << static_cast<int>(hspell_pass[i])
<< ")$";
// duplicate it, because we're going to change it
item_def item = mitm[ mons.inv[i] ];
set_ident_flags( item, ISFLAG_IDENT_MASK );
snprintf( info, INFO_SIZE, " %d: %s$", i,
item.name(DESC_NOCAP_A).c_str() );
description += info;
description << " " << i
<< mitm[mons.inv[i]].name(DESC_NOCAP_A, false, true);
snprintf( tmp_buff, sizeof(tmp_buff),
"%s the %s, a%s %s%s%s",
ghost.name.c_str(),
skill_title( ghost.values[GVAL_BEST_SKILL],
ghost.values[GVAL_SKILL_LEVEL],
ghost.values[GVAL_SPECIES],
str, dex, GOD_NO_GOD ),
(ghost.values[GVAL_EXP_LEVEL] < 4) ? " weakling" :
(ghost.values[GVAL_EXP_LEVEL] < 7) ? "n average" :
(ghost.values[GVAL_EXP_LEVEL] < 11) ? "n experienced" :
(ghost.values[GVAL_EXP_LEVEL] < 16) ? " powerful" :
(ghost.values[GVAL_EXP_LEVEL] < 22) ? " mighty" :
(ghost.values[GVAL_EXP_LEVEL] < 26) ? " great" :
(ghost.values[GVAL_EXP_LEVEL] < 27) ? "n awesomely powerful"
: " legendary",
( concise? get_species_abbrev(ghost.values[GVAL_SPECIES]) :
species_name( ghost.values[GVAL_SPECIES],
ghost.values[GVAL_EXP_LEVEL] ) ),
( concise? "" : " " ),
( concise? get_class_abbrev(ghost.values[GVAL_CLASS]) :
get_class_name( ghost.values[GVAL_CLASS] ) ) );
gstr << ghost.name << " the "
<< skill_title( ghost.values[GVAL_BEST_SKILL],
ghost.values[GVAL_SKILL_LEVEL],
ghost.values[GVAL_SPECIES],
str, dex, GOD_NO_GOD )
<< ", a"
<< ((ghost.values[GVAL_EXP_LEVEL] < 4) ? " weakling" :
(ghost.values[GVAL_EXP_LEVEL] < 7) ? "n average" :
(ghost.values[GVAL_EXP_LEVEL] < 11) ? "n experienced" :
(ghost.values[GVAL_EXP_LEVEL] < 16) ? " powerful" :
(ghost.values[GVAL_EXP_LEVEL] < 22) ? " mighty" :
(ghost.values[GVAL_EXP_LEVEL] < 26) ? " great" :
(ghost.values[GVAL_EXP_LEVEL] < 27) ? "n awesomely powerful"
: " legendary")
<< " ";
if ( concise )
gstr << get_species_abbrev(ghost.values[GVAL_SPECIES])
<< get_class_abbrev(ghost.values[GVAL_CLASS]);
else
gstr << species_name(ghost.values[GVAL_SPECIES],
ghost.values[GVAL_EXP_LEVEL])
<< " "
<< get_class_name(ghost.values[GVAL_CLASS]);
cost = "(" + make_cost_description(get_ability_def(abil)) + ")";
cost = std::string(79 - strlen(buf) - cost.length(), ' ') + cost;
const int spacesleft = 79 - buf.str().length();
const std::string cost =
"(" + make_cost_description(get_ability_def(abil)) + ")";
buf << std::setw(spacesleft) << cost;