From 8075717d132ff61257a8836ce7854f71f1eb05f8 Mon Sep 17 00:00:00 2001 From: Charles Otto Date: Thu, 12 Nov 2009 20:30:12 -0500 Subject: Change ballistomycete spore mechanics again New status: if a ballistomycete or giant spore dies any ballistos on the level get +1 to a counter. Ballistos with a count higher than zero get spore production on a short (~150 turn) timer. When a spore is spawned (by a ballisto) the count of all ballistos on the level is decreased by 1. --- crawl-ref/source/beam.cc | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'crawl-ref/source/beam.cc') diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 8a10cc4531..27600e0a31 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -2538,6 +2538,11 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted, } break; + case BEAM_SPORE: + if (monster->type == MONS_BALLISTOMYCETE) + hurted = 0; + break; + default: break; } @@ -3092,9 +3097,30 @@ void bolt::affect_ground() && mons_class_can_pass(MONS_BALLISTOMYCETE, env.grid(pos())) && !actor_at(pos())) { + beh_type beh; // Half the fungi in arena mode are friendly. - beh_type beh = (crawl_state.arena && coinflip()) ? BEH_FRIENDLY - : BEH_HOSTILE; + if(crawl_state.arena) + { + beh = coinflip() ? BEH_FRIENDLY : BEH_HOSTILE; + } + else + { + switch(this->attitude) + { + case ATT_NEUTRAL: + beh = BEH_NEUTRAL; + break; + + case ATT_FRIENDLY: + case ATT_GOOD_NEUTRAL: + beh = BEH_GOOD_NEUTRAL; + break; + + default: + beh = BEH_HOSTILE; + break; + } + } int rc = create_monster(mgen_data(MONS_BALLISTOMYCETE, beh, -- cgit v1.2.3-54-g00ecf