diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-03-25 09:46:42 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-03-25 09:46:42 +0000 |
commit | c500c6b3582877a10bd362722bde81eb9b94b917 (patch) | |
tree | bffbb6ae5e21e067a7c985837901d8c1969e9aee /crawl-ref | |
parent | ec685f4e71424403b322d3971ac68b31821fe7e1 (diff) | |
download | crawl-ref-c500c6b3582877a10bd362722bde81eb9b94b917.tar.gz crawl-ref-c500c6b3582877a10bd362722bde81eb9b94b917.zip |
Added Tiamat, a unique colourshifting draconian with a large
escort. Yes, I know she's a dragon in the source mythos.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1094 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r-- | crawl-ref/source/describe.cc | 7 | ||||
-rw-r--r-- | crawl-ref/source/dungeon.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/enum.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/mon-data.h | 10 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 20 | ||||
-rw-r--r-- | crawl-ref/source/monplace.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 29 |
7 files changed, 65 insertions, 12 deletions
diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index 49805de255..da5e0ee85f 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -4540,7 +4540,7 @@ static std::string describe_draconian_colour(int species) static std::string describe_draconian(const monsters *mon) { - std::string description; + std::string description; const int subsp = draco_subspecies( mon ); if (subsp == MONS_DRACONIAN) @@ -5956,6 +5956,11 @@ void describe_monsters(int class_described, unsigned char which_mons) "A small and slimy eel, crackling with electrical discharge."; break; + case MONS_TIAMAT: + description += "A powerful draconian. Her scales seem to shimmer " + "and change colour as you watch."; + break; + case MONS_DRACONIAN: case MONS_RED_DRACONIAN: case MONS_WHITE_DRACONIAN: diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc index fe4034931d..5a1300406f 100644 --- a/crawl-ref/source/dungeon.cc +++ b/crawl-ref/source/dungeon.cc @@ -3041,6 +3041,7 @@ static int give_weapon(monsters *mon, int level) case MONS_BLACK_DRACONIAN: case MONS_YELLOW_DRACONIAN: case MONS_PURPLE_DRACONIAN: + case MONS_TIAMAT: { item.base_type = OBJ_WEAPONS; @@ -3579,6 +3580,7 @@ void give_armour(monsters *mon, int level) case MONS_DRACONIAN_MONK: case MONS_DRACONIAN_ZEALOT: case MONS_DRACONIAN_KNIGHT: + case MONS_TIAMAT: case MONS_ORC_WIZARD: case MONS_WIZARD: case MONS_BLORK_THE_ORC: @@ -4739,6 +4741,9 @@ static int pick_unique(int lev) { which_unique = MONS_MURRAY; } + + if (player_in_branch(BRANCH_HALL_OF_ZOT) && one_chance_in(3)) + which_unique = MONS_TIAMAT; return (which_unique); } diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index 3ebb6c03fc..f574919992 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -2145,6 +2145,7 @@ enum monster_type // (int) menv[].type MONS_DRACONIAN_SCORCHER, MONS_MURRAY, + MONS_TIAMAT, // The Lords of Hell: MONS_GERYON = 340, // 340 diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h index c4cfbb822c..9fc3ea4c96 100644 --- a/crawl-ref/source/mon-data.h +++ b/crawl-ref/source/mon-data.h @@ -4402,5 +4402,15 @@ MONUSE_NOTHING, SIZE_TINY } , +{ + MONS_TIAMAT, 'd', MAGENTA, "Tiamat", + M_HUMANOID | M_SEE_INVIS | M_EVIL | M_UNIQUE, + MR_NO_FLAGS, + 0, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, -5, + { {AT_HIT, AF_PLAIN, 20}, {AT_HIT, AF_PLAIN, 5}, {AT_HIT, AF_PLAIN, 5} }, + { 22, 0, 0, 200 }, + 8, 10, 10, 10, MST_NO_SPELLS, CE_NOCORPSE, Z_SMALL, S_ROAR, I_HIGH, + MONUSE_STARTING_EQUIPMENT, SIZE_MEDIUM +}, #endif diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 0ef81ef438..d7a3e922b0 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -476,6 +476,25 @@ monster_type draco_subspecies( const monsters *mon ) { ASSERT( mons_genus( mon->type ) == MONS_DRACONIAN ); + if ( mon->type == MONS_TIAMAT ) + { + switch ( mon->colour ) + { + case RED: + return MONS_RED_DRACONIAN; + case WHITE: + return MONS_WHITE_DRACONIAN; + case DARKGREY: // black + return MONS_BLACK_DRACONIAN; + case GREEN: + return MONS_GREEN_DRACONIAN; + case MAGENTA: + return MONS_PURPLE_DRACONIAN; + default: + break; + } + } + monster_type ret = mons_species( mon->type ); if (ret == MONS_DRACONIAN && mon->type != MONS_DRACONIAN) @@ -2250,6 +2269,7 @@ const char *mons_pronoun(int mon_type, int variant) case MONS_MARGERY: case MONS_EROLCHA: case MONS_ERICA: + case MONS_TIAMAT: gender = GENDER_FEMALE; break; default: diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc index 4ffaf59650..66ac729387 100644 --- a/crawl-ref/source/monplace.cc +++ b/crawl-ref/source/monplace.cc @@ -874,6 +874,11 @@ static int choose_band( int mon_type, int power, int &band_size ) band_size = random_range(3, 6); } break; + case MONS_TIAMAT: + band = BAND_DRACONIAN; + // yup, scary + band_size = random_range(3,6) + random_range(3,6) + 2; + break; } // end switch if (band != BAND_NO_BAND && band_size == 0) diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 53c015fef6..22374c4f0c 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -2758,19 +2758,19 @@ static int get_draconian_breath_spell( struct monsters *monster ) default: break; } + } - if (draco_breath != MS_NO_SPELL) - { - // [ds] Check line-of-fire here. It won't happen elsewhere. - bolt beem; - setup_mons_cast(monster, beem, draco_breath); - - fire_tracer(monster, beem); - - if (!mons_should_fire(beem)) - draco_breath = MS_NO_SPELL; - } + if (draco_breath != MS_NO_SPELL) + { + // [ds] Check line-of-fire here. It won't happen elsewhere. + bolt beem; + setup_mons_cast(monster, beem, draco_breath); + + fire_tracer(monster, beem); + + if (!mons_should_fire(beem)) + draco_breath = MS_NO_SPELL; } return (draco_breath); @@ -3391,6 +3391,13 @@ static void handle_monster_move(int i, monsters *monster) } } + if (monster->type == MONS_TIAMAT && one_chance_in(3) ) + { + int cols[] = { RED, WHITE, DARKGREY, GREEN, MAGENTA }; + int newcol = cols[random2(sizeof(cols) / sizeof(cols[0]))]; + monster->colour = newcol; + } + if (handle_enchantment(monster)) continue; |