E int FDECL(monster_detect, (struct obj *, int));
E int FDECL(trap_detect, (struct obj *));
E const char *FDECL(level_distance, (d_level *));
-E void FDECL(use_crystal_ball, (struct obj *));
+E void FDECL(use_crystal_ball, (struct obj **));
E void NDECL(do_mapping);
E void NDECL(do_vicinity_map);
E void FDECL(cvt_sdoor_to_door, (struct rm *));
res = use_towel(obj);
break;
case CRYSTAL_BALL:
- use_crystal_ball(obj);
+ use_crystal_ball(&obj);
break;
case MAGIC_MARKER:
res = dowrite(obj);
STATIC_OVL int
arti_invoke(obj)
-register struct obj *obj;
+struct obj *obj;
{
register const struct artifact *oart = get_artifact(obj);
if (!oart || !oart->inv_prop) {
if (obj->otyp == CRYSTAL_BALL)
- use_crystal_ball(obj);
+ use_crystal_ball(&obj);
else
pline1(nothing_happens);
return 1;
};
void
-use_crystal_ball(obj)
-struct obj *obj;
+use_crystal_ball(optr)
+struct obj **optr;
{
char ch;
int oops;
+ struct obj *obj = *optr;
if (Blind) {
pline("Too bad you can't see %s.", the(xname(obj)));
case 5:
pline("%s!", Tobjnam(obj, "explode"));
useup(obj);
- obj = 0; /* it's gone */
+ *optr = obj = 0; /* it's gone */
/* physical damage cause by the shards and force */
losehp(Maybe_Half_Phys(rnd(30)), "exploding crystal ball",
KILLED_BY_AN);