summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarshan Shaligram <dshaligram@users.sourceforge.net>2009-12-29 04:00:08 +0530
committerDarshan Shaligram <dshaligram@users.sourceforge.net>2009-12-29 04:00:08 +0530
commit5fccd300ac36d6689cb864ec3f128e49427f170f (patch)
tree2b5de4d4dd9a12f9602c26c877c3db21e7b6ecef
parent6af92e2651be67206e4f153f73adeaa1e16f0b40 (diff)
downloadcrawl-ref-5fccd300ac36d6689cb864ec3f128e49427f170f.tar.gz
crawl-ref-5fccd300ac36d6689cb864ec3f128e49427f170f.zip
Merfolk gladiators join the Shoals party.
-rw-r--r--crawl-ref/source/enum.h4
-rw-r--r--crawl-ref/source/mon-data.h15
-rw-r--r--crawl-ref/source/mon-gear.cc41
-rw-r--r--crawl-ref/source/mon-pick.cc2
4 files changed, 61 insertions, 1 deletions
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index 48bcb16db5..9bc022522f 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -1818,6 +1818,10 @@ enum monster_type // (int) menv[].type
MONS_TOADSTOOL,
MONS_BUSH,
MONS_BALLISTOMYCETE, // 200
+
+ // Shoals guardians
+ MONS_MERFOLK_GLADIATOR,
+
//jmf: end new monsters
MONS_WHITE_IMP = 220, // 220
MONS_LEMURE,
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h
index ad3414acae..efbb63d0b0 100644
--- a/crawl-ref/source/mon-data.h
+++ b/crawl-ref/source/mon-data.h
@@ -1107,7 +1107,7 @@ static monsterentry mondata[] = {
// merfolk ('m')
{
- MONS_MERFOLK, 'm', LIGHTBLUE, "merfolk",
+ MONS_MERFOLK, 'm', BLUE, "merfolk",
M_WARM_BLOOD | M_SPEAKS,
MR_NO_FLAGS,
500, 10, MONS_MERFOLK, MONS_MERFOLK, MH_NATURAL, -3,
@@ -1119,6 +1119,19 @@ static monsterentry mondata[] = {
},
{
+ MONS_MERFOLK_GLADIATOR, 'm', LIGHTBLUE, "merfolk gladiator",
+ M_WARM_BLOOD,
+ MR_NO_FLAGS,
+ 500, 10, MONS_MERFOLK, MONS_MERFOLK, MH_NATURAL, -3,
+ { {AT_HIT, AF_PLAIN, 35}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
+ { 14, 5, 3, 0 },
+ // Gladiators prefer light armour, and are dodging experts.
+ 0, 16, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_SHOUT,
+ I_NORMAL, HT_AMPHIBIOUS_WATER, FL_NONE, 10, ATTACK_ENERGY(6),
+ MONUSE_WEAPONS_ARMOUR, MONEAT_NOTHING, SIZE_MEDIUM
+},
+
+{
MONS_MERMAID, 'm', CYAN, "mermaid",
M_SPELLCASTER | M_WARM_BLOOD | M_SPEAKS,
MR_NO_FLAGS,
diff --git a/crawl-ref/source/mon-gear.cc b/crawl-ref/source/mon-gear.cc
index 01edc35951..9f284736d2 100644
--- a/crawl-ref/source/mon-gear.cc
+++ b/crawl-ref/source/mon-gear.cc
@@ -582,6 +582,27 @@ static item_make_species_type _give_weapon(monsters *mon, int level,
}
break;
+ case MONS_MERFOLK_GLADIATOR:
+ item_race = MAKE_ITEM_NO_RACE;
+ item.base_type = OBJ_WEAPONS;
+ // Weapon types are not strictly sorted by quality. This is intentional.
+ item.sub_type = random_choose_weighted(100, WPN_TRIDENT,
+ 45, WPN_BARDICHE,
+ 15, WPN_DEMON_TRIDENT,
+ 15, WPN_HALBERD,
+ 0);
+ if (coinflip())
+ level = MAKE_GOOD_ITEM;
+ else if (coinflip())
+ {
+ // Per dpeg request :)
+ item.special = SPWPN_REACHING;
+ item.plus = random_range(-1, 6, 2);
+ item.plus2 = random_range(-1, 5, 2);
+ force_item = true;
+ }
+ break;
+
case MONS_MERFOLK:
if (one_chance_in(3))
{
@@ -1028,6 +1049,16 @@ static void _give_ammo(monsters *mon, int level,
qty = random_range(4, 7);
break;
+ case MONS_MERFOLK_GLADIATOR:
+ // Gladiators rarely get javelins.
+ if (one_chance_in(4))
+ {
+ weap_class = OBJ_MISSILES;
+ weap_type = MI_JAVELIN;
+ qty = random_range(3, 8, 2);
+ }
+ break;
+
case MONS_MERFOLK:
if (!one_chance_in(3))
{
@@ -1342,6 +1373,16 @@ void give_armour(monsters *mon, int level)
break;
}
+ case MONS_MERFOLK_GLADIATOR:
+ item_race = MAKE_ITEM_NO_RACE;
+ item.base_type = OBJ_ARMOUR;
+ item.sub_type = random_choose_weighted(100, ARM_ROBE,
+ 60, ARM_LEATHER_ARMOUR,
+ 5, ARM_TROLL_LEATHER_ARMOUR,
+ 5, ARM_STEAM_DRAGON_ARMOUR,
+ 0);
+ break;
+
case MONS_ANGEL:
case MONS_SIGMUND:
case MONS_WIGHT:
diff --git a/crawl-ref/source/mon-pick.cc b/crawl-ref/source/mon-pick.cc
index 84d540d8c8..e1a429c91b 100644
--- a/crawl-ref/source/mon-pick.cc
+++ b/crawl-ref/source/mon-pick.cc
@@ -1721,6 +1721,7 @@ int mons_shoals_level(int mcls)
case MONS_CYCLOPS: // will have a sheep band
case MONS_SIREN:
case MONS_HARPY:
+ case MONS_MERFOLK_GLADIATOR:
mlev += 3;
break;
@@ -1754,6 +1755,7 @@ int mons_shoals_rare(int mcls)
return 50;
case MONS_MERMAID:
+ case MONS_MERFOLK_GLADIATOR:
return 40;
case MONS_HIPPOGRIFF: