summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monster.cc
diff options
context:
space:
mode:
authorCharles Otto <ottochar@gmail.com>2009-11-11 22:31:41 -0500
committerCharles Otto <ottochar@gmail.com>2009-11-11 23:04:23 -0500
commit37ba8b3ae6c9c7f6b39e372c4dd8f305f69923be (patch)
tree40564211ce358b7531089d895770d70334bb9470 /crawl-ref/source/monster.cc
parent21cc906692321fd60c3fa6ab4780ce1fa0f083c6 (diff)
downloadcrawl-ref-37ba8b3ae6c9c7f6b39e372c4dd8f305f69923be.tar.gz
crawl-ref-37ba8b3ae6c9c7f6b39e372c4dd8f305f69923be.zip
Give giant spores a chance of spawning ballistos while wandering
Give giant spores a chance of creating a ballistomycete when they move while wandering. This ability is on a timer, so they can't create more than 1 ballisto per 20 turns. Numbers may need tweaking.
Diffstat (limited to 'crawl-ref/source/monster.cc')
-rw-r--r--crawl-ref/source/monster.cc25
1 files changed, 14 insertions, 11 deletions
diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc
index 1c46b41f98..77c9753884 100644
--- a/crawl-ref/source/monster.cc
+++ b/crawl-ref/source/monster.cc
@@ -2154,6 +2154,11 @@ static std::string _str_monam(const monsters& mon, description_level_type desc,
result += cardinals[mon.number];
}
+ if (mon.type == MONS_BALLISTOMYCETE && desc != DESC_DBNAME)
+ {
+ result += mon.colour == LIGHTRED ? "Active " : "";
+ }
+
// Done here to cover cases of undead versions of hydras.
if (mons_species(nametype) == MONS_HYDRA
&& mon.number > 0 && desc != DESC_DBNAME)
@@ -4992,25 +4997,23 @@ void monsters::apply_enchantment(const mon_enchant &me)
if (mons_class_can_pass(MONS_GIANT_SPORE, env.grid(adjacent))
&& !actor_at(adjacent))
{
- beh_type created_behavior = BEH_HOSTILE;
-
- if (this->attitude == ATT_FRIENDLY)
- created_behavior = BEH_FRIENDLY;
+ beh_type created_behavior = SAME_ATTITUDE(this);
int rc = create_monster(mgen_data(MONS_GIANT_SPORE,
- created_behavior,
- 0,
- 0,
- adjacent,
- MHITNOT,
- MG_FORCE_PLACE));
+ created_behavior,
+ 0,
+ 0,
+ adjacent,
+ MHITNOT,
+ MG_FORCE_PLACE));
if (rc != -1)
{
env.mons[rc].behaviour = BEH_WANDER;
+ env.mons[rc].number = 10;
if (observe_cell(adjacent) && observe_cell(pos()))
- mpr("A nearby fungus spawns a giant spore.");
+ mpr("A nearby fungus spawns a giant spore.");
}
break;
}