summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/dat/descript/monsters.txt4
-rw-r--r--crawl-ref/source/enum.h1
-rw-r--r--crawl-ref/source/mon-data.h16
-rw-r--r--crawl-ref/source/mon-gear.cc1
-rw-r--r--crawl-ref/source/mon-place.cc6
-rw-r--r--crawl-ref/source/mon-stuff.cc7
6 files changed, 25 insertions, 10 deletions
diff --git a/crawl-ref/source/dat/descript/monsters.txt b/crawl-ref/source/dat/descript/monsters.txt
index 5966f0c157..4c2d54dffe 100644
--- a/crawl-ref/source/dat/descript/monsters.txt
+++ b/crawl-ref/source/dat/descript/monsters.txt
@@ -332,6 +332,10 @@ Sigmund
The bane of all young adventurers, Sigmund combines delusions of greatness with nasty tactics.
%%%%
+slave
+
+A once proud human that has been magically enslaved, and is now a timid, simpering creature, ready to perform any dead at its master's command.
+%%%%
Snorg
A hairy troll, angry and mean.
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index ba3a2b4e41..83da70dd07 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -2050,6 +2050,7 @@ enum monster_type // (int) menv[].type
MONS_AIZUL,
MONS_PIKEL,
MONS_CRAZY_YIUF,
+ MONS_SLAVE,
// Testing monsters
MONS_TEST_SPAWNER,
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h
index 788e6f7ef5..9a6dfc8d8d 100644
--- a/crawl-ref/source/mon-data.h
+++ b/crawl-ref/source/mon-data.h
@@ -3372,6 +3372,18 @@ static monsterentry mondata[] = {
},
{
+ MONS_SLAVE, '@', WHITE, "slave",
+ M_WARM_BLOOD | M_SPEAKS,
+ MR_NO_FLAGS,
+ 550, 10, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -3,
+ { {AT_HIT, AF_PLAIN, 10}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
+ { 5, 3, 5, 0 },
+ 2, 12, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_SHOUT,
+ I_NORMAL, HT_LAND, FL_NONE, 10, DEFAULT_ENERGY,
+ MONUSE_STARTING_EQUIPMENT, MONEAT_NOTHING, SIZE_MEDIUM
+},
+
+{
MONS_HELL_KNIGHT, '@', RED, "hell knight",
M_FIGHTER | M_SPELLCASTER | M_ACTUAL_SPELLS | M_WARM_BLOOD | M_SPEAKS,
MR_RES_HELLFIRE,
@@ -4467,11 +4479,11 @@ static monsterentry mondata[] = {
},
{
- // XP modifier is very high to compensate for 1d3 created-friendly humans
+ // XP modifier is very high to compensate for 4 created-friendly humans
MONS_PIKEL, 'K', BLUE, "Pikel",
M_WARM_BLOOD | M_SPEAKS | M_UNIQUE | M_NO_WAND,
MR_NO_FLAGS,
- 500, 40, MONS_KOBOLD, MONS_BIG_KOBOLD, MH_NATURAL, -3,
+ 500, 55, MONS_KOBOLD, MONS_BIG_KOBOLD, MH_NATURAL, -3,
{ {AT_HIT, AF_PLAIN, 9}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 6, 0, 0, 40 },
4, 12, MST_NO_SPELLS, CE_POISONOUS, Z_NOZOMBIE, S_SHOUT,
diff --git a/crawl-ref/source/mon-gear.cc b/crawl-ref/source/mon-gear.cc
index 7af4927574..0fdcd90d01 100644
--- a/crawl-ref/source/mon-gear.cc
+++ b/crawl-ref/source/mon-gear.cc
@@ -1281,6 +1281,7 @@ void give_armour(monsters *mon, int level)
0);
break;
+ case MONS_SLAVE:
case MONS_GRUM:
item.base_type = OBJ_ARMOUR;
item.sub_type = ARM_ANIMAL_SKIN;
diff --git a/crawl-ref/source/mon-place.cc b/crawl-ref/source/mon-place.cc
index b1672f1c13..57990844ff 100644
--- a/crawl-ref/source/mon-place.cc
+++ b/crawl-ref/source/mon-place.cc
@@ -1009,9 +1009,7 @@ int place_monster(mgen_data mg, bool force_pos)
// Don't give XP for the slaves to discourage hunting. Pikel
// has an artificially large XP modifier to compensate for
// this.
- menv[band_id].flags |= MF_CREATED_FRIENDLY | MF_NAME_DESCRIPTOR
- | MF_NAME_REPLACE;
- menv[band_id].mname = "slave";
+ menv[band_id].flags |= MF_CREATED_FRIENDLY;
menv[band_id].props["pikel_band"] = true;
}
}
@@ -2369,7 +2367,7 @@ static monster_type _band_member(band_type band, int power)
break;
case BAND_PIKEL:
- mon_type = MONS_HUMAN;
+ mon_type = MONS_SLAVE;
break;
default:
diff --git a/crawl-ref/source/mon-stuff.cc b/crawl-ref/source/mon-stuff.cc
index 86398d9d33..47c8e72c98 100644
--- a/crawl-ref/source/mon-stuff.cc
+++ b/crawl-ref/source/mon-stuff.cc
@@ -1161,18 +1161,17 @@ void pikel_band_neutralise ()
for (monster_iterator mi; mi; ++mi)
{
- if (mi->type == MONS_HUMAN
+ if (mi->type == MONS_SLAVE
&& testbits(mi->flags, MF_BAND_MEMBER)
&& mi->props.exists("pikel_band"))
{
if (mi->observable() && !message_made)
{
- mpr("Pikel's slaves thank you for their freedom.");
+ mpr("With Pikel's spell broken, the former slaves thank you for their freedom.");
message_made = true;
}
-
+ mi->flags |= MF_NAME_DESCRIPTOR | MF_NAME_REPLACE;
mi->mname = "freed slave";
- // viewwindow();
mons_pacify(*mi);
}
}