summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-10-22 18:45:59 +0200
committerRobert Vollmert <rvollmert@gmx.net>2009-10-22 22:37:08 +0200
commit8d4d79655dd503417920299808993cef658bdde0 (patch)
tree3b1ca5a659541ba1dae36bfd1e8f6087d88df7d0 /crawl-ref/source
parentfd1958001336bef983dfdfc951735c6e628d3ab7 (diff)
downloadcrawl-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.cc34
-rw-r--r--crawl-ref/source/mon-util.h2
-rw-r--r--crawl-ref/source/monstuff.cc7
-rw-r--r--crawl-ref/source/mstuff2.cc2
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;