which returns true for a grid that the monster or player can pass trhough. Also added new monster type "rock worm" to demonstrate a monster which can pass through solid walls.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2459 c06c8d41-db1a-0410-9941-cceddc491573
3V52MSSK7QX7FWLLUW63DTWCBAJEK674EFZLKP45FLZ5KZKVARHAC
Z6Q7JVMFQ32SC7FRGOB7CE7JS2HEOPAO3B2VLU3YR3UCUDZFIPFQC
LJK4ZQATLSB4MKZG3ARZX5V6RFGTN3NLCN6GTCUGJQKU26SOXMUAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC
4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC
ODNAIEJW732NG7USKQKCIP4R4DAEYXXJQX6LY7TIN32NKE75454QC
J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC
C67GX7W5HBCDPQJRSHWMLM4DUJ3ELFSHH42SVICFJVCJW25T5Z3AC
IVVTHLTTLOP5TSULXJWUSSXHOKYWVU3OWKYVK45A7RIB6V34MYQAC
AUXHSGS4EFOPZ6TVZYWNVOUDO7NYKUKE3HBKGQQWTALSVFOE3HAAC
ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC
I7QLYOTE6DLQZM7YWUWYLKHRJRB2A3STQ42ALSRGQICEWKD2QTEQC
TFYLN3PQEKFQNOYRVJRCXFJ4J6VSKC7QQFOHNWTDPSVYWAPAJABAC
Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC
bool player::can_pass_through(const dungeon_feature_type grid) const
{
return !grid_is_solid(grid);
}
bool player::can_pass_through(const int _x, const int _y) const
{
return can_pass_through(grd[_x][_y]);
}
bool player::can_pass_through(const coord_def &c) const
{
return can_pass_through(grd(c));
}
}
bool mons_class_can_pass(const int mclass, const dungeon_feature_type grid)
{
// Permanent walls can't be passed through.
if (grid == DNGN_CLEAR_PERMAROCK_WALL || grid == DNGN_PERMAROCK_WALL)
return false;
switch (mclass)
{
case MONS_ROCK_WORM:
return (grid >= DNGN_ROCK_WALL && grid <= DNGN_CLEAR_PERMAROCK_WALL);
}
return !grid_is_solid(grid);
}
bool monsters::can_pass_through(const dungeon_feature_type grid) const
{
return mons_class_can_pass(type, grid);
MONS_ROCK_WORM, 'w', BROWN, "rock worm",
M_NO_FLAGS,
MR_RES_POISON | MR_RES_FIRE | MR_RES_COLD | MR_RES_ELEC,
0, 10, MONS_WORM, MONS_ROCK_WORM, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 20}, {AT_NONE, AF_PLAIN, 0}, {AT_NONE, AF_PLAIN, 0}, {AT_NONE, AF_PLAIN, 0} },
{ 5, 5, 5, 0 },
3, 12, MST_NO_SPELLS, CE_NOCORPSE, Z_SMALL, S_SILENT, I_PLANT,
12, DEFAULT_ENERGY, MONUSE_NOTHING, SIZE_LARGE
},
// end "move through rock" monsters {mpc}
{
"unseen", "closed_door", "secret_door", "rock_wall", "stone_wall",
"metal_wall", "green_crystal_wall", "wax_wall", "permarock_wall",
"unseen", "closed_door", "secret_door", "wax_wall", "metal_wall",
"green_crystal_wall", "rock_wall", "stone_wall", "permarock_wall",
type_2 = static_cast<dungeon_feature_type>(DNGN_ROCK_WALL + random2(4));
{
const int minwall = DNGN_RNDWALL_MIN;
const int range = DNGN_RNDWALL_MAX - DNGN_RNDWALL_MIN + 1;
type_2 = static_cast<dungeon_feature_type>(minwall + random2(range));
}