if (can_banish) {
if (record_named_pet && monster.is_named_pet()) {
const auto m_name = monster_desc(player_ptr, &monster, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name);
}
delete_monster_idx(player_ptr, grid.m_idx);
message_add(" ");
message_add(" ");
- exe_write_diary(player_ptr, DIARY_GAMESTART, 1, _("-------- 新規ゲーム開始 --------", "------- Started New Game -------"));
- exe_write_diary(player_ptr, DIARY_DIALY, 0);
+ exe_write_diary(player_ptr, DiaryKind::GAMESTART, 1, _("-------- 新規ゲーム開始 --------", "------- Started New Game -------"));
+ exe_write_diary(player_ptr, DiaryKind::DIALY, 0);
const auto mes_sex = format(_("%s性別に%sを選択した。", "%schose %s gender."), indent, sex_info[player_ptr->psex].title);
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, mes_sex);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, mes_sex);
const auto mes_race = format(_("%s種族に%sを選択した。", "%schose %s race."), indent, race_info[enum2i(player_ptr->prace)].title);
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, mes_race);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, mes_race);
const auto mes_class = format(_("%s職業に%sを選択した。", "%schose %s class."), indent, class_info[enum2i(player_ptr->pclass)].title);
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, mes_class);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, mes_class);
if (player_ptr->realm1) {
const std::string mes_realm2 = player_ptr->realm2 ? format(_("と%s", " and %s realms"), realm_names[player_ptr->realm2]) : _("", " realm");
const auto mes_realm = format(_("%s魔法の領域に%s%sを選択した。", "%schose %s%s."), indent, realm_names[player_ptr->realm1], mes_realm2.data());
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, mes_realm);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, mes_realm);
}
if (player_ptr->element) {
const auto mes_element = format(_("%s元素系統に%sを選択した。", "%schose %s system."), indent, get_element_title(player_ptr->element));
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, mes_element);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, mes_element);
}
const auto mes_personality = format(_("%s性格に%sを選択した。", "%schose %s personality."), indent, personality_info[player_ptr->ppersonality].title);
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, mes_personality);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, mes_personality);
if (PlayerClass(player_ptr).equals(PlayerClassType::CHAOS_WARRIOR)) {
const auto fmt_patron = _("%s守護神%sと契約を交わした。", "%smade a contract with patron %s.");
const auto mes_patron = format(fmt_patron, indent, patron_list[player_ptr->chaos_patron].name.data());
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, mes_patron);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, mes_patron);
}
}
}
if (record_stair) {
- exe_write_diary(player_ptr, DIARY_STAIR, 0 - up_num, _("階段を上った", "climbed up the stairs to"));
+ exe_write_diary(player_ptr, DiaryKind::STAIR, 0 - up_num, _("階段を上った", "climbed up the stairs to"));
}
if (up_num == player_ptr->current_floor_ptr->dun_level) {
if (record_stair) {
if (fall_trap) {
- exe_write_diary(player_ptr, DIARY_STAIR, down_num, _("落とし戸に落ちた", "fell through a trap door"));
+ exe_write_diary(player_ptr, DiaryKind::STAIR, down_num, _("落とし戸に落ちた", "fell through a trap door"));
} else {
- exe_write_diary(player_ptr, DIARY_STAIR, down_num, _("階段を下りた", "climbed down the stairs to"));
+ exe_write_diary(player_ptr, DiaryKind::STAIR, down_num, _("階段を下りた", "climbed down the stairs to"));
}
}
add_retired_class(player_ptr->pclass);
} else {
play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_GAMEOVER);
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, _("ダンジョンの探索に絶望して自殺した。", "gave up all hope to commit suicide."));
- exe_write_diary(player_ptr, DIARY_GAMESTART, 1, _("-------- ゲームオーバー --------", "-------- Game Over --------"));
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, "\n\n\n\n");
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, _("ダンジョンの探索に絶望して自殺した。", "gave up all hope to commit suicide."));
+ exe_write_diary(player_ptr, DiaryKind::GAMESTART, 1, _("-------- ゲームオーバー --------", "-------- Game Over --------"));
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, "\n\n\n\n");
}
player_ptr->died_from = _("途中終了", "Quitting");
if ((all_pets && !should_ask) || (!all_pets && delete_this)) {
if (record_named_pet && m_ptr->is_named()) {
const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_DISMISS, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_DISMISS, m_name);
}
if (pet_ctr == player_ptr->riding) {
/* Save the inscription */
m_ptr->nickname = out_val;
if (record_named_pet) {
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_NAME, monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE));
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_NAME, monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE));
}
} else {
if (record_named_pet && old_name) {
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_UNNAME, monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE));
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_UNNAME, monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE));
}
m_ptr->nickname.clear();
}
constexpr auto fmt_realm = _("魔法の領域を%sから%sに変更した。", "changed magic realm from %s to %s.");
const auto mes = format(fmt_realm, realm_names[player_ptr->realm2], realm_names[next_realm]);
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, mes);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, mes);
player_ptr->old_realm |= 1U << (player_ptr->realm2 - 1);
player_ptr->realm2 = next_realm;
{
if ((prev_hour >= 6) && (prev_hour < 18)) {
const auto stay_message = _(is_player_undead(player_ptr) ? "宿屋に泊まった。" : "日が暮れるまで宿屋で過ごした。", "stayed during the day at the inn.");
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, stay_message);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, stay_message);
return;
}
const auto stay_message = _(is_player_undead(player_ptr) ? "夜が明けるまで宿屋で過ごした。" : "宿屋に泊まった。", "stayed overnight at the inn.");
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, stay_message);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, stay_message);
}
/*!
}
msg_print(_("あなたは絶叫して目を覚ました。", "You awake screaming."));
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, _("悪夢にうなされてよく眠れなかった。", "had a nightmare."));
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, _("悪夢にうなされてよく眠れなかった。", "had a nightmare."));
return true;
}
msg_format("You awake refreshed for the %s.", is_player_undead(player_ptr) ? "evening" : "twilight");
#endif
const auto awake_message = _(is_player_undead(player_ptr) ? "すがすがしい夜を迎えた。" : "夕方を迎えた。", "awoke refreshed.");
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, awake_message);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, awake_message);
return;
}
msg_print(_("あなたはリフレッシュして目覚め、新たな日を迎えた。", "You awake refreshed for the new day."));
const auto awake_message = _(is_player_undead(player_ptr) ? "すがすがしい朝を迎えた。" : "朝を迎えた。", "awoke refreshed.");
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, awake_message);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, awake_message);
}
/*!
if ((prev_hour >= 18) && (prev_hour <= 23)) {
determine_daily_bounty(player_ptr, false); /* Update daily bounty */
- exe_write_diary(player_ptr, DIARY_DIALY, 0);
+ exe_write_diary(player_ptr, DiaryKind::DIALY, 0);
}
player_ptr->chp = player_ptr->mhp;
{
char tmp[80]{};
if (get_string(_("内容: ", "diary note: "), tmp, 79)) {
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, tmp);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, tmp);
}
}
GAME_TURN turn_tmp = w_ptr->game_turn;
w_ptr->game_turn = record_turn;
const auto mes = format(_("%sを手に入れた。", "discover %s."), record_o_name);
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, mes);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, mes);
w_ptr->game_turn = turn_tmp;
}
case 'Y':
case '6':
if (!w_ptr->noscore) {
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0,
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0,
_("詐欺オプションをONにして、スコアを残せなくなった。", "gave up sending score to use cheating options."));
}
{
player_ptr->playing = false;
player_ptr->leaving = true;
- exe_write_diary(player_ptr, DIARY_GAMESTART, 0, _("----ゲーム中断----", "--- Saved and Exited Game ---"));
+ exe_write_diary(player_ptr, DiaryKind::GAMESTART, 0, _("----ゲーム中断----", "--- Saved and Exited Game ---"));
}
#endif
if (!seppuku) {
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, _("ダンジョンの探索から引退した。", "retired exploring dungeons."));
- exe_write_diary(player_ptr, DIARY_GAMESTART, 1, _("-------- ゲームオーバー --------", "-------- Game Over --------"));
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, "\n\n\n\n");
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, _("ダンジョンの探索から引退した。", "retired exploring dungeons."));
+ exe_write_diary(player_ptr, DiaryKind::GAMESTART, 1, _("-------- ゲームオーバー --------", "-------- Game Over --------"));
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, "\n\n\n\n");
}
flush();
{
write_level = false;
constexpr auto mes = _(" ----ゲーム再開----", " --- Restarted Game ---");
- exe_write_diary(player_ptr, DIARY_GAMESTART, 1, mes);
+ exe_write_diary(player_ptr, DiaryKind::GAMESTART, 1, mes);
if (player_ptr->riding == -1) {
player_ptr->riding = 0;
}
const auto mes = format(_("%sに降り立った。", "arrived in %s."), map_name(player_ptr).data());
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, mes);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, mes);
}
static void init_io(PlayerType *player_ptr)
if ((max_dlv[floor.dungeon_idx] < floor.dun_level) && !inside_quest(floor.quest_number)) {
max_dlv[floor.dungeon_idx] = floor.dun_level;
if (record_maxdepth) {
- exe_write_diary(player_ptr, DIARY_MAXDEAPTH, floor.dun_level);
+ exe_write_diary(player_ptr, DiaryKind::MAXDEAPTH, floor.dun_level);
}
}
switch (q_ptr->type) {
case QuestKindType::RANDOM:
if (record_rand_quest) {
- exe_write_diary_quest(player_ptr, DIARY_RAND_QUEST_C, quest_num);
+ exe_write_diary_quest(player_ptr, DiaryKind::RAND_QUEST_C, quest_num);
}
break;
default:
if (record_fix_quest) {
- exe_write_diary_quest(player_ptr, DIARY_FIX_QUEST_C, quest_num);
+ exe_write_diary_quest(player_ptr, DiaryKind::FIX_QUEST_C, quest_num);
}
break;
}
/* Record finishing a quest */
if (q_ptr->type == QuestKindType::RANDOM) {
if (record_rand_quest) {
- exe_write_diary_quest(player_ptr, DIARY_RAND_QUEST_F, leaving_quest);
+ exe_write_diary_quest(player_ptr, DiaryKind::RAND_QUEST_F, leaving_quest);
}
return;
}
if (record_fix_quest) {
- exe_write_diary_quest(player_ptr, DIARY_FIX_QUEST_F, leaving_quest);
+ exe_write_diary_quest(player_ptr, DiaryKind::FIX_QUEST_F, leaving_quest);
}
}
if (record_named_pet && em_ptr->m_ptr->is_named_pet()) {
const auto m2_name = monster_desc(player_ptr, em_ptr->m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_HEAL_LEPER, m2_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_HEAL_LEPER, m2_name);
}
delete_monster_idx(player_ptr, em_ptr->g_ptr->m_idx);
auto &r_ref = m_ptr->get_real_r_ref();
msg_format(_("%sとはぐれてしまった。", "You have lost sight of %s."), monster_desc(player_ptr, m_ptr, 0).data());
if (record_named_pet && m_ptr->is_named()) {
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_LOST_SIGHT, monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE));
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_LOST_SIGHT, monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE));
}
if (r_ref.cur_num) {
floor_ptr->object_level = floor_ptr->base_level;
floor_ptr->monster_level = floor_ptr->base_level;
if (record_stair) {
- exe_write_diary_quest(player_ptr, DIARY_TO_QUEST, floor_ptr->quest_number);
+ exe_write_diary_quest(player_ptr, DiaryKind::TO_QUEST, floor_ptr->quest_number);
}
get_mon_num_prep(player_ptr, get_monster_hook(player_ptr), nullptr);
init_flags = INIT_CREATE_DUNGEON;
continue;
}
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_MOVED, monster_desc(player_ptr, m_ptr, MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE));
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_MOVED, monster_desc(player_ptr, m_ptr, MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE));
}
}
player_ptr->current_floor_ptr->dun_level = command_arg;
leave_quest_check(player_ptr);
if (record_stair) {
- exe_write_diary(player_ptr, DIARY_PAT_TELE, 0);
+ exe_write_diary(player_ptr, DiaryKind::PAT_TELE, 0);
}
player_ptr->current_floor_ptr->quest_number = QuestId::NONE;
do_cmd_save_game(player_ptr, true);
}
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, _("落とし戸に落ちた", "fell through a trap door!"));
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, _("落とし戸に落ちた", "fell through a trap door!"));
prepare_change_floor_mode(player_ptr, CFM_SAVE_FLOORS | CFM_DOWN | CFM_RAND_PLACE | CFM_RAND_CONNECT);
player_ptr->leaving = true;
}
}
constexpr auto mes = _("ウィザードモードに突入してスコアを残せなくなった。", "gave up recording score to enter wizard mode.");
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, mes);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, mes);
w_ptr->noscore |= 0x0002;
}
}
constexpr auto mes = _("デバッグモードに突入してスコアを残せなくなった。", "gave up sending score to use debug commands.");
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, mes);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, mes);
w_ptr->noscore |= 0x0008;
}
term_putstr(45, hgt - 1, -1, TERM_RED, _("緊急セーブ...", "Panic save..."));
- exe_write_diary(p_ptr, DIARY_GAMESTART, 0, _("----ゲーム異常終了----", "-- Tried Panic Save and Aborted Game --"));
+ exe_write_diary(p_ptr, DiaryKind::GAMESTART, 0, _("----ゲーム異常終了----", "-- Tried Panic Save and Aborted Game --"));
term_fresh();
p_ptr->panic_save = 1;
}
}
-/**
+/*!
* @brief 日記にクエストに関するメッセージを追加する
- *
- * @param type 日記内容のID
+ * @param dk 日記内容のID
* @param num 日記内容のIDに応じた番号
* @return エラーコード
*/
-int exe_write_diary_quest(PlayerType *player_ptr, int type, QuestId num)
+int exe_write_diary_quest(PlayerType *player_ptr, DiaryKind dk, QuestId num)
{
static bool disable_diary = false;
bool do_level = true;
- switch (type) {
- case DIARY_FIX_QUEST_C: {
+ switch (dk) {
+ case DiaryKind::FIX_QUEST_C: {
if (any_bits(quest.flags, QUEST_FLAG_SILENT)) {
break;
}
fprintf(fff, mes, hour, min, note_level.data(), quest.name.data());
break;
}
- case DIARY_FIX_QUEST_F: {
+ case DiaryKind::FIX_QUEST_F: {
if (any_bits(quest.flags, QUEST_FLAG_SILENT)) {
break;
}
fprintf(fff, mes, hour, min, note_level.data(), quest.name.data());
break;
}
- case DIARY_RAND_QUEST_C: {
+ case DiaryKind::RAND_QUEST_C: {
constexpr auto mes = _(" %2d:%02d %20s ランダムクエスト(%s)を達成した。\n", " %2d:%02d %20s completed random quest '%s'\n");
fprintf(fff, mes, hour, min, note_level.data(), monraces_info[quest.r_idx].name.data());
break;
}
- case DIARY_RAND_QUEST_F: {
+ case DiaryKind::RAND_QUEST_F: {
constexpr auto mes = _(" %2d:%02d %20s ランダムクエスト(%s)から逃げ出した。\n", " %2d:%02d %20s ran away from quest '%s'.\n");
fprintf(fff, mes, hour, min, note_level.data(), monraces_info[quest.r_idx].name.data());
break;
}
- case DIARY_TO_QUEST: {
+ case DiaryKind::TO_QUEST: {
if (any_bits(quest.flags, QUEST_FLAG_SILENT)) {
break;
}
}
/*!
- * @brief 日記にメッセージを追加する /
- * Take note to the diary.
- * @param type 日記内容のID
+ * @brief 日記にメッセージを追加する
+ * @param dk 日記内容のID
* @param num 日記内容のIDに応じた数値
- * @param note 日記内容のIDに応じた文字列参照ポインタ
+ * @param note 日記内容のIDに応じた文字列
*/
-void exe_write_diary(PlayerType *player_ptr, int type, int num, std::string_view note)
+void exe_write_diary(PlayerType *player_ptr, DiaryKind dk, int num, std::string_view note)
{
static bool disable_diary = false;
const auto &floor = *player_ptr->current_floor_ptr;
const auto [q_idx, note_level] = write_floor(floor);
auto do_level = true;
- switch (type) {
- case DIARY_DIALY:
+ switch (dk) {
+ case DiaryKind::DIALY:
if (day < MAX_DAYS) {
fprintf(fff, _("%d日目\n", "Day %d\n"), day);
} else {
do_level = false;
break;
- case DIARY_DESCRIPTION:
+ case DiaryKind::DESCRIPTION:
if (num) {
fprintf(fff, "%s\n", note.data());
do_level = false;
}
break;
- case DIARY_ART: {
+ case DiaryKind::ART: {
constexpr auto mes = _(" %2d:%02d %20s %sを発見した。\n", " %2d:%02d %20s discovered %s.\n");
fprintf(fff, mes, hour, min, note_level.data(), note.data());
break;
}
- case DIARY_ART_SCROLL: {
+ case DiaryKind::ART_SCROLL: {
constexpr auto mes = _(" %2d:%02d %20s 巻物によって%sを生成した。\n", " %2d:%02d %20s created %s by scroll.\n");
fprintf(fff, mes, hour, min, note_level.data(), note.data());
break;
}
- case DIARY_UNIQUE: {
+ case DiaryKind::UNIQUE: {
constexpr auto mes = _(" %2d:%02d %20s %sを倒した。\n", " %2d:%02d %20s defeated %s.\n");
fprintf(fff, mes, hour, min, note_level.data(), note.data());
break;
}
- case DIARY_MAXDEAPTH: {
+ case DiaryKind::MAXDEAPTH: {
constexpr auto mes = _(" %2d:%02d %20s %sの最深階%d階に到達した。\n", " %2d:%02d %20s reached level %d of %s for the first time.\n");
const auto &dungeon = dungeons_info[floor.dungeon_idx];
fprintf(fff, mes, hour, min, note_level.data(), _(dungeon.name.data(), num), _(num, dungeon.name.data()));
break;
}
- case DIARY_TRUMP: {
+ case DiaryKind::TRUMP: {
constexpr auto mes = _(" %2d:%02d %20s %s%sの最深階を%d階にセットした。\n", " %2d:%02d %20s reset recall level of %s to %d %s.\n");
const auto &dungeon = dungeons_info[floor.dungeon_idx];
fprintf(fff, mes, hour, min, note_level.data(), note.data(), _(dungeon.name.data(), (int)max_dlv[num]), _((int)max_dlv[num], dungeon.name.data()));
break;
}
- case DIARY_STAIR: {
+ case DiaryKind::STAIR: {
auto to = inside_quest(q_idx) && (QuestType::is_fixed(q_idx) && !((q_idx == QuestId::OBERON) || (q_idx == QuestId::SERPENT)))
? _("地上", "the surface")
: !(player_ptr->current_floor_ptr->dun_level + num)
fprintf(fff, mes, hour, min, note_level.data(), _(to.data(), note.data()), _(note.data(), to.data()));
break;
}
- case DIARY_RECALL:
+ case DiaryKind::RECALL:
if (!num) {
constexpr auto mes = _(" %2d:%02d %20s 帰還を使って%sの%d階へ下りた。\n", " %2d:%02d %20s recalled to dungeon level %d of %s.\n");
const auto &dungeon = dungeons_info[floor.dungeon_idx];
}
break;
- case DIARY_TELEPORT_LEVEL: {
+ case DiaryKind::TELEPORT_LEVEL: {
constexpr auto mes = _(" %2d:%02d %20s レベル・テレポートで脱出した。\n", " %2d:%02d %20s got out using teleport level.\n");
fprintf(fff, mes, hour, min, note_level.data());
break;
}
- case DIARY_BUY: {
+ case DiaryKind::BUY: {
constexpr auto mes = _(" %2d:%02d %20s %sを購入した。\n", " %2d:%02d %20s bought %s.\n");
fprintf(fff, mes, hour, min, note_level.data(), note.data());
break;
}
- case DIARY_SELL: {
+ case DiaryKind::SELL: {
constexpr auto mes = _(" %2d:%02d %20s %sを売却した。\n", " %2d:%02d %20s sold %s.\n");
fprintf(fff, mes, hour, min, note_level.data(), note.data());
break;
}
- case DIARY_ARENA: {
+ case DiaryKind::ARENA: {
if (num < 0) {
int n = -num;
constexpr auto mes = _(" %2d:%02d %20s 闘技場の%d%s回戦で、%sの前に敗れ去った。\n", " %2d:%02d %20s beaten by %s in the %d%s fight.\n");
break;
}
- case DIARY_FOUND: {
+ case DiaryKind::FOUND: {
constexpr auto mes = _(" %2d:%02d %20s %sを識別した。\n", " %2d:%02d %20s identified %s.\n");
fprintf(fff, mes, hour, min, note_level.data(), note.data());
break;
}
- case DIARY_PAT_TELE: {
- auto to = !floor.is_in_dungeon()
+ case DiaryKind::PAT_TELE: {
+ const auto &floor_ref = *player_ptr->current_floor_ptr;
+ auto to = !floor_ref.is_in_dungeon()
? _("地上", "the surface")
: format(_("%d階(%s)", "level %d of %s"), floor.dun_level, dungeons_info[floor.dungeon_idx].name.data());
constexpr auto mes = _(" %2d:%02d %20s %sへとパターンの力で移動した。\n", " %2d:%02d %20s used Pattern to teleport to %s.\n");
fprintf(fff, mes, hour, min, note_level.data(), to.data());
break;
}
- case DIARY_LEVELUP: {
+ case DiaryKind::LEVELUP: {
constexpr auto mes = _(" %2d:%02d %20s レベルが%dに上がった。\n", " %2d:%02d %20s reached player level %d.\n");
fprintf(fff, mes, hour, min, note_level.data(), num);
break;
}
- case DIARY_GAMESTART: {
+ case DiaryKind::GAMESTART: {
time_t ct = time((time_t *)0);
do_level = false;
if (num) {
break;
}
- case DIARY_NAMED_PET:
+ case DiaryKind::NAMED_PET:
fprintf(fff, " %2d:%02d %20s ", hour, min, note_level.data());
write_diary_pet(fff, num, note.data());
break;
- case DIARY_WIZARD_LOG:
+ case DiaryKind::WIZARD_LOG:
fprintf(fff, "%s\n", note.data());
break;
default:
#include <string>
#endif
-#define DIARY_DIALY 0
-#define DIARY_DESCRIPTION 1
-#define DIARY_ART 2
-#define DIARY_UNIQUE 3
-#define DIARY_FIX_QUEST_C 4
-#define DIARY_FIX_QUEST_F 5
-#define DIARY_RAND_QUEST_C 6
-#define DIARY_RAND_QUEST_F 7
-#define DIARY_MAXDEAPTH 8
-#define DIARY_TRUMP 9
-#define DIARY_STAIR 10
-#define DIARY_RECALL 11
-#define DIARY_TO_QUEST 12
-#define DIARY_TELEPORT_LEVEL 13
-#define DIARY_BUY 14
-#define DIARY_SELL 15
-#define DIARY_ARENA 16
-#define DIARY_FOUND 17
-#define DIARY_LEVELUP 18
-#define DIARY_GAMESTART 19
-// 20は欠番.
-#define DIARY_NAMED_PET 21
-#define DIARY_PAT_TELE 22
-#define DIARY_ART_SCROLL 23
-#define DIARY_WIZARD_LOG 24
+enum class DiaryKind {
+ DIALY,
+ DESCRIPTION,
+ ART,
+ UNIQUE,
+ FIX_QUEST_C,
+ FIX_QUEST_F,
+ RAND_QUEST_C,
+ RAND_QUEST_F,
+ MAXDEAPTH,
+ TRUMP,
+ STAIR,
+ RECALL,
+ TO_QUEST,
+ TELEPORT_LEVEL,
+ BUY,
+ SELL,
+ ARENA,
+ FOUND,
+ LEVELUP,
+ GAMESTART,
+ NAMED_PET,
+ PAT_TELE,
+ ART_SCROLL,
+ WIZARD_LOG,
+};
#define RECORD_NAMED_PET_NAME 0
#define RECORD_NAMED_PET_UNNAME 1
#else
std::string get_ordinal_number_suffix(int num);
#endif
-int exe_write_diary_quest(PlayerType *player_ptr, int type, QuestId num);
-void exe_write_diary(PlayerType *player_ptr, int type, int num, std::string_view note = "");
+int exe_write_diary_quest(PlayerType *player_ptr, DiaryKind dk, QuestId num);
+void exe_write_diary(PlayerType *player_ptr, DiaryKind dk, int num, std::string_view note = "");
if (p_ptr->chp < 0) {
p_ptr->is_dead = false;
}
- exe_write_diary(p_ptr, DIARY_GAMESTART, 0, _("----ゲーム中断----", "---- Save and Exit Game ----"));
+ exe_write_diary(p_ptr, DiaryKind::GAMESTART, 0, _("----ゲーム中断----", "---- Save and Exit Game ----"));
p_ptr->panic_save = 1;
signals_ignore_tstp();
md_ptr->md_x = md_ptr->m_ptr->fx;
if (record_named_pet && md_ptr->m_ptr->is_named_pet()) {
const auto m_name = monster_desc(player_ptr, md_ptr->m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, 3, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, 3, m_name);
}
}
}
const auto m_name = monster_desc(player_ptr, md_ptr->m_ptr, MD_WRONGDOER_NAME);
- exe_write_diary(player_ptr, DIARY_ARENA, player_ptr->arena_number, m_name);
+ exe_write_diary(player_ptr, DiaryKind::ARENA, player_ptr->arena_number, m_name);
}
static void drop_corpse(PlayerType *player_ptr, monster_death_type *md_ptr)
add_winner_class(player_ptr->pclass);
RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TITLE);
play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FINAL_QUEST_CLEAR);
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, _("見事に変愚蛮怒の勝利者となった!", "finally became *WINNER* of Hengband!"));
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, _("見事に変愚蛮怒の勝利者となった!", "finally became *WINNER* of Hengband!"));
patron_list[player_ptr->chaos_patron].admire(player_ptr);
msg_print(_("*** おめでとう ***", "*** CONGRATULATIONS ***"));
msg_print(_("あなたはゲームをコンプリートしました。", "You have won the game!"));
if (record_named_pet && m_ptr->is_named_pet()) {
const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_COMPACT, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_COMPACT, m_name);
}
delete_monster_idx(player_ptr, i);
if (r_ref.kind_flags.has(MonsterKindType::UNIQUE) && record_destroy_uniq) {
std::stringstream ss;
ss << r_ref.name << (m_ptr->mflag2.has(MonsterConstantFlagType::CLONED) ? _("(クローン)", "(Clone)") : "");
- exe_write_diary(this->player_ptr, DIARY_UNIQUE, 0, ss.str());
+ exe_write_diary(this->player_ptr, DiaryKind::UNIQUE, 0, ss.str());
}
sound(SOUND_KILL);
if (record_named_pet && m_ptr->is_named_pet()) {
const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_LOSE_PARENT, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_LOSE_PARENT, m_name);
}
delete_monster_idx(player_ptr, m_idx);
q_ptr->copy_from(o_ptr);
q_ptr->number = 1;
const auto item_name = describe_flavor(player_ptr, q_ptr, OD_NAME_ONLY);
- exe_write_diary(player_ptr, DIARY_FOUND, 0, item_name);
+ exe_write_diary(player_ptr, DiaryKind::FOUND, 0, item_name);
}
/*!
if (!reward.empty()) {
const auto note = format(_("パトロンの報酬で%s", "The patron rewarded you with %s."), reward.data());
- exe_write_diary(this->player_ptr, DIARY_DESCRIPTION, 0, note);
+ exe_write_diary(this->player_ptr, DiaryKind::DESCRIPTION, 0, note);
}
}
msg_format(_("あなたは%sの前に敗れ去った。", "You are beaten by %s."), m_name.data());
msg_print(nullptr);
if (record_arena) {
- exe_write_diary(player_ptr, DIARY_ARENA, -1 - player_ptr->arena_number, m_name);
+ exe_write_diary(player_ptr, DiaryKind::ARENA, -1 - player_ptr->arena_number, m_name);
}
} else {
const auto q_idx = quest_number(floor, floor.dun_level);
w_ptr->total_winner = false;
if (winning_seppuku) {
add_retired_class(player_ptr->pclass);
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, _("勝利の後切腹した。", "committed seppuku after the winning."));
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, _("勝利の後切腹した。", "committed seppuku after the winning."));
} else {
std::string place;
#else
const auto note = format("killed by %s %s.", player_ptr->died_from.data(), place.data());
#endif
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, note);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, note);
}
- exe_write_diary(player_ptr, DIARY_GAMESTART, 1, _("-------- ゲームオーバー --------", "-------- Game Over --------"));
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, "\n\n\n\n");
+ exe_write_diary(player_ptr, DiaryKind::GAMESTART, 1, _("-------- ゲームオーバー --------", "-------- Game Over --------"));
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, "\n\n\n\n");
flush();
if (get_check_strict(player_ptr, _("画面を保存しますか?", "Dump the screen? "), CHECK_NO_HISTORY)) {
do_cmd_save_screen(player_ptr);
ss << _(hit_from, "was in a critical situation because of ");
ss << _("によってピンチに陥った。", hit_from);
ss << _("", ".");
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, ss.str());
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 0, ss.str());
}
if (auto_more) {
}
level_inc_stat = true;
- exe_write_diary(player_ptr, DIARY_LEVELUP, player_ptr->lev);
+ exe_write_diary(player_ptr, DiaryKind::LEVELUP, player_ptr->lev);
}
sound(SOUND_LEVEL);
const auto &m_ref = floor_ptr->m_list[gg_ptr->m_idx];
if (record_named_pet && m_ref.is_named_pet()) {
const auto m2_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_EARTHQUAKE, m2_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_EARTHQUAKE, m2_name);
}
}
if (record_rand_art) {
const auto diary_item_name = describe_flavor(player_ptr, o_ptr, OD_NAME_ONLY);
- exe_write_diary(player_ptr, DIARY_ART_SCROLL, 0, diary_item_name);
+ exe_write_diary(player_ptr, DiaryKind::ART_SCROLL, 0, diary_item_name);
}
chg_virtue(player_ptr, Virtue::ENCHANT, 1);
} else {
if (record_named_pet && m_ptr->is_named_pet()) {
const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_DESTROY, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_DESTROY, m_name);
}
/* Delete the monster (if any) */
} else {
if (record_named_pet && m_ptr->is_named_pet()) {
const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name);
}
delete_monster_idx(player_ptr, m_idx);
const auto item_name = describe_flavor(player_ptr, o_ptr, OD_NAME_ONLY);
if (record_fix_art && !old_known && o_ptr->is_fixed_artifact()) {
- exe_write_diary(player_ptr, DIARY_ART, 0, item_name);
+ exe_write_diary(player_ptr, DiaryKind::ART, 0, item_name);
}
if (record_rand_art && !old_known && o_ptr->is_random_artifact()) {
- exe_write_diary(player_ptr, DIARY_ART, 0, item_name);
+ exe_write_diary(player_ptr, DiaryKind::ART, 0, item_name);
}
return old_known;
if (record_named_pet && m_ptr->is_named()) {
const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_BLAST, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_BLAST, m_name);
}
delete_monster_idx(player_ptr, i);
}
if (record_stair) {
- exe_write_diary(player_ptr, DIARY_TELEPORT_LEVEL, 1);
+ exe_write_diary(player_ptr, DiaryKind::TELEPORT_LEVEL, 1);
}
if (autosave_l) {
if (m_idx <= 0) {
if (record_stair) {
- exe_write_diary(player_ptr, DIARY_TELEPORT_LEVEL, -1);
+ exe_write_diary(player_ptr, DiaryKind::TELEPORT_LEVEL, -1);
}
if (autosave_l) {
if (m_idx <= 0) {
if (record_stair) {
- exe_write_diary(player_ptr, DIARY_TELEPORT_LEVEL, -1);
+ exe_write_diary(player_ptr, DiaryKind::TELEPORT_LEVEL, -1);
}
if (autosave_l) {
if (m_idx <= 0) {
if (record_stair) {
- exe_write_diary(player_ptr, DIARY_TELEPORT_LEVEL, 1);
+ exe_write_diary(player_ptr, DiaryKind::TELEPORT_LEVEL, 1);
}
if (autosave_l) {
do_cmd_save_game(player_ptr, true);
QuestCompletionChecker(player_ptr, m_ptr).complete();
if (record_named_pet && m_ptr->is_named_pet()) {
const auto m2_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_TELE_LEVEL, m2_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_TELE_LEVEL, m2_name);
}
delete_monster_idx(player_ptr, m_idx);
if (get_check(_("ここは最深到達階より浅い階です。この階に戻って来ますか? ", "Reset recall depth? "))) {
max_dlv[floor.dungeon_idx] = floor.dun_level;
if (record_maxdepth) {
- exe_write_diary(player_ptr, DIARY_TRUMP, floor.dungeon_idx, _("帰還のときに", "when recalled from dungeon"));
+ exe_write_diary(player_ptr, DiaryKind::TRUMP, floor.dungeon_idx, _("帰還のときに", "when recalled from dungeon"));
}
}
}
max_dlv[player_ptr->recall_dungeon] = ((amt > dungeon.maxdepth) ? dungeon.maxdepth
: ((amt < dungeon.mindepth) ? dungeon.mindepth : amt));
if (record_maxdepth) {
- exe_write_diary(player_ptr, DIARY_TRUMP, select_dungeon, _("トランプタワーで", "at Trump Tower"));
+ exe_write_diary(player_ptr, DiaryKind::TRUMP, select_dungeon, _("トランプタワーで", "at Trump Tower"));
}
msg_print(_("回りの大気が張りつめてきた...", "The air about you becomes charged..."));
if (record_maxdepth) {
constexpr auto note = _("フロア・リセットで", "using a scroll of reset recall");
- exe_write_diary(player_ptr, DIARY_TRUMP, select_dungeon, note);
+ exe_write_diary(player_ptr, DiaryKind::TRUMP, select_dungeon, note);
}
#ifdef JP
msg_format("%sの帰還レベルを %d 階にセット。", dungeons_info[select_dungeon].name.data(), dummy);
record_turn = w_ptr->game_turn;
if (record_buy) {
- exe_write_diary(player_ptr, DIARY_BUY, 0, purchased_item_name);
+ exe_write_diary(player_ptr, DiaryKind::BUY, 0, purchased_item_name);
}
const auto diary_item_name = describe_flavor(player_ptr, o_ptr, OD_NAME_ONLY);
if (record_rand_art && o_ptr->is_random_artifact()) {
- exe_write_diary(player_ptr, DIARY_ART, 0, diary_item_name);
+ exe_write_diary(player_ptr, DiaryKind::ART, 0, diary_item_name);
}
j_ptr->inscription.reset();
msg_format(_("%sを $%dで売却しました。", "You sold %s for %d gold."), sold_item_name.data(), price);
if (record_sell) {
- exe_write_diary(player_ptr, DIARY_SELL, 0, sold_item_name);
+ exe_write_diary(player_ptr, DiaryKind::SELL, 0, sold_item_name);
}
if (!((tval == ItemKindType::FIGURINE) && (value > 0))) {
const auto mes = ss.str();
msg_print(mes);
if (cheat_diary_output) {
- exe_write_diary(player_ptr, DIARY_WIZARD_LOG, 0, mes);
+ exe_write_diary(player_ptr, DiaryKind::WIZARD_LOG, 0, mes);
}
}
if (record_named_pet && m_ptr->is_named_pet()) {
const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name);
}
delete_monster_idx(player_ptr, i);
if (record_named_pet && m_ptr->is_named_pet()) {
const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name);
+ exe_write_diary(player_ptr, DiaryKind::NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name);
}
delete_monster_idx(player_ptr, i);
player_ptr->wild_mode = false;
player_ptr->leaving = true;
constexpr auto note = _(" しかし、生き返った。", " but revived.");
- exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, note);
+ exe_write_diary(player_ptr, DiaryKind::DESCRIPTION, 1, note);
leave_floor(player_ptr);
}
player_ptr->recall_dungeon = floor_ptr->dungeon_idx;
}
if (record_stair) {
- exe_write_diary(player_ptr, DIARY_RECALL, floor_ptr->dun_level);
+ exe_write_diary(player_ptr, DiaryKind::RECALL, floor_ptr->dun_level);
}
floor_ptr->dun_level = 0;
msg_print(_("下に引きずり降ろされる感じがする!", "You feel yourself yanked downwards!"));
floor_ptr->dungeon_idx = player_ptr->recall_dungeon;
if (record_stair) {
- exe_write_diary(player_ptr, DIARY_RECALL, floor_ptr->dun_level);
+ exe_write_diary(player_ptr, DiaryKind::RECALL, floor_ptr->dun_level);
}
floor_ptr->dun_level = max_dlv[floor_ptr->dungeon_idx];
process_world_monsters();
if (!this->hour && !this->min) {
if (this->min != prev_min) {
- exe_write_diary(this->player_ptr, DIARY_DIALY, 0);
+ exe_write_diary(this->player_ptr, DiaryKind::DIALY, 0);
determine_daily_bounty(this->player_ptr, false);
}
}