Deconstruction more generic.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8050 c06c8d41-db1a-0410-9941-cceddc491573
B4YYKEZVHLGRFAHEP5ATEV4MYRPGXQPWTUXGGG7ITZH3ZGV3VMBQC
KO7TLN7OM7UQF33RRTOFPFTDQLTYCOE4N7KWQUTWRIUSEB6PQ4WQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RCIA3MEV4YAYM3JBBRH7LUL5ILQWHN6G7WJMFS5LCUFABTP2PXGQC
S5CIJLSFFXV445G6CH2AQ3YDU3P7RLSIHWV7GBJ4MZ4C26BWCY6AC
5FHWTG7M6FW4B3I33YI7QSM3OZIB6ZGC6TI6JISSLY5Y43HI56VAC
XHA6B4P5FAI5OTUQOA6J4VS2SBBR2MAFL2KMEBGD54O55WNSOGTQC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
FIYBXLWALQINNQTHG2KNDUUTAQAZRDDLXW2XOVSKDKBADJ3XCJ4AC
K7J2IGELTIQL5KAMBV62MFVIVMEZEWCOLZ7GHFXHYPANYIF7BRZAC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
M4H3RQME2IMRCMXFGYPCJS2DMW7HAGPUHCJ7X3524TGYHOBZWQZQC
ZVG6W2UMHJ3GHLF4ZVCUHZOOEUNJMWPURVBN2OQXKVTXYC4Z2LPQC
A5UFFILFAQTJRKKD6YPXVFRLMDRNQ5N3LW57Q3VWRPGD232CCG4AC
case MONS_ICE_STATUE: // blast of ice fragments
case MONS_ICE_BEAST:
case MONS_SIMULACRUM_SMALL:
case MONS_SIMULACRUM_LARGE:
explode = true;
beam.name = "icy blast";
beam.colour = WHITE;
beam.damage.num = 2;
beam.flavour = BEAM_ICE;
if (player_hurt_monster(midx, beam.damage.roll()))
beam.damage.num++;
break;
case MONS_FLYING_SKULL: // blast of bone
case MONS_SKELETON_SMALL:
case MONS_SKELETON_LARGE:
case MONS_SKELETAL_DRAGON:
case MONS_SKELETAL_WARRIOR:
mprf("The %s explodes into sharp fragments of bone!",
(mon->type == MONS_FLYING_SKULL) ? "skull" : "skeleton");
explode = true;
beam.name = "blast of bone shards";
beam.colour = LIGHTGREY;
if (x_chance_in_y(pow / 5, 50)) // potential insta-kill
{
monster_die(mon, KILL_YOU, NON_MONSTER);
beam.damage.num = 4;
}
else
{
beam.damage.num = 2;
if (player_hurt_monster(midx, beam.damage.roll()))
beam.damage.num += 2;
}
goto all_done; // i.e. no "Foo Explodes!"
if (mons_is_icy(mon->type)) // blast of ice
{
explode = true;
beam.name = "icy blast";
beam.colour = WHITE;
beam.damage.num = 2;
beam.flavour = BEAM_ICE;
if (player_hurt_monster(midx, beam.damage.roll()))
beam.damage.num++;
break;
}
else if (mons_is_skeletal(mon->type)
|| mon->type == MONS_FLYING_SKULL) // blast of bone
{
mprf("The %s explodes into sharp fragments of bone!",
(mon->type == MONS_FLYING_SKULL) ? "skull" : "skeleton");
explode = true;
beam.name = "blast of bone shards";
beam.colour = LIGHTGREY;
if (x_chance_in_y(pow / 5, 50)) // potential insta-kill
{
monster_die(mon, KILL_YOU, NON_MONSTER);
beam.damage.num = 4;
}
else
{
beam.damage.num = 2;
if (player_hurt_monster(midx, beam.damage.roll()))
beam.damage.num += 2;
}
goto all_done; // i.e., no "Foo Explodes!"
}
else