diff options
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/fprop.h | 4 | ||||
-rw-r--r-- | crawl-ref/source/initfile.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/spells3.cc | 6 |
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. |