spells behind glass.
Fixed 2174517: V giving information about unknown items in stashes.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8128 c06c8d41-db1a-0410-9941-cceddc491573
UQ4P6W76CTKR2MQNH3EWPS4QPDXE3YRLJRR6744ZJJ32XKYPXQQQC
F3STYUG6GEHXQX54YE6ZXXDJE3HWJ77SKHPL3F4GNKOQ43MEIRJQC
6ZBNP5FQRPWMZYXUO6N7RW5ZN7TJCYYLBNMHYYVSPXCYRQFCQ6YAC
SQEDRNEA7TOPFLWDDPQ65BJDOZAARVFHNMCWQG2SWDXP4W5Z3CLAC
XJZL4V5XSLQHMETU66KRZNZNVWORAYXTQZ6O72ZGY2ZRX4WOQWCQC
SN6VBL74VP6PW6H43QYGEDJWO5BHWOXHI6THVMCE75QJ37EM5BPAC
ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
MV5USMLTBKVRWBAD67UFJ2BS4Y5HEOMYASRSB44DS24BBMRP75RQC
547JREUJXTZNYVGHNNAET5F5O5JYYGNTDQB6ABZNT7YX5EY64OHAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
3TNMXC6XG723NP5RJDQS3ONETVCXPTZXOG3YTDFT2JKKGLCYL7WAC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
CHO4U5JC3RNTLXVIDXXJYZMOBZJ4VXW2GVJWDOTBRKK3AJ36LDLQC
W424WG7JEQN344GQAXTTPLLNYVQJZQJ5X4MLA4ACEVJYV6ECR45AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
ARP25R4B66WPY56X77RRYLHDTIVGZCG2GQGV5WX2UX3DUAS2SAAQC
UWMN4HLG6YA2YFQEVIVMDISD6APKEPIZXMMPMNUYCBQDSAUYSXPQC
47WMN3S37XT6E2JM5S77CNZ37SD5IZKMSHINGY3CDY4QOOS7CLXQC
WEFNLSQ7HRLNHIKFH46FIBBZNAORSXGOVIJWZGVVEHL36MICAUAAC
HKQTMQVLLOBG2VO47TUGSTQALA3D2YLMEVADXXYNR4RGGKD3F2ZAC
Y7OLUKMA5BUL2F7TAJXFX7MK75OSISVABIWHB5PGU6F22D32VQRAC
HTR7KACUG3OB7ANWNQDJ2DDSAR2FQY6VLNLRAJ7OWW4P2AX5LOGAC
QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC
RW3H34H6MQOI3CW4ILNH3VXRKQY73KIUGZKGDQDXPGGB5D6N4RFAC
}
static bool _ms_los_spell( spell_type monspell )
{
switch (monspell)
{
case SPELL_SUMMON_DEMON:
case SPELL_SUMMON_GREATER_DEMON:
case SPELL_SUMMON_UNDEAD:
case SPELL_SUMMON_UFETUBUS:
case SPELL_SUMMON_HORRIBLE_THINGS:
case SPELL_SUMMON_DRAKES:
case SPELL_SUMMON_MUSHROOMS:
case SPELL_SUMMON_ICE_BEAST:
return (true);
default:
return (false);
}
bool mons_has_los_attack(const monsters *mon)
{
const int mclass = mon->type;
// Monsters may have spell like abilities.
if (mons_has_los_ability(mclass))
return (true);
if (mons_class_flag( mclass, M_SPELLCASTER ))
{
for (int i = 0; i < NUM_MONSTER_SPELL_SLOTS; i++)
if (_ms_los_spell( mon->spells[i] ))
return (true);
}
return (false);
}
// Iterate over viewport and get all the items in view.
// FIXME: This includes unknown stashes. I guess for stashes never
// seen before I could simply only add the top item (though I don't
// know how to do that) but what about stashes that changed since
// you last saw them? Just list the old content?
// Iterate over viewport and grab all items known (or thought)
// to be in the stashes in view.
if (oid != NON_ITEM)
{
std::vector<const item_def*> items;
item_list_on_square( items, oid, true );
list_items.insert(list_items.end(), items.begin(), items.end());
}
if (oid == NON_ITEM)
continue;
std::vector<item_def> items = item_list_in_stash(*ri);
if (items.empty())
continue;
list_items.insert(list_items.end(), items.begin(), items.end());