Remove Mislead.
authorAdam Borowski <kilobyte@angband.pl>
Sun, 15 Dec 2013 21:34:55 +0000 (22:34 +0100)
committerAdam Borowski <kilobyte@angband.pl>
Sun, 15 Dec 2013 22:16:43 +0000 (23:16 +0100)
It was a pure interface screw, and even worse, required a large amount of
support code that's a maintenance burden, causing crashes we need to fix
from time to time.

36 files changed:
crawl-ref/source/Crawl.xcodeproj/project.pbxproj
crawl-ref/source/MSVC/crawl.vcproj
crawl-ref/source/MSVC/crawl.vcxproj
crawl-ref/source/MSVC/crawl.vcxproj.filters
crawl-ref/source/Makefile.obj
crawl-ref/source/dat/database/monspell.txt
crawl-ref/source/dat/descript/fr/spells.txt
crawl-ref/source/dat/descript/ja/spells.txt
crawl-ref/source/effects.cc
crawl-ref/source/enum.h
crawl-ref/source/hiscores.cc
crawl-ref/source/main.cc
crawl-ref/source/mislead.cc [deleted file]
crawl-ref/source/mislead.h [deleted file]
crawl-ref/source/mon-cast.cc
crawl-ref/source/mon-info.cc
crawl-ref/source/mon-place.cc
crawl-ref/source/mon-spll.h
crawl-ref/source/mon-stuff.cc
crawl-ref/source/mon-util.cc
crawl-ref/source/mon-util.h
crawl-ref/source/monster.cc
crawl-ref/source/monster.h
crawl-ref/source/output.cc
crawl-ref/source/player.cc
crawl-ref/source/player.h
crawl-ref/source/rltiles/dc-spells.txt
crawl-ref/source/spl-damage.cc
crawl-ref/source/spl-data.h
crawl-ref/source/status.cc
crawl-ref/source/tags.cc
crawl-ref/source/throw.cc
crawl-ref/source/tilepick.cc
crawl-ref/source/view.cc
crawl-ref/source/wiz-you.cc
crawl-ref/source/xom.cc

index 34be8f4..43158ad 100644 (file)
                7B09F5471133D63E004F149D /* l_feat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B09F5411133D63E004F149D /* l_feat.cc */; };
                7B09F5481133D63E004F149D /* l_spells.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B09F5421133D63E004F149D /* l_spells.cc */; };
                7B09F5601133D66C004F149D /* mgen_data.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B09F54D1133D66C004F149D /* mgen_data.cc */; };
-               7B09F5611133D66C004F149D /* mislead.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B09F5501133D66C004F149D /* mislead.cc */; };
                7B09F5621133D66C004F149D /* mon_resist_def.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B09F5521133D66C004F149D /* mon_resist_def.cc */; };
                7B09F5631133D66C004F149D /* mon-clone.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B09F5541133D66C004F149D /* mon-clone.cc */; };
                7B09F5641133D66C004F149D /* mon-death.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B09F5561133D66C004F149D /* mon-death.cc */; };
                7B09F5CE1133D6AB004F149D /* message.cc in Sources */ = {isa = PBXBuildFile; fileRef = E5D6402010BD494400A99626 /* message.cc */; };
                7B09F5CF1133D6AB004F149D /* mgen_data.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B09F54D1133D66C004F149D /* mgen_data.cc */; };
                7B09F5D01133D6AB004F149D /* misc.cc in Sources */ = {isa = PBXBuildFile; fileRef = E5D6402210BD494400A99626 /* misc.cc */; };
-               7B09F5D11133D6AB004F149D /* mislead.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B09F5501133D66C004F149D /* mislead.cc */; };
                7B09F5D21133D6AB004F149D /* mon-abil.cc in Sources */ = {isa = PBXBuildFile; fileRef = E5D6402410BD494400A99626 /* mon-abil.cc */; };
                7B09F5D31133D6AB004F149D /* mon-act.cc in Sources */ = {isa = PBXBuildFile; fileRef = E5D6402610BD494400A99626 /* mon-act.cc */; };
                7B09F5D41133D6AB004F149D /* mon-behv.cc in Sources */ = {isa = PBXBuildFile; fileRef = E5D6402810BD494400A99626 /* mon-behv.cc */; };
                7B09F54D1133D66C004F149D /* mgen_data.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mgen_data.cc; sourceTree = "<group>"; };
                7B09F54E1133D66C004F149D /* mgen_data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mgen_data.h; sourceTree = "<group>"; };
                7B09F54F1133D66C004F149D /* mgen_enum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mgen_enum.h; sourceTree = "<group>"; };
-               7B09F5501133D66C004F149D /* mislead.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mislead.cc; sourceTree = "<group>"; };
-               7B09F5511133D66C004F149D /* mislead.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mislead.h; sourceTree = "<group>"; };
                7B09F5521133D66C004F149D /* mon_resist_def.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mon_resist_def.cc; sourceTree = "<group>"; };
                7B09F5531133D66C004F149D /* mon_resist_def.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mon_resist_def.h; sourceTree = "<group>"; };
                7B09F5541133D66C004F149D /* mon-clone.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "mon-clone.cc"; sourceTree = "<group>"; };
                                7B09F54F1133D66C004F149D /* mgen_enum.h */,
                                E5D6402210BD494400A99626 /* misc.cc */,
                                E5D6402310BD494400A99626 /* misc.h */,
-                               7B09F5501133D66C004F149D /* mislead.cc */,
-                               7B09F5511133D66C004F149D /* mislead.h */,
                                E5D6402410BD494400A99626 /* mon-abil.cc */,
                                E5D6402510BD494400A99626 /* mon-abil.h */,
                                E5D6402610BD494400A99626 /* mon-act.cc */,
                                7B09F5CE1133D6AB004F149D /* message.cc in Sources */,
                                7B09F5CF1133D6AB004F149D /* mgen_data.cc in Sources */,
                                7B09F5D01133D6AB004F149D /* misc.cc in Sources */,
-                               7B09F5D11133D6AB004F149D /* mislead.cc in Sources */,
                                7B09F5D21133D6AB004F149D /* mon-abil.cc in Sources */,
                                7B09F5D31133D6AB004F149D /* mon-act.cc in Sources */,
                                7B09F5D41133D6AB004F149D /* mon-behv.cc in Sources */,
                                E5D6412610BD494500A99626 /* message.cc in Sources */,
                                7B09F5601133D66C004F149D /* mgen_data.cc in Sources */,
                                E5D6412710BD494500A99626 /* misc.cc in Sources */,
-                               7B09F5611133D66C004F149D /* mislead.cc in Sources */,
                                E5D6412810BD494500A99626 /* mon-abil.cc in Sources */,
                                E5D6412910BD494500A99626 /* mon-act.cc in Sources */,
                                E5D6412A10BD494500A99626 /* mon-behv.cc in Sources */,
index 21e852e..f2c8ec2 100644 (file)
                        RelativePath="..\misc.h"\r
                        >\r
                </File>\r
-               <File\r
-                       RelativePath="..\mislead.cc"
-                       >
-               </File>
-               <File
-                       RelativePath="..\mislead.h"
-                       >
-               </File>
                <File
                        RelativePath="..\mon-abil.cc"
                        >
index 71a3dc1..614febb 100644 (file)
@@ -411,7 +411,6 @@ perl.exe "util/gen-cflg.pl" compflag.h "&lt;UNKNOWN&gt;" "&lt;UNKNOWN&gt;"
     <ClCompile Include="..\message-stream.cc" />\r
     <ClCompile Include="..\message.cc" />\r
     <ClCompile Include="..\misc.cc" />\r
-    <ClCompile Include="..\mislead.cc" />\r
     <ClCompile Include="..\mon-abil.cc" />\r
     <ClCompile Include="..\mon-act.cc" />\r
     <ClCompile Include="..\mon-behv.cc" />\r
@@ -756,7 +755,6 @@ perl.exe "util/gen-cflg.pl" compflag.h "&lt;UNKNOWN&gt;" "&lt;UNKNOWN&gt;"
     <ClInclude Include="..\mgen_data.h" />\r
     <ClInclude Include="..\mgen_enum.h" />\r
     <ClInclude Include="..\misc.h" />\r
-    <ClInclude Include="..\mislead.h" />\r
     <ClInclude Include="..\mon-abil.h" />\r
     <ClInclude Include="..\mon-act.h" />\r
     <ClInclude Include="..\mon-behv.h" />\r
index d6c74c6..32189d9 100644 (file)
     <ClCompile Include="..\message-stream.cc" />\r
     <ClCompile Include="..\message.cc" />\r
     <ClCompile Include="..\misc.cc" />\r
-    <ClCompile Include="..\mislead.cc" />\r
     <ClCompile Include="..\mon-abil.cc" />\r
     <ClCompile Include="..\mon-act.cc" />\r
     <ClCompile Include="..\mon-behv.cc" />\r
     <ClInclude Include="..\mgen_data.h" />\r
     <ClInclude Include="..\mgen_enum.h" />\r
     <ClInclude Include="..\misc.h" />\r
-    <ClInclude Include="..\mislead.h" />\r
     <ClInclude Include="..\mon-abil.h" />\r
     <ClInclude Include="..\mon-act.h" />\r
     <ClInclude Include="..\mon-behv.h" />\r
index a2ca913..5fcb90f 100644 (file)
@@ -131,7 +131,6 @@ menu.o \
 message-stream.o \
 message.o \
 misc.o \
-mislead.o \
 mon-abil.o \
 mon-act.o \
 mon-behv.o \
index 80b09cb..33abdf1 100644 (file)
@@ -101,20 +101,6 @@ Greater Healing cast
 
 @The_monster@ briefly glows brightly.
 %%%%
-Mislead cast
-
-@The_monster@ weaves an illusion.
-
-@The_monster@ misleads you.
-
-@The_monster@ clouds your mind.
-%%%%
-unseen Mislead cast
-
-Something tries to mislead you!
-
-Something weaves an illusion around you!
-%%%%
 Mara Summon cast
 
 @The_monster@ weaves an illusion.
index aaf0f33..26488a1 100644 (file)
@@ -689,12 +689,6 @@ Minor Healing spell
 
 Ce sort soigne une petite quantité de dégâts au corps du sorcier.
 %%%%
-Mislead spell
-
-Ce sortilège brouille l'esprit d'un ennemi. Les gens ainsi touchés ne peuvent
-pas discerner l'identité des êtres les entourant, bien que certains détailles
-importants restent évident.
-%%%%
 Necromutation spell
 
 Ce sort transforme d'abord le sorcier en liche — une puissante créature
index 9ec5dff..df71cc2 100644 (file)
@@ -659,12 +659,6 @@ Minor Healing spell
 
 この呪文は術者が肉体に負ったダメージを少しだけ癒す。
 %%%%
-Mislead spell
-
-この呪文は一体の敵の精神を曇らせる。
-この呪文の影響を受けると周囲のものを識別できなくなるが、
-明らかに目立つ風景は明白に残る。
-%%%%
 Necromutation spell
 
 この呪文はまず術者を力ある骸骨であるリッチに変化させる。
index f2e5c34..1410576 100644 (file)
@@ -51,7 +51,6 @@
 #include "message.h"
 #include "mgen_data.h"
 #include "misc.h"
-#include "mislead.h"
 #include "mon-behv.h"
 #include "mon-cast.h"
 #include "mon-pathfind.h"
@@ -614,13 +613,6 @@ void direct_effect(monster* source, spell_type spell,
         mons_cast_haunt(source);
         break;
 
-    case SPELL_MISLEAD:
-        if (!def)
-            mons_cast_mislead(source);
-        else
-            defender->confuse(source, source->hit_dice * 12);
-        break;
-
     case SPELL_SUMMON_SPECTRAL_ORCS:
         if (def)
             simple_monster_message(def, " is surrounded by Orcish apparitions.");
index 25c6035..b9cb5f3 100644 (file)
@@ -1517,7 +1517,9 @@ enum duration_type
     DUR_SLIMIFY,
     DUR_TIME_STEP,
     DUR_ICEMAIL_DEPLETED,       // Wait this many turns for full Icemail
+#if TAG_MAJOR_VERSION == 34
     DUR_MISLED,
+#endif
     DUR_QUAD_DAMAGE,
     DUR_AFRAID,
     DUR_MIRROR_DAMAGE,
@@ -3565,7 +3567,9 @@ enum spell_type
     SPELL_BLINK_CLOSE,
     SPELL_BLINK_RANGE,
     SPELL_BLINK_AWAY,
+#if TAG_MAJOR_VERSION == 34
     SPELL_MISLEAD,
+#endif
     SPELL_FAKE_MARA_SUMMON,
 #if TAG_MAJOR_VERSION == 34
     SPELL_SUMMON_RAKSHASA,
index 81462e2..352b8eb 100644 (file)
@@ -1139,12 +1139,6 @@ void scorefile_entry::init_death_cause(int dam, int dsrc,
     if (source_monster)
         killer_map = source_monster->originating_map();
 
-    // Save this here. We don't want to completely remove the status, as that
-    // would look odd in the "screenshot", but having DUR_MISLED as a non-zero
-    // value at his point in time will generate such odities as "killed by a
-    // golden eye, wielding an orcish crossbo [19 damage]", etc. {due}
-    unwind_var<int> misled(you.duration[DUR_MISLED], 0);
-
     // Set the default aux data value...
     // If aux is passed in (ie for a trap), we'll default to that.
     if (aux == NULL)
@@ -1505,7 +1499,6 @@ void scorefile_entry::init(time_t dt)
         DUR_LOWERED_MR,
         DUR_MAGIC_SHIELD,
         DUR_MIGHT,
-        DUR_MISLED,
         DUR_PARALYSIS,
         DUR_PETRIFIED,
         DUR_PETRIFYING,
index 34bdc99..b527078 100644 (file)
@@ -89,7 +89,6 @@
 #include "melee_attack.h"
 #include "message.h"
 #include "misc.h"
-#include "mislead.h"
 #include "mon-act.h"
 #include "mon-abil.h"
 #include "mon-cast.h"
@@ -2655,11 +2654,6 @@ static void _decrement_durations()
     _decrement_a_duration(DUR_LOWERED_MR, delay, "You feel less vulnerable to hostile enchantments.");
     _decrement_a_duration(DUR_SLIMIFY, delay, "You feel less slimy.",
                           coinflip(), "Your slime is starting to congeal.");
-    if (_decrement_a_duration(DUR_MISLED, delay,
-                              "Your thoughts are your own once more."))
-    {
-        end_mislead();
-    }
     if (_decrement_a_duration(DUR_QUAD_DAMAGE, delay, NULL, 0,
                               "Quad Damage is wearing off."))
     {
diff --git a/crawl-ref/source/mislead.cc b/crawl-ref/source/mislead.cc
deleted file mode 100644 (file)
index b024142..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- * @file
- * @brief Handling of Mara's Mislead spell and stats, plus fakes.
-**/
-
-#include "AppHdr.h"
-#include "mislead.h"
-
-#include "act-iter.h"
-#include "enum.h"
-#include "env.h"
-#include "hints.h"
-#include "message.h"
-#include "misc.h"
-#include "monster.h"
-#include "mon-util.h"
-#ifdef USE_TILE_LOCAL
- #include "tilepick.h"
-#endif
-#include "view.h"
-#include "xom.h"
-
-bool unsuitable_misled_monster(monster_type mons)
-{
-    return invalid_monster_type(mons)
-           || mons_is_unique(mons)
-           || mons_is_mimic(mons)
-           || mons_is_ghost_demon(mons)
-           || mons_class_is_stationary(mons)
-           || mons_class_is_zombified(mons)
-           || mons_is_tentacle_or_tentacle_segment(mons)
-           || mons_class_flag(mons, M_NO_POLY_TO | M_CANT_SPAWN)
-           || mons_class_flag(mons, M_UNFINISHED)
-           || mons_genus(mons) == MONS_DRACONIAN
-           || mons == MONS_MANTICORE
-           || mons == MONS_SLIME_CREATURE
-           || mons == MONS_HYDRA
-           || mons == MONS_KRAKEN
-           || mons == MONS_BALLISTOMYCETE
-           || mons == MONS_HYPERACTIVE_BALLISTOMYCETE
-           || mons == MONS_SHAPESHIFTER
-           || mons == MONS_GLOWING_SHAPESHIFTER
-           || mons == MONS_KILLER_KLOWN;
-}
-
-static monster_type _get_misled_monster(monster* mons)
-{
-    monster_type mt = random_monster_at_grid(mons->pos());
-    if (unsuitable_misled_monster(mt))
-        mt = random_monster_at_grid(mons->pos());
-
-    if (unsuitable_misled_monster(mt))
-        return MONS_0;
-
-    return mt;
-}
-
-bool update_mislead_monster(monster* mons)
-{
-    // Don't affect uniques, named monsters, and monsters with special tiles.
-    if (mons_is_unique(mons->type) || !mons->mname.empty()
-        || mons->props.exists("monster_tile")
-        || mons->props.exists("mislead_as")
-        || mons_is_projectile(mons->type) // Only orbs, not boulders
-        || mons_is_tentacle_or_tentacle_segment(mons->type)
-        || mons->type == MONS_MARA_FAKE)
-    {
-        return false;
-    }
-
-    monster misled_as;
-    misled_as.type = _get_misled_monster(mons);
-    if (misled_as.type == MONS_0)
-        return false;
-
-    misled_as.mid = mons->mid;
-    define_monster(&misled_as);
-    mons->props["mislead_as"] = misled_as;
-
-    return true;
-}
-
-static int _update_mislead_monsters(monster* caster)
-{
-    int count = 0;
-
-    for (monster_iterator mi; mi; ++mi)
-        if (*mi != caster && update_mislead_monster(*mi))
-            count++;
-
-    return count;
-}
-
-void end_mislead()
-{
-    you.duration[DUR_MISLED] = 0;
-    for (monster_iterator mi; mi; ++mi)
-        if (mi->props.exists("mislead_as"))
-            mi->props.erase("mislead_as");
-}
-
-void mons_cast_mislead(monster* mons)
-{
-    // This really only affects the player; it causes confusion when cast on
-    // non-player foes, but that is dealt with inside ye-great-Switch-of-Doom.
-    if (mons->foe != MHITYOU)
-        return;
-
-    // We deal with pointless misleads in the right place now.
-
-    if (you.clarity())
-    {
-        mpr("Your vision blurs momentarily.");
-        if (!you.clarity(false))
-            maybe_id_clarity();
-        return;
-    }
-
-    _update_mislead_monsters(mons);
-
-    const int old_value = you.duration[DUR_MISLED];
-    you.increase_duration(DUR_MISLED, mons->hit_dice * 12 / 3, 50);
-    if (you.duration[DUR_MISLED] > old_value)
-    {
-        you.check_awaken(500);
-
-        if (old_value <= 0)
-        {
-            mprf(MSGCH_WARN, "But for a moment, strange images dance in front of your eyes.");
-#ifdef USE_TILE_LOCAL
-            tiles.add_overlay(you.pos(), tileidx_zap(MAGENTA));
-            update_screen();
-#else
-            flash_view(MAGENTA);
-#endif
-            more();
-        }
-        else
-            mprf(MSGCH_WARN, "You are even more misled!");
-
-        learned_something_new(HINT_YOU_ENCHANTED);
-
-        xom_is_stimulated((you.duration[DUR_MISLED] - old_value)
-                           / BASELINE_DELAY);
-    }
-
-    return;
-}
-
-int count_mara_fakes()
-{
-    int count = 0;
-    for (monster_iterator mi; mi; ++mi)
-    {
-        if (mi->type == MONS_MARA_FAKE)
-            count++;
-    }
-
-    return count;
-}
diff --git a/crawl-ref/source/mislead.h b/crawl-ref/source/mislead.h
deleted file mode 100644 (file)
index 9e9e98d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * @file
- * @brief Handling of Mara's Mislead spell and stats, plus fakes.
-**/
-
-bool unsuitable_misled_monster(monster_type mons);
-void mons_cast_mislead(monster* mons);
-bool update_mislead_monster(monster* mons);
-int count_mara_fakes();
-void end_mislead();
index 99d2aca..29e1ee3 100644 (file)
@@ -33,7 +33,6 @@
 #include "mon-place.h"
 #include "mon-project.h"
 #include "terrain.h"
-#include "mislead.h"
 #include "mgen_data.h"
 #include "mon-gear.h"
 #include "mon-speak.h"
@@ -1010,7 +1009,6 @@ static bool _los_free_spell(spell_type spell_cast)
        || spell_cast == SPELL_FIRE_STORM
        || spell_cast == SPELL_AIRSTRIKE
        || spell_cast == SPELL_WATERSTRIKE
-       || spell_cast == SPELL_MISLEAD
        || spell_cast == SPELL_HOLY_FLAMES
        || spell_cast == SPELL_SUMMON_SPECTRAL_ORCS;
 }
@@ -1046,7 +1044,6 @@ bool setup_mons_cast(monster* mons, bolt &pbolt, spell_type spell_cast,
         switch (spell_cast)
         {
         case SPELL_BRAIN_FEED:
-        case SPELL_MISLEAD:
         case SPELL_SMITING:
         case SPELL_AIRSTRIKE:
         case SPELL_WATERSTRIKE:
@@ -1120,7 +1117,9 @@ bool setup_mons_cast(monster* mons, bolt &pbolt, spell_type spell_cast,
     case SPELL_CHAIN_LIGHTNING:    // the only user is reckless
     case SPELL_SUMMON_EYEBALLS:
     case SPELL_SUMMON_BUTTERFLIES:
+#if TAG_MAJOR_VERSION == 34
     case SPELL_MISLEAD:
+#endif
     case SPELL_CALL_TIDE:
     case SPELL_INK_CLOUD:
     case SPELL_SILENCE:
@@ -1615,12 +1614,6 @@ static bool _ms_waste_of_time(const monster* mon, spell_type monspell)
         break;
     }
 
-    case SPELL_MISLEAD:
-        if (you.duration[DUR_MISLED] > 10 && one_chance_in(3))
-            ret = true;
-
-        break;
-
     case SPELL_SUMMON_ILLUSION:
         if (!foe || !actor_is_illusion_cloneable(foe))
             ret = true;
@@ -1795,6 +1788,7 @@ static bool _ms_waste_of_time(const monster* mon, spell_type monspell)
 #if TAG_MAJOR_VERSION == 34
     case SPELL_SUMMON_TWISTER:
     case SPELL_SHAFT_SELF:
+    case SPELL_MISLEAD:
 #endif
     case SPELL_NO_SPELL:
         ret = true;
index e139eea..5262b0b 100644 (file)
@@ -410,13 +410,8 @@ monster_info::monster_info(const monster* m, int milev)
     bool type_known = false;
     bool nomsg_wounds = false;
 
-    if (m->props.exists("mislead_as") && you.misled())
-    {
-        type = m->get_mislead_type();
-        threat = mons_threat_level(&m->props["mislead_as"].get_monster());
-    }
     // friendly fake Rakshasas/Maras are known
-    else if (attitude != ATT_FRIENDLY && m->props.exists("faking"))
+    if (attitude != ATT_FRIENDLY && m->props.exists("faking"))
     {
         type = m->props["faking"].get_monster().type;
         threat = mons_threat_level(&m->props["faking"].get_monster());
@@ -705,7 +700,6 @@ monster_info::monster_info(const monster* m, int milev)
     if (m->submerged())
         mb.set(MB_SUBMERGED);
 
-    // these are excluded as mislead types
     if (mons_is_pghost(type))
     {
         ASSERT(m->ghost.get());
index 8d8bbc4..bb6b3be 100644 (file)
@@ -28,7 +28,6 @@
 #include "libutil.h"
 #include "losglobal.h"
 #include "message.h"
-#include "mislead.h"
 #include "mon-behv.h"
 #include "mon-death.h"
 #include "mon-gear.h"
@@ -1489,9 +1488,6 @@ static monster* _place_monster_aux(const mgen_data &mg, const monster *leader,
         mon->add_ench(mon_enchant(ENCH_TORNADO, 0, 0, INFINITE_DURATION));
     }
 
-    if (!crawl_state.game_is_arena() && you.misled())
-        update_mislead_monster(mon);
-
     mon->flags |= MF_JUST_SUMMONED;
 
     // Don't leave shifters in their starting shape.
index a84f1b4..3fed493 100644 (file)
 
     {  MST_MARA,
       {
-       SPELL_MISLEAD,
+       SPELL_NO_SPELL,
        SPELL_BOLT_OF_FIRE,
        SPELL_FAKE_MARA_SUMMON,
        SPELL_SUMMON_ILLUSION,
 
     {  MST_MARA_FAKE,
       {
-       SPELL_MISLEAD,
+       SPELL_NO_SPELL,
        SPELL_BOLT_OF_FIRE,
        SPELL_NO_SPELL,
        SPELL_NO_SPELL,
index 1dd8468..58fd3b2 100644 (file)
@@ -3598,11 +3598,8 @@ bool summon_can_attack(const monster* mons, const actor* targ)
 
 mon_dam_level_type mons_get_damage_level(const monster* mons)
 {
-    if (!mons_can_display_wounds(mons)
-        || !mons_class_can_display_wounds(mons->get_mislead_type()))
-    {
+    if (!mons_can_display_wounds(mons))
         return MDAM_OKAY;
-    }
 
     if (mons->hit_points <= mons->max_hit_points / 5)
         return MDAM_ALMOST_DEAD;
index 250f0a2..cf06b84 100644 (file)
@@ -3129,7 +3129,6 @@ static bool _ms_los_spell(spell_type monspell)
     if (monspell == SPELL_SMITING
         || monspell == SPELL_AIRSTRIKE
         || monspell == SPELL_HAUNT
-        || monspell == SPELL_MISLEAD
         || monspell == SPELL_SUMMON_SPECTRAL_ORCS
         || spell_typematch(monspell, SPTYP_SUMMONING))
     {
@@ -3145,8 +3144,7 @@ static bool _ms_ranged_spell(spell_type monspell, bool attack_only = false,
     // Check for Smiting specially, so it's not filtered along
     // with the summon spells.
     if (attack_only
-        && (monspell == SPELL_SMITING || monspell == SPELL_AIRSTRIKE
-            || monspell == SPELL_MISLEAD))
+        && (monspell == SPELL_SMITING || monspell == SPELL_AIRSTRIKE))
     {
         return true;
     }
@@ -3535,8 +3533,7 @@ static bool _mons_has_smite_attack(const monster* mons)
             || hspell_pass[i] == SPELL_SMITING
             || hspell_pass[i] == SPELL_HELLFIRE_BURST
             || hspell_pass[i] == SPELL_FIRE_STORM
-            || hspell_pass[i] == SPELL_AIRSTRIKE
-            || hspell_pass[i] == SPELL_MISLEAD)
+            || hspell_pass[i] == SPELL_AIRSTRIKE)
         {
             return true;
         }
@@ -4581,6 +4578,18 @@ bool monster_nearby()
     return false;
 }
 
+int count_mara_fakes()
+{
+    int count = 0;
+    for (monster_iterator mi; mi; ++mi)
+    {
+        if (mi->type == MONS_MARA_FAKE)
+            count++;
+    }
+
+    return count;
+}
+
 actor *actor_by_mid(mid_t m)
 {
     if (m == MID_PLAYER)
index 8e541b9..6ee7eb1 100644 (file)
@@ -443,6 +443,7 @@ bool mons_is_immotile(const monster* mons);
 
 int get_dist_to_nearest_monster();
 bool monster_nearby();
+int count_mara_fakes();
 actor *actor_by_mid(mid_t m);
 monster *monster_by_mid(mid_t m);
 bool mons_is_tentacle_head(monster_type mc);
index e8f82d1..3a890fd 100644 (file)
@@ -2534,17 +2534,13 @@ static string _mon_special_name(const monster& mon, description_level_type desc,
     if (desc == DESC_NONE)
         return "";
 
-    monster_type type = mon.type;
-    if (!crawl_state.game_is_arena() && you.misled())
-        type = mon.get_mislead_type();
-
     const bool arena_submerged = crawl_state.game_is_arena() && !force_seen
                                      && mon.submerged();
 
-    if (type == MONS_NO_MONSTER)
+    if (mon.type == MONS_NO_MONSTER)
         return "DEAD MONSTER";
-    else if (invalid_monster_type(type) && type != MONS_PROGRAM_BUG)
-        return _invalid_monster_str(type);
+    else if (invalid_monster_type(mon.type) && mon.type != MONS_PROGRAM_BUG)
+        return _invalid_monster_str(mon.type);
 
     // Handle non-visible case first.
     if (!force_seen && !mon.observable() && !arena_submerged)
@@ -5345,14 +5341,6 @@ const monsterentry *monster::find_monsterentry() const
                                                     : get_monster_data(type);
 }
 
-monster_type monster::get_mislead_type() const
-{
-    if (props.exists("mislead_as"))
-        return props["mislead_as"].get_monster().type;
-    else
-        return type;
-}
-
 int monster::action_energy(energy_use_type et) const
 {
     if (const monsterentry *me = find_monsterentry())
index 1f8a66a..a82229e 100644 (file)
@@ -91,7 +91,6 @@ public:
     bool has_base_name() const;
 
     const monsterentry *find_monsterentry() const;
-    monster_type get_mislead_type() const;
 
     void init_experience();
 
index f76cf43..f28d215 100644 (file)
@@ -961,7 +961,6 @@ static void _get_status_lights(vector<status_light>& out)
         DUR_LOWERED_MR,
         STATUS_BEHELD,
         DUR_LIQUID_FLAMES,
-        DUR_MISLED,
         DUR_POISONING,
         STATUS_SICK,
         STATUS_ROT,
index 2234314..ba5d88b 100644 (file)
@@ -7466,11 +7466,6 @@ bool player::invisible() const
     return duration[DUR_INVIS] && !backlit();
 }
 
-bool player::misled() const
-{
-    return duration[DUR_MISLED];
-}
-
 bool player::visible_to(const actor *looker) const
 {
     if (crawl_state.game_is_arena())
index 944d103..f5a4368 100644 (file)
@@ -426,7 +426,6 @@ public:
     bool is_web_immune() const;
     bool cannot_speak() const;
     bool invisible() const;
-    bool misled() const;
     bool can_see_invisible() const;
     bool can_see_invisible(bool unid, bool items = true) const;
     bool visible_to(const actor *looker) const;
index e69cbe1..ff89b1a 100644 (file)
@@ -239,7 +239,6 @@ miasma_breath MIASMA_BREATH
 %sdir misc
 error MIGHT
 error MIGHT_OTHER
-error MISLEAD
 error NOXIOUS_CLOUD
 error PETRIFYING_CLOUD
 %sdir gui/spells/monster
index 9adee5e..5f62fd9 100644 (file)
@@ -824,7 +824,7 @@ spret_type vampiric_drain(int pow, monster* mons, bool fail)
         return SPRET_SUCCESS;
     }
 
-    // Monster might be invisible or player misled.
+    // Monster might be invisible.
     if (mons->holiness() == MH_UNDEAD || mons->holiness() == MH_DEMONIC)
     {
         mpr("Aaaarggghhhhh!");
index 463362e..fdaeb29 100644 (file)
@@ -2475,7 +2475,6 @@ struct spell_desc
      false,
      false
 },
-#endif
 
 {
     SPELL_MISLEAD, "Mislead",
@@ -2489,6 +2488,7 @@ struct spell_desc
      false,
      false
 },
+#endif
 
 {
     SPELL_SUMMON_ILLUSION, "Summon Illusion",
index 6855bf5..e871916 100644 (file)
@@ -70,8 +70,6 @@ static duration_def duration_data[] =
       0, "", "shielded", "" },
     { DUR_MIGHT, false,
       0, "", "mighty", "You are mighty." },
-    { DUR_MISLED, true,
-      LIGHTMAGENTA, "Misled", "misled", "" },
     { DUR_PARALYSIS, false,
       RED, "Para", "paralysed", "You are paralysed." },
     { DUR_PETRIFIED, false,
index 2d9d01a..f119180 100644 (file)
@@ -49,7 +49,6 @@
 #include "libutil.h"
 #include "mapmark.h"
 #include "misc.h"
-#include "mislead.h"
 #include "mon-info.h"
 #if TAG_MAJOR_VERSION == 34
  #include "mon-chimera.h"
@@ -3610,12 +3609,6 @@ void marshallMonster(writer &th, const monster& m)
     if (parts & MP_CONSTRICTION)
         _marshall_constriction(th, &m);
 
-    if (m.props.exists("mislead_as"))
-    {
-        ASSERT(!unsuitable_misled_monster(
-            m.props["mislead_as"].get_monster().type));
-    }
-
     m.props.write(th);
 }
 
@@ -4332,16 +4325,6 @@ void unmarshallMonster(reader &th, monster& m)
         if (m.type == MONS_WAR_DOG)
             m.type = MONS_WOLF;
     }
-
-    // The second part of this is here to deal with saves that have the
-    // invald misled monster problem (#7501).
-    if (m.props.exists("mislead_as")
-        && (!you.misled()
-            || unsuitable_misled_monster(
-                m.props["mislead_as"].get_monster().type)))
-    {
-        m.props.erase("mislead_as");
-    }
 #endif
 
     if (m.type != MONS_PROGRAM_BUG && mons_species(m.type) == MONS_PROGRAM_BUG)
index 5ba2252..04427f2 100644 (file)
@@ -2341,11 +2341,6 @@ bool mons_throw(monster* mons, bolt &beam, int msl)
 
     _throw_noise(mons, beam, item);
 
-    // Store misled values here, as the setting up of the aux source
-    // will use the wrong monster name.
-    int misled = you.duration[DUR_MISLED];
-    you.duration[DUR_MISLED] = 0;
-
     // [dshaligram] When changing bolt names here, you must edit
     // hiscores.cc (scorefile_entry::terse_missile_cause()) to match.
     if (projected == LRET_LAUNCHED)
@@ -2361,9 +2356,6 @@ bool mons_throw(monster* mons, bolt &beam, int msl)
                  mons->name(DESC_A).c_str());
     }
 
-    // And restore it here.
-    you.duration[DUR_MISLED] = misled;
-
     // Add everything up.
     beam.hit = baseHit + random2avg(exHitBonus, 2) + ammoHitBonus;
     beam.damage =
index 1ba373f..ea4a4af 100644 (file)
@@ -5098,7 +5098,6 @@ tileidx_t tileidx_spell(spell_type spell)
     case SPELL_MIASMA_BREATH:            return TILEG_MIASMA_BREATH;
     case SPELL_MIGHT:                    return TILEG_MIGHT;
     case SPELL_MIGHT_OTHER:              return TILEG_MIGHT_OTHER;
-    case SPELL_MISLEAD:                  return TILEG_MISLEAD;
     case SPELL_NOXIOUS_CLOUD:            return TILEG_NOXIOUS_CLOUD;
     case SPELL_PETRIFYING_CLOUD:         return TILEG_PETRIFYING_CLOUD;
     case SPELL_POLYMORPH:                return TILEG_POLYMORPH;
index bb5fb39..2fb7bf5 100644 (file)
@@ -290,12 +290,7 @@ void update_monsters_in_view()
         map<monster_type, int> genera; // This is the plural for genus!
         for (unsigned int i = 0; i < size; ++i)
         {
-            monster_type type;
-            if (monsters[i]->props.exists("mislead_as") && you.misled())
-                type = monsters[i]->get_mislead_type();
-            else
-                type = monsters[i]->type;
-
+            const monster_type type = monsters[i]->type;
             types[type]++;
             genera[mons_genus(type)]++;
         }
index fb6f79a..2bd472d 100644 (file)
@@ -311,7 +311,6 @@ void wizard_heal(bool super_heal)
     you.rotting = 0;
     you.disease = 0;
     you.duration[DUR_CONF]      = 0;
-    you.duration[DUR_MISLED]    = 0;
     you.duration[DUR_POISONING] = 0;
     you.duration[DUR_EXHAUSTED] = 0;
     set_hp(you.hp_max);
@@ -802,7 +801,9 @@ static const char* dur_names[] =
     "slimify",
     "time step",
     "icemail depleted",
+#if TAG_MAJOR_VERSION == 34
     "misled",
+#endif
     "quad damage",
     "afraid",
     "mirror damage",
index 46a6db0..d8d6189 100644 (file)
@@ -1080,7 +1080,7 @@ static int _xom_do_potion(bool debug = false)
         {
         case POT_CURING:
             if (you.duration[DUR_POISONING] || you.rotting || you.disease
-                || you.duration[DUR_CONF] || you.duration[DUR_MISLED])
+                || you.duration[DUR_CONF])
             {
                 break;
             }