summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/mon-util.cc7
-rw-r--r--crawl-ref/source/newgame.cc6
-rw-r--r--crawl-ref/source/spells2.cc6
-rw-r--r--crawl-ref/source/spells3.cc32
4 files changed, 34 insertions, 17 deletions
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 58b4c5bb2b..524371a243 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -3919,8 +3919,11 @@ void monsters::timeout_enchantments(int levels)
break;
case ENCH_CONFUSION:
- del_ench(i->first);
- blink();
+ if (!mons_class_flag(type, M_CONFUSED))
+ {
+ del_ench(i->first);
+ blink();
+ }
break;
case ENCH_HELD:
diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc
index d1220efff1..d40a37df1a 100644
--- a/crawl-ref/source/newgame.cc
+++ b/crawl-ref/source/newgame.cc
@@ -4175,7 +4175,8 @@ bool give_items_skills()
}
you.skills[SK_DODGING] = 1;
- you.skills[SK_SHIELDS] = 1;
+ // don't hand out shields skill to (Cross)Bow users
+// you.skills[SK_SHIELDS] = 1;
you.skills[SK_CROSSBOWS] = 3;
break;
@@ -4189,7 +4190,8 @@ bool give_items_skills()
default:
you.skills[SK_DODGING] = 1;
you.skills[SK_STEALTH] = 1;
- you.skills[(coinflip() ? SK_STABBING : SK_SHIELDS)]++;
+ // don't hand out shields skill to Bow users
+ you.skills[(coinflip() ? SK_STABBING : SK_STEALTH)]++;
you.skills[SK_BOWS] = 3;
break;
}
diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc
index fce14a13dd..58113f4026 100644
--- a/crawl-ref/source/spells2.cc
+++ b/crawl-ref/source/spells2.cc
@@ -477,7 +477,8 @@ void cast_twisted(int power, beh_type corps_beh, int corps_hit)
|| num_corpses < (coinflip() ? 3 : 2))
{
mpr("The spell fails.");
- mpr("The corpses collapse into a pulpy mess.");
+ mprf("The corpse%s collapse%s into a pulpy mess.",
+ num_corpses > 1 ? "s": "", num_corpses > 1 ? "": "s");
return;
}
@@ -498,6 +499,9 @@ void cast_twisted(int power, beh_type corps_beh, int corps_hit)
mpr("The corpses collapse into a pulpy mess.");
else
{
+ // This was probably intended, but it's really boring. (jpeg)
+ // Use menv[mon].number instead (set in create_monster)
+// menv[mon].colour = colour;
mpr("The heap of corpses melds into an agglomeration of writhing flesh!");
if (type_resurr == MONS_ABOMINATION_LARGE)
{
diff --git a/crawl-ref/source/spells3.cc b/crawl-ref/source/spells3.cc
index 00d882177a..6197e8235a 100644
--- a/crawl-ref/source/spells3.cc
+++ b/crawl-ref/source/spells3.cc
@@ -909,6 +909,21 @@ bool project_noise(void)
return (success);
} // end project_noise()
+// Returns true if a given monster is an abomination
+// created by Twisted Resurrection
+static bool mons_your_abomination(const monsters *mon)
+{
+ if ( mon->type != MONS_ABOMINATION_SMALL
+ && mon->type != MONS_ABOMINATION_LARGE )
+ {
+ return (false);
+ }
+
+ // Reusing the colour scheme - hacky! (jpeg)
+ return (mon->number == BROWN || mon->number == RED
+ || mon->number == LIGHTRED);
+}
+
/*
Type recalled:
0 = anything
@@ -949,20 +964,13 @@ bool recall(char type_recalled)
if (!monster_habitable_grid(monster, DNGN_FLOOR))
continue;
- if (type_recalled == 1)
+ if (type_recalled == 1) // undead
{
- /* abomin created by twisted res, although it gets others too */
- if ( !((monster->type == MONS_ABOMINATION_SMALL
- || monster->type == MONS_ABOMINATION_LARGE)
- && (monster->colour == BROWN
- || monster->colour == RED
- || monster->colour == LIGHTRED)) )
+ if (monster->type != MONS_REAPER
+ && mons_holiness(monster) != MH_UNDEAD
+ && !mons_your_abomination(monster))
{
- if (monster->type != MONS_REAPER
- && mons_holiness(monster) != MH_UNDEAD)
- {
- continue;
- }
+ continue;
}
}
else if (type_recalled == 2) // Beogh