summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/externs.h1
-rw-r--r--crawl-ref/source/fight.cc2
-rw-r--r--crawl-ref/source/mon-util.cc11
3 files changed, 13 insertions, 1 deletions
diff --git a/crawl-ref/source/externs.h b/crawl-ref/source/externs.h
index 1141e1134f..1649cc383f 100644
--- a/crawl-ref/source/externs.h
+++ b/crawl-ref/source/externs.h
@@ -1321,6 +1321,7 @@ public:
// Has a hydra-like variable number of attacks based on mons->number.
bool has_hydra_multi_attack() const;
+ bool has_multitargeting() const;
bool has_ench(enchant_type ench) const;
bool has_ench(enchant_type ench, enchant_type ench2) const;
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index 7f5e45feb7..5ccd23b886 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -4965,7 +4965,7 @@ void melee_attack::mons_perform_attack_rounds()
if (!defender->alive() || defender->pos() != pos)
{
if (attacker == defender
- || !attacker_as_monster()->has_hydra_multi_attack())
+ || !attacker_as_monster()->has_multitargeting())
{
break;
}
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 9f6e384654..fdf3449d45 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -6566,6 +6566,17 @@ bool monsters::has_hydra_multi_attack() const
|| mons_is_zombified(this) && base_monster == MONS_HYDRA);
}
+bool monsters::has_multitargeting() const
+{
+ // Hacky little list for now. evk
+ return (mons_species() == MONS_HYDRA
+ || mons_species() == MONS_ETTIN
+ || mons_species() == MONS_TWO_HEADED_OGRE
+ || mons_species() == MONS_DEEP_ELF_BLADEMASTER
+ || mons_species() == MONS_TENTACLED_MONSTROSITY
+ || mons_species() == MONS_ELECTRIC_GOLEM);
+}
+
bool monsters::has_ench(enchant_type ench) const
{
return (enchantments.find(ench) != enchantments.end());