diff options
Diffstat (limited to 'crawl-ref')
-rw-r--r-- | crawl-ref/source/dat/descript/monsters.txt | 4 | ||||
-rw-r--r-- | crawl-ref/source/enum.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/mon-data.h | 16 | ||||
-rw-r--r-- | crawl-ref/source/mon-gear.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/mon-place.cc | 6 | ||||
-rw-r--r-- | crawl-ref/source/mon-stuff.cc | 7 |
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); } } |