X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fdungeon.c;h=a6c5250efcaf9cb12df2096971cb31cceb02152c;hb=61525125cedc7922fa8b2e065b0af4a0cffc2e0a;hp=1ecd73cbeec049db9d5b6e512703b6150bdc4a3c;hpb=38099636c35aa0da2101590e9f0d68c0d7b9719c;p=hengband%2Fhengband.git diff --git a/src/dungeon.c b/src/dungeon.c index 1ecd73cbe..a6c5250ef 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -21,10 +21,19 @@ #include "cmd-zaprod.h" #include "cmd-zapwand.h" #include "cmd-pet.h" +#include "floor.h" #include "floor-events.h" #include "object-curse.h" #include "store.h" +#include "spells-summon.h" +#include "spells-object.h" #include "monsterrace-hook.h" +#include "world.h" +#include "mutation.h" +#include "quest.h" +#include "artifact.h" +#include "avatar.h" +#include "player-status.h" static bool load = TRUE; /*!<ロード処理中の分岐フラグ*/ static int wild_regen = 20; /*!<広域マップ移動時の自然回復処理カウンタ(広域マップ1マス毎に20回処理を基本とする)*/ @@ -138,7 +147,6 @@ static void sense_inventory_aux(INVENTORY_IDX slot, bool heavy) } - /* We have "felt" it */ o_ptr->ident |= (IDENT_SENSE); /* Set the "inscription" */ @@ -146,9 +154,7 @@ static void sense_inventory_aux(INVENTORY_IDX slot, bool heavy) /* Auto-inscription/destroy */ autopick_alter_item(slot, destroy_feeling); - - /* Combine / Reorder the pack (later) */ - p_ptr->notice |= (PN_COMBINE | PN_REORDER); + p_ptr->update |= (PU_COMBINE | PU_REORDER); p_ptr->window |= (PW_INVEN | PW_EQUIP); } @@ -522,8 +528,8 @@ static void pattern_teleport(void) /* Ask for level */ if (get_check(_("他の階にテレポートしますか?", "Teleport level? "))) { - char ppp[80]; - char tmp_val[160]; + char ppp[80]; + char tmp_val[160]; /* Only downward in ironman mode */ if (ironman_downward) @@ -581,7 +587,7 @@ static void pattern_teleport(void) leave_quest_check(); - if (record_stair) do_cmd_write_nikki(NIKKI_PAT_TELE,0,NULL); + if (record_stair) do_cmd_write_nikki(NIKKI_PAT_TELE, 0, NULL); p_ptr->inside_quest = 0; p_ptr->energy_use = 0; @@ -615,9 +621,7 @@ static void wreck_the_pattern(void) msg_print(_("パターンを血で汚してしまった!", "You bleed on the Pattern!")); msg_print(_("何か恐ろしい事が起こった!", "Something terrible happens!")); - if (!IS_INVULN()) - take_hit(DAMAGE_NOESCAPE, damroll(10, 8), _("パターン損壊", "corrupting the Pattern"), -1); - + if (!IS_INVULN()) take_hit(DAMAGE_NOESCAPE, damroll(10, 8), _("パターン損壊", "corrupting the Pattern"), -1); to_ruin = randint1(45) + 35; while (to_ruin--) @@ -971,7 +975,7 @@ static void regen_captured_monsters(void) if (heal) { /* Combine pack */ - p_ptr->notice |= (PN_COMBINE); + p_ptr->update |= (PU_COMBINE); p_ptr->window |= (PW_INVEN); p_ptr->window |= (PW_EQUIP); wild_regen = 20; @@ -1048,7 +1052,7 @@ void leave_quest_check(void) (q_ptr->status == QUEST_STATUS_TAKEN)) { q_ptr->status = QUEST_STATUS_FAILED; - q_ptr->complev = (byte)p_ptr->lev; + q_ptr->complev = p_ptr->lev; update_playtime(); q_ptr->comptime = playtime; @@ -1057,7 +1061,7 @@ void leave_quest_check(void) { case QUEST_TYPE_TOWER: quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED; - quest[QUEST_TOWER1].complev = (byte)p_ptr->lev; + quest[QUEST_TOWER1].complev = p_ptr->lev; break; case QUEST_TYPE_FIND_ARTIFACT: a_info[q_ptr->k_idx].gen_flags &= ~(TRG_QUESTITEM); @@ -1098,7 +1102,7 @@ void leave_tower_check(void) if(quest[leaving_quest].type == QUEST_TYPE_TOWER) { quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED; - quest[QUEST_TOWER1].complev = (byte)p_ptr->lev; + quest[QUEST_TOWER1].complev = p_ptr->lev; update_playtime(); quest[QUEST_TOWER1].comptime = playtime; } @@ -1115,7 +1119,7 @@ static void recharged_notice(object_type *o_ptr) { GAME_TEXT o_name[MAX_NLEN]; - cptr s; + concptr s; /* No inscription */ if (!o_ptr->inscription) return; @@ -1199,14 +1203,8 @@ static void check_music(void) INTERUPTING_SONG_EFFECT(p_ptr) = MUSIC_NONE; msg_print(_("歌を再開した。", "You restart singing.")); p_ptr->action = ACTION_SING; - - /* Recalculate bonuses */ - p_ptr->update |= (PU_BONUS | PU_HP); - - /* Redraw map and status bar */ + p_ptr->update |= (PU_BONUS | PU_HP | PU_MONSTERS); p_ptr->redraw |= (PR_MAP | PR_STATUS | PR_STATE); - p_ptr->update |= (PU_MONSTERS); - p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON); } } @@ -1493,7 +1491,7 @@ static void process_world_aux_hp_and_sp(void) } else { - cptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; + concptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; msg_format(_("%sで火傷した!", "The %s burns you!"), name); take_hit(DAMAGE_NOESCAPE, damage, name, -1); } @@ -1531,7 +1529,7 @@ static void process_world_aux_hp_and_sp(void) } else { - cptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; + concptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; msg_format(_("%sに凍えた!", "The %s frostbites you!"), name); take_hit(DAMAGE_NOESCAPE, damage, name, -1); } @@ -1569,7 +1567,7 @@ static void process_world_aux_hp_and_sp(void) } else { - cptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; + concptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; msg_format(_("%sに感電した!", "The %s shocks you!"), name); take_hit(DAMAGE_NOESCAPE, damage, name, -1); } @@ -1607,7 +1605,7 @@ static void process_world_aux_hp_and_sp(void) } else { - cptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; + concptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; msg_format(_("%sに溶かされた!", "The %s melts you!"), name); take_hit(DAMAGE_NOESCAPE, damage, name, -1); } @@ -1646,7 +1644,7 @@ static void process_world_aux_hp_and_sp(void) } else { - cptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; + concptr name = f_name + f_info[get_feat_mimic(&cave[p_ptr->y][p_ptr->x])].name; msg_format(_("%sに毒された!", "The %s poisons you!"), name); take_hit(DAMAGE_NOESCAPE, damage, name, -1); if (p_ptr->resist_pois) (void)set_poisoned(p_ptr->poisoned + 3); @@ -1657,7 +1655,7 @@ static void process_world_aux_hp_and_sp(void) } if (have_flag(f_ptr->flags, FF_WATER) && have_flag(f_ptr->flags, FF_DEEP) && - !p_ptr->levitation && !p_ptr->can_swim) + !p_ptr->levitation && !p_ptr->can_swim && !p_ptr->resist_water) { if (p_ptr->total_weight > weight_limit()) { @@ -1709,7 +1707,7 @@ static void process_world_aux_hp_and_sp(void) { if (!IS_INVULN() && !p_ptr->wraith_form && !p_ptr->kabenuke && ((p_ptr->chp > (p_ptr->lev / 5)) || !p_ptr->pass_wall)) { - cptr dam_desc; + concptr dam_desc; cave_no_regen = TRUE; if (p_ptr->pass_wall) @@ -2294,7 +2292,7 @@ static void process_world_aux_mutation(void) if (pet) mode |= PM_FORCE_PET; else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET); - if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, mode)) + if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, mode, '\0')) { msg_print(_("あなたはデーモンを引き寄せた!", "You have attracted a demon!")); disturb(FALSE, TRUE); @@ -2403,7 +2401,7 @@ static void process_world_aux_mutation(void) if (pet) mode |= PM_FORCE_PET; else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET); - if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, dun_level, SUMMON_ANIMAL, mode)) + if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, dun_level, SUMMON_ANIMAL, mode, '\0')) { msg_print(_("動物を引き寄せた!", "You have attracted an animal!")); disturb(FALSE, TRUE); @@ -2481,7 +2479,7 @@ static void process_world_aux_mutation(void) if (pet) mode |= PM_FORCE_PET; else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET); - if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, dun_level, SUMMON_DRAGON, mode)) + if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, dun_level, SUMMON_DRAGON, mode, '\0')) { msg_print(_("ドラゴンを引き寄せた!", "You have attracted a dragon!")); disturb(FALSE, TRUE); @@ -2596,18 +2594,18 @@ static void process_world_aux_mutation(void) take_hit(DAMAGE_NOESCAPE, randint1(p_ptr->wt / 6), _("転倒", "tripping"), -1); msg_print(NULL); - if (buki_motteruka(INVEN_RARM)) + if (has_melee_weapon(INVEN_RARM)) { slot = INVEN_RARM; o_ptr = &inventory[INVEN_RARM]; - if (buki_motteruka(INVEN_LARM) && one_in_(2)) + if (has_melee_weapon(INVEN_LARM) && one_in_(2)) { o_ptr = &inventory[INVEN_LARM]; slot = INVEN_LARM; } } - else if (buki_motteruka(INVEN_LARM)) + else if (has_melee_weapon(INVEN_LARM)) { o_ptr = &inventory[INVEN_LARM]; slot = INVEN_LARM; @@ -2749,8 +2747,7 @@ static void process_world_aux_curse(void) /* Call animal */ if ((p_ptr->cursed & TRC_CALL_ANIMAL) && one_in_(2500)) { - if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_ANIMAL, - (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET))) + if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_ANIMAL, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0')) { GAME_TEXT o_name[MAX_NLEN]; @@ -2762,7 +2759,7 @@ static void process_world_aux_curse(void) /* Call demon */ if ((p_ptr->cursed & TRC_CALL_DEMON) && one_in_(1111)) { - if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET))) + if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0')) { GAME_TEXT o_name[MAX_NLEN]; @@ -2775,7 +2772,7 @@ static void process_world_aux_curse(void) if ((p_ptr->cursed & TRC_CALL_DRAGON) && one_in_(800)) { if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_DRAGON, - (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET))) + (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0')) { GAME_TEXT o_name[MAX_NLEN]; @@ -2788,7 +2785,7 @@ static void process_world_aux_curse(void) if ((p_ptr->cursed & TRC_CALL_UNDEAD) && one_in_(1111)) { if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_UNDEAD, - (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET))) + (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0')) { GAME_TEXT o_name[MAX_NLEN]; @@ -2949,7 +2946,6 @@ static void process_world_aux_recharge(void) /* Process objects on floor */ for (i = 1; i < o_max; i++) { - /* Access object */ object_type *o_ptr = &o_list[i]; /* Skip dead objects */ @@ -4065,21 +4061,21 @@ static void process_command(void) /* Enter store */ case SPECIAL_KEY_STORE: { - if (!p_ptr->wild_mode) do_cmd_store(); + do_cmd_store(); break; } /* Enter building -KMW- */ case SPECIAL_KEY_BUILDING: { - if (!p_ptr->wild_mode) do_cmd_bldg(); + do_cmd_bldg(); break; } /* Enter quest level -KMW- */ case SPECIAL_KEY_QUEST: { - if (!p_ptr->wild_mode) do_cmd_quest(); + do_cmd_quest(); break; } @@ -4116,42 +4112,41 @@ static void process_command(void) change_wild_mode(); else do_cmd_go_down(); - break; } /* Open a door or chest */ case 'o': { - if (!p_ptr->wild_mode) do_cmd_open(); + do_cmd_open(); break; } /* Close a door */ case 'c': { - if (!p_ptr->wild_mode) do_cmd_close(); + do_cmd_close(); break; } /* Jam a door with spikes */ case 'j': { - if (!p_ptr->wild_mode) do_cmd_spike(); + do_cmd_spike(); break; } /* Bash a door */ case 'B': { - if (!p_ptr->wild_mode) do_cmd_bash(); + do_cmd_bash(); break; } /* Disarm a trap or chest */ case 'D': { - if (!p_ptr->wild_mode) do_cmd_disarm(); + do_cmd_disarm(); break; } @@ -4166,7 +4161,7 @@ static void process_command(void) else if (p_ptr->pclass == CLASS_SAMURAI) do_cmd_gain_hissatsu(); else if (p_ptr->pclass == CLASS_MAGIC_EATER) - gain_magic(); + import_magic_device(); else do_cmd_study(); break; @@ -4207,7 +4202,7 @@ static void process_command(void) } else if (p_ptr->anti_magic && (p_ptr->pclass != CLASS_BERSERKER) && (p_ptr->pclass != CLASS_SMITH)) { - cptr which_power = _("魔法", "magic"); + concptr which_power = _("魔法", "magic"); if (p_ptr->pclass == CLASS_MINDCRAFTER) which_power = _("超能力", "psionic powers"); else if (p_ptr->pclass == CLASS_IMITATOR) @@ -4259,7 +4254,7 @@ static void process_command(void) /* Issue a pet command */ case 'p': { - if (!p_ptr->wild_mode) do_cmd_pet(); + do_cmd_pet(); break; } @@ -4282,16 +4277,7 @@ static void process_command(void) /* Activate an artifact */ case 'A': { - if (!p_ptr->wild_mode) - { - if (!p_ptr->inside_arena) - do_cmd_activate(); - else - { - msg_print(_("アリーナが魔法を吸収した!", "The arena absorbs all attempted magic!")); - msg_print(NULL); - } - } + do_cmd_activate(); break; } @@ -4312,44 +4298,28 @@ static void process_command(void) /* Fire an item */ case 'f': { - if (!p_ptr->wild_mode) do_cmd_fire(); + do_cmd_fire(); break; } /* Throw an item */ case 'v': { - if (!p_ptr->wild_mode) do_cmd_throw(1, FALSE, -1); + do_cmd_throw(1, FALSE, -1); break; } /* Aim a wand */ case 'a': { - if (!p_ptr->wild_mode) - { - if (!p_ptr->inside_arena) - do_cmd_aim_wand(); - else - { - msg_print(_("アリーナが魔法を吸収した!", "The arena absorbs all attempted magic!")); - msg_print(NULL); - } - } + do_cmd_aim_wand(); break; } /* Zap a rod */ case 'z': { - if (!p_ptr->wild_mode) - { - if (p_ptr->inside_arena) - { - msg_print(_("アリーナが魔法を吸収した!", "The arena absorbs all attempted magic!")); - msg_print(NULL); - } - else if (use_command && rogue_like_commands) + if (use_command && rogue_like_commands) { do_cmd_use(); } @@ -4357,66 +4327,37 @@ static void process_command(void) { do_cmd_zap_rod(); } - } break; } /* Quaff a potion */ case 'q': { - if (!p_ptr->wild_mode) - { - if (!p_ptr->inside_arena) - do_cmd_quaff_potion(); - else - { - msg_print(_("アリーナが魔法を吸収した!", "The arena absorbs all attempted magic!")); - msg_print(NULL); - } - } + do_cmd_quaff_potion(); break; } /* Read a scroll */ case 'r': { - if (!p_ptr->wild_mode) - { - if (!p_ptr->inside_arena) - do_cmd_read_scroll(); - else - { - msg_print(_("アリーナが魔法を吸収した!", "The arena absorbs all attempted magic!")); - msg_print(NULL); - } - } + do_cmd_read_scroll(); break; } /* Use a staff */ case 'u': { - if (!p_ptr->wild_mode) - { - if (p_ptr->inside_arena) - { - msg_print(_("アリーナが魔法を吸収した!", "The arena absorbs all attempted magic!")); - msg_print(NULL); - } - else if (use_command && !rogue_like_commands) - { + if (use_command && !rogue_like_commands) do_cmd_use(); - } else do_cmd_use_staff(); - } break; } /* Use racial power */ case 'U': { - if (!p_ptr->wild_mode) do_cmd_racial_power(); + do_cmd_racial_power(); break; } @@ -4447,7 +4388,7 @@ static void process_command(void) /* Target monster or location */ case '*': { - if (!p_ptr->wild_mode) do_cmd_target(); + do_cmd_target(); break; } @@ -4556,7 +4497,7 @@ static void process_command(void) /* Repeat level feeling */ case KTRL('F'): { - if (!p_ptr->wild_mode) do_cmd_feeling(); + do_cmd_feeling(); break; } @@ -4698,22 +4639,6 @@ static void process_command(void) } /*! - * @brief モンスター種族が釣れる種族かどうかを判定する。 - * @param r_idx 判定したいモンスター種族のID - * @return 釣れる対象ならばTRUEを返す - */ -static bool monster_tsuri(MONRACE_IDX r_idx) -{ - monster_race *r_ptr = &r_info[r_idx]; - - if ((r_ptr->flags7 & RF7_AQUATIC) && !(r_ptr->flags1 & RF1_UNIQUE) && my_strchr("Jjlw", r_ptr->d_char)) - return TRUE; - else - return FALSE; -} - - -/*! * @brief アイテムの所持種類数が超えた場合にアイテムを床に落とす処理 / Hack -- Pack Overflow * @return なし */ @@ -4725,7 +4650,7 @@ static void pack_overflow(void) object_type *o_ptr; /* Is auto-destroy done? */ - handle_stuff(); + update_creature(p_ptr); if (!inventory[INVEN_PACK].k_idx) return; /* Access the slot to be dropped */ @@ -4875,7 +4800,7 @@ static void process_player(void) { MONRACE_IDX r_idx; bool success = FALSE; - get_mon_num_prep(monster_tsuri,NULL); + get_mon_num_prep(monster_is_fishing_target,NULL); r_idx = get_mon_num(dun_level ? dun_level : wilderness[p_ptr->wilderness_y][p_ptr->wilderness_x].level); msg_print(NULL); if (r_idx && one_in_(2)) @@ -5082,8 +5007,6 @@ static void process_player(void) resting--; if (!resting) set_action(ACTION_NONE); - - /* Redraw the state */ p_ptr->redraw |= (PR_STATE); } @@ -5435,7 +5358,7 @@ static void dungeon(bool load_game) character_xtra = FALSE; p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS); - p_ptr->notice |= (PN_COMBINE | PN_REORDER); + p_ptr->update |= (PU_COMBINE | PU_REORDER); handle_stuff(); Term_fresh(); @@ -5876,8 +5799,7 @@ void play_game(bool new_game) quit(0); p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS); - - handle_stuff(); + update_creature(p_ptr); p_ptr->is_dead = TRUE; @@ -6194,7 +6116,6 @@ void play_game(bool new_game) /* Process the level */ dungeon(load_game); - /* Hack -- prevent "icky" message */ character_xtra = TRUE; @@ -6251,106 +6172,7 @@ void play_game(bool new_game) /* Mega-Hack -- Allow player to cheat death */ if ((p_ptr->wizard || cheat_live) && !get_check(_("死にますか? ", "Die? "))) { - /* Mark social class, reset age, if needed */ - if (p_ptr->sc) p_ptr->sc = p_ptr->age = 0; - - /* Increase age */ - p_ptr->age++; - - /* Mark savefile */ - p_ptr->noscore |= 0x0001; - - msg_print(_("ウィザードモードに念を送り、死を欺いた。", "You invoke wizard mode and cheat death.")); - msg_print(NULL); - - (void)life_stream(FALSE, FALSE); - - if (p_ptr->pclass == CLASS_MAGIC_EATER) - { - int magic_idx; - for (magic_idx = 0; magic_idx < EATER_EXT*2; magic_idx++) - { - p_ptr->magic_num1[magic_idx] = p_ptr->magic_num2[magic_idx]*EATER_CHARGE; - } - for (; magic_idx < EATER_EXT*3; magic_idx++) - { - p_ptr->magic_num1[magic_idx] = 0; - } - } - - /* Restore spell points */ - p_ptr->csp = p_ptr->msp; - p_ptr->csp_frac = 0; - - /* Hack -- cancel recall */ - if (p_ptr->word_recall) - { - msg_print(_("張りつめた大気が流れ去った...", "A tension leaves the air around you...")); - msg_print(NULL); - - /* Hack -- Prevent recall */ - p_ptr->word_recall = 0; - p_ptr->redraw |= (PR_STATUS); - } - - /* Hack -- cancel alter */ - if (p_ptr->alter_reality) - { - /* Hack -- Prevent alter */ - p_ptr->alter_reality = 0; - p_ptr->redraw |= (PR_STATUS); - } - - /* Note cause of death */ - (void)strcpy(p_ptr->died_from, _("死の欺き", "Cheating death")); - - /* Do not die */ - p_ptr->is_dead = FALSE; - - /* Hack -- Prevent starvation */ - (void)set_food(PY_FOOD_MAX - 1); - - dun_level = 0; - p_ptr->inside_arena = FALSE; - p_ptr->inside_battle = FALSE; - leaving_quest = 0; - p_ptr->inside_quest = 0; - if (dungeon_type) p_ptr->recall_dungeon = dungeon_type; - dungeon_type = 0; - if (lite_town || vanilla_town) - { - p_ptr->wilderness_y = 1; - p_ptr->wilderness_x = 1; - if (vanilla_town) - { - p_ptr->oldpy = 10; - p_ptr->oldpx = 34; - } - else - { - p_ptr->oldpy = 33; - p_ptr->oldpx = 131; - } - } - else - { - p_ptr->wilderness_y = 48; - p_ptr->wilderness_x = 5; - p_ptr->oldpy = 33; - p_ptr->oldpx = 131; - } - - /* Leaving */ - p_ptr->wild_mode = FALSE; - p_ptr->leaving = TRUE; - - do_cmd_write_nikki(NIKKI_BUNSHOU, 1, - _(" しかし、生き返った。", - " but revived.")); - - /* Prepare next floor */ - leave_floor(); - wipe_m_list(); + cheat_death(p_ptr); } } }