git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9385 c06c8d41-db1a-0410-9941-cceddc491573
EPRT5LWIQULNZW5XP3ZMAGMEZ5KC4PQTW2BDTEXNH367LDL5NE5QC
PMGJH6W4CM6JSQLIFIZLVZYGWOSCXKRNDU2MS22ZERKE4P663YVAC
RDBU5O5CPJYTACBZOQZGCOXTUBKC3G6ATCZHMEOZJCHO7UBISM6AC
3CRSIZM7N5F46UWBKM2Y3CNKADWZGLI4JWMUO762ND2TT4247RGQC
6MUGIKRX7FBIABFICAF427DY6NWOMMF2KRGZBTKZ56VMH6Q3OIWQC
HB27XKFYVYIEQZGBCEZ6LKPUBMXLIPDAAS636GJ5TULIQ7KND5KQC
XGJNTDXOS4YOCBVTZSNS2KDRH6IHSZVPGHCDI4NMQYLDM2QGNTKAC
XVF3T4QZWPP2X6GO5OZTSR37QWR6CS5WBP2NCBVF5ZZ2G257TXIAC
B7HNT7TF42G5I5XE65QVUVLAKBGORVDFYVC2WDOJQXGRMQWGI4QAC
75OSTCYAQI6PNHPJIL7DCP45PRMYPK7WADGJWS7ZCH5ZAD6Z4DNQC
XKSYV5QUG2PET6BNBZPNI4D7LDBJGWOH335OD3J24AKJWE63J3WQC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
25VJTGR3AWZJ7OHKYWS53VJ6TVMMU6UT7BA6V3QVVWDGI6FYKD7QC
WIYENVRLH4W37ZOZWJX2BDQHX7LPWCYGO2WVZDPBO5IE2A4I7RPAC
S57ZHNAIJSL2SSFGGFB6TT65Y3JFLH6W6KST4WPVSZ6IJVQWGMTAC
QLIDDODO7Q7S2UTKVR2SMRMEAXHRPA5C7SU267EQGV6VJ7UXW5JQC
2FHNLTLN3DVVD67N4QMAQ2LO7YY4GVZWXJAOIWGCCYYGIX7UHSVQC
3KBPG2GCDMENTQJY6UARZAWI57CKHP5JO24LRN243OP4WTUPFK4QC
ED7MV353FW7C4KZWLXUOEULWZZWMRCJVWMLAFC5OLCKZNPDBLQAQC
CCRQESB4ADT4WA7FGLNZZXAJ6G5QMCTYCZIWORBN45P6ZPILC34AC
CEZMQA2KOTLG7IO5QBVAM2OALIZJ45CFLNLCG3OQA6IX6URDCCYAC
NAC6PRRR6SLQHJ7JBBBAJNKSWZVZ4NFKVHCZEN7M5HASDLT4IPOAC
QO5ZJWQ3JK3PEGBPTQSAYIPEJEHG2M2KTD74227G5VG7DVXUL3BQC
2I5XEYRJKLUS7MO42MCR6KT2URGFQ3YDKTNTIBNKVKLX5LMG6CEQC
DKRSOHZXL6EPSLKOKHF7GJXSZEJVY7CXGACSHWLM5B5FTRETWWCAC
7UIFNKK5IU2VUAGKWDB6KOETOVQOCOVDHZHB4OPAM2CQRCWV4AGQC
IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC
TAHSTXR7ROOMDFUSBUU4ZAIEWQLAS5CIRCTARLD4Q2BGNLSL7E5QC
VBG2GGMVC66LQM4OSI67VKXGAQK4GVOEHX3OL6V3IFOO52MQL72QC
VMDHEP2MGV6D5MTWNNTUYV4SY45JC3ITDEZLHT4HDJ4N2GXM755AC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
HKQTMQVLLOBG2VO47TUGSTQALA3D2YLMEVADXXYNR4RGGKD3F2ZAC
QKV56RZTWOX64VLWW52R2DEUM3HGGZNLRAJ2ZV2BHW5K422OPNJQC
QYQKV4R47PTERXVFQNNWWQVICGSOMBHW6WM5TAZAKLIYOLLPUAJAC
JBZ7NU4BB5PGQWCOSZHD5OQUHQIVOD4XGJLSJQ7BUGQEGPRTVGZQC
MSRJ3N4NX255RVISUOPTTTY2GG4JVVNNM76HWUZ2EKCYESNI6MLQC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
2G55UEHQ7554OPNSZVTUCZTWSHIFKGT56QEGSYFKCTX547I4AL3AC
ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
Y7OLUKMA5BUL2F7TAJXFX7MK75OSISVABIWHB5PGU6F22D32VQRAC
SR6UWZ4GCPJO4D66CWXTXJVKO3ST2YUDEAGY32GTVLXRONPGHTEQC
BX6P2BQYNZH2FM4ADLPULHK5FCWEAVXFEUYNHYLCUTSQCOWGNWAQC
T4FNOPMWYYJHJBTTY33PB43HTJPKEC46L62YERTWIX73HYZSELXQC
JQFDRS5YPQ5KKTCNXW2XNUZU2XK2CW4PXRD6BSQFKMC5QFG3Y23AC
B3FDHXVBFR7YQF56JLQT2EYWRTWV6Y4N44GI6EWVWUU2KBNMZDCAC
LC2XZTUD56PLARIGBTDXDPJIYJNMJU446GFDGLRIFD2I4F66L6TAC
6ME4TYV7ITXCAUMNVB27LRRHB72J2FVVZMJNS34IMAN57R37AE2QC
H55P74Y6NHAPF3VPWXIAP7DODA3DV7NCT3SK6VVLWNNWZ7JIMBTAC
JZQPWZBOGDTUPQVIVEL67BDOIG3Y27JLSOLVNJXLQ2Y7FZW36YCQC
33QMQXTWFPR4LUBHEWTFGR74L5QJJDQTT5JZRBFTPDQBPXIHQIUQC
BNRY5YIXLFE2TDNU2JQHWWXJQVWNSEWQ52DU7XUWIT5DZWKGBDDAC
GVW4OBPGXY2Q75HB7QHADZIOHKL22FI2BSJ2TM4K5SBJENBFTQKAC
46MRRHVYJ3BS74R2BEVUWEWJCI4FCRBSLZ3NWMQCE6FUCNE5P73QC
7OC5HCGLN26GDA5SQTWKBSUZYZDZJXWIVMJ4NKKXREOEEPUGQ4YQC
3TYLZMKPDKBUM4NJ36PJIINJNTMXDYL7CSYW6VQNJ5U3XWCOLLJAC
TYCM7ZQG5JPPK4A5K6IBVRKJYQS2F2A3SESBC53MUNXHMZCKYF5QC
WXZQJUZXMYS7R6ORNB7DWE5KEUXT262GXWMRPOJYYB4I3BFGYLLAC
KVPP3CYPEFADQCL5Y56ELSUBA47SFNAJNCSVCSOK2GF67DHVMBCQC
2VHVHQYNKZF65BHNKJ3LCA3WM4DRAEMWDQJATNJCOOXVDBS56YRQC
UW2ZVPHGKMKJVTB5LIV2DZCHXY6DSFRZ6DMKHLHFNHZUPRUAKHUAC
Z6XF4AIERIW4U4AR3HU2ILYFZ54IK4K4ORQ6JKCEWRO5LZODWDDAC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
HNPSSHGZFQ3E2I6X6VTKZ3WBBM2G25P2D7SIL2SZYKV2CCEA2ADAC
EJKHYV2Z6UPRVYUAL4WRW33GBNHYBFPMPA57HMBX2LQKXHIUO5VQC
LFJAIJGMBJHZQIYSLDJ57N56WFUY67LVM3GRWOPIDIVNELEQU5EAC
// Removing Air Walk... it's currently broken in a number or ways:
// - the AC/EV bonus probably means very little to any character
// capable of casting a level nine spell
// - the penalty of dropping inventory is a bit harsh considering
// the above
// - the fire/ice susceptibility doesn't work... the AC/EV bonus
// cancel it out (so you'd hardly be wary of them since they
// can't really do any damage).
// - there is no need for another invulnerability spell (which is
// what this spell is trying to be), one is more than enough...
// let people use necromancy.
// - there is no need for another air spell... air spells are
// already very common (i.e,. this level nine spell occurred in
// two books!)
// For the actual name there's a 66% chance of getting something like
// <book> of the Fiery Traveller (Translocation/Fire), else
// <book> of Displacement and Flames.
std::string type_name;
if (disc1 != disc2 && !one_chance_in(3))
{
std::string lookup = spelltype_long_name(disc2);
type_name = getRandNameString(lookup + " adj");
}
// Sometimes use a completely random title.
std::string bookname = "";
if (one_chance_in(20) && (owner.empty() || one_chance_in(3)))
bookname = getRandNameString("random_book_title");
// No adjective found, use the normal method of combining two nouns.
type_name = getRandNameString(spelltype_long_name(disc1));
if (type_name.empty())
name += spelltype_long_name(disc1);
else
name += type_name;
// Give a name that reflects the primary and secondary
// spell disciplines of the spells contained in the book.
name += getRandNameString("book_name") + " ";
if (disc1 != disc2)
// For the actual name there's a 66% chance of getting something like
// <book> of the Fiery Traveller (Translocation/Fire), else
// <book> of Displacement and Flames.
std::string type_name;
if (disc1 != disc2 && !one_chance_in(3))
}
}
else
{
std::string bookname = type_name + " ";
if (disc1 != disc2)
{
name += " and ";
type_name = getRandNameString(spelltype_long_name(disc2));
// Add the noun for the first discipline.
type_name = getRandNameString(spelltype_long_name(disc1));
if (type_name.empty())
bookname += spelltype_long_name(disc1);
if (type_name.empty())
name += spelltype_long_name(disc2);
else
name += type_name;
}
}
}
std::string get_wounds_description(const monsters *monster)
{
if (!monster->alive() || monster->hit_points == monster->max_hit_points)
return "";
if (monster_descriptor(monster->type, MDSC_NOMSG_WOUNDS))
return "";
std::string desc;
mon_dam_level_type dam_level;
mons_get_damage_level(monster, desc, dam_level);
desc.insert(0, " is ");
desc += ".";
return desc;
std::string get_monster_desc(const monsters *mon,
bool full_desc = true,
description_level_type mondtype = DESC_CAP_A,
bool print_attitude = false);
std::string get_monster_equipment_desc(const monsters *mon,
bool full_desc = true,
description_level_type mondtype = DESC_CAP_A,
bool print_attitude = false);
get_monster_desc(*mons, inf);
if (examine_mons && !mons_is_unknown_mimic(mons))
{
// If examine_mons is true (currently only for the Tiles
// mouse-over information), set monster's
// equipment/woundedness/enchantment description as title.
std::string desc = get_monster_equipment_desc(mons) + ".\n";
std::string wounds = get_wounds_description(mons);
if (!wounds.empty())
desc += mons->pronoun(PRONOUN_CAP) + wounds + "\n";
desc += _get_monster_desc(mons);
inf.title = desc;
}
get_monster_db_desc(*mons, inf);
mpr("You are mesmerised by her song.", MSGCH_EXAMINE);
print_wounds(mon);
text += "You are mesmerised by her song.\n";
mprf(MSGCH_EXAMINE, "%s appears to be %s.",
mon->pronoun(PRONOUN_CAP).c_str(),
mons_is_confused(mon) ? "sleepwalking" : "resting");
text += pronoun + " appears to be "
+ (mons_is_confused(mon) ? "sleepwalking" : "resting")
+ ".\n";
{
mprf(MSGCH_EXAMINE, "%s is indifferent to you.",
mon->pronoun(PRONOUN_CAP).c_str());
}
text += pronoun + " is indifferent to you.\n";
{
mprf(MSGCH_EXAMINE, "%s is illuminated by a divine halo.",
mon->pronoun(PRONOUN_CAP).c_str());
}
text += pronoun + " is illuminated by a divine halo.\n";
{
mprf(MSGCH_EXAMINE, "%s is looking at something unseen.",
mon->pronoun(PRONOUN_CAP).c_str());
}
text += pronoun + " is looking at something unseen.\n";
text = _mon_enchantments_string(mon);
static void _describe_monster(const monsters *mon)
{
// First print type and equipment.
std::string text = get_monster_equipment_desc(mon) + ".";
print_formatted_paragraph(text);
print_wounds(mon);
// Print the rest of the description.
text = _get_monster_desc(mon);
std::string get_monster_desc(const monsters *mon, bool full_desc,
description_level_type mondtype,
bool print_attitude)
std::string get_monster_equipment_desc(const monsters *mon, bool full_desc,
description_level_type mondtype,
bool print_attitude)
%%%%
# @book_noun@ of ...
random_book_title
w:15
the @book_plant_animal@
w:20
@number_or_qualifier@ @thing_names@
w:4
the @profession_name@
w:13
@philosophy_or_science@
w:8
@wacky_armour_name@
w:2
@destiny_name@
w:6
@place_name@
w:1
@magic_name@
w:4
@substance_name@
w:2
@power_name@
w:2
@mental_illness_weapon@
%%%%
book_plant_animal
w:1
@jewellery_animal@
w:1
@critter_name@
w:1
@plant_name@
w:6
@weapon_animal@
@armour_animal@
// Removing Air Walk... it's currently broken in a number or ways:
// - the AC/EV bonus probably means very little to any character
// capable of casting a level nine spell
// - the penalty of dropping inventory is a bit harsh considering
// the above
// - the fire/ice susceptibility doesn't work... the AC/EV bonus
// cancel it out (so you'd hardly be wary of them since they
// can't really do any damage).
// - there is no need for another invulnerability spell (which is
// what this spell is trying to be), one is more than enough...
// let people use necromancy.
// - there is no need for another air spell... air spells are
// already very common (i.e,. this level nine spell occurred in
// two books!)
This spell allows the caster to transfer the force of a weapon strike to any target the caster can see. This spell will only deliver the impact of the blow; magical side-effects and enchantments cannot be transferred in this way. The force transferred by this spell has little to do with one's skill with weapons, and more to do with personal strength, translocation skill and magic ability.
This spell allows the caster to transfer the force of a weapon strike to any target the caster can see. This spell will only deliver the impact of the blow; magical side-effects and enchantments cannot be transferred in this way. The force transferred by this spell has little to do with one's skill with weapons, and more to do with personal strength, translocation skill and magic ability.
This spell entombs the caster within four walls of rock. These walls will destroy most objects in their way, but their growth is obstructed by the presence of any creature. Beware - only the unwise cast this spell without reliable means of escape.
This spell entombs the caster within four walls of rock. These walls will destroy most objects in their way, but their growth is obstructed by the presence of any creature. Beware - only the unwise cast this spell without reliable means of escape.
This spell transforms the caster's body into an insubstantial cloud. The caster becomes immaterial and nearly immune to physical harm, but is vulnerable to magical fire and ice. While insubstantial the caster is, of course, unable to interact with physical objects (but may still cast spells).
This spell transforms the caster's body into an insubstantial cloud. The caster becomes immaterial and nearly immune to physical harm, but is vulnerable to magical fire and ice. While insubstantial the caster is, of course, unable to interact with physical objects (but may still cast spells).