summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mtransit.h
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-03-18 07:05:07 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-03-18 07:05:07 +0000
commit3fdf3ab24ea63ecde6537ea122e2ab1cd6b8d4f1 (patch)
treea838b57e94a87f84fcdbf3e551b365aec922259d /crawl-ref/source/mtransit.h
parentde11c27378236139089c48ecfb0b66457cc0d67c (diff)
downloadcrawl-ref-3fdf3ab24ea63ecde6537ea122e2ab1cd6b8d4f1.tar.gz
crawl-ref-3fdf3ab24ea63ecde6537ea122e2ab1cd6b8d4f1.zip
Banished uniques (including ghosts) will now be sent to the Abyss. Banished
non-uniques may also get the Abyss treatment if they clear a HD roll. Crawl tries very hard not to lose banished monsters, preserving them across Abyss shifts and teleports, and saving them on the transit list when the player escapes the Abyss. Breaks savefile compatibility. Toned down Vehumet and wizardry boosts a touch. Fixed bugginess where player could get aux unarmed attacks on a monster that just teleported away (by weapon of distortion). git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1052 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/mtransit.h')
-rw-r--r--crawl-ref/source/mtransit.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/crawl-ref/source/mtransit.h b/crawl-ref/source/mtransit.h
new file mode 100644
index 0000000000..3ffc0adfc8
--- /dev/null
+++ b/crawl-ref/source/mtransit.h
@@ -0,0 +1,39 @@
+/*
+ * File: mtransit.h
+ * Summary: Tracking monsters in transit between levels.
+ * Written by: Darshan Shaligram
+ *
+ * Modified for Crawl Reference by $Author: dshaligram $ on $Date: 2007-03-15T20:10:20.648083Z $
+ */
+
+#ifndef MTRANSIT_H
+#define MTRANSIT_H
+
+#include "AppHdr.h"
+#include "travel.h"
+#include <map>
+#include <list>
+
+struct follower
+{
+ monsters mons;
+ FixedVector<item_def, NUM_MONSTER_SLOTS> items;
+
+ follower() : mons(), items() { }
+ follower(const monsters &m);
+ bool place(bool near_player = false);
+ void load_mons_items();
+ void restore_mons_items(monsters &m);
+};
+
+typedef std::list<follower> m_transit_list;
+typedef std::map<level_id, m_transit_list> monsters_in_transit;
+
+extern monsters_in_transit the_lost_ones;
+
+void add_monster_to_transit(level_id dest, const monsters &m);
+
+// Places (some of the) monsters eligible to be placed on this level.
+void place_transiting_monsters();
+
+#endif