git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10623 c06c8d41-db1a-0410-9941-cceddc491573
FZ3VCF24YWNHTLVHBZYWX37X4FI2SNCXGZGTV2UFGFGAWMOKFIUAC
EH4FFBOHIUH2QM43B4CHXRETOAKYV53EAQYA3FETDD5VWV2WX6QQC
TR6F3WVSL6TS5SZVGJBGDK54FKAXYWRWXFRNMQ2AYYKHADSHR2EQC
T3R2D5M4YSC6NFZ6YO3AEG4VWORECX72CHUM5UBADV4UPAAZG7WQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
XCGPG77ZJUVU6TH4Z4I3K677TAG7XTDEEWRP7IGVO7MG7GBVPOSQC
KZWOHH536QBWAPWROR32EOXEK5LRY6I5VHVL7HHI7GOFKCMQTCSQC
Q6WLX2VTRJ3LGDPWBH5WKQM7CIIJ5H6AEIKMXPF2PJA5JX5ZLUZQC
2G7MZ653N3JUHJ4DA5Q7VRO3S5T27DLPKDCJEKB6DGYSTXULUVWAC
IXO5VNCDYDYI46Y5QWNJMD7TURKYO526CJA4TIMH5PDDAYHMK5YQC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
KQNMFSLV62B4ANDKTUZ7LQH2MD2NDGNCP55MKM5YAATQ4T52H2PQC
UADYVV3UD5ERJTZZJGY4EUQ4NJ2JSBG7YYUJ75ZRBIXRQXQKOJPAC
// These mushrooms should last longer than the lifespan of a corpse
// (to avoid spawning mushrooms in the same place over and over), aside
// from that the value is slightly randomized to avoid simultaneous
// die-offs of mushroom rings.
// It should last longer than the lifespan of a corpse, to avoid
// spawning mushrooms in the same place over and over. Aside
// from that, the value is slightly randomised to avoid
// simultaneous die-offs of mushroom rings.
}
break;
case ENCH_SPORE_PRODUCTION:
// Very low chance of actually making a spore on each turn.
if(one_chance_in(5000))
{
int idx[] = {0, 1, 2, 3, 4, 5, 6, 7};
std::random_shuffle(idx, idx + 8);
for (unsigned i = 0; i < 8; ++i)
{
coord_def adjacent = this->pos() + Compass[idx[i]];
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;
int rc = create_monster(mgen_data(MONS_GIANT_SPORE,
created_behavior,
0,
0,
adjacent,
MHITNOT,
MG_FORCE_PLACE));
if (rc != -1)
{
env.mons[rc].behaviour = BEH_WANDER;
if (see_grid(adjacent) && see_grid(pos()))
mpr("A nearby fungus spawns a giant spore.");
}
break;
}
}
// Spore explosions might spawn a fungus. The spore explosion
// covers 21 tiles in open space, so the expected number of spores
// produced is the x in x_chance_in_y() in the conditional below.
if (is_explosion && this->flavour == BEAM_SPORE
&& x_chance_in_y(2, 21)
&& mons_class_can_pass(MONS_FUNGUS, env.grid(pos()))
&& !actor_at(pos()))
{
int rc = create_monster(mgen_data(MONS_FUNGUS,
BEH_HOSTILE,
0,
0,
pos(),
MHITNOT,
MG_FORCE_PLACE));
if (rc != -1 && see_grid(pos()))
mpr("A fungus suddenly grows.");
}