diff options
author | Steve Melenchuk <smelenchuk@gmail.com> | 2014-01-30 23:05:46 -0700 |
---|---|---|
committer | Steve Melenchuk <smelenchuk@gmail.com> | 2014-02-03 10:14:54 -0700 |
commit | c38a8f9b011df56edcb22021fdd05f7badba1c87 (patch) | |
tree | 7e4d8deff2dac38f775c9554633476254fa3e7ba /crawl-ref/source | |
parent | 0d6a4c4d1c46134dfc4e5910cf4404a7904b9e4a (diff) | |
download | crawl-ref-c38a8f9b011df56edcb22021fdd05f7badba1c87.tar.gz crawl-ref-c38a8f9b011df56edcb22021fdd05f7badba1c87.zip |
Unique: Vashnia, leader of the elite marksnaga squad.
An HD 16 naga sharpshooter who also comes with various Blink spells,
inherent Phase Shift, and a Shroud of Golubria that she can renew if it
gets broken.
Appears on Snake:2-.
Historical note: Vashnia's original design had Disjunction as an escape
spell; currently the escape spell is Blink Other, which accomplishes
basically the same thing but with less visual impressiveness. Perhaps at
a later date the possibility of this can be revisited.
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/dat/database/monspeak.txt | 58 | ||||
-rw-r--r-- | crawl-ref/source/dat/des/builder/uniques.des | 5 | ||||
-rw-r--r-- | crawl-ref/source/dat/descript/monsters.txt | 5 | ||||
-rw-r--r-- | crawl-ref/source/enum.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/mgen_enum.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/mon-data.h | 15 | ||||
-rw-r--r-- | crawl-ref/source/mon-gear.cc | 24 | ||||
-rw-r--r-- | crawl-ref/source/mon-place.cc | 8 | ||||
-rw-r--r-- | crawl-ref/source/mon-spll.h | 11 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/dc-mon.txt | 1 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/mon/unique/vashnia.png | bin | 0 -> 527 bytes | |||
-rw-r--r-- | crawl-ref/source/tilemcache.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/tilepick.cc | 4 |
14 files changed, 133 insertions, 4 deletions
diff --git a/crawl-ref/source/dat/database/monspeak.txt b/crawl-ref/source/dat/database/monspeak.txt index 85766c9e1c..6cdca9ab58 100644 --- a/crawl-ref/source/dat/database/monspeak.txt +++ b/crawl-ref/source/dat/database/monspeak.txt @@ -6174,6 +6174,64 @@ VISUAL:@The_monster@ winks @at_foe@... or blinks. @The_monster@ mutters, "Sometimes I wonder if they all really are harpies." ## END Urug ## %%%% +############ VASHNIA ### An elite marksnaga +Vashnia + +@_Vashnia_common_@ + +w:5 +@_Vashnia_rare_@ + +w:5 +@_Vashnia_nonnaga_@ +%%%% + +related Vashnia + +@_Vashnia_common_@ + +w:5 +@_Vashnia_rare_@ + +w:5 +@_Vashnia_naga_@ +%%%% +_Vashnia_common_ + +VISUAL:@The_monster@ makes some cryptic hand gestures, then points @at_foe@. + +VISUAL:@The_monster@ takes aim @at_foe@. + +VISUAL:Space seems to twist oddly around @the_monster@. + +VISUAL:@The_monster@ looks @foe@ over, as though planning @possessive@ next attack. + +VISUAL:@The_monster@ glares at @possessive@ squad, motioning for silence. +%%%% +_Vashnia_rare_ +@The_monster@ mutters @at_foe@, "Right between the eyes..." + +@The_monster@ says @to_foe@, "You'll make a fine pincushion." + +@The_monster@ says @to_foe@, "Hold still for a moment. You're making this shot difficult." +%%%% +_Vashnia_naga_ + +@The_monster@ says @to_foe@, "You are a traitor to our kind!" + +@The_monster@ sneers @at_foe@, "Heretic!" + +@The_monster@ says @to_foe@, "Swear allegiance to our queen and you may yet be spared!" +%%%% +_Vashnia_nonnaga_ + +@The_monster@ says @to_foe@, "Slay the @foe_genus@ at once!" @player_only@ + +@The_monster@ says @to_foe@, "We do not look kindly on intruders!" + +@The_monster@ says to @possessive@ squad, "Do not let the @foe_genus@ escape!" +## END Vashnia ## +%%%% ############ WIGLAF ### A dwarf. Nuff said. Wiglaf diff --git a/crawl-ref/source/dat/des/builder/uniques.des b/crawl-ref/source/dat/des/builder/uniques.des index 94749daf12..e4b3b8379c 100644 --- a/crawl-ref/source/dat/des/builder/uniques.des +++ b/crawl-ref/source/dat/des/builder/uniques.des @@ -335,6 +335,11 @@ DEPTH: Slime:2- WEIGHT: 100 : place_unique(_G, "Dissolution") +NAME: uniq_vashnia +DEPTH: Snake:2- +WEIGHT: 50 +: place_unique(_G, "Vashnia band") + NAME: uniq_polyphemus DEPTH: Shoals:2- WEIGHT: 50 diff --git a/crawl-ref/source/dat/descript/monsters.txt b/crawl-ref/source/dat/descript/monsters.txt index 031b0fde47..bb0d04f3be 100644 --- a/crawl-ref/source/dat/descript/monsters.txt +++ b/crawl-ref/source/dat/descript/monsters.txt @@ -500,6 +500,11 @@ remaining eye is not very good, and he has mistaken you for one. end }} %%%% +Vashnia + +An elite marksnaga who leads a skilled team of sharpshooters. She is +particularly skilled in translocation magic. +%%%% Wiglaf A fat dwarf wearing a stupid-looking hat. {{ diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index d559cdaa74..184cb7674c 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -2766,6 +2766,7 @@ enum monster_type // menv[].type #if TAG_MAJOR_VERSION > 34 MONS_ASTERION, MONS_NATASHA, + MONS_VASHNIA, #endif MONS_IRON_ELEMENTAL, @@ -2929,6 +2930,7 @@ enum monster_type // menv[].type #if TAG_MAJOR_VERSION == 34 MONS_ASTERION, MONS_NATASHA, + MONS_VASHNIA, #endif NUM_MONSTERS, // used for polymorph diff --git a/crawl-ref/source/mgen_enum.h b/crawl-ref/source/mgen_enum.h index 233f6c0801..93e090abcb 100644 --- a/crawl-ref/source/mgen_enum.h +++ b/crawl-ref/source/mgen_enum.h @@ -117,6 +117,7 @@ enum band_type BAND_WARMONGER, BAND_CORRUPTER, BAND_BLACK_SUN, + BAND_VASHNIA, NUM_BANDS // always last }; diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h index ec534cee10..6efabe2905 100644 --- a/crawl-ref/source/mon-data.h +++ b/crawl-ref/source/mon-data.h @@ -6683,6 +6683,21 @@ static monsterentry mondata[] = MONUSE_WEAPONS_ARMOUR, MONEAT_NOTHING, SIZE_MEDIUM }, +// "N"agas. +{ + MONS_VASHNIA, 'N', LIGHTCYAN, "Vashnia", + M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS | M_WARM_BLOOD + | M_ARCHER | M_PHASE_SHIFT | M_SPEAKS | M_SHROUD | M_UNIQUE, + MR_RES_POISON, + 1000, 14, MONS_NAGA, MONS_NAGA, MH_NATURAL, -6, + { {AT_SHOOT, AF_PLAIN, 25}, {AT_HIT, AF_PLAIN, 25}, + {AT_CONSTRICT, AF_CRUSH, 7}, AT_NO_ATK }, + { 16, 0, 0, 160 }, + 6, 18, MST_VASHNIA, CE_POISONOUS, Z_NOZOMBIE, S_SHOUT, + I_NORMAL, HT_LAND, FL_NONE, 8, ACTION_ENERGY(8), + MONUSE_WEAPONS_ARMOUR, MONEAT_NOTHING, SIZE_LARGE +}, + // "O"gres. { MONS_EROLCHA, 'O', LIGHTBLUE, "Erolcha", diff --git a/crawl-ref/source/mon-gear.cc b/crawl-ref/source/mon-gear.cc index 80d10259df..cf9c58e831 100644 --- a/crawl-ref/source/mon-gear.cc +++ b/crawl-ref/source/mon-gear.cc @@ -615,15 +615,24 @@ static item_make_species_type _give_weapon(monster* mon, int level, -1); break; + case MONS_VASHNIA: + level = MAKE_GOOD_ITEM; + // deliberate fall-through + case MONS_NAGA_SHARPSHOOTER: force_uncursed = true; if (!melee_only) { item.base_type = OBJ_WEAPONS; - item.sub_type = random_choose_weighted(3, WPN_CROSSBOW, - 2, WPN_BOW, - 1, WPN_LONGBOW, - 0); + if (type == MONS_VASHNIA) + item.sub_type = coinflip() ? WPN_LONGBOW : WPN_CROSSBOW; + else + { + item.sub_type = random_choose_weighted(3, WPN_CROSSBOW, + 2, WPN_BOW, + 1, WPN_LONGBOW, + 0); + } break; } // deliberate fall-through @@ -2452,6 +2461,13 @@ static void _give_armour(monster* mon, int level, bool spectral_orcs) return; break; + case MONS_VASHNIA: + item_race = MAKE_ITEM_NO_RACE; + item.base_type = OBJ_ARMOUR; + item.sub_type = ARM_NAGA_BARDING; + level = MAKE_GOOD_ITEM; + break; + case MONS_TENGU_WARRIOR: case MONS_DEMONSPAWN: item_race = MAKE_ITEM_NO_RACE; diff --git a/crawl-ref/source/mon-place.cc b/crawl-ref/source/mon-place.cc index d410dc47ff..e1c5d382a6 100644 --- a/crawl-ref/source/mon-place.cc +++ b/crawl-ref/source/mon-place.cc @@ -2788,6 +2788,11 @@ static band_type _choose_band(monster_type mon_type, int &band_size, band_size = 2 + random2(3); break; + case MONS_VASHNIA: + band = BAND_VASHNIA; + band_size = 3 + random2(3); + break; + default: ; } @@ -3344,6 +3349,9 @@ static monster_type _band_member(band_type band, int which) } return random_demonspawn_monster_species(); + case BAND_VASHNIA: + return MONS_NAGA_SHARPSHOOTER; + default: die("unhandled band type %d", band); } diff --git a/crawl-ref/source/mon-spll.h b/crawl-ref/source/mon-spll.h index 3c99509c64..207420aeb1 100644 --- a/crawl-ref/source/mon-spll.h +++ b/crawl-ref/source/mon-spll.h @@ -2464,4 +2464,15 @@ SPELL_NO_SPELL } }, + + { MST_VASHNIA, + { + SPELL_PORTAL_PROJECTILE, + SPELL_BLINK_ALLIES_AWAY, + SPELL_BLINK_AWAY, + SPELL_PORTAL_PROJECTILE, + SPELL_BLINK_ALLIES_AWAY, + SPELL_BLINK_OTHER + } + }, #endif diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 3e5ff8d782..f76302aadf 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -3657,6 +3657,7 @@ static gender_type _mons_class_gender(monster_type mc) case MONS_NELLIE: case MONS_ARACHNE: case MONS_NATASHA: + case MONS_VASHNIA: gender = GENDER_FEMALE; break; case MONS_ROYAL_JELLY: diff --git a/crawl-ref/source/rltiles/dc-mon.txt b/crawl-ref/source/rltiles/dc-mon.txt index 7fe1c813c1..c4fc10352d 100644 --- a/crawl-ref/source/rltiles/dc-mon.txt +++ b/crawl-ref/source/rltiles/dc-mon.txt @@ -721,6 +721,7 @@ mummy_priest MONS_MUMMY_PRIEST ## Nagas ('N') %sdir mon/unique aizul MONS_AIZUL +vashnia MONS_VASHNIA %sdir mon naga MONS_NAGA naga_mage MONS_NAGA_MAGE diff --git a/crawl-ref/source/rltiles/mon/unique/vashnia.png b/crawl-ref/source/rltiles/mon/unique/vashnia.png Binary files differnew file mode 100644 index 0000000000..a8d0711a3f --- /dev/null +++ b/crawl-ref/source/rltiles/mon/unique/vashnia.png diff --git a/crawl-ref/source/tilemcache.cc b/crawl-ref/source/tilemcache.cc index f719af4af7..323e8b3913 100644 --- a/crawl-ref/source/tilemcache.cc +++ b/crawl-ref/source/tilemcache.cc @@ -407,6 +407,7 @@ bool mcache_monster::get_weapon_offset(tileidx_t mon_tile, case TILEP_MONS_NAGA_MAGE: case TILEP_MONS_NAGA_ENCHANTER: case TILEP_MONS_MARKSNAGA: + case TILEP_MONS_VASHNIA: case TILEP_MONS_THE_ENCHANTRESS: case TILEP_MONS_DEEP_DWARF: case TILEP_MONS_DEEP_DWARF_BERSERKER: @@ -621,6 +622,7 @@ bool mcache_monster::get_shield_offset(tileidx_t mon_tile, case TILEP_MONS_NAGA: case TILEP_MONS_NAGA_MAGE: case TILEP_MONS_MARKSNAGA: + case TILEP_MONS_VASHNIA: case TILEP_MONS_NAGA_WARRIOR: case TILEP_MONS_GREATER_NAGA: *ofs_x = -3; diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc index 5aded5c837..d6ee0594e5 100644 --- a/crawl-ref/source/tilepick.cc +++ b/crawl-ref/source/tilepick.cc @@ -2194,6 +2194,10 @@ static tileidx_t _tileidx_monster_base(int type, bool in_water, int colour, case MONS_AIZUL: return TILEP_MONS_AIZUL; + // naga ('N') + case MONS_VASHNIA: + return TILEP_MONS_VASHNIA; + // ogre ('O') case MONS_EROLCHA: return TILEP_MONS_EROLCHA; |