diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-09-26 04:42:02 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-09-26 04:42:02 +0000 |
commit | 6a4ba1f08f5c5e0c33cf3b62b28028f94f49a73f (patch) | |
tree | 68df8d5b8b01afa28dc00708d032a78250f6a4e4 | |
parent | 420aea8e0053218db36ff76f030e85fbe3841029 (diff) | |
download | crawl-ref-6a4ba1f08f5c5e0c33cf3b62b28028f94f49a73f.tar.gz crawl-ref-6a4ba1f08f5c5e0c33cf3b62b28028f94f49a73f.zip |
Simplify checking for monsters that are actually shapeshifters, and
don't allow those in orc form to become Beoghites' followers.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7006 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r-- | crawl-ref/source/Kills.cc | 3 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 7 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 13 | ||||
-rw-r--r-- | crawl-ref/source/view.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/xom.cc | 8 |
6 files changed, 17 insertions, 16 deletions
diff --git a/crawl-ref/source/Kills.cc b/crawl-ref/source/Kills.cc index 64b175fb4a..27d26c867d 100644 --- a/crawl-ref/source/Kills.cc +++ b/crawl-ref/source/Kills.cc @@ -613,8 +613,7 @@ kill_monster_desc::kill_monster_desc(const monsters *mon) if (modifier != M_NORMAL) monnum = mon->base_monster; - if (mon->has_ench(ENCH_SHAPESHIFTER) || - mon->has_ench(ENCH_GLOWING_SHAPESHIFTER)) + if (mons_is_shapeshifter(mon)) modifier = M_SHAPESHIFTER; // XXX: Ugly hack - merge all mimics into one mimic record. diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 9d746d852d..b4dea05b05 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -479,7 +479,7 @@ bool mons_is_native_in_branch(const monsters *monster, bool mons_is_chaotic(const monsters *mon) { - if (mon->has_ench(ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER)) + if (mons_is_shapeshifter(mon)) return (true); if (mon->has_spell(SPELL_POLYMORPH_OTHER)) @@ -2093,6 +2093,11 @@ bool mons_is_summoned(const monsters *m) return (m->has_ench(ENCH_ABJ)); } +bool mons_is_shapeshifter(const monsters *m) +{ + return (m->has_ench(ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER)); +} + // Does not check whether the monster can dual-wield - that is the // caller's responsibility. int mons_offhand_weapon_index(const monsters *m) diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h index 1d3e7e6118..f0ccd48226 100644 --- a/crawl-ref/source/mon-util.h +++ b/crawl-ref/source/mon-util.h @@ -534,6 +534,7 @@ bool mons_wields_two_weapons(const monsters *m); bool mons_wields_two_weapons(monster_type m); bool mons_self_destructs(const monsters *m); bool mons_is_summoned(const monsters *m); +bool mons_is_shapeshifter(const monsters *m); // last updated 12may2000 {dlb} /* *********************************************************************** diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 84e1c9f75a..a91c82bb20 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -1602,7 +1602,7 @@ bool monster_polymorph(monsters *monster, monster_type targetc, // Messaging. bool can_see = you.can_see(monster); - if (monster->has_ench(ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER)) + if (mons_is_shapeshifter(monster)) str_polymon = " changes into "; else if (targetc == MONS_PULSATING_LUMP) str_polymon = " degenerates into "; @@ -4907,12 +4907,12 @@ static bool _handle_spell(monsters *monster, bolt &beem) return (false); } + // Shapeshifters don't get spells. if ((mons_class_flag(monster->type, M_ACTUAL_SPELLS) || mons_class_flag(monster->type, M_PRIEST)) - && monster->has_ench(ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER)) + && mons_is_shapeshifter(monster)) { - return (false); //jmf: shapeshifters don't get spells, just - // physical powers. + return (false); } else if (monster->has_ench(ENCH_CONFUSION) && !mons_class_flag(monster->type, M_CONFUSED)) @@ -5381,9 +5381,8 @@ static bool _handle_throw(monsters *monster, bolt & beem) static bool _handle_monster_spell(monsters *monster, bolt &beem) { // Shapeshifters don't get spells. - if (!monster->has_ench( ENCH_GLOWING_SHAPESHIFTER, - ENCH_SHAPESHIFTER ) - || !mons_class_flag( monster->type, M_ACTUAL_SPELLS )) + if (!mons_is_shapeshifter(monster) + || !mons_class_flag(monster->type, M_ACTUAL_SPELLS)) { if (_handle_spell(monster, beem)) return (true); diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc index ba78faa667..97d6bc500d 100644 --- a/crawl-ref/source/view.cc +++ b/crawl-ref/source/view.cc @@ -826,6 +826,7 @@ void beogh_follower_convert(monsters *monster, bool orc_hit) && monster->foe == MHITYOU && mons_species(monster->type) == MONS_ORC && !mons_is_summoned(monster) + && !mons_is_shapeshifter(monster) && !testbits(monster->flags, MF_ATT_CHANGE_ATTEMPT) && !mons_friendly(monster) && mons_player_visible(monster) && !mons_is_sleeping(monster) diff --git a/crawl-ref/source/xom.cc b/crawl-ref/source/xom.cc index c91c8f9554..052b7d2f20 100644 --- a/crawl-ref/source/xom.cc +++ b/crawl-ref/source/xom.cc @@ -602,9 +602,7 @@ static bool _xom_is_good(int sever) monster_polymorph(mon, RANDOM_MONSTER, mons_wont_attack(mon) ? PPT_MORE : PPT_LESS, true); - if (one_chance_in(8) - && !mon->has_ench( - ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER)) + if (one_chance_in(8) && !mons_is_shapeshifter(mon)) { mon->add_ench(one_chance_in(3) ? ENCH_GLOWING_SHAPESHIFTER : ENCH_SHAPESHIFTER); @@ -809,9 +807,7 @@ static bool _xom_is_bad(int sever) monster_polymorph(mon, RANDOM_MONSTER, mons_wont_attack(mon) ? PPT_LESS : PPT_MORE, true); - if (one_chance_in(8) - && !mon->has_ench( - ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER)) + if (one_chance_in(8) && !mons_is_shapeshifter(mon)) { mon->add_ench(one_chance_in(3) ? ENCH_GLOWING_SHAPESHIFTER : ENCH_SHAPESHIFTER); |