git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5038 c06c8d41-db1a-0410-9941-cceddc491573
QWZR7TCGSJAKK755AVEKFIMF5CX5GQLQC46TLI6URKZO2NJ3O26AC
K6S3LX4GPSVHOVIZVVGJDOMT6GXENOTXD6FM3ZHBN5GO4JA5E6YAC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
FFDIVQMLFB3FCJJO5PUEDNAF527HG6P4EGAV6LHUD6NNACZHGBUQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC
5K2ANIEXD3CPJM4XNKNPZINP2G4NT7SJBKRN62WNBUKJXFERTILQC
PR42BCP5BPRFD2MP5H6CIJP7E57Q6TKL6SOXZWFKMFVR2OZWHT7AC
EFWEYIB2R3DPD3JWIPU6LS6SFLPMYN7J7X4GBZR7DJWKHJ3UELSAC
for (int i = igrd[x][y]; i != NON_ITEM; i = mitm[i].link)
{
if (!is_valid_item(mitm[i]))
continue;
if (is_valid_item(mitm[i])
&& (mitm[i].base_type == target_class
|| (target_class == OBJ_FOOD
&& mitm[i].base_type == OBJ_CORPSES)))
{
num_dest++;
item_was_destroyed(mitm[i]);
destroy_item(i);
}
}
if (num_dest > 0)
{
if (see_grid(x, y))
{
switch (target_class)
{
case OBJ_SCROLLS:
mprf("You see %s of smoke.",
(num_dest > 1) ? "some puffs" : "a puff");
break;
case OBJ_POTIONS:
mprf("You see %s shatter.",
(num_dest > 1) ? "some glass" : "glass");
break;
case OBJ_FOOD:
mprf("You see %s of spores.",
(num_dest > 1) ? "some clouds" : "a cloud");
break;
default:
mprf("%s on the floor %s destroyed!",
(num_dest > 1) ? "Some items" : "An item",
(num_dest > 1) ? "were" : "was" );
break;
}
}
xom_is_stimulated((num_dest > 1) ? 32 : 16);
}
}
static void _affect_items(bolt &beam, int x, int y)
{
object_class_type objs_vulnerable = OBJ_UNASSIGNED;
switch (beam.flavour)
{
case BEAM_FIRE:
case BEAM_LAVA:
objs_vulnerable = OBJ_SCROLLS;
break;
case BEAM_COLD:
objs_vulnerable = OBJ_POTIONS;
break;
case BEAM_SPORE:
objs_vulnerable = OBJ_FOOD;
break;
default:
break;
}
if (beam.name == "hellfire")
objs_vulnerable = OBJ_SCROLLS;
if (igrd[x][y] != NON_ITEM)
{
if (objs_vulnerable != OBJ_UNASSIGNED
&& mitm[igrd[x][y]].base_type == objs_vulnerable)
{
item_was_destroyed(mitm[igrd[x][y]], beam.beam_source);
destroy_item( igrd[ x ][ y ] );
if (objs_vulnerable == OBJ_SCROLLS && see_grid(x,y))
mpr("You see a puff of smoke.");
if (objs_vulnerable == OBJ_POTIONS && !silenced(x,y)
&& !silenced(you.x_pos, you.y_pos))
{
mpr("You hear glass shatter.");
}
}
}
}