summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJude Brown <bookofjude@users.sourceforge.net>2009-11-07 09:55:41 +1000
committerJude Brown <bookofjude@users.sourceforge.net>2009-11-07 10:00:48 +1000
commite47db99b5c0e09041d8747b8aad9ce04ae7313dd (patch)
treedb6001dda4b356c8d29fee2a28e8b88d7480a6a3
parentd7532db0cf293d48eb192279883df4c91f1a393b (diff)
downloadcrawl-ref-e47db99b5c0e09041d8747b8aad9ce04ae7313dd.tar.gz
crawl-ref-e47db99b5c0e09041d8747b8aad9ce04ae7313dd.zip
New unique: Aizul, disgraced guardian naga turned naga warrior.
Casts Venom Bolt, Blink Other, Ensorcelled Hibernation, Slow and heals himself. Comes with a ruby-red naga barding, a shield, and a chance of a very nice weapon. Can appear on Snake:4 and Snake:5, and also on similar dungeon levels to Margery and co. Backstory: the guardian of a horde of treasure who fell asleep on the job. Thieves raided the place, and he was disgraced and kicked out. Turned to the role of a warrior, seeking redemption through battle. Currently, there's something weird with the debug build at 'xv' for monster description not displaying the right information all the time.
-rw-r--r--crawl-ref/source/dat/database/monspeak.txt34
-rw-r--r--crawl-ref/source/dat/database/quotes.txt8
-rw-r--r--crawl-ref/source/dat/descript/monsters.txt4
-rw-r--r--crawl-ref/source/dungeon.cc8
-rw-r--r--crawl-ref/source/enum.h4
-rw-r--r--crawl-ref/source/makeitem.cc18
-rw-r--r--crawl-ref/source/mon-data.h12
-rw-r--r--crawl-ref/source/mon-spll.h11
-rw-r--r--crawl-ref/source/monster.cc3
9 files changed, 99 insertions, 3 deletions
diff --git a/crawl-ref/source/dat/database/monspeak.txt b/crawl-ref/source/dat/database/monspeak.txt
index be6c40cd1c..29040628a5 100644
--- a/crawl-ref/source/dat/database/monspeak.txt
+++ b/crawl-ref/source/dat/database/monspeak.txt
@@ -1045,6 +1045,40 @@ _player_ghost_rare_
# Unique monsters
#######################################
%%%%
+Aizul
+
+@_Aizul_common_@
+
+w:5
+
+@_Aizul_rare_@
+%%%%
+_Aizul_common_
+
+VISUAL:@The_monster@ yawns, and then pretends he didn't.
+
+@The_monster@ says, "Feeling sleepy?"
+
+@The_monster@ says, "I wasn't actually sleeping!"
+
+VISUAL:@The_monster@ grinds his teeth.
+
+@The_monster@ screams @at_foe@, "I'll haunt your nightmares!"
+%%%%
+_Aizul_rare_
+
+@The_monster@ says, "Sweet dreams!"
+
+@The_monster@ hums a lullaby.
+
+VISUAL:@The_monster@ stretches carefully.
+
+@The_monster@ says, "Everybody has to sleep sometimes."
+
+@The_monster@ says @to_foe@, "Fancy a snooze?"
+
+VISUAL:@The_monster@ winks several times @at_foe@.
+%%%%
############ AGNES ### She is trying to get money and treasure
Agnes
diff --git a/crawl-ref/source/dat/database/quotes.txt b/crawl-ref/source/dat/database/quotes.txt
index 0e700f14ea..92e37a8e0f 100644
--- a/crawl-ref/source/dat/database/quotes.txt
+++ b/crawl-ref/source/dat/database/quotes.txt
@@ -392,6 +392,14 @@ __cap-T_suffix
A laidly Trold has dragged it there."
-George Borrow, _Lavengro_
%%%%
+Aizul
+
+"I went to Heaven --
+ 'Twas a small Town --
+ Lit -- with a Ruby --
+ Lathed -- with Down --"
+ -Emily Dickinson, _I went to Heaven_
+%%%%
Antaeus
"That country was then ruled by Antaeus, son of Poseidon, who used to
diff --git a/crawl-ref/source/dat/descript/monsters.txt b/crawl-ref/source/dat/descript/monsters.txt
index ecbe93800c..d099061810 100644
--- a/crawl-ref/source/dat/descript/monsters.txt
+++ b/crawl-ref/source/dat/descript/monsters.txt
@@ -8,6 +8,10 @@ __(_suffix_examine
It has been enchanted to dance through the air and attack under its own
power.
%%%%
+Aizul
+
+Once the guardian of a legendary treasure hoard, he was disgraced after thieves looted it while he slept. Left without a purpose he now slithers aimlessly from place to place, seeking redemption on the field of battle.
+%%%%%
Agnes
A lanky warrior, she moves at a great pace and carries an exotic weapon.
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index d818a7f5ea..c9e3642688 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -3375,7 +3375,8 @@ static monster_type _choose_unique_by_depth(int step)
default:
ret = random_choose(MONS_FRANCIS, MONS_FRANCES, MONS_WAYNE, MONS_DUANE,
MONS_XTAHUA, MONS_NORRIS, MONS_FREDERICK, MONS_NIKOLA,
- MONS_MARGERY, MONS_BORIS, MONS_SAINT_ROKA, -1);
+ MONS_MARGERY, MONS_BORIS, MONS_SAINT_ROKA, MONS_AIZUL,
+ -1);
}
return static_cast<monster_type>(ret);
@@ -3400,6 +3401,11 @@ static monster_type _pick_unique(int lev)
else
return MONS_NO_MONSTER;
}
+ else if (player_in_branch(BRANCH_SNAKE_PIT))
+ {
+ if (player_branch_depth() > 3 && coinflip())
+ return MONS_AIZUL;
+ }
// First, pick generic unique depending on depth.
int which_unique =
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index 38249fff2c..4ea0c4fce5 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -2060,6 +2060,7 @@ enum monster_type // (int) menv[].type
// New set of monsters {november, 2009}
MONS_GOLDEN_EYE,
+ MONS_AIZUL,
// Testing monsters
MONS_TEST_SPAWNER,
@@ -2300,7 +2301,8 @@ enum mon_spellbook_type
MST_MAURICE,
MST_KHUFU,
MST_NIKOLA,
- MST_DISSOLUTION,
+ MST_DISSOLUTION, // 170
+ MST_AIZUL,
MST_TEST_SPAWNER = 200,
NUM_MSTYPES,
diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc
index 17b6e1a314..48b12b2c3f 100644
--- a/crawl-ref/source/makeitem.cc
+++ b/crawl-ref/source/makeitem.cc
@@ -3502,6 +3502,16 @@ static item_make_species_type _give_weapon(monsters *mon, int level,
do_curse_item(item);
break;
+ case MONS_AIZUL:
+ if (one_chance_in(3))
+ level = MAKE_GOOD_ITEM;
+
+ item_race = MAKE_ITEM_NO_RACE;
+ item.base_type = OBJ_WEAPONS;
+ item.sub_type = random_choose(WPN_HALBERD, WPN_SCIMITAR, WPN_GREAT_MACE,
+ WPN_LONG_SWORD, WPN_EVENINGSTAR, -1);
+ break;
+
case MONS_GNOLL:
case MONS_OGRE_MAGE:
case MONS_NAGA_WARRIOR:
@@ -4387,6 +4397,7 @@ void give_shield(monsters *mon, int level)
make_item_for_monster(mon, OBJ_ARMOUR, ARM_LARGE_SHIELD,
level * 2 + 1, MAKE_ITEM_RANDOM_RACE, 1);
break;
+ case MONS_AIZUL:
case MONS_DONALD:
make_item_for_monster(mon, OBJ_ARMOUR, ARM_SHIELD,
level * 2 + 1, MAKE_ITEM_RANDOM_RACE, 1);
@@ -4675,6 +4686,13 @@ void give_armour(monsters *mon, int level)
force_colour = LIGHTCYAN;
break;
+ case MONS_AIZUL:
+ item_race = MAKE_ITEM_NO_RACE;
+ item.base_type = OBJ_ARMOUR;
+ item.sub_type = ARM_NAGA_BARDING;
+ force_colour = RED;
+ break;
+
default:
return;
}
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h
index 206d420934..80983c2fb2 100644
--- a/crawl-ref/source/mon-data.h
+++ b/crawl-ref/source/mon-data.h
@@ -4267,6 +4267,18 @@ static monsterentry mondata[] = {
HT_LAND, FL_NONE, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, MONEAT_NOTHING, SIZE_MEDIUM
},
+{
+ MONS_AIZUL, 'N', LIGHTMAGENTA, "Aizul",
+ M_FIGHTER | M_SPELLCASTER | M_SEE_INVIS | M_WARM_BLOOD | M_SPEAKS
+ | M_ACTUAL_SPELLS | M_UNIQUE,
+ MR_RES_POISON,
+ 750, 10, MONS_NAGA, MONS_GUARDIAN_NAGA, MH_NATURAL, -6,
+ { {AT_HIT, AF_PLAIN, 28}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
+ { 14, 0, 0, 142 },
+ 6, 16, MST_AIZUL, CE_MUTAGEN_RANDOM, Z_NOZOMBIE, S_SHOUT, I_HIGH,
+ HT_LAND, FL_NONE, 15, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, MONEAT_NOTHING, SIZE_LARGE
+},
+
// human uniques ('@')
{
MONS_TERENCE, '@', LIGHTCYAN, "Terence",
diff --git a/crawl-ref/source/mon-spll.h b/crawl-ref/source/mon-spll.h
index 4c0befd8d3..7971b99276 100644
--- a/crawl-ref/source/mon-spll.h
+++ b/crawl-ref/source/mon-spll.h
@@ -1264,6 +1264,17 @@
}
},
+ { MST_AIZUL,
+ {
+ SPELL_VENOM_BOLT,
+ SPELL_BLINK_OTHER,
+ SPELL_SLEEP,
+ SPELL_VENOM_BOLT,
+ SPELL_SLOW,
+ SPELL_MINOR_HEALING
+ }
+ },
+
{ MST_TEST_SPAWNER,
{
SPELL_SHADOW_CREATURES,
diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc
index e3d6ac58bd..f886e0699a 100644
--- a/crawl-ref/source/monster.cc
+++ b/crawl-ref/source/monster.cc
@@ -1478,7 +1478,8 @@ bool monsters::pickup_armour(item_def &item, int near, bool force)
switch (item.sub_type)
{
case ARM_NAGA_BARDING:
- if (::mons_species(this->type) == MONS_NAGA)
+ if (::mons_species(this->type) == MONS_NAGA
+ || ::mons_species(this->type) == MONS_GUARDIAN_NAGA)
eq = EQ_BODY_ARMOUR;
break;
case ARM_CENTAUR_BARDING: