static bool quaff_potion(object_type *o_ptr, bool *ident) { /* Analyze the potion */ switch (o_ptr->sval) { case SV_POTION_WATER: case SV_POTION_APPLE_JUICE: case SV_POTION_SLIME_MOLD: { msg_print("You feel less thirsty."); *ident = TRUE; break; } case SV_POTION_SLOWNESS: { if (set_slow(p_ptr->slow + randint(25) + 15)) *ident = TRUE; break; } case SV_POTION_SALT_WATER: { msg_print("The potion makes you vomit!"); (void)set_food(PY_FOOD_STARVE - 1); (void)set_poisoned(0); (void)set_paralyzed(p_ptr->paralyzed + 4); *ident = TRUE; break; } case SV_POTION_POISON: { if (!(p_ptr->resist_pois || p_ptr->oppose_pois)) { if (set_poisoned(p_ptr->poisoned + rand_int(15) + 10)) { *ident = TRUE; } } break; } case SV_POTION_BLINDNESS: { if (!p_ptr->resist_blind) { if (set_blind(p_ptr->blind + rand_int(100) + 100)) { *ident = TRUE; } } break; } case SV_POTION_CONFUSION: { if (!p_ptr->resist_confu) { if (set_confused(p_ptr->confused + rand_int(20) + 15)) { *ident = TRUE; } } break; } case SV_POTION_SLEEP: { if (!p_ptr->free_act) { if (set_paralyzed(p_ptr->paralyzed + rand_int(4) + 4)) { *ident = TRUE; } } break; } case SV_POTION_LOSE_MEMORIES: { if (!p_ptr->hold_life && (p_ptr->exp > 0)) { msg_print("You feel your memories fade."); lose_exp(p_ptr->exp / 4); *ident = TRUE; } break; } case SV_POTION_RUINATION: { msg_print("Your nerves and muscles feel weak and lifeless!"); take_hit(damroll(10, 10), "a potion of Ruination"); (void)dec_stat(A_DEX, 25, TRUE); (void)dec_stat(A_WIS, 25, TRUE); (void)dec_stat(A_CON, 25, TRUE); (void)dec_stat(A_STR, 25, TRUE); (void)dec_stat(A_CHR, 25, TRUE); (void)dec_stat(A_INT, 25, TRUE); *ident = TRUE; break; } case SV_POTION_DEC_STR: { if (do_dec_stat(A_STR)) *ident = TRUE; break; } case SV_POTION_DEC_INT: { if (do_dec_stat(A_INT)) *ident = TRUE; break; } case SV_POTION_DEC_WIS: { if (do_dec_stat(A_WIS)) *ident = TRUE; break; } case SV_POTION_DEC_DEX: { if (do_dec_stat(A_DEX)) *ident = TRUE; break; } case SV_POTION_DEC_CON: { if (do_dec_stat(A_CON)) *ident = TRUE; break; } case SV_POTION_DEC_CHR: { if (do_dec_stat(A_CHR)) *ident = TRUE; break; } case SV_POTION_DETONATIONS: { msg_print("Massive explosions rupture your body!"); take_hit(damroll(50, 20), "a potion of Detonation"); (void)set_stun(p_ptr->stun + 75); (void)set_cut(p_ptr->cut + 5000); *ident = TRUE; break; } case SV_POTION_DEATH: { msg_print("A feeling of Death flows through your body."); take_hit(5000, "a potion of Death"); *ident = TRUE; break; } case SV_POTION_INFRAVISION: { if (set_tim_infra(p_ptr->tim_infra + 100 + randint(100))) { *ident = TRUE; } break; } case SV_POTION_DETECT_INVIS: { if (set_tim_invis(p_ptr->tim_invis + 12 + randint(12))) { *ident = TRUE; } break; } case SV_POTION_SLOW_POISON: { if (set_poisoned(p_ptr->poisoned / 2)) *ident = TRUE; break; } case SV_POTION_CURE_POISON: { if (set_poisoned(0)) *ident = TRUE; break; } case SV_POTION_BOLDNESS: { if (set_afraid(0)) *ident = TRUE; break; } case SV_POTION_SPEED: { if (!p_ptr->fast) { if (set_fast(randint(25) + 15)) *ident = TRUE; } else { (void)set_fast(p_ptr->fast + 5); } break; } case SV_POTION_RESIST_HEAT: { if (set_oppose_fire(p_ptr->oppose_fire + randint(10) + 10)) { *ident = TRUE; } break; } case SV_POTION_RESIST_COLD: { if (set_oppose_cold(p_ptr->oppose_cold + randint(10) + 10)) { *ident = TRUE; } break; } case SV_POTION_HEROISM: { if (hp_player(10)) *ident = TRUE; if (set_afraid(0)) *ident = TRUE; if (set_hero(p_ptr->hero + randint(25) + 25)) *ident = TRUE; break; } case SV_POTION_BERSERK_STRENGTH: { if (hp_player(30)) *ident = TRUE; if (set_afraid(0)) *ident = TRUE; if (set_shero(p_ptr->shero + randint(25) + 25)) *ident = TRUE; break; } case SV_POTION_CURE_LIGHT: { if (hp_player(damroll(2, 8))) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_cut(p_ptr->cut - 10)) *ident = TRUE; break; } case SV_POTION_CURE_SERIOUS: { if (hp_player(damroll(4, 8))) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_confused(0)) *ident = TRUE; if (set_cut((p_ptr->cut / 2) - 50)) *ident = TRUE; break; } case SV_POTION_CURE_CRITICAL: { if (hp_player(damroll(6, 8))) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_confused(0)) *ident = TRUE; if (set_poisoned(0)) *ident = TRUE; if (set_stun(0)) *ident = TRUE; if (set_cut(0)) *ident = TRUE; break; } case SV_POTION_HEALING: { if (hp_player(300)) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_confused(0)) *ident = TRUE; if (set_poisoned(0)) *ident = TRUE; if (set_stun(0)) *ident = TRUE; if (set_cut(0)) *ident = TRUE; break; } case SV_POTION_STAR_HEALING: { if (hp_player(1200)) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_confused(0)) *ident = TRUE; if (set_poisoned(0)) *ident = TRUE; if (set_stun(0)) *ident = TRUE; if (set_cut(0)) *ident = TRUE; break; } case SV_POTION_LIFE: { msg_print("You feel life flow through your body!"); restore_level(); (void)set_poisoned(0); (void)set_blind(0); (void)set_confused(0); (void)set_image(0); (void)set_stun(0); (void)set_cut(0); (void)do_res_stat(A_STR); (void)do_res_stat(A_CON); (void)do_res_stat(A_DEX); (void)do_res_stat(A_WIS); (void)do_res_stat(A_INT); (void)do_res_stat(A_CHR); /* Recalculate max. hitpoints */ update_stuff(); hp_player(5000); *ident = TRUE; break; } case SV_POTION_RESTORE_MANA: { if (p_ptr->csp < p_ptr->msp) { p_ptr->csp = p_ptr->msp; p_ptr->csp_frac = 0; msg_print("Your feel your head clear."); p_ptr->redraw |= (PR_MANA); p_ptr->window |= (PW_PLAYER_0 | PW_PLAYER_1); *ident = TRUE; } break; } case SV_POTION_RESTORE_EXP: { if (restore_level()) *ident = TRUE; break; } case SV_POTION_RES_STR: { if (do_res_stat(A_STR)) *ident = TRUE; break; } case SV_POTION_RES_INT: { if (do_res_stat(A_INT)) *ident = TRUE; break; } case SV_POTION_RES_WIS: { if (do_res_stat(A_WIS)) *ident = TRUE; break; } case SV_POTION_RES_DEX: { if (do_res_stat(A_DEX)) *ident = TRUE; break; } case SV_POTION_RES_CON: { if (do_res_stat(A_CON)) *ident = TRUE; break; } case SV_POTION_RES_CHR: { if (do_res_stat(A_CHR)) *ident = TRUE; break; } case SV_POTION_INC_STR: { if (do_inc_stat(A_STR)) *ident = TRUE; break; } case SV_POTION_INC_INT: { if (do_inc_stat(A_INT)) *ident = TRUE; break; } case SV_POTION_INC_WIS: { if (do_inc_stat(A_WIS)) *ident = TRUE; break; } case SV_POTION_INC_DEX: { if (do_inc_stat(A_DEX)) *ident = TRUE; break; } case SV_POTION_INC_CON: { if (do_inc_stat(A_CON)) *ident = TRUE; break; } case SV_POTION_INC_CHR: { if (do_inc_stat(A_CHR)) *ident = TRUE; break; } case SV_POTION_AUGMENTATION: { if (do_inc_stat(A_STR)) *ident = TRUE; if (do_inc_stat(A_INT)) *ident = TRUE; if (do_inc_stat(A_WIS)) *ident = TRUE; if (do_inc_stat(A_DEX)) *ident = TRUE; if (do_inc_stat(A_CON)) *ident = TRUE; if (do_inc_stat(A_CHR)) *ident = TRUE; break; } case SV_POTION_ENLIGHTENMENT: { msg_print("An image of your surroundings forms in your mind..."); wiz_lite(); *ident = TRUE; break; } case SV_POTION_STAR_ENLIGHTENMENT: { msg_print("You begin to feel more enlightened..."); message_flush(); wiz_lite(); (void)do_inc_stat(A_INT); (void)do_inc_stat(A_WIS); (void)detect_traps(); (void)detect_doors(); (void)detect_stairs(); (void)detect_treasure(); (void)detect_objects_gold(); (void)detect_objects_normal(); identify_pack(); self_knowledge(); *ident = TRUE; break; } case SV_POTION_SELF_KNOWLEDGE: { msg_print("You begin to know yourself a little better..."); message_flush(); self_knowledge(); *ident = TRUE; break; } case SV_POTION_EXPERIENCE: { if (p_ptr->exp < PY_MAX_EXP) { s32b ee = (p_ptr->exp / 2) + 10; if (ee > 100000L) ee = 100000L; msg_print("You feel more experienced."); gain_exp(ee); *ident = TRUE; } break; } } return (TRUE); }
/* * Ask for and parse a "debug command" * The "command_arg" may have been set. */ void do_cmd_debug(void) { int py = p_ptr->py; int px = p_ptr->px; int x, y; char cmd; /* Get a "debug command" */ (void)get_com("Debug Command: ", &cmd); /* Analyze the command */ switch (cmd) { /* Nothing */ case ESCAPE: case ' ': case '\n': case '\r': break; #ifdef ALLOW_SPOILERS /* Hack -- Generate Spoilers */ case '"': do_cmd_spoilers(); break; #endif /* ALLOW_SPOILERS */ #ifdef MATLAB case '=': output_monster_matlab(); break; #endif /* MATLAB */ /* Hack -- Help */ case '?': screen_save(); (void)show_file("wizard.txt", NULL, 0 , 0); screen_load(); break; /* Cure all maladies */ case 'a': do_cmd_wiz_cure_all(); break; /* Know alignment */ case 'A': msg_format("Your alignment is %d.", p_ptr->align); break; /* Teleport to target */ case 'b': do_cmd_wiz_bamf(); break; /* Create any object */ case 'c': wiz_create_item(); break; /* Create a named artifact */ case 'C': /* wiz_create_named_art(p_ptr->command_arg);*/ break; /* Detect everything */ case 'd': (void)detect_all(); break; /* Edit character */ case 'e': do_cmd_wiz_change(); break; /* View item info */ case 'f': (void)identify_fully(); break; /* Create feature */ case 'F': if (p_ptr->command_arg > 0) do_cmd_wiz_feature(p_ptr->command_arg); break; /* Good Objects */ case 'g': if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; acquirement(py, px, p_ptr->command_arg, FALSE, TRUE); break; /* Hitpoint rerating */ case 'h': do_cmd_rerate(); break; #ifdef MONSTER_HORDES case 'H': do_cmd_summon_horde(); break; #endif /* MONSTER_HORDES */ /* Identify */ case 'i': (void)ident_spell(); break; /* Fields Integrity */ case 'I': (void)test_field_data_integrity(); break; /* Go up or down in the dungeon */ case 'j': do_cmd_wiz_jump(); break; /* Test compression code */ case 'J': /* test_compress_module(); */ break; /* Self-Knowledge */ case 'k': self_knowledge(); break; /* Learn about objects */ case 'l': do_cmd_wiz_learn(); break; /* Lose Mutation */ case 'L': (void)lose_mutation(p_ptr->command_arg); break; /* Magic Mapping */ case 'm': map_area(); break; /* Gain Mutation */ case 'M': (void)gain_mutation(p_ptr->command_arg); break; /* Specific reward */ case 'r': (void)gain_level_reward(p_ptr->command_arg); break; /* Summon _friendly_ named monster */ case 'N': do_cmd_wiz_named_friendly(p_ptr->command_arg, TRUE); break; /* Summon Named Monster */ case 'n': do_cmd_wiz_named(p_ptr->command_arg, TRUE); break; /* Object playing routines */ case 'o': do_cmd_wiz_play(); break; /* Phase Door */ case 'p': teleport_player(10); break; #if 0 /* Complete a Quest -KMW- */ case 'q': { for (i = 0; i < max_quests; i++) { if (p_ptr->quest[i].status == QUEST_STATUS_TAKEN) { p_ptr->quest[i].status++; msg_print("Completed Quest"); msg_print(NULL); break; } } if (i == max_quests) { msg_print("No current quest"); msg_print(NULL); } break; } #endif /* Make every dungeon square "known" to test streamers -KMW- */ case 'u': { for (y = min_hgt; y < max_hgt; y++) { for (x = min_wid; x < max_wid; x++) { area(y, x)->info |= (CAVE_GLOW | CAVE_MARK); } } wiz_lite(); break; } /* Summon Random Monster(s) */ case 's': if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; do_cmd_wiz_summon(p_ptr->command_arg); break; /* Teleport */ case 't': teleport_player(100); break; /* Very Good Objects */ case 'v': if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; acquirement(py, px, p_ptr->command_arg, TRUE, TRUE); break; /* Wizard Light the Level */ case 'w': if (p_ptr->depth) { wiz_lite(); } else { learn_map(); } break; case 'W': test_decision_tree(); break; /* Increase Experience */ case 'x': if (p_ptr->command_arg) { gain_exp(p_ptr->command_arg); } else { gain_exp(p_ptr->exp + 1); } break; /* Zap Monsters (Genocide) */ case 'z': do_cmd_wiz_zap(); break; case 'Z': do_cmd_wiz_zap_all(); break; /* Hack -- whatever I desire */ case '_': do_cmd_wiz_hack_ben(); break; #ifdef USE_SCRIPT /* Hack -- activate a script */ case '@': do_cmd_wiz_script(); break; #endif /* USE_SCRIPT */ /* Not a Wizard Command */ default: msg_print("That is not a valid debug command."); break; } }
/* * Ask for and parse a "debug command" * * The "p_ptr->command_arg" may have been set. */ void do_cmd_debug(void) { int py = p_ptr->py; int px = p_ptr->px; char cmd; /* Get a "debug command" */ if (!get_com("Debug Command: ", &cmd)) return; /* Analyze the command */ switch (cmd) { /* Ignore */ case ESCAPE: case ' ': case '\n': case '\r': { break; } #ifdef ALLOW_SPOILERS /* Hack -- Generate Spoilers */ case '"': { do_cmd_spoilers(); break; } #endif /* Hack -- Help */ case '?': { do_cmd_help(); break; } /* Cure all maladies */ case 'a': { do_cmd_wiz_cure_all(); break; } /* Teleport to target */ case 'b': { do_cmd_wiz_bamf(); break; } /* Create any object */ case 'c': { wiz_create_item(); break; } /* Create an artifact */ case 'C': { wiz_create_artifact(p_ptr->command_arg); break; } /* Detect everything */ case 'd': { detect_all(); break; } /* Edit character */ case 'e': { do_cmd_wiz_change(); break; } /* View item info */ case 'f': { (void)identify_fully(); break; } /* Good Objects */ case 'g': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; acquirement(py, px, p_ptr->command_arg, FALSE); break; } /* Hitpoint rerating */ case 'h': { do_cmd_rerate(); break; } /* Identify */ case 'i': { (void)ident_spell(); break; } /* Go up or down in the dungeon */ case 'j': { do_cmd_wiz_jump(); break; } /* Self-Knowledge */ case 'k': { self_knowledge(); break; } /* Learn about objects */ case 'l': { do_cmd_wiz_learn(); break; } /* Magic Mapping */ case 'm': { map_area(); break; } /* Summon Named Monster */ case 'n': { do_cmd_wiz_named(p_ptr->command_arg, TRUE); break; } /* Object playing routines */ case 'o': { do_cmd_wiz_play(); break; } /* Phase Door */ case 'p': { teleport_player(10); break; } /* Query the dungeon */ case 'q': { do_cmd_wiz_query(); break; } /* Summon Random Monster(s) */ case 's': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; do_cmd_wiz_summon(p_ptr->command_arg); break; } /* Teleport */ case 't': { teleport_player(100); break; } /* Un-hide all monsters */ case 'u': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = 255; do_cmd_wiz_unhide(p_ptr->command_arg); break; } /* Very Good Objects */ case 'v': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; acquirement(py, px, p_ptr->command_arg, TRUE); break; } /* Wizard Light the Level */ case 'w': { wiz_lite(); break; } /* Increase Experience */ case 'x': { if (p_ptr->command_arg) { gain_exp(p_ptr->command_arg); } else { gain_exp(p_ptr->exp + 1); } break; } /* Zap Monsters (Genocide) */ case 'z': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = MAX_SIGHT; do_cmd_wiz_zap(p_ptr->command_arg); break; } /* Oops */ default: { msg_print("That is not a valid debug command."); break; } } }
/*! * @brief デバッグコマンドを選択する処理のメインルーチン / * Ask for and parse a "debug command" * The "command_arg" may have been set. * @return なし */ void do_cmd_debug(void) { int x, y, i; char cmd; /* Get a "debug command" */ get_com("Debug Command: ", &cmd, FALSE); /* Analyze the command */ switch (cmd) { /* Nothing */ case ESCAPE: case ' ': case '\n': case '\r': break; #ifdef ALLOW_SPOILERS /* Hack -- Generate Spoilers */ case '"': do_cmd_spoilers(); break; #endif /* ALLOW_SPOILERS */ /* Hack -- Help */ case '?': do_cmd_help(); break; /* Cure all maladies */ case 'a': do_cmd_wiz_cure_all(); break; /* Know alignment */ case 'A': msg_format("Your alignment is %d.", p_ptr->align); break; /* Teleport to target */ case 'b': do_cmd_wiz_bamf(); break; case 'B': battle_monsters(); break; /* Create any object */ case 'c': wiz_create_item(); break; /* Create a named artifact */ case 'C': wiz_create_named_art(); break; /* Detect everything */ case 'd': detect_all(DETECT_RAD_ALL * 3); break; /* Dimension_door */ case 'D': wiz_dimension_door(); break; /* Edit character */ case 'e': do_cmd_wiz_change(); break; /* Blue Mage Only */ case 'E': if (p_ptr->pclass == CLASS_BLUE_MAGE) { do_cmd_wiz_blue_mage(); } break; /* View item info */ case 'f': identify_fully(FALSE); break; /* Create desired feature */ case 'F': do_cmd_wiz_create_feature(); break; /* Good Objects */ case 'g': if (command_arg <= 0) command_arg = 1; acquirement(p_ptr->y, p_ptr->x, command_arg, FALSE, FALSE, TRUE); break; /* Hitpoint rerating */ case 'h': do_cmd_rerate(TRUE); break; #ifdef MONSTER_HORDES case 'H': do_cmd_summon_horde(); break; #endif /* MONSTER_HORDES */ /* Identify */ case 'i': (void)ident_spell(FALSE); break; /* Go up or down in the dungeon */ case 'j': do_cmd_wiz_jump(); break; /* Self-Knowledge */ case 'k': self_knowledge(); break; /* Learn about objects */ case 'l': do_cmd_wiz_learn(); break; /* Magic Mapping */ case 'm': map_area(DETECT_RAD_ALL * 3); break; /* Mutation */ case 'M': (void)gain_random_mutation(command_arg); break; /* Reset Class */ case 'R': (void)do_cmd_wiz_reset_class(); break; /* Specific reward */ case 'r': (void)gain_level_reward(command_arg); break; /* Summon _friendly_ named monster */ case 'N': do_cmd_wiz_named_friendly(command_arg); break; /* Summon Named Monster */ case 'n': do_cmd_wiz_named(command_arg); break; /* Dump option bits usage */ case 'O': do_cmd_dump_options(); break; /* Object playing routines */ case 'o': do_cmd_wiz_play(); break; /* Phase Door */ case 'p': teleport_player(10, 0L); break; /* Complete a Quest -KMW- */ case 'q': if(p_ptr->inside_quest) { if (quest[p_ptr->inside_quest].status == QUEST_STATUS_TAKEN) { complete_quest(p_ptr->inside_quest); break; } } else { msg_print("No current quest"); msg_print(NULL); } break; /* Make every dungeon square "known" to test streamers -KMW- */ case 'u': for (y = 0; y < cur_hgt; y++) { for (x = 0; x < cur_wid; x++) { cave[y][x].info |= (CAVE_GLOW | CAVE_MARK); } } wiz_lite(FALSE); break; /* Summon Random Monster(s) */ case 's': if (command_arg <= 0) command_arg = 1; do_cmd_wiz_summon(command_arg); break; /* Special(Random Artifact) Objects */ case 'S': if (command_arg <= 0) command_arg = 1; acquirement(p_ptr->y, p_ptr->x, command_arg, TRUE, TRUE, TRUE); break; /* Teleport */ case 't': teleport_player(100, 0L); break; /* Very Good Objects */ case 'v': if (command_arg <= 0) command_arg = 1; acquirement(p_ptr->y, p_ptr->x, command_arg, TRUE, FALSE, TRUE); break; /* Wizard Light the Level */ case 'w': wiz_lite((bool)(p_ptr->pclass == CLASS_NINJA)); break; /* Increase Experience */ case 'x': gain_exp(command_arg ? command_arg : (p_ptr->exp + 1)); break; /* Zap Monsters (Genocide) */ case 'z': do_cmd_wiz_zap(); break; /* Zap Monsters (Omnicide) */ case 'Z': do_cmd_wiz_zap_all(); break; /* Hack -- whatever I desire */ case '_': do_cmd_wiz_hack_ben(); break; /* Not a Wizard Command */ default: msg_print("That is not a valid debug command."); break; } }
/* * Ask for and parse a "debug command" * * The "p_ptr->command_arg" may have been set. */ void do_cmd_debug(void) { int py = p_ptr->py; int px = p_ptr->px; char cmd; /* Get a "debug command" */ if (!get_com("Debug Command: ", &cmd)) return; /* Analyze the command */ switch (cmd) { /* Ignore */ case ESCAPE: case ' ': case '\n': case '\r': { break; } #ifdef ALLOW_SPOILERS /* Hack -- Generate Spoilers */ case '"': { do_cmd_spoilers(); break; } #endif /* Hack -- Help */ case '?': { do_cmd_help(); break; } /* Cure all maladies */ case 'a': { do_cmd_wiz_cure_all(); break; } /* Teleport to target */ case 'b': { do_cmd_wiz_bamf(); break; } /* Create any object */ case 'c': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; wiz_create_item(p_ptr->command_arg); break; } /* Create an artefact */ case 'C': { char prompt[80]; char buf[80]; sprintf(prompt, "%s", "Index: "); sprintf(buf, "%d", 0); if(term_get_string(prompt, buf, 0)) wiz_create_artefact( atoi(buf) ); break; } /* Detect everything */ case 'd': { detect_all_doors_traps(); detect_all(); break; } /* Edit character */ case 'e': { do_cmd_wiz_change(); break; } /* Forget items and map and monster memory */ case 'f': { do_cmd_wiz_forget(); break; } /* Good Objects */ case 'g': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; acquirement(py, px, p_ptr->command_arg, FALSE); break; } /* Identify */ case 'i': { (void)ident_spell(); break; } /* Go up or down in the dungeon */ case 'j': { do_cmd_wiz_jump(); break; } /* Self-Knowledge */ case 'k': { self_knowledge(); break; } /* Wizard Look */ case 'l': { do_cmd_wiz_look(); break; } /* Magic Mapping */ case 'm': { map_area(); break; } /* Summon Named Monster */ case 'n': { char prompt[80]; char buf[80]; sprintf(prompt, "%s", "Index: "); sprintf(buf, "%d", 0); if(term_get_string(prompt, buf, 0)) do_cmd_wiz_named(atoi(buf), TRUE); break; } /* Object playing routines */ case 'o': { do_cmd_wiz_play(); break; } /* Debug Options */ case 'O': { screen_save(); do_cmd_options_aux(6, "Debug Options"); screen_load(); break; } /* Phase Door */ case 'p': { teleport_player(10); break; } /* Query the dungeon */ case 'q': { do_cmd_wiz_query(); break; } /* Summon Random Monster(s) */ case 's': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; do_cmd_wiz_summon(p_ptr->command_arg); break; } /* Teleport */ case 't': { teleport_player(100); break; } /* Un-hide all monsters */ case 'u': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = 255; do_cmd_wiz_unhide(p_ptr->command_arg); break; } /* Very Good Objects */ case 'v': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = 1; acquirement(py, px, p_ptr->command_arg, TRUE); break; } /* Wizard Light the Level */ case 'w': { wiz_light(); break; } /* Increase Experience */ case 'x': { if (p_ptr->command_arg) { gain_exp(p_ptr->command_arg); } else { gain_exp(p_ptr->exp); } break; } /* Zap Monsters (Banishment) */ case 'z': { if (p_ptr->command_arg <= 0) p_ptr->command_arg = MAX_SIGHT; do_cmd_wiz_zap(p_ptr->command_arg); break; } /* Oops */ default: { msg_print("That is not a valid debug command."); break; } } }
/* Potions for the quaffing -RAK- */ void quaff() { int32u i, l; int j, k, item_val; int ident; register inven_type *i_ptr; register struct misc *m_ptr; register struct flags *f_ptr; free_turn_flag = TRUE; if (inven_ctr == 0) msg_print("But you are not carrying anything."); else if (!find_range(TV_POTION1, TV_POTION2, &j, &k)) msg_print("You are not carrying any potions."); else if (get_item(&item_val, "Quaff which potion?", j, k, 0)) { i_ptr = &inventory[item_val]; i = i_ptr->flags; free_turn_flag = FALSE; ident = FALSE; if (i == 0) { msg_print ("You feel less thirsty."); ident = TRUE; } else while (i != 0) { j = bit_pos(&i) + 1; if (i_ptr->tval == TV_POTION2) j += 32; /* Potions */ switch(j) { case 1: if (inc_stat (A_STR)) { msg_print("Wow! What bulging muscles!"); ident = TRUE; } break; case 2: ident = TRUE; lose_str(); break; case 3: if (res_stat (A_STR)) { msg_print("You feel warm all over."); ident = TRUE; } break; case 4: if (inc_stat (A_INT)) { msg_print("Aren't you brilliant!"); ident = TRUE; } break; case 5: ident = TRUE; lose_int(); break; case 6: if (res_stat (A_INT)) { msg_print("You have a warm feeling."); ident = TRUE; } break; case 7: if (inc_stat (A_WIS)) { msg_print("You suddenly have a profound thought!"); ident = TRUE; } break; case 8: ident = TRUE; lose_wis(); break; case 9: if (res_stat (A_WIS)) { msg_print("You feel your wisdom returning."); ident = TRUE; } break; case 10: if (inc_stat (A_CHR)) { msg_print("Gee, ain't you cute!"); ident = TRUE; } break; case 11: ident = TRUE; lose_chr(); break; case 12: if (res_stat (A_CHR)) { msg_print("You feel your looks returning."); ident = TRUE; } break; case 13: ident = hp_player(damroll(2, 7)); if (py.flags.cut>0) { py.flags.cut-=10; if (py.flags.cut<0) py.flags.cut=0; ident = TRUE; msg_print("Your wounds heal."); } break; case 14: ident = hp_player(damroll(4, 7)); if (py.flags.cut>0) { py.flags.cut=(py.flags.cut/2)-50; if (py.flags.cut<0) py.flags.cut=0; ident = TRUE; msg_print("Your wounds heal."); } break; case 15: ident = hp_player(damroll(6, 7)); if (py.flags.cut>0) { py.flags.cut=0; ident = TRUE; msg_print("Your wounds heal."); } if (py.flags.stun>0) { if (py.flags.stun>50) { py.misc.ptohit+=20; py.misc.ptodam+=20; } else { py.misc.ptohit+=5; py.misc.ptodam+=5; } py.flags.stun=0; ident = TRUE; msg_print("Your head stops stinging."); } break; case 16: ident = hp_player(400); if (py.flags.stun>0) { if (py.flags.stun>50) { py.misc.ptohit+=20; py.misc.ptodam+=20; } else { py.misc.ptohit+=5; py.misc.ptodam+=5; } py.flags.stun=0; ident = TRUE; msg_print("Your head stops stinging."); } if (py.flags.cut>0) { py.flags.cut=0; ident = TRUE; msg_print("Your wounds heal."); } break; case 17: if (inc_stat (A_CON)) { msg_print("You feel tingly for a moment."); ident = TRUE; } break; case 18: m_ptr = &py.misc; if (m_ptr->exp < MAX_EXP) { l = (m_ptr->exp / 2) + 10; if (l > 100000L) l = 100000L; m_ptr->exp += l; msg_print("You feel more experienced."); prt_experience(); ident = TRUE; } break; case 19: f_ptr = &py.flags; if (!f_ptr->free_act) { /* paralysis must == 0, otherwise could not drink potion */ msg_print("You fall asleep."); f_ptr->paralysis += randint(4) + 4; ident = TRUE; } break; case 20: f_ptr = &py.flags; if (!py.flags.blindness_resist) { if (f_ptr->blind == 0) { msg_print("You are covered by a veil of darkness."); ident = TRUE; } f_ptr->blind += randint(100) + 100; } break; case 21: f_ptr = &py.flags; if (!f_ptr->confusion_resist) { if (f_ptr->confused == 0) { msg_print("Hey! This is good stuff! * Hick! *"); ident = TRUE; } f_ptr->confused += randint(20) + 12; } break; case 22: f_ptr = &py.flags; if (f_ptr->poisoned == 0) { msg_print("You feel very sick."); ident = TRUE; } if (!f_ptr->poison_resist) f_ptr->poisoned += randint(15) + 10; break; case 23: if (py.flags.fast == 0) ident = TRUE; if (py.flags.fast <= 0) { py.flags.fast += randint(25) + 15; } else py.flags.fast += randint(5); break; case 24: if (py.flags.slow == 0) ident = TRUE; py.flags.slow += randint(25) + 15; break; case 26: if (inc_stat (A_DEX)) { msg_print("You feel more limber!"); ident = TRUE; } break; case 27: if (res_stat (A_DEX)) { msg_print("You feel less clumsy."); ident = TRUE; } break; case 28: if (res_stat (A_CON)) { msg_print("You feel your health returning!"); ident = TRUE; } break; case 29: ident = cure_blindness(); break; case 30: ident = cure_confusion(); break; case 31: ident = cure_poison(); break; case 34: if (!py.flags.hold_life && py.misc.exp>0) { int32 m, scale; msg_print("You feel your memories fade."); m = py.misc.exp / 5; if (py.misc.exp > MAX_SHORT) { scale = MAX_LONG / py.misc.exp; m+=(randint((int)scale)*py.misc.exp)/(scale*5); } else m+=randint((int)py.misc.exp)/5; lose_exp(m); ident=TRUE; } else msg_print ("You feel you memories fade for a moment, but quickly return."); break; case 35: f_ptr = &py.flags; (void) cure_poison(); if (f_ptr->food > 150) f_ptr->food = 150; f_ptr->paralysis = 4; msg_print("The potion makes you vomit!"); ident = TRUE; break; case 37: if (py.flags.hero == 0) ident = TRUE; py.flags.hero += randint(25) + 25; break; case 38: if (py.flags.shero == 0) ident = TRUE; py.flags.shero += randint(25) + 25; break; case 39: ident = remove_fear(); break; case 40: ident = restore_level(); break; case 41: f_ptr = &py.flags; if (f_ptr->resist_heat == 0) ident = TRUE; f_ptr->resist_heat += randint(10) + 10; break; case 42: f_ptr = &py.flags; if (f_ptr->resist_cold == 0) ident = TRUE; f_ptr->resist_cold += randint(10) + 10; break; case 43: if (py.flags.detect_inv == 0) ident = TRUE; detect_inv2(randint(12)+12); break; case 44: ident = slow_poison(); break; case 45: ident = cure_poison(); break; case 46: m_ptr = &py.misc; if (m_ptr->cmana < m_ptr->mana) { m_ptr->cmana = m_ptr->mana; ident = TRUE; msg_print("Your feel your head clear."); prt_cmana(); } break; case 47: f_ptr = &py.flags; if (f_ptr->tim_infra == 0) { msg_print("Your eyes begin to tingle."); ident = TRUE; } f_ptr->tim_infra += 100 + randint(100); break; case 48: wizard_light(TRUE); if (!res_stat(A_WIS)) inc_stat(A_WIS); if (!res_stat(A_INT)) inc_stat(A_INT); msg_print("You feel more enlightened!"); identify_pack(); ident=TRUE; break; case 49: msg_print("Massive explosions rupture your body!"); take_hit(damroll(50,20),"a potion of Detonation"); cut_player(5000); stun_player(75); ident=TRUE; break; case 50: msg_print("A feeling of Death flows through your body."); take_hit(5000,"a potion of Death"); ident=TRUE; break; case 51: if (restore_level() | res_stat(A_STR) | res_stat(A_CON) | res_stat(A_DEX) | res_stat(A_WIS) | res_stat(A_INT) | res_stat(A_CHR) | hp_player(5000) | cure_poison() | cure_blindness() | cure_confusion() | (py.flags.stun>0) | (py.flags.cut>0) | (py.flags.image>0) | remove_fear()) { ident=TRUE; py.flags.cut=0; py.flags.image=0; if (py.flags.stun>0) { if (py.flags.stun>50) { py.misc.ptohit+=20; py.misc.ptodam+=20; } else { py.misc.ptohit+=5; py.misc.ptodam+=5; } py.flags.stun=0; } } break; case 52: if (inc_stat(A_DEX) | inc_stat(A_WIS) | inc_stat(A_INT) | inc_stat(A_STR) | inc_stat(A_CHR) | inc_stat(A_CON)) { ident=TRUE; msg_print("You feel power flow through your body!"); } break; case 53: take_hit(damroll(10,10),"a potion of Ruination"); ruin_stat(A_DEX); ruin_stat(A_WIS); ruin_stat(A_CON); ruin_stat(A_STR); ruin_stat(A_CHR); ruin_stat(A_INT); ident=TRUE; msg_print("Your nerves and muscles feel weak and lifeless"); break; case 54: wizard_light(TRUE); msg_print("An image of your surroundings forms in your mind"); ident = TRUE; break; case 55: msg_print("You feel you know yourself a little better..."); self_knowledge(); ident = TRUE; break; case 56: /* *Healing* */ ident = hp_player(1200); if (py.flags.stun>0) { if (py.flags.stun>50) { py.misc.ptohit+=20; py.misc.ptodam+=20; } else { py.misc.ptohit+=5; py.misc.ptodam+=5; } py.flags.stun=0; ident = TRUE; msg_print("Your head stops stinging."); } if (py.flags.cut>0) { py.flags.cut=0; ident = TRUE; msg_print("Your wounds heal."); } if (cure_blindness()) ident = TRUE; if (cure_confusion()) ident = TRUE; if (cure_poison()) ident = TRUE; break; default: if (1) { char tmp_str[100]; msg_print ("Internal error in potion()"); sprintf(tmp_str, "Number %d...", j); msg_print (tmp_str); } break; } /* End of Potions. */ } if (ident) { if (!known1_p(i_ptr)) { m_ptr = &py.misc; /* round half-way case up */ m_ptr->exp += (i_ptr->level + (m_ptr->lev >> 1)) / m_ptr->lev; prt_experience(); identify(&item_val); i_ptr = &inventory[item_val]; } }
static bool quaff_potion(object_type *o_ptr, bool *ident) { /* Analyze the potion */ switch (o_ptr->sval) { case SV_POTION_WATER: case SV_POTION_APPLE_JUICE: case SV_POTION_SLIME_MOLD: { msg_print("Вы утолили жажду."); *ident = TRUE; break; } case SV_POTION_SLOWNESS: { if (set_slow(p_ptr->slow + randint(25) + 15)) *ident = TRUE; break; } case SV_POTION_SALT_WATER: { msg_print("Вя-а-а! Вас стошнило!"); (void)set_food(PY_FOOD_STARVE - 1); (void)set_poisoned(0); (void)set_paralyzed(p_ptr->paralyzed + 4); *ident = TRUE; break; } case SV_POTION_POISON: { if (!(p_ptr->resist_pois || p_ptr->oppose_pois)) { if (set_poisoned(p_ptr->poisoned + rand_int(15) + 10)) { *ident = TRUE; } } break; } case SV_POTION_BLINDNESS: { if (!p_ptr->resist_blind) { if (set_blind(p_ptr->blind + rand_int(100) + 100)) { *ident = TRUE; } } break; } case SV_POTION_CONFUSION: { if (!p_ptr->resist_confu) { if (set_confused(p_ptr->confused + rand_int(20) + 15)) { *ident = TRUE; } } break; } case SV_POTION_SLEEP: { if (!p_ptr->free_act) { if (set_paralyzed(p_ptr->paralyzed + rand_int(4) + 4)) { *ident = TRUE; } } break; } case SV_POTION_LOSE_MEMORIES: { if (!p_ptr->hold_life && (p_ptr->exp > 0)) { msg_print("Ваша жизнь меркнет."); lose_exp(p_ptr->exp / 4); *ident = TRUE; } break; } case SV_POTION_RUINATION: { msg_print("Ваши нервы и мускулы кажутся слабыми и безжизненными!"); take_hit(damroll(10, 10), "зельем Ослабевания"); (void)dec_stat(A_DEX, 25, TRUE); (void)dec_stat(A_WIS, 25, TRUE); (void)dec_stat(A_CON, 25, TRUE); (void)dec_stat(A_STR, 25, TRUE); (void)dec_stat(A_CHR, 25, TRUE); (void)dec_stat(A_INT, 25, TRUE); *ident = TRUE; break; } case SV_POTION_DEC_STR: { if (do_dec_stat(A_STR)) *ident = TRUE; break; } case SV_POTION_DEC_INT: { if (do_dec_stat(A_INT)) *ident = TRUE; break; } case SV_POTION_DEC_WIS: { if (do_dec_stat(A_WIS)) *ident = TRUE; break; } case SV_POTION_DEC_DEX: { if (do_dec_stat(A_DEX)) *ident = TRUE; break; } case SV_POTION_DEC_CON: { if (do_dec_stat(A_CON)) *ident = TRUE; break; } case SV_POTION_DEC_CHR: { if (do_dec_stat(A_CHR)) *ident = TRUE; break; } case SV_POTION_DETONATIONS: { msg_print("Массивные взрывы сотрясают ваше тело!"); take_hit(damroll(50, 20), "зельем взрыва"); (void)set_stun(p_ptr->stun + 75); (void)set_cut(p_ptr->cut + 5000); *ident = TRUE; break; } case SV_POTION_DEATH: { msg_print("Чувство Смерти протекает сквозь вас..."); take_hit(5000, "зельем Смерти"); *ident = TRUE; break; } case SV_POTION_INFRAVISION: { if (set_tim_infra(p_ptr->tim_infra + 100 + randint(100))) { *ident = TRUE; } break; } case SV_POTION_DETECT_INVIS: { if (set_tim_invis(p_ptr->tim_invis + 12 + randint(12))) { *ident = TRUE; } break; } case SV_POTION_SLOW_POISON: { if (set_poisoned(p_ptr->poisoned / 2)) *ident = TRUE; break; } case SV_POTION_CURE_POISON: { if (set_poisoned(0)) *ident = TRUE; break; } case SV_POTION_BOLDNESS: { if (set_afraid(0)) *ident = TRUE; break; } case SV_POTION_SPEED: { if (!p_ptr->fast) { if (set_fast(randint(25) + 15)) *ident = TRUE; } else { (void)set_fast(p_ptr->fast + 5); } break; } case SV_POTION_RESIST_HEAT: { if (set_oppose_fire(p_ptr->oppose_fire + randint(10) + 10)) { *ident = TRUE; } break; } case SV_POTION_RESIST_COLD: { if (set_oppose_cold(p_ptr->oppose_cold + randint(10) + 10)) { *ident = TRUE; } break; } case SV_POTION_HEROISM: { if (hp_player(10)) *ident = TRUE; if (set_afraid(0)) *ident = TRUE; if (set_hero(p_ptr->hero + randint(25) + 25)) *ident = TRUE; break; } case SV_POTION_BERSERK_STRENGTH: { if (hp_player(30)) *ident = TRUE; if (set_afraid(0)) *ident = TRUE; if (set_shero(p_ptr->shero + randint(25) + 25)) *ident = TRUE; break; } case SV_POTION_CURE_LIGHT: { if (hp_player(damroll(2, 8))) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_cut(p_ptr->cut - 10)) *ident = TRUE; break; } case SV_POTION_CURE_SERIOUS: { if (hp_player(damroll(4, 8))) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_confused(0)) *ident = TRUE; if (set_cut((p_ptr->cut / 2) - 50)) *ident = TRUE; break; } case SV_POTION_CURE_CRITICAL: { if (hp_player(damroll(6, 8))) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_confused(0)) *ident = TRUE; if (set_poisoned(0)) *ident = TRUE; if (set_stun(0)) *ident = TRUE; if (set_cut(0)) *ident = TRUE; break; } case SV_POTION_HEALING: { if (hp_player(300)) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_confused(0)) *ident = TRUE; if (set_poisoned(0)) *ident = TRUE; if (set_stun(0)) *ident = TRUE; if (set_cut(0)) *ident = TRUE; break; } case SV_POTION_STAR_HEALING: { if (hp_player(1200)) *ident = TRUE; if (set_blind(0)) *ident = TRUE; if (set_confused(0)) *ident = TRUE; if (set_poisoned(0)) *ident = TRUE; if (set_stun(0)) *ident = TRUE; if (set_cut(0)) *ident = TRUE; break; } case SV_POTION_LIFE: { msg_print("Чуство Жизни протекает в вас!"); restore_level(); (void)set_poisoned(0); (void)set_blind(0); (void)set_confused(0); (void)set_image(0); (void)set_stun(0); (void)set_cut(0); (void)do_res_stat(A_STR); (void)do_res_stat(A_CON); (void)do_res_stat(A_DEX); (void)do_res_stat(A_WIS); (void)do_res_stat(A_INT); (void)do_res_stat(A_CHR); /* Recalculate max. hitpoints */ update_stuff(); hp_player(5000); *ident = TRUE; break; } case SV_POTION_RESTORE_MANA: { if (p_ptr->csp < p_ptr->msp) { p_ptr->csp = p_ptr->msp; p_ptr->csp_frac = 0; msg_print("Ваша голова проясняется."); p_ptr->redraw |= (PR_MANA); p_ptr->window |= (PW_PLAYER_0 | PW_PLAYER_1); *ident = TRUE; } break; } case SV_POTION_RESTORE_EXP: { if (restore_level()) *ident = TRUE; break; } case SV_POTION_RES_STR: { if (do_res_stat(A_STR)) *ident = TRUE; break; } case SV_POTION_RES_INT: { if (do_res_stat(A_INT)) *ident = TRUE; break; } case SV_POTION_RES_WIS: { if (do_res_stat(A_WIS)) *ident = TRUE; break; } case SV_POTION_RES_DEX: { if (do_res_stat(A_DEX)) *ident = TRUE; break; } case SV_POTION_RES_CON: { if (do_res_stat(A_CON)) *ident = TRUE; break; } case SV_POTION_RES_CHR: { if (do_res_stat(A_CHR)) *ident = TRUE; break; } case SV_POTION_INC_STR: { if (do_inc_stat(A_STR)) *ident = TRUE; break; } case SV_POTION_INC_INT: { if (do_inc_stat(A_INT)) *ident = TRUE; break; } case SV_POTION_INC_WIS: { if (do_inc_stat(A_WIS)) *ident = TRUE; break; } case SV_POTION_INC_DEX: { if (do_inc_stat(A_DEX)) *ident = TRUE; break; } case SV_POTION_INC_CON: { if (do_inc_stat(A_CON)) *ident = TRUE; break; } case SV_POTION_INC_CHR: { if (do_inc_stat(A_CHR)) *ident = TRUE; break; } case SV_POTION_AUGMENTATION: { if (do_inc_stat(A_STR)) *ident = TRUE; if (do_inc_stat(A_INT)) *ident = TRUE; if (do_inc_stat(A_WIS)) *ident = TRUE; if (do_inc_stat(A_DEX)) *ident = TRUE; if (do_inc_stat(A_CON)) *ident = TRUE; if (do_inc_stat(A_CHR)) *ident = TRUE; break; } case SV_POTION_ENLIGHTENMENT: { msg_print("Изображение подземелья формируется у вас в голове..."); wiz_lite(); *ident = TRUE; break; } case SV_POTION_STAR_ENLIGHTENMENT: { msg_print("Вы чувствуете себя просвещенным..."); message_flush(); wiz_lite(); (void)do_inc_stat(A_INT); (void)do_inc_stat(A_WIS); (void)detect_traps(); (void)detect_doors(); (void)detect_stairs(); (void)detect_treasure(); (void)detect_objects_gold(); (void)detect_objects_normal(); identify_pack(); self_knowledge(); *ident = TRUE; break; } case SV_POTION_SELF_KNOWLEDGE: { msg_print("Вы познаете себя немного лучше..."); message_flush(); self_knowledge(); *ident = TRUE; break; } case SV_POTION_EXPERIENCE: { if (p_ptr->exp < PY_MAX_EXP) { s32b ee = (p_ptr->exp / 2) + 10; if (ee > 100000L) ee = 100000L; msg_print("Вы чувствуете себя более опытным."); gain_exp(ee); *ident = TRUE; } break; } } return (TRUE); }