Confused scroll of light conjures tame cancelled lights
Tame cancelled lights are actually quite interesting and useful: they are a mobile light source that will follow you around, and because they are cancelled they won't explode at hostile monsters. This replaces the existing confused scroll effect of creating an area of darkness (the cursed scroll of light still produces this effect). If you are confused *and* the scroll is cursed, it summons black lights instead of yellow ones. Original change by copperwater <aosdict@gmail.com>, added with formatting and some functional changes.
This commit is contained in:
@@ -107,6 +107,7 @@ make shriekers summon baby purple worms if purple worms would be too tough
|
||||
make non-tame (baby) purple worms eat corpses off the ground
|
||||
make baby purple worms attack shriekers
|
||||
make hero polymorphed into baby purple worm warned against shriekers
|
||||
confused scroll of light summons tame cancelled lights
|
||||
|
||||
|
||||
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||
|
||||
35
src/read.c
35
src/read.c
@@ -1252,19 +1252,40 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */
|
||||
do_genocide((!scursed) | (2 * !!Confusion));
|
||||
break;
|
||||
case SCR_LIGHT:
|
||||
if (!confused || rn2(5)) {
|
||||
if (!confused) {
|
||||
if (!Blind)
|
||||
g.known = TRUE;
|
||||
litroom(!confused && !scursed, sobj);
|
||||
if (!confused && !scursed) {
|
||||
litroom(!scursed, sobj);
|
||||
if (!scursed) {
|
||||
if (lightdamage(sobj, TRUE, 5))
|
||||
g.known = TRUE;
|
||||
}
|
||||
} else {
|
||||
/* could be scroll of create monster, don't set known ...*/
|
||||
(void) create_critters(1, !scursed ? &mons[PM_YELLOW_LIGHT]
|
||||
: &mons[PM_BLACK_LIGHT],
|
||||
TRUE);
|
||||
int pm = scursed ? PM_BLACK_LIGHT : PM_YELLOW_LIGHT;
|
||||
|
||||
if ((g.mvitals[pm].mvflags & G_GONE)) {
|
||||
pline("Tiny lights sparkle in the air momentarily.");
|
||||
} else {
|
||||
/* surround with cancelled tame lights which won't explode */
|
||||
boolean sawlights = FALSE;
|
||||
int numlights = rn1(2,3) + (sblessed * 2);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < numlights; ++i) {
|
||||
struct monst * mon = makemon(&mons[pm], u.ux, u.uy,
|
||||
MM_EDOG | NO_MINVENT);
|
||||
initedog(mon);
|
||||
mon->msleeping = 0;
|
||||
mon->mcan = TRUE;
|
||||
if (canspotmon(mon))
|
||||
sawlights = TRUE;
|
||||
newsym(mon->mx, mon->my);
|
||||
}
|
||||
if (sawlights) {
|
||||
pline("Lights appear all around you!");
|
||||
g.known = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SCR_TELEPORTATION:
|
||||
|
||||
Reference in New Issue
Block a user