chain summoning

This adds a further throttle to chain summoning.  Monsters can only summon
spellcasting nasties if the nasties are lower level than the summoner, which
makes infinite chains impossible (as long as the player figures out which
monster to kill first).
This commit is contained in:
arromdee
2002-07-09 07:10:21 +00:00
parent 568b8de533
commit f3db525ac4
2 changed files with 13 additions and 2 deletions

View File

@@ -54,7 +54,7 @@ avoid dmonsfree impossible message due to migrating a dead monster via
avoid temporary disappearing Burdened message due to updating status line
midway thru in_container
don't credit player's wisdom when makelevel creates random Elbereth engravings
reduce insect/monster creation from monster spells
reduce insect/monster creation from monster spells and limit chain summons
avoid "couldn't place lregion type 5" warning when arriving at Plane of Fire
avoid crash due to delayed poly or were change no longer being valid
ensure that Priest's ability to recognize B/U/C is considered in B/U/C menus

View File

@@ -10,6 +10,8 @@
#include "hack.h"
#include "qtext.h"
extern const int monstr[];
#ifdef OVLB
STATIC_DCL short FDECL(which_arti, (int));
@@ -435,10 +437,19 @@ nasty(mcast)
bypos.y = u.uy;
for(i = rnd(tmp); i > 0; --i)
for(j=0; j<20; j++) {
int makeindex;
if (mcast &&
!enexto(&bypos, mcast->mux, mcast->muy, mcast->data))
continue;
if ((mtmp = makemon(&mons[pick_nasty()],
/* Don't create more spellcasters of the monsters' level or
* higher--avoids chain summoners filling up the level.
*/
do {
makeindex = pick_nasty();
} while(mcast && attacktype(&mons[makeindex], AT_MAGC) &&
monstr[makeindex] >= monstr[mcast->mnum]);
if ((mtmp = makemon(&mons[makeindex],
bypos.x, bypos.y, NO_MM_FLAGS)) != 0) {
mtmp->msleeping = mtmp->mpeaceful = mtmp->mtame = 0;
set_malign(mtmp);