git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8129 c06c8d41-db1a-0410-9941-cceddc491573
PKENI7REL6MQ5KKGSBIOVMPJKITY6OLQRXHVD4Z6PU7HMS23XM7AC
ONOH6OOENDDCK5H25C6RLLVAOCO4T6PG2GTURIDXFK7FFXGIYASQC
OKAC6U6XUKANH3325B5UYUYBF3IST74DEMK573ZPUNTSLIT52TSAC
HFZQADL3R7ITWM3VPW5G3NCB2AHRMAMKYZOI3STW5LWUCTV4FFFQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
PKXXBHS3LWLPZI2QVRX22MSQ4R2626IXRSNHFFYHXYTLJJQU54LQC
EHP6PYCIPYQ3KF4JFGBTZXEUQHN3FVAH4NUWEOWDDNKGPYVOTOJQC
LH4OYDEWEON5QNUCM74R7MNBJDP7O4XRETY74ZMYSXUXYQV427PAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
UVGFF3QPZKZNMWFDDANQRBTVOROTA4TZFXGYDPV4GQXZKHZY2EXAC
LFBNFE3PZBXTR2ROPKYPARUWLJAYWAKGTS7VBWADZWVVSJ5CLX6AC
J2U2RWUFKGHXSLYE7CRQTOFUCXLYLLRZGM6TU2BUQ33MZMDFA6VQC
YTJOEDICYRXF4ALQEVELA2TFP65ILV7JQLTHMP5IEFJIZTNVP3QQC
GDTMDVSG3IGKIEWC5MGJJHRRMKMJY7H2AHBRUXTJ4ADI4RPXL5WQC
JTKZNL3XLWHRDRCQLGWH6AUJENEUIOL4Z6CETTL2ML6YBPSAZXXAC
VHV3RLNJR3YIFS54AW3ALDD4MNQLXFTKEK5C2TT5TUM63KTGAYFQC
T3NY54AEBRWTVKX6A5LAGWL3MTKUZ6NOOCFLTFV7FSUNCRHMQKAQC
RXYHWJIDGC2MATMRRJWUQDPLABFDJFA32N5I7WYW7IEHCNSSNZAQC
EMOBSWJHHB4V6WVMZL7JCF2V3KZN454Z6NS346OKFPMBNO24EJDQC
2TZT4GURBCNHSVOXO5ZMN7XEIO3K4GWJCDPVSYUCMVZ6UFDL4DIQC
5FMXUX2ZFIF6NQZCS54W7ZOCVSH7XR6UIMQ5FW2UZLEN4EWP5PSAC
M6IHSU5JWCTOTUSPCVVHMAQ4XJDGQJOLZTTN5BGKEOS4B6Z7IOWAC
P5TRGRH7XMQSPCZKM5IEEO34TY6WMLGHHX7BU6Y453JFRXLUR2VQC
4GAIJ3CGARXLDO3NG2MWPNCRCPDSZWFAMXFKMWXWVMM6HYWOPVWAC
UAJN2CFA2QHYDHW2UFAVPPHDQFCD54RKM6V2UC4AMEDJUBBLNWIQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
WP5VP57D5BWKDAS7AA224OV2RX4O4BPTI2BLY7TS3T2O2PLUGXCQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
DCD5TZTIZ2JNYXJT22YSIS7FPOSUEUUV3B7GSY2DWP2NSVLXAVQAC
UWI3ZNJDRQRL7CXFNFEG46TA6SAK24XUFY5YOKVOTJA3VG3OBNFAC
UL7XFKMUX3WIU4O2LZANK4ECJ654UZPDBFGNXUEYZYOLKBYBCG6AC
IDVXNMJFRENWKNSEHT4TU3XZKY5IDJ6LEPHKEMCIMVQSJFFHGQFAC
JQKRFPNPLYBHUWMVQLPX5UB5RRP5PKY6NQ5LRHJRIOY6IKN2AH6AC
}
static void _check_wander_target(monsters *mon, bool isPacified = false,
dungeon_feature_type can_move = DNGN_UNSEEN)
{
// default wander behaviour
if (mon->pos() == mon->target
|| mons_is_batty(mon) || !isPacified && one_chance_in(20))
{
bool need_target = true;
if (!can_move)
can_move = (mons_amphibious(mon))
? DNGN_DEEP_WATER : DNGN_SHALLOW_WATER;
if (mon->is_travelling())
need_target = _handle_monster_travelling(mon, can_move);
// If we still need a target because we're not travelling
// (any more), check for patrol routes instead.
if (need_target && mon->is_patrolling())
need_target = _handle_monster_patrolling(mon);
// XXX: This is really dumb wander behaviour... instead of
// changing the goal square every turn, better would be to
// have the monster store a direction and have the monster
// head in that direction for a while, then shift the
// direction to the left or right. We're changing this so
// wandering monsters at least appear to have some sort of
// attention span. -- bwr
if (need_target)
{
mon->target.set(10 + random2(GXM - 10),
10 + random2(GYM - 10));
}
}
// default wander behaviour
if (mon->pos() == mon->target
|| mons_is_batty(mon) || !isPacified && one_chance_in(20))
{
bool need_target = true;
if (mon->is_travelling())
need_target = _handle_monster_travelling(mon, can_move);
// If we still need a target because we're not travelling
// (any more), check for patrol routes instead.
if (need_target && patrolling)
need_target = _handle_monster_patrolling(mon);
// XXX: This is really dumb wander behaviour... instead of
// changing the goal square every turn, better would be to
// have the monster store a direction and have the monster
// head in that direction for a while, then shift the
// direction to the left or right. We're changing this so
// wandering monsters at least appear to have some sort of
// attention span. -- bwr
if (need_target)
{
mon->target.set(10 + random2(GXM - 10),
10 + random2(GYM - 10));
}
}
_check_wander_target(mon, isPacified, can_move);
if (crawl_state.arena)
{
const bool ranged =
mons_has_ranged_attack(monster)
|| mons_has_ranged_spell(monster);
// Smiters are happy if they have clear visibility through glass,
// but other monsters must go around.
const bool glass_ok = mons_has_smite_attack(monster);
// Monsters in the arena are smarter than the norm and
// always pathfind to their targets.
if (delta.abs() > 2
&& (!ranged ||
!monster->mon_see_grid(monster->target, !glass_ok)))
{
monster_pathfind mp;
if (mp.init_pathfind(monster, monster->target))
delta = mp.next_pos(monster->pos()) - monster->pos();
}
}
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################{{{{...{{{{{{{{#################################
################################.{{{.{{{.{.{{{{#################################
################################{{{{.{.{{{{{{{{#################################
################################{{{{{{{{{{.{{.{#################################
################################{{.{{.{{{{{{{{{#################################
################################{{{{.{{{{{{{{{{#################################
################################.{{{{{{{.{{{{{{#################################
################################.{.{{{{{{{{{{{{#################################
################################{{{{{{{.{{{{{{.#################################
################################{{{{{.{{{{{{{{{#################################
################################..{{{{{{{{.{{{{#################################
################################{.{{{{{{{{{{{{{#################################
################################{{{{.{{{{{{{{.{#################################
################################{{{{.{{{.{{{{{{#################################
################################.{{.{..{{{{{{{{#################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
################################################################################
coord_def place_a(dgn_find_feature_marker(DNGN_STONE_STAIRS_UP_I));
coord_def place_b(dgn_find_feature_marker(DNGN_STONE_STAIRS_DOWN_I));
place_a = dgn_find_feature_marker(DNGN_STONE_STAIRS_UP_I);
place_b = dgn_find_feature_marker(DNGN_STONE_STAIRS_DOWN_I);