diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-10 08:37:46 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-10 08:37:46 +0000 |
commit | c48e3fbe888d67a5abf206614ca7655629840dda (patch) | |
tree | 8a296e06ee211e51f65e33548ab26800a59cf67b /crawl-ref/source/monplace.h | |
parent | ba35a3c7bbee2e937f3091002803476340d18787 (diff) | |
download | crawl-ref-c48e3fbe888d67a5abf206614ca7655629840dda.tar.gz crawl-ref-c48e3fbe888d67a5abf206614ca7655629840dda.zip |
Enable monsters to move around glass structures if they can see the
player through the walls. Don't use pathfinding to target other
monsters, only the player! Monsters of different intelligence have
different limits on the distance they may travel to circumvent an
obstacle, i.e. zombies will only use a range of 2, whereas highly
intelligent monsters can expertly find their way through (transparent)
labyrinths, though there's a chance they'll forget their target if
they don't see it, so for very long and winding paths it's likely
they don't ever arrive.
Will probably affect performance, though I did test on entire levels
turned transparent with Vitrification and things seemed to run more
or less smoothly.
Ideally, monsters should also be able to move around other obstacles
that don't affect visibility (such as water, lava, or statues) but
that is currently not possible.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5700 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/monplace.h')
-rw-r--r-- | crawl-ref/source/monplace.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/crawl-ref/source/monplace.h b/crawl-ref/source/monplace.h index 7ff492d728..ddc2d01458 100644 --- a/crawl-ref/source/monplace.h +++ b/crawl-ref/source/monplace.h @@ -318,6 +318,7 @@ public: virtual ~monster_pathfind(); // public methods + void set_range(int r); bool start_pathfind(monsters *mon, coord_def dest, bool msg = false); std::vector<coord_def> backtrack(void); std::vector<coord_def> calc_waypoints(void); @@ -339,6 +340,9 @@ protected: // Our destination, and the current position we're looking at. coord_def start, target, pos; + // Maximum range to search between start and target. None, if zero. + int range; + // Currently shortest and longest possible total length of the path. int min_length; int max_length; |