--- slump-0.003.01/slump.c.old +++ slump-0.003.01/slump.c @@ -1300,7 +1300,7 @@ c->minrooms = c->minrooms * 2 / 3; if (c->minrooms<4) c->minrooms = 4; if (c->minrooms>20) c->minrooms = 20; - c->allow_boring_rooms = FALSE; + c->allow_boring_rooms = TRUE; c->lock_themes = TRUE; if (rollpercent(16,25)) c->force_biggest = TRUE; /* stub */ c->big_monsters = TRUE; @@ -1469,7 +1469,7 @@ } answer->weapons_are_special = FALSE; /* Just mix weapons in with ammo */ answer->recess_switches = rollpercent(41,95); - answer->allow_boring_rooms = rollpercent(42,20); + answer->allow_boring_rooms = TRUE; answer->both_doors = rollpercent(43,50); answer->doorless_jambs = rollpercent(44,10); answer->gunk_channels = rollpercent(45,70); @@ -8176,12 +8176,18 @@ boolean rc; /* Decide on a limit, if any, for the monster loop; should be config/style? */ - if (c->allow_boring_rooms&&rollpercent(251,20)) return; /* No monsters at all */ - if (rollpercent(252,80)) { + if (c->allow_boring_rooms&&rollpercent(251,21)) return; /* No monsters at all */ + + if (rollpercent (252,20)) { + n = 1; + } else if (rollpercent (252,20)) { + n = 2; + } else if (rollpercent (252,80)) { n = 2 + roll(141,8); /* N to M monsters */ } else { n = 1000; /* As many monsters as will fit! */ } + n *= l->hugeness; /* Reasonable? */ /* The loop itself */ --- slump-0.003.01.old/slump.c +++ slump-0.003.01/slump.c @@ -652,10 +652,9 @@ /* How can we configify all the monsters and weapons in here?? */ - /* Only allow bosses that are in FreeDoom; others are commented out */ switch (bossno) { case 0: /* Baron Brothers */ -/* answer->boss = find_genus(c,ID_BARON); + answer->boss = find_genus(c,ID_BARON); answer->boss_count = 2; if (rollpercent(4,75)) { answer->weapon = find_genus(c,ID_LAUNCHER); @@ -664,9 +663,9 @@ answer->weapon = find_genus(c,ID_CHAINGUN); answer->ammo = find_genus(c,ID_BULBOX); } - break; */ + break; case 1: /* Cybie */ -/* answer->boss = find_genus(c,ID_CYBER); + answer->boss = find_genus(c,ID_CYBER); if (rollpercent(5,75)) { answer->weapon = find_genus(c,ID_LAUNCHER); answer->ammo = find_genus(c,ID_ROCKBOX); @@ -674,9 +673,9 @@ answer->weapon = find_genus(c,ID_BFG); answer->ammo = find_genus(c,ID_CELLPACK); } - break; */ + break; case 2: /* Spiderboss */ -/* answer->boss = find_genus(c,ID_SPIDERBOSS); + answer->boss = find_genus(c,ID_SPIDERBOSS); if (rollpercent(6,75)) { answer->weapon = find_genus(c,ID_BFG); answer->ammo = find_genus(c,ID_CELLPACK); @@ -684,7 +683,7 @@ answer->weapon = find_genus(c,ID_LAUNCHER); answer->ammo = find_genus(c,ID_ROCKBOX); } - break; */ + break; case 3: /* Two mancubi (for MAP07, random) */ answer->boss = find_genus(c,ID_MANCUB); answer->boss_count = 2; @@ -697,7 +696,7 @@ } break; case 4: /* Two pains */ -/* answer->boss = find_genus(c,ID_PAIN); + answer->boss = find_genus(c,ID_PAIN); answer->boss_count = 2; if (rollpercent(8,50)) { answer->weapon = find_genus(c,ID_CHAINGUN); @@ -706,7 +705,7 @@ answer->weapon = find_genus(c,ID_PLASMA); answer->ammo = find_genus(c,ID_CELLPACK); } - break; */ + break; case 5: case 6: switch (roll(4,2)) { @@ -724,7 +723,7 @@ break; case 666: /* Just what are we going to do here? */ -/* answer->boss = find_genus(c,ID_BRAIN); */ + answer->boss = find_genus(c,ID_BRAIN); answer->weapon = find_genus(c,ID_LAUNCHER); answer->ammo = find_genus(c,ID_ROCKBOX); break; --- slump-0.003.01.old/slump.c +++ slump-0.003.01/slump.c @@ -7970,6 +7970,8 @@ int i,count; float hl, am; int thisbit; + int allow_skull = 1; + char *cp; { char s[200]; @@ -7978,6 +7980,24 @@ announce(NONE,s); } +//-------------------------------------------------------------------- + +// The following code makes it possible for wrapper programs to block +// the ID_SKULL character. This feature was added so that the spider +// robots added by "haloween.wad" can be blocked when that WAD is us- +// ed. [The robots in question are "haloween.wad's" version of ID_ +// SKULL. IMHO: They don't seem to fit with the rest of the charac- +// ters.] + + if ((cp = getenv ("PRFREESKULL")) != NULL) + { + int c = *cp; + if ((c >= 'a') && (c <= 'z')) c += 'A'-'a'; + if ((c == 'F') || (c == 'N') || (c == '0')) allow_skull = 0; + } + +//-------------------------------------------------------------------- + require |= MONSTER; /* Duh! */ /* This is disabled; with min_level, we just start having boss creatures * show up in later levels */ @@ -7999,6 +8019,7 @@ m->marked = 0; if ((m->bits & require) != require) continue; if ((m->bits & forbid) != 0) continue; + if ((m->thingid == ID_SKULL) && !allow_skull) continue; /* Levels above 15 are more likely to have big meanies */ if (current_level_number > 15 && current_level_number <= 30) { if(rollpercent(444,(6 * (current_level_number - 15))) &&