From f77258b7ef4d0c6943bc825956cd027b234c6977 Mon Sep 17 00:00:00 2001 From: dolorous Date: Wed, 31 Dec 2008 00:11:33 +0000 Subject: Add miscellaneous minor fixes. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8034 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/beam.cc | 10 +++++----- crawl-ref/source/describe.cc | 2 +- crawl-ref/source/externs.h | 1 - crawl-ref/source/mon-util.cc | 45 ++++++++++++++++++++++---------------------- crawl-ref/source/mon-util.h | 11 ++++++----- crawl-ref/source/monplace.cc | 5 +++-- crawl-ref/source/stuff.cc | 2 +- 7 files changed, 38 insertions(+), 38 deletions(-) (limited to 'crawl-ref/source') diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 99b1e1b0ab..2fb6c3764e 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -2065,7 +2065,7 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted, } else if (original < hurted) { - if (mons_is_icy(monster)) + if (mons_is_icy(monster->type)) { if (doFlavouredEffects) simple_monster_message(monster, " melts!"); @@ -2285,7 +2285,7 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted, } else if (hurted > original) { - if (mons_is_icy(monster)) + if (mons_is_icy(monster->type)) { if (doFlavouredEffects) simple_monster_message(monster, " melts!"); @@ -2316,7 +2316,7 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted, } else if (resist < 0) { - if (mons_is_icy(monster)) + if (mons_is_icy(monster->type)) { if (doFlavouredEffects) simple_monster_message(monster, " melts!"); @@ -2375,10 +2375,10 @@ static bool _monster_resists_mass_enchantment(monsters *monster, if (mons_friendly(monster)) return (true); - if (mons_class_holiness(monster->type) != MH_UNDEAD) + if (mons_holiness(monster) != MH_UNDEAD) return (true); - if (check_mons_resist_magic( monster, pow )) + if (check_mons_resist_magic(monster, pow)) { simple_monster_message(monster, mons_immune_magic(monster)? " is unaffected." diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index a2ba75be49..3cd82d7aff 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -2727,7 +2727,7 @@ void describe_monsters(const monsters& mons) break; } - if (!mons.can_use_stairs()) + if (!mons_can_use_stairs(&mons)) { body << mons_pronoun(static_cast(mons.type), PRONOUN_CAP, true) diff --git a/crawl-ref/source/externs.h b/crawl-ref/source/externs.h index 134c247218..41885c7f7a 100644 --- a/crawl-ref/source/externs.h +++ b/crawl-ref/source/externs.h @@ -1338,7 +1338,6 @@ public: bool is_travelling() const; bool is_patrolling() const; - bool can_use_stairs() const; bool needs_transit() const; void set_transit(const level_id &destination); bool find_place_to_live(bool near_player = false); diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 4870fc5d0a..606394de73 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -594,17 +594,12 @@ bool mons_is_poisoner(const monsters *mon) || attk_flavour == AF_POISON_STR); } -bool mons_is_icy(const monsters *mon) +bool mons_is_icy(int mc) { - return (mons_is_icy(mon->type)); -} - -bool mons_is_icy(int mtype) -{ - return (mtype == MONS_ICE_BEAST - || mtype == MONS_SIMULACRUM_SMALL - || mtype == MONS_SIMULACRUM_LARGE - || mtype == MONS_ICE_STATUE); + return (mc == MONS_ICE_BEAST + || mc == MONS_SIMULACRUM_SMALL + || mc == MONS_SIMULACRUM_LARGE + || mc == MONS_ICE_STATUE); } bool invalid_monster(const monsters *mon) @@ -816,7 +811,7 @@ bool mons_see_invis(const monsters *mon) return (false); } -bool mon_can_see_monster( const monsters *mon, const monsters *targ ) +bool mon_can_see_monster(const monsters *mon, const monsters *targ) { if (!mon->mon_see_grid(targ->pos())) return (false); @@ -824,10 +819,9 @@ bool mon_can_see_monster( const monsters *mon, const monsters *targ ) return (mons_monster_visible(mon, targ)); } - // This does NOT do line of sight! It checks the targ's visibility // with respect to mon's perception, but doesn't do walls or range. -bool mons_monster_visible( const monsters *mon, const monsters *targ ) +bool mons_monster_visible(const monsters *mon, const monsters *targ) { if (targ->has_ench(ENCH_SUBMERGED) || targ->invisible() && !mons_see_invis(mon)) @@ -840,7 +834,7 @@ bool mons_monster_visible( const monsters *mon, const monsters *targ ) // This does NOT do line of sight! It checks the player's visibility // with respect to mon's perception, but doesn't do walls or range. -bool mons_player_visible( const monsters *mon ) +bool mons_player_visible(const monsters *mon) { if (you.invisible()) { @@ -935,6 +929,16 @@ bool mons_can_be_zombified(const monsters *mon) && !mons_enslaved_body_and_soul(mon)); } +bool mons_class_can_use_stairs(int mc) +{ + return (!mons_class_is_zombified(mc)); +} + +bool mons_can_use_stairs(const monsters *mon) +{ + return (!mons_is_zombified(mon) || mons_enslaved_intact_soul(mon)); +} + bool mons_enslaved_body_and_soul(const monsters *mon) { return (testbits(mon->flags, MF_ENSLAVED_SOUL) @@ -3163,7 +3167,7 @@ bool monster_shover(const monsters *m) // Monsters too stupid to use stairs (e.g. zombified undead) are also // disqualified. - if (!m->can_use_stairs()) + if (!mons_can_use_stairs(m)) return (false); // Smiters profit from staying back and smiting. @@ -3206,8 +3210,8 @@ bool monster_senior(const monsters *m1, const monsters *m2) // If they're the same holiness, monsters smart enough to use stairs can // push past monsters too stupid to use stairs (so that e.g. non-zombified // undead can push past zombified undead). - if (m1->holiness() == m2->holiness() && m1->can_use_stairs() - && !m2->can_use_stairs()) + if (m1->holiness() == m2->holiness() && mons_can_use_stairs(m1) + && !mons_can_use_stairs(m2)) { return (true); } @@ -5846,18 +5850,13 @@ bool monsters::is_patrolling() const return (!patrol_point.origin()); } -bool monsters::can_use_stairs() const -{ - return (!mons_is_zombified(this) || mons_enslaved_intact_soul(this)); -} - bool monsters::needs_transit() const { return ((mons_is_unique(type) || (flags & MF_BANISHED) || you.level_type == LEVEL_DUNGEON && hit_dice > 8 + random2(25) - && can_use_stairs()) + && mons_can_use_stairs(this)) && !mons_is_summoned(this)); } diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h index 01eb8b8545..751e4a8ec4 100644 --- a/crawl-ref/source/mon-util.h +++ b/crawl-ref/source/mon-util.h @@ -493,9 +493,9 @@ mon_itemuse_type mons_itemuse(const monsters *mon); * *********************************************************************** */ bool mons_see_invis(const monsters *mon); bool mons_sense_invis(const monsters *mon); -bool mon_can_see_monster( const monsters *mon, const monsters *targ ); -bool mons_monster_visible( const monsters *mon, const monsters *targ ); -bool mons_player_visible( const monsters *mon ); +bool mon_can_see_monster(const monsters *mon, const monsters *targ); +bool mons_monster_visible(const monsters *mon, const monsters *targ); +bool mons_player_visible(const monsters *mon); // last updated 12may2000 {dlb} @@ -638,6 +638,8 @@ bool mons_class_is_zombified(int mc); bool mons_is_zombified(const monsters *monster); bool mons_class_can_be_zombified(int mc); bool mons_can_be_zombified(const monsters *mon); +bool mons_class_can_use_stairs(int mc); +bool mons_can_use_stairs(const monsters *mon); bool mons_enslaved_body_and_soul(const monsters *mon); bool mons_enslaved_twisted_soul(const monsters *mon); bool mons_enslaved_intact_soul(const monsters *mon); @@ -765,8 +767,7 @@ bool mons_is_holy(const monsters *mon); bool mons_is_evil(const monsters *mon); bool mons_is_unholy(const monsters *mon); bool mons_is_evil_or_unholy(const monsters *mon); -bool mons_is_icy(const monsters *mon); -bool mons_is_icy(int mtype); +bool mons_is_icy(int mc); bool mons_has_lifeforce(const monsters *mon); monster_type mons_genus(int mc); monster_type mons_species(int mc); diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc index 62c8cb5df3..22cc0b19e7 100644 --- a/crawl-ref/source/monplace.cc +++ b/crawl-ref/source/monplace.cc @@ -596,9 +596,10 @@ static monster_type _resolve_monster_type(monster_type mon_type, // Now pick a monster of the given branch and level. mon_type = pick_random_monster(place, *lev_mons, *lev_mons); - // Don't allow zombified monsters to be placed at stairs. + // Don't allow monsters too stupid to use stairs (e.g. + // zombified undead) to be placed at stairs. if (proximity != PROX_NEAR_STAIRS - || !mons_class_is_zombified(mon_type)) + || mons_class_can_use_stairs(mon_type)) { break; } diff --git a/crawl-ref/source/stuff.cc b/crawl-ref/source/stuff.cc index 6a2eb44922..ee9a82986b 100644 --- a/crawl-ref/source/stuff.cc +++ b/crawl-ref/source/stuff.cc @@ -342,8 +342,8 @@ static bool _tag_follower_at(const coord_def &pos) if (fmenv->type == MONS_PLAYER_GHOST || !fmenv->alive() - || !fmenv->can_use_stairs() || fmenv->incapacitated() + || !mons_can_use_stairs(fmenv) || mons_is_stationary(fmenv)) { return (false); -- cgit v1.2.3-54-g00ecf