void read_scroll(void) { short ch; object *obj; char msg[ROGUE_COLUMNS]; ch = pack_letter(mesg[245], SCROL); if (ch == CANCEL) { return; } if (!(obj = get_letter_object(ch))) { message(mesg[246], 0); return; } if (obj->what_is != SCROL) { message(mesg[247], 0); return; } switch (obj->which_kind) { case SCARE_MONSTER: message(mesg[248], 0); break; case HOLD_MONSTER: hold_monster(); break; case ENCH_WEAPON: if (rogue.weapon) { if (rogue.weapon->what_is == WEAPON) { sprintf(msg, mesg[249], name_of(rogue.weapon), get_ench_color()); message(msg, 0); if (coin_toss()) { rogue.weapon->hit_enchant++; } else { rogue.weapon->d_enchant++; } } rogue.weapon->is_cursed = 0; } else { message(mesg[250], 0); } break; case ENCH_ARMOR: if (rogue.armor) { sprintf(msg, mesg[251], get_ench_color()); message(msg, 0); rogue.armor->d_enchant++; rogue.armor->is_cursed = 0; print_stats(STAT_ARMOR); } else { message(mesg[252], 0); } break; case IDENTIFY: message(mesg[253], 0); obj->identified = 1; id_scrolls[obj->which_kind].id_status = IDENTIFIED; idntfy(); break; case TELEPORT: tele(); break; case SLEEP: message(mesg[254], 0); take_a_nap(); break; case PROTECT_ARMOR: if (rogue.armor) { message(mesg[255], 0); rogue.armor->is_protected = 1; rogue.armor->is_cursed = 0; } else { message(mesg[256], 0); } break; case REMOVE_CURSE: message((!halluc) ? mesg[257] : mesg[258], 0); uncurse_all(); break; case CREATE_MONSTER: create_monster(); break; case AGGRAVATE_MONSTER: aggravate(); break; case MAGIC_MAPPING: message(mesg[259], 0); draw_magic_map(); break; } #if !defined( ORIGINAL ) id_scrolls[obj->which_kind].id_status = IDENTIFIED; #else /* ORIGINAL */ if (id_scrolls[obj->which_kind].id_status != CALLED) { id_scrolls[obj->which_kind].id_status = IDENTIFIED; } #endif /* ORIGINAL */ vanish(obj, (obj->which_kind != SLEEP), &rogue.pack); }
void read_scroll(void) { short ch; object *obj; char msg[DCOLS]; ch = pack_letter("read what?", SCROL); if (ch == CANCEL) { return; } if (!(obj = get_letter_object(ch))) { message("no such item.", 0); return; } if (obj->what_is != SCROL) { message("you can't read that", 0); return; } switch(obj->which_kind) { case SCARE_MONSTER: message("you hear a maniacal laughter in the distance", 0); break; case HOLD_MONSTER: hold_monster(); break; case ENCH_WEAPON: if (rogue.weapon) { if (rogue.weapon->what_is == WEAPON) { sprintf(msg, "your %sglow%s %sfor a moment", name_of(rogue.weapon), ((rogue.weapon->quantity <= 1) ? "s" : ""), get_ench_color()); message(msg, 0); if (coin_toss()) { rogue.weapon->hit_enchant++; } else { rogue.weapon->d_enchant++; } } rogue.weapon->is_cursed = 0; } else { message("your hands tingle", 0); } break; case ENCH_ARMOR: if (rogue.armor) { sprintf(msg, "your armor glows %sfor a moment", get_ench_color()); message(msg, 0); rogue.armor->d_enchant++; rogue.armor->is_cursed = 0; print_stats(STAT_ARMOR); } else { message("your skin crawls", 0); } break; case IDENTIFY: message("this is a scroll of identify", 0); obj->identified = 1; id_scrolls[obj->which_kind].id_status = IDENTIFIED; idntfy(); break; case TELEPORT: tele(); break; case SLEEP: message("you fall asleep", 0); take_a_nap(); break; case PROTECT_ARMOR: if (rogue.armor) { message( "your armor is covered by a shimmering gold shield",0); rogue.armor->is_protected = 1; rogue.armor->is_cursed = 0; } else { message("your acne seems to have disappeared", 0); } break; case REMOVE_CURSE: message((!halluc) ? "you feel as though someone is watching over you" : "you feel in touch with the universal oneness", 0); uncurse_all(); break; case CREATE_MONSTER: create_monster(); break; case AGGRAVATE_MONSTER: aggravate(); break; case MAGIC_MAPPING: message("this scroll seems to have a map on it", 0); draw_magic_map(); break; case CON_MON: con_mon = 1; sprintf(msg, "your hands glow %sfor a moment", get_ench_color()); message(msg, 0); break; } if (id_scrolls[obj->which_kind].id_status != CALLED) { id_scrolls[obj->which_kind].id_status = IDENTIFIED; } vanish(obj, (obj->which_kind != SLEEP), &rogue.pack); }
void read_scroll(void) { short ch; object *obj; char msg[DCOLS]; if(blind) { message("You can't see to read the scroll.",0); return; } ch = pack_letter("Read what?", SCROLL); if (ch == ROGUE_KEY_CANCEL) { return; } if (!(obj = get_letter_object(ch))) { message("No such item.", 0); return; } if (obj->what_is != SCROLL) { message("You can't read that!", 0); return; } switch(obj->which_kind) { case SCARE_MONSTER: message("You hear a maniacal laughter in the distance.", 0); break; case HOLD_MONSTER: hold_monster(); break; case ENCH_WEAPON: if (rogue.weapon) { if (rogue.weapon->what_is == WEAPON) { sprintf(msg, "Your %sglow%s %sfor a moment.", name_of(rogue.weapon), ((rogue.weapon->quantity <= 1) ? "s" : ""), get_ench_color()); message(msg, 0); if (coin_toss()) { rogue.weapon->hit_enchant++; } else { rogue.weapon->d_enchant++; } } rogue.weapon->is_cursed = 0; } else { message("Your hands tingle.", 0); } break; case ENCH_ARMOR: if (rogue.armor) { sprintf(msg, "Your armor glows %sfor a moment.", get_ench_color()); message(msg, 0); rogue.armor->d_enchant++; rogue.armor->is_cursed = 0; print_stats(STAT_ARMOR); } else { message("Your skin crawls.", 0); } break; case IDENTIFY: message("This is a scroll of identify.", 0); obj->identified = 1; id_scrolls[obj->which_kind].id_status = IDENTIFIED; identify_item(0) ; break; case TELEPORT: tele(); /* (zerogue 0.4.0) The first time a rogue uses this scroll, * he is briefly confused. */ if( ! obj->identified && id_scrolls[obj->which_kind].id_status != IDENTIFIED ) confused += get_rand(0,5) ; break; case SLEEP: sleepify(obj) ; break ; case PROTECT_ARMOR: if (rogue.armor) { message("Your armor is covered by a shimmering gold shield.", 0); rogue.armor->is_protected = 1; rogue.armor->is_cursed = 0; } else { message("Your acne seems to have disappeared.", 0); } break; case REMOVE_CURSE: message((!halluc) ? "You feel as though someone is watching over you." : "You feel in touch with the universal oneness.", 0); uncurse_all(); break; case CREATE_MONSTER: /* (zerogue 0.4.0) A summoned monster is briefly confused. */ create_monster(1) ; break; case AGGRAVATE_MONSTER: aggravate(); break; case MAGIC_MAPPING: message("This scroll seems to have a map on it.", 0); draw_magic_map(); break; } if (id_scrolls[obj->which_kind].id_status != CALLED) { id_scrolls[obj->which_kind].id_status = IDENTIFIED; } vanish(obj, (obj->which_kind != SLEEP), &rogue.pack); }