summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/files.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-06-26 17:43:23 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-06-26 17:43:23 +0000
commitab091d9b7fca62f5bd9082624132f30a43fb49db (patch)
tree7069fd89116b7d39e9d3f4e34df06719c2a30088 /crawl-ref/source/files.cc
parentb596b1006e93994e7f3992c48908b8b841aac9c0 (diff)
downloadcrawl-ref-ab091d9b7fca62f5bd9082624132f30a43fb49db.tar.gz
crawl-ref-ab091d9b7fca62f5bd9082624132f30a43fb49db.zip
Followers are now placed on the transit list so that crashes or saves between
levels don't lose following monsters. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1661 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/files.cc')
-rw-r--r--crawl-ref/source/files.cc16
1 files changed, 4 insertions, 12 deletions
diff --git a/crawl-ref/source/files.cc b/crawl-ref/source/files.cc
index fdbc137f94..cdfd51895a 100644
--- a/crawl-ref/source/files.cc
+++ b/crawl-ref/source/files.cc
@@ -901,7 +901,7 @@ static void clear_clouds()
env.cgrid.init(EMPTY_CLOUD);
}
-static void grab_followers(std::vector<follower>& followers)
+static void grab_followers()
{
for (int i = you.x_pos - 1; i < you.x_pos + 2; i++)
{
@@ -931,8 +931,7 @@ static void grab_followers(std::vector<follower>& followers)
mprf( "%s is following.", str_monam(*fmenv, DESC_CAP_THE).c_str());
#endif
- follower f(*fmenv);
- followers.push_back(f);
+ fmenv->set_transit(level_id::current());
fmenv->destroy_inventory();
monster_cleanup(fmenv);
}
@@ -946,8 +945,6 @@ bool load( dungeon_feature_type stair_taken, load_mode_type load_mode,
you.transit_stair, stair_taken, DNGN_UNSEEN);
unwind_bool ylev(you.entering_level, true, false);
- std::vector<follower> followers;
-
bool just_created_level = false;
std::string cha_fil = make_filename( you.your_name, you.your_level,
@@ -977,7 +974,7 @@ bool load( dungeon_feature_type stair_taken, load_mode_type load_mode,
// This block is to grab followers and save the old level to disk.
if (load_mode == LOAD_ENTER_LEVEL && old_level != -1)
{
- grab_followers(followers);
+ grab_followers();
if (!was_a_labyrinth)
save_level( old_level, LEVEL_DUNGEON, old_branch );
@@ -1061,12 +1058,7 @@ bool load( dungeon_feature_type stair_taken, load_mode_type load_mode,
|| you.level_type == LEVEL_PANDEMONIUM)
&& load_mode == LOAD_ENTER_LEVEL)
{
- while (!followers.empty())
- {
- follower f = followers.front();
- followers.erase(followers.begin());
- f.place(true);
- }
+ place_followers();
} // end of moving followers
// Load monsters in transit.