diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-06-26 17:43:23 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-06-26 17:43:23 +0000 |
commit | ab091d9b7fca62f5bd9082624132f30a43fb49db (patch) | |
tree | 7069fd89116b7d39e9d3f4e34df06719c2a30088 /crawl-ref/source/files.cc | |
parent | b596b1006e93994e7f3992c48908b8b841aac9c0 (diff) | |
download | crawl-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.cc | 16 |
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. |