From 5fccd300ac36d6689cb864ec3f128e49427f170f Mon Sep 17 00:00:00 2001 From: Darshan Shaligram Date: Tue, 29 Dec 2009 04:00:08 +0530 Subject: Merfolk gladiators join the Shoals party. --- crawl-ref/source/enum.h | 4 ++++ crawl-ref/source/mon-data.h | 15 ++++++++++++++- crawl-ref/source/mon-gear.cc | 41 +++++++++++++++++++++++++++++++++++++++++ crawl-ref/source/mon-pick.cc | 2 ++ 4 files changed, 61 insertions(+), 1 deletion(-) 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, @@ -1118,6 +1118,19 @@ static monsterentry mondata[] = { MONUSE_WEAPONS_ARMOUR, MONEAT_NOTHING, SIZE_MEDIUM }, +{ + 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, 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: -- cgit v1.2.3-54-g00ecf