diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-10-22 18:45:59 +0200 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-10-22 22:37:08 +0200 |
commit | 8d4d79655dd503417920299808993cef658bdde0 (patch) | |
tree | 3b1ca5a659541ba1dae36bfd1e8f6087d88df7d0 /crawl-ref/source | |
parent | fd1958001336bef983dfdfc951735c6e628d3ab7 (diff) | |
download | crawl-ref-8d4d79655dd503417920299808993cef658bdde0.tar.gz crawl-ref-8d4d79655dd503417920299808993cef658bdde0.zip |
Fold mon_can_see_monster and mons_monster_visible into monsters.
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/mon-util.cc | 34 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 7 | ||||
-rw-r--r-- | crawl-ref/source/mstuff2.cc | 2 |
4 files changed, 6 insertions, 39 deletions
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 64de62bc85..dbcdd7ed6a 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -898,27 +898,6 @@ bool mons_sense_invis(const monsters *mon) return (mons_class_flag(mon->type, M_SENSE_INVIS)); } -bool mon_can_see_monster(const monsters *mon, const monsters *targ) -{ - if (!mon->mon_see_cell(targ->pos())) - return (false); - - 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) -{ - if (targ->has_ench(ENCH_SUBMERGED) - || targ->invisible() && !mon->can_see_invisible()) - { - return (false); - } - - return (true); -} - unsigned mons_char(int mc) { return monster_symbols[mc].glyph; @@ -7992,17 +7971,8 @@ bool monsters::invisible() const bool monsters::visible_to(const actor *looker) const { - if (this == looker) - return (true); - - if (looker->atype() == ACT_PLAYER) - return player_monster_visible(this); - else - { - const monsters* mon = dynamic_cast<const monsters*>(looker); - - return mons_monster_visible(mon, this); - } + bool vis = !invisible() || looker->can_see_invisible(); + return (vis && (this == looker || !has_ench(ENCH_SUBMERGED))); } bool monsters::mon_see_cell(const coord_def& p, bool reach) const diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h index 02dab2db8c..664516032f 100644 --- a/crawl-ref/source/mon-util.h +++ b/crawl-ref/source/mon-util.h @@ -514,8 +514,6 @@ mon_itemeat_type mons_itemeat(const monsters *mon); * called from: beam - fight - monstuff - view * *********************************************************************** */ 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); // last updated 12may2000 {dlb} diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 29cc7d5906..e73bdfb52c 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -4496,7 +4496,7 @@ static void _handle_behaviour(monsters *mon) { proxFoe = mons_near(mon, mon->foe); - if (!mon_can_see_monster(mon, &menv[mon->foe])) + if (!mon->can_see( &menv[mon->foe])) proxFoe = false; foepos = menv[mon->foe].pos(); @@ -4841,7 +4841,7 @@ static bool _mons_check_set_foe(monsters *mon, const coord_def& p, if (monsters *foe = monster_at(p)) { if (foe != mon - && mon_can_see_monster(mon, foe) + && mon->can_see(foe) && (friendly || !is_sanctuary(p)) && (mons_friendly(foe) != friendly || (neutral && !mons_neutral(foe)))) @@ -7083,8 +7083,7 @@ static bool _handle_spell(monsters *monster, bolt &beem) spellOK = false; } } - else if (!mon_can_see_monster(monster, - &menv[monster->foe])) + else if (!monster->can_see(&menv[monster->foe])) { spellOK = false; } diff --git a/crawl-ref/source/mstuff2.cc b/crawl-ref/source/mstuff2.cc index 689a372175..b8141646de 100644 --- a/crawl-ref/source/mstuff2.cc +++ b/crawl-ref/source/mstuff2.cc @@ -1217,7 +1217,7 @@ void setup_mons_cast(monsters *monster, bolt &pbolt, { monsters *targ = &menv[i]; - if (!mon_can_see_monster(monster, targ)) + if (!monster->can_see(targ)) continue; hog_type = MONS_HOG; |