Fix: SE021 Problem: Missing return codes causing a number of obscure effects: 1. If a lycanthrope who is currently eviscerating (if that's a word!) attempts to apply a pick axe, which also happens to be his secondary weapons, then he will be allowed to dig even though he can't retract his claws. A segmentation fault may then follow. 2. Dipping Sunsword into a potion of uncursed water will cause it to be used up while dipping a long sword will not. 3. If you're mounted on a frozen stead while levitating or flying, time stands still for it unless you get off. Thus it will never respond. I did say they were obscure :-) Note that some or all of these may not occur with your compiler because it may happen to return the correct value by chance. Compatible with: Slash'EM 0.0.5E4 through 0.0.5E6F1 Author: J. Ali Harlow, ali@avrc.city.ac.uk Date: 23 Sep 1999 *** src/apply.c.orig Wed Aug 18 16:06:49 1999 --- src/apply.c Wed Sep 22 14:52:32 1999 *************** *** 581,587 **** } if(uswapwep == obj) doswapweapon(); /* KMH -- check if doswapweapon failed */ ! if(uswapwep == obj) return; if(uquiver == obj) setuqwep((struct obj *)0); You("now wield %s.", doname(obj)); setuwep(obj); --- 581,587 ---- } if(uswapwep == obj) doswapweapon(); /* KMH -- check if doswapweapon failed */ ! if(uswapwep == obj) return FALSE; if(uquiver == obj) setuqwep((struct obj *)0); You("now wield %s.", doname(obj)); setuwep(obj); *************** *** 1064,1070 **** xchar x, y; if (obj->lamplit) { ! if (artifact_light(obj)) return; /* Artifact lights are never snuffed */ if (obj->otyp == OIL_LAMP || obj->otyp == MAGIC_LAMP || obj->otyp == BRASS_LANTERN || obj->otyp == POT_OIL) { (void) get_obj_location(obj, &x, &y, 0); --- 1064,1070 ---- xchar x, y; if (obj->lamplit) { ! if (artifact_light(obj)) return FALSE; /* Artifact lights are never snuffed */ if (obj->otyp == OIL_LAMP || obj->otyp == MAGIC_LAMP || obj->otyp == BRASS_LANTERN || obj->otyp == POT_OIL) { (void) get_obj_location(obj, &x, &y, 0); *** src/mon.c.orig Wed Aug 18 16:07:56 1999 --- src/mon.c Thu Sep 23 17:36:40 1999 *************** *** 338,345 **** #ifdef YEOMAN if (mtmp == u.usteed && (Flying || Levitation)) /* ...But not water-walking or swimming */ ! return; #endif /* Gremlin multiplying won't go on forever since the hit points --- 343,352 ---- #ifdef YEOMAN if (mtmp == u.usteed && (Flying || Levitation)) + { /* ...But not water-walking or swimming */ ! return 0; ! } #endif /* Gremlin multiplying won't go on forever since the hit points