summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/fprop.h4
-rw-r--r--crawl-ref/source/initfile.cc4
-rw-r--r--crawl-ref/source/spells3.cc6
3 files changed, 13 insertions, 1 deletions
diff --git a/crawl-ref/source/fprop.h b/crawl-ref/source/fprop.h
index cd8abcf51e..e6fe37e9a9 100644
--- a/crawl-ref/source/fprop.h
+++ b/crawl-ref/source/fprop.h
@@ -17,7 +17,9 @@ enum feature_property_type
// NOTE: Bloody floor and sanctuary are exclusive.
FPROP_FORCE_EXCLUDE = (1 << 6),
FPROP_NO_CLOUD_GEN = (1 << 7),
- FPROP_NO_RTELE_INTO = (1 << 8)
+ FPROP_NO_RTELE_INTO = (1 << 8),
+ FPROP_NO_CTELE_INTO = (1 << 9),
+ FPROP_NO_TELE_INTO = FPROP_NO_RTELE_INTO | FPROP_NO_CTELE_INTO
};
#endif
diff --git a/crawl-ref/source/initfile.cc b/crawl-ref/source/initfile.cc
index bc31bfdc33..da5ecad62b 100644
--- a/crawl-ref/source/initfile.cc
+++ b/crawl-ref/source/initfile.cc
@@ -228,6 +228,10 @@ int str_to_fprop ( const std::string &str)
return (FPROP_NO_CLOUD_GEN);
if (str == "no_rtele_into")
return (FPROP_NO_RTELE_INTO);
+ if (str == "no_ctele_into")
+ return (FPROP_NO_CTELE_INTO);
+ if (str == "no_tele_into")
+ return (FPROP_NO_TELE_INTO);
return (FPROP_NONE);
}
diff --git a/crawl-ref/source/spells3.cc b/crawl-ref/source/spells3.cc
index 08e6243fb3..4969da954f 100644
--- a/crawl-ref/source/spells3.cc
+++ b/crawl-ref/source/spells3.cc
@@ -1532,6 +1532,12 @@ static bool _teleport_player(bool allow_control, bool new_abyss_area)
is_controlled = false;
large_change = false;
}
+ else if (testbits(env.pgrid(pos), FPROP_NO_CTELE_INTO))
+ {
+ is_controlled = false;
+ large_change = false;
+ mpr("A strong magical force throws you back!", MSGCH_WARN);
+ }
else
{
// Leave a purple cloud.