summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/it_use3.cc4
-rw-r--r--crawl-ref/source/spells3.h2
-rw-r--r--crawl-ref/source/spl-cast.cc20
3 files changed, 21 insertions, 5 deletions
diff --git a/crawl-ref/source/it_use3.cc b/crawl-ref/source/it_use3.cc
index ca17d526fe..53f4f68da3 100644
--- a/crawl-ref/source/it_use3.cc
+++ b/crawl-ref/source/it_use3.cc
@@ -225,7 +225,9 @@ void special_wielded()
case SPWLD_SHADOW:
if (random2(8) <= player_spec_death())
{
- summon_shadows(0, false, false, true);
+ create_monster(
+ mgen_data(MONS_SHADOW, BEH_FRIENDLY,
+ 2, you.pos(), you.pet_target));
did_god_conduct(DID_NECROMANCY, 1);
}
diff --git a/crawl-ref/source/spells3.h b/crawl-ref/source/spells3.h
index 0c6124ded5..854438e4bd 100644
--- a/crawl-ref/source/spells3.h
+++ b/crawl-ref/source/spells3.h
@@ -113,8 +113,6 @@ bool remove_curse(bool suppress_msg);
* *********************************************************************** */
bool cast_sublimation_of_blood(int pow);
-bool summon_shadows(int pow, bool god_gift = false, bool force_hostile = false,
- bool quiet = false);
bool cast_call_imp(int pow, bool god_gift = false);
bool summon_lesser_demon(int pow, bool god_gift = false, bool quiet = false);
bool summon_common_demon(int pow, bool god_gift = false, bool quiet = false);
diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc
index 44d7ad56c4..544b7ebfa7 100644
--- a/crawl-ref/source/spl-cast.cc
+++ b/crawl-ref/source/spl-cast.cc
@@ -2851,9 +2851,25 @@ static void _miscast_necromancy(int severity, const char* cause)
switch (random2(3))
{
case 0:
- // Summon 1-3 shadows.
- summon_shadows(random2(61), god_gift, true);
+ {
+ bool success = false;
+
+ for (int i = random2(3); i >= 0; --i)
+ {
+ if (create_monster(
+ mgen_data::alert_hostile_at(MONS_SHADOW,
+ you.pos(), 2, flags)) != -1)
+ {
+ success = true;
+ }
+ }
+
+ if (success)
+ mpr("Flickering shadows surround you.");
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
break;
+ }
case 1:
if (!player_prot_life() && one_chance_in(3))