From d5bfb1f6cd095fabfa266b0c940e4ac132ee62b0 Mon Sep 17 00:00:00 2001 From: haranp Date: Wed, 27 Jun 2007 09:22:30 +0000 Subject: Herd can now summon herds (i.e., identical-type monsters.) git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1666 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/spells2.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'crawl-ref') diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc index d000f65117..6846b37892 100644 --- a/crawl-ref/source/spells2.cc +++ b/crawl-ref/source/spells2.cc @@ -1311,15 +1311,20 @@ void summon_animals(int pow) int num_so_far = 0; int power_left = pow + 1; + const bool varied = coinflip(); + monster_type mon_chosen; + while ( power_left >= 0 && num_so_far < 8 ) { // pick a random monster and subtract its cost - monster_type mon_chosen = animals[random2(ARRAYSIZE(animals))]; + if ( varied || num_so_far == 0 ) + mon_chosen = animals[random2(ARRAYSIZE(animals))]; + const int power_cost = mons_power(mon_chosen) * 3; - // allow a certain degree of overuse, but not too much - if ( power_cost >= power_left * 2 && - num_so_far > 0 ) // at least one monster, in any case + // Allow a certain degree of overuse, but not too much. + // Guarantee at least two summons. + if ( power_cost >= power_left * 2 && num_so_far >= 2 ) break; power_left -= power_cost; -- cgit v1.2.3-54-g00ecf