diff options
-rw-r--r-- | crawl-ref/source/monstuff.cc | 7 | ||||
-rw-r--r-- | crawl-ref/source/spells2.cc | 10 |
2 files changed, 13 insertions, 4 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 8f244f3766..3073e5d492 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -1004,10 +1004,13 @@ void monster_die(monsters *monster, killer_type killer, int i, bool silent) && mons_holiness(monster) == MH_NATURAL && mons_weight(mons_species(monster->type))) { - if (create_monster( + const monster_type spectre = mons_species(monster->type); + // Don't allow 0-headed hydras to become spectral hydras. + if ((spectre != MONS_HYDRA || monster->number) + && create_monster( mgen_data( MONS_SPECTRAL_THING, BEH_FRIENDLY, 0, monster->pos(), you.pet_target, - 0, mons_species(monster->type), + 0, spectre, monster->number )) != -1) { if (death_message) diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc index 3044c39009..45e91764a3 100644 --- a/crawl-ref/source/spells2.cc +++ b/crawl-ref/source/spells2.cc @@ -460,12 +460,18 @@ static int raise_corpse( int corps, int corx, int cory, ? mitm[corps].props[MONSTER_NUMBER].get_short() : 0; + const monster_type zombie_type = + static_cast<monster_type>(mitm[corps].plus); + + // Headless hydras cannot be raised, sorry. + if (!number && zombie_type == MONS_HYDRA) + return (0); + create_monster( mgen_data( type, corps_beh, 0, coord_def(corx, cory), corps_hit, - 0, static_cast<monster_type>(mitm[corps].plus), - number)); + 0, zombie_type, number)); destroy_item(corps); } |