--- /dev/null
+Param(
+ # パッケージに付加するバージョン
+ [parameter(Mandatory = $true)][string]$Version
+)
+
+# とりあえず Visual Studio Community 2019 用の MSBuild.exe にパスを通す
+# 他の環境でビルドを実行する方法は要調査・検討
+$msbuild_path = 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin'
+$Env:Path = $msbuild_path + ";" + $Env:Path
+
+
+function BuildPackage ($package_name, $package_unique_files, $build_conf) {
+ # バイナリをリビルド
+ MSBuild.exe .\Hengband\Hengband.sln /t:Rebuild /p:Configuration=$build_conf
+
+ if ($LASTEXITCODE -ne 0) {
+ # ビルド失敗ならスクリプトを中断する
+ exit
+ }
+
+ # 作業用テンポラリフォルダ
+ $tempDir = New-TemporaryFile | ForEach-Object { Remove-Item $_; New-Item $_ -ItemType Directory }
+
+ $hengbandDir = Join-Path $tempDir $package_name
+ New-Item $hengbandDir -ItemType Directory
+
+ # 必要なファイルをコピーして、その中で不要になりえるものを削除
+ Copy-Item -Verbose -Path .\Hengband.exe, .\readme_angband -Destination $hengbandDir
+ Copy-Item -Verbose -Path $package_unique_files -Destination $hengbandDir
+ Copy-Item -Verbose -Recurse -Path .\lib -Destination $hengbandDir -Exclude Makefile.am, delete.me, *.raw, .gitattributes
+ Copy-Item -Verbose -Path .\lib\apex\h_scores.raw -Destination $hengbandDir\lib\apex
+ Remove-Item -Verbose -Path $hengbandDir\lib\save\*, $hengbandDir\lib\user\*
+ Remove-Item -Verbose -Exclude music.cfg -Path $hengbandDir\lib\xtra\music\*
+
+ # zipアーカイブ作成
+ $package_path = Join-Path $(Get-Location) "${package_name}.zip"
+ Push-Location $tempDir
+ Compress-Archive -Force -Verbose -Path $package_name -DestinationPath $package_path
+ Pop-Location
+
+ # 作業用テンポラリフォルダ削除
+ $tempDir | Where-Object { Test-Path $_ } | ForEach-Object { Get-ChildItem $_ -File -Recurse | Remove-Item; $_ } | Remove-Item -Recurse
+}
+
+# 日本語版
+BuildPackage -package_name Hengband-$Version-jp -package_unique_files .\readme.txt, .\autopick.txt -build_conf Release
+BuildPackage -package_name Hengband-$Version-en -package_unique_files .\readme_eng.txt, .\autopick_eng.txt -build_conf English-Release
P:57:31
W:10:18:1:0:80:160:75:20:0x0000:0x0000
L:FLOOR:100:FLOOR:0:FLOOR:0:100
-A:GRANITE:98:SECRET_DOOR:2:GRANITE:0:GRANITE:GRANITE:MAGMA_VEIN:QUARTZ_VEIN
+A:GRANITE:100:GRANITE:0:GRANITE:0:GRANITE:GRANITE:MAGMA_VEIN:QUARTZ_VEIN
F:MAZE | SMALLEST | FORGET
F:MONSTER_DIV_64 | FINAL_GUARDIAN_1034 | FINAL_OBJECT_354
--- /dev/null
+/*.wav
+/*.mid
+/*.mp3
+/*.ogg
+/music_debug.cfg
update_creature(creature_ptr);
creature_ptr->redraw |= (PR_STATE);
update_output(creature_ptr);
- if (need_term_fresh())
+ if (need_term_fresh(creature_ptr))
term_fresh();
}
\ No newline at end of file
Term->scr->cu = cu;
Term->scr->cv = cv;
- if (need_term_fresh())
+ if (need_term_fresh(creature_ptr))
term_fresh();
C_KILL(who, current_world_ptr->max_m_idx, MONSTER_IDX);
char dummy[MAX_NLEN + 100];
describe_flavor(creature_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
sprintf(dummy,
- _("%sを装備すると吸血鬼になります。よろしいですか?", "%s will transform you into a vampire permanently when equiped. Do you become a vampire?"),
+ _("%sを装備すると吸血鬼になります。よろしいですか?", "%s will transform you into a vampire permanently when equipped. Do you become a vampire?"),
o_name);
if (!get_check(dummy))
}
}
+bool continuous_action_running(player_type *creature_ptr)
+{
+ return creature_ptr->running || travel.run || command_rep || (creature_ptr->action == ACTION_REST) || (creature_ptr->action == ACTION_FISH);
+}
+
/*!
* @brief プレイヤーの行動処理 / Process the player
* @return なし
process_fishing(creature_ptr);
if (check_abort) {
- if (creature_ptr->running || travel.run || command_rep || (creature_ptr->action == ACTION_REST) || (creature_ptr->action == ACTION_FISH)) {
+ if (continuous_action_running(creature_ptr)) {
inkey_scan = TRUE;
if (inkey()) {
flush();
creature_ptr->enchant_energy_need += ENERGY_NEED();
}
-}
\ No newline at end of file
+}
extern bool load; /*!<ロード処理中の分岐フラグ*/
extern bool can_save;
+bool continuous_action_running(player_type *creature_ptr);
void process_player(player_type *creature_ptr);
void process_upkeep_with_speed(player_type *creature_ptr);
{
if (!player_ptr->window)
return;
-
- if (!need_term_fresh())
- return;
-
+
BIT_FLAGS mask = 0L;
for (int j = 0; j < 8; j++) {
if (angband_term[j])
if (!player_ptr->window)
return;
- if (player_ptr->window & (PW_INVEN)) {
+ if (need_term_fresh(player_ptr) && player_ptr->window & (PW_INVEN)) {
player_ptr->window &= ~(PW_INVEN);
fix_inventory(player_ptr, 0); // TODO:2.2.2 まともなtval参照手段を確保
}
- if (player_ptr->window & (PW_EQUIP)) {
+ if (need_term_fresh(player_ptr) && player_ptr->window & (PW_EQUIP)) {
player_ptr->window &= ~(PW_EQUIP);
fix_equip(player_ptr, 0); // TODO:2.2.2 まともなtval参照手段を確保
}
- if (player_ptr->window & (PW_SPELL)) {
+ if (need_term_fresh(player_ptr) && player_ptr->window & (PW_SPELL)) {
player_ptr->window &= ~(PW_SPELL);
fix_spell(player_ptr);
}
- if (player_ptr->window & (PW_PLAYER)) {
+ if (need_term_fresh(player_ptr) && player_ptr->window & (PW_PLAYER)) {
player_ptr->window &= ~(PW_PLAYER);
fix_player(player_ptr);
}
if (player_ptr->window & (PW_MONSTER_LIST)) {
- player_ptr->window &= ~(PW_MONSTER_LIST);
- fix_monster_list(player_ptr);
+ if (need_term_fresh)
+ player_ptr->window &= ~(PW_MONSTER_LIST);
+ fix_monster_list(player_ptr); //need this side-effect for work targetting collect
}
- if (player_ptr->window & (PW_MESSAGE)) {
+ if (need_term_fresh(player_ptr) && player_ptr->window & (PW_MESSAGE)) {
player_ptr->window &= ~(PW_MESSAGE);
fix_message();
}
- if (player_ptr->window & (PW_OVERHEAD)) {
+ if (need_term_fresh(player_ptr) && player_ptr->window & (PW_OVERHEAD)) {
player_ptr->window &= ~(PW_OVERHEAD);
fix_overhead(player_ptr);
}
- if (player_ptr->window & (PW_DUNGEON)) {
+ if (need_term_fresh(player_ptr) && player_ptr->window & (PW_DUNGEON)) {
player_ptr->window &= ~(PW_DUNGEON);
fix_dungeon(player_ptr);
}
- if (player_ptr->window & (PW_MONSTER)) {
+ if (need_term_fresh(player_ptr) && player_ptr->window & (PW_MONSTER)) {
player_ptr->window &= ~(PW_MONSTER);
fix_monster(player_ptr);
}
- if (player_ptr->window & (PW_OBJECT)) {
+ if (need_term_fresh(player_ptr) && player_ptr->window & (PW_OBJECT)) {
player_ptr->window &= ~(PW_OBJECT);
fix_object(player_ptr);
}
player_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
player_ptr->update |= (PU_COMBINE | PU_REORDER);
handle_stuff(player_ptr);
- if (need_term_fresh())
+ if (need_term_fresh(player_ptr))
term_fresh();
if (quest_num
handle_stuff(player_ptr);
move_cursor_relative(player_ptr->y, player_ptr->x);
- if (need_term_fresh())
+ if (need_term_fresh(player_ptr))
term_fresh();
if (!player_ptr->playing || player_ptr->is_dead)
handle_stuff(player_ptr);
move_cursor_relative(player_ptr->y, player_ptr->x);
- if (need_term_fresh())
+ if (need_term_fresh(player_ptr))
term_fresh();
if (!player_ptr->playing || player_ptr->is_dead)
handle_stuff(player_ptr);
move_cursor_relative(player_ptr->y, player_ptr->x);
- if (need_term_fresh()) {
+ if (need_term_fresh(player_ptr)) {
term_fresh();
}
em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
}
- msg_format(_("%sを見つめた。", "You stare into %s."), em_ptr->m_name);
+ msg_format(_("%sを見つめた。", "You stare at %s."), em_ptr->m_name);
if (common_saving_throw_charm(caster_ptr, em_ptr->dam, em_ptr->m_ptr) || !monster_living(em_ptr->m_ptr->r_idx)) {
em_ptr->note = _("には効果がなかった。", " is unaffected.");
msg_format(_("うまく捕まえられなかった。", "You failed to capture %s."), em_ptr->m_name);
em_ptr->skipped = TRUE;
return PROCESS_CONTINUE;
-}
\ No newline at end of file
+}
if (ep_ptr->who > 0)
msg_format(_("%^sに精神エネルギーを吸い取られてしまった!", "%^s draws psychic energy from you!"), ep_ptr->m_name);
else
- msg_print(_("精神エネルギーを吸い取られてしまった!", "Your psychic energy is drawn!"));
+ msg_print(_("精神エネルギーを吸い取られてしまった!", "Your psychic energy is drained!"));
if (ep_ptr->dam >= target_ptr->csp) {
ep_ptr->dam = target_ptr->csp;
gx[grids] = x;
grids++;
- if (!blind && !(flag & (PROJECT_HIDE))) {
- if (panel_contains(y, x) && player_has_los_bold(caster_ptr, y, x)) {
- u16b p = bolt_pict(oy, ox, y, x, typ);
- TERM_COLOR a = PICT_A(p);
- SYMBOL_CODE c = PICT_C(p);
- print_rel(caster_ptr, c, a, y, x);
- move_cursor_relative(y, x);
- if (need_term_fresh()) {
+ if (msec > 0) {
+ if (!blind && !(flag & (PROJECT_HIDE))) {
+ if (panel_contains(y, x) && player_has_los_bold(caster_ptr, y, x)) {
+ u16b p = bolt_pict(oy, ox, y, x, typ);
+ TERM_COLOR a = PICT_A(p);
+ SYMBOL_CODE c = PICT_C(p);
+ print_rel(caster_ptr, c, a, y, x);
+ move_cursor_relative(y, x);
term_fresh();
term_xtra(TERM_XTRA_DELAY, msec);
lite_spot(caster_ptr, y, x);
term_fresh();
- }
- if (flag & (PROJECT_BEAM)) {
- p = bolt_pict(y, x, y, x, typ);
- a = PICT_A(p);
- c = PICT_C(p);
- print_rel(caster_ptr, c, a, y, x);
- }
+ if (flag & (PROJECT_BEAM)) {
+ p = bolt_pict(y, x, y, x, typ);
+ a = PICT_A(p);
+ c = PICT_C(p);
+ print_rel(caster_ptr, c, a, y, x);
+ }
- visual = TRUE;
- } else if (visual) {
- term_xtra(TERM_XTRA_DELAY, msec);
+ visual = TRUE;
+ } else if (visual) {
+ term_xtra(TERM_XTRA_DELAY, msec);
+ }
}
}
gx[grids] = x;
grids++;
{
- if (panel_contains(y, x) && player_has_los_bold(caster_ptr, y, x)) {
- u16b p;
- TERM_COLOR a;
- SYMBOL_CODE c;
- p = bolt_pict(oy, ox, y, x, typ);
- a = PICT_A(p);
- c = PICT_C(p);
- print_rel(caster_ptr, c, a, y, x);
- move_cursor_relative(y, x);
- term_fresh();
- term_xtra(TERM_XTRA_DELAY, msec);
- lite_spot(caster_ptr, y, x);
- term_fresh();
- if (flag & (PROJECT_BEAM)) {
- p = bolt_pict(y, x, y, x, typ);
+ if (msec > 0) {
+ if (panel_contains(y, x) && player_has_los_bold(caster_ptr, y, x)) {
+ u16b p;
+ TERM_COLOR a;
+ SYMBOL_CODE c;
+ p = bolt_pict(oy, ox, y, x, typ);
a = PICT_A(p);
c = PICT_C(p);
print_rel(caster_ptr, c, a, y, x);
- }
+ move_cursor_relative(y, x);
+ term_fresh();
+ term_xtra(TERM_XTRA_DELAY, msec);
+ lite_spot(caster_ptr, y, x);
+ term_fresh();
+ if (flag & (PROJECT_BEAM)) {
+ p = bolt_pict(y, x, y, x, typ);
+ a = PICT_A(p);
+ c = PICT_C(p);
+ print_rel(caster_ptr, c, a, y, x);
+ }
- visual = TRUE;
- } else if (visual) {
- term_xtra(TERM_XTRA_DELAY, msec);
+ visual = TRUE;
+ } else if (visual) {
+ term_xtra(TERM_XTRA_DELAY, msec);
+ }
}
}
grids++;
}
- if (!blind && !(flag & (PROJECT_HIDE | PROJECT_FAST))) {
- if (panel_contains(y, x) && player_has_los_bold(caster_ptr, y, x)) {
- u16b p;
- TERM_COLOR a;
- SYMBOL_CODE c;
- p = bolt_pict(oy, ox, y, x, typ);
- a = PICT_A(p);
- c = PICT_C(p);
- print_rel(caster_ptr, c, a, y, x);
- move_cursor_relative(y, x);
- term_fresh();
- term_xtra(TERM_XTRA_DELAY, msec);
- lite_spot(caster_ptr, y, x);
- term_fresh();
- if (flag & (PROJECT_BEAM)) {
- p = bolt_pict(y, x, y, x, typ);
+ if (msec > 0) {
+ if (!blind && !(flag & (PROJECT_HIDE | PROJECT_FAST))) {
+ if (panel_contains(y, x) && player_has_los_bold(caster_ptr, y, x)) {
+ u16b p;
+ TERM_COLOR a;
+ SYMBOL_CODE c;
+ p = bolt_pict(oy, ox, y, x, typ);
a = PICT_A(p);
c = PICT_C(p);
print_rel(caster_ptr, c, a, y, x);
- }
+ move_cursor_relative(y, x);
+ term_fresh();
+ term_xtra(TERM_XTRA_DELAY, msec);
+ lite_spot(caster_ptr, y, x);
+ term_fresh();
+ if (flag & (PROJECT_BEAM)) {
+ p = bolt_pict(y, x, y, x, typ);
+ a = PICT_A(p);
+ c = PICT_C(p);
+ print_rel(caster_ptr, c, a, y, x);
+ }
- visual = TRUE;
- } else if (visual) {
- term_xtra(TERM_XTRA_DELAY, msec);
+ visual = TRUE;
+ } else if (visual) {
+ term_xtra(TERM_XTRA_DELAY, msec);
+ }
}
}
}
if (!grids)
return FALSE;
- if (!blind && !(flag & (PROJECT_HIDE))) {
+ if (!blind && !(flag & (PROJECT_HIDE)) && (msec > 0)) {
for (int t = 0; t <= gm_rad; t++) {
for (int i = gm[t]; i < gm[t + 1]; i++) {
y = gy[i];
}
move_cursor_relative(by, bx);
-
- if (need_term_fresh())
- term_fresh();
+ term_fresh();
if (visual || drawn) {
term_xtra(TERM_XTRA_DELAY, msec);
}
}
move_cursor_relative(by, bx);
- if (need_term_fresh())
+ if (need_term_fresh(caster_ptr))
term_fresh();
}
}
}
return (notice);
-}
\ No newline at end of file
+}
challanger_ptr->exit_bldg = TRUE;
challanger_ptr->arena_number++;
- msg_print(_("相手は欠場した。あなたの不戦勝だ。", "The enemy is unable appear. You won by default."));
+ msg_print(_("相手は欠場した。あなたの不戦勝だ。", "The enemy is unable to appear. You won by default."));
}
/*!
if (monster_csleep_remaining(m_ptr) || (m_ptr->cdis > MAX_SIGHT) || !is_hostile(m_ptr))
continue;
- msg_print(_("敵がすぐ近くにいるときは広域マップに入れない!", "You cannot enter global map, since there is some monsters nearby!"));
+ msg_print(_("敵がすぐ近くにいるときは広域マップに入れない!", "You cannot enter global map, since there are some monsters nearby!"));
free_turn(creature_ptr);
return FALSE;
}
{ &fresh_message, FALSE, OPT_PAGE_MAPSCREEN, 1, 25, "fresh_message", _("メッセージの後に画面を再描画する", "Flush output after every message") },
- { &hilite_player, FALSE, OPT_PAGE_MAPSCREEN, 1, 27, "hilite_player", _("プレイヤーにカーソルを合わせる", "Hilite the player with the cursor") },
+ { &hilite_player, FALSE, OPT_PAGE_MAPSCREEN, 1, 27, "hilite_player", _("プレイヤーにカーソルを合わせる", "Highlight the player with the cursor") },
{ &display_path, FALSE, OPT_PAGE_MAPSCREEN, 2, 8, "display_path", _("魔法や矢の軌跡を表示する", "Display actual path before shooting") },
o_ptr = &creature_ptr->inventory_list[i_keep];
describe_flavor(creature_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
- msg_format(_("%sがテレポートの能力を発動させようとしている。", "Your %s is activating teleportation."), o_name);
+ msg_format(_("%sがテレポートの能力を発動させようとしている。", "Your %s tries to teleport you."), o_name);
if (get_check_strict(creature_ptr, _("テレポートしますか?", "Teleport? "), CHECK_OKAY_CANCEL)) {
disturb(creature_ptr, FALSE, TRUE);
teleport_player(creature_ptr, 50, TELEPORT_SPONTANEOUS);
if (summon_specific(creature_ptr, 0, creature_ptr->y, creature_ptr->x, floor_ptr->dun_level, SUMMON_DRAGON, call_type)) {
GAME_TEXT o_name[MAX_NLEN];
describe_flavor(creature_ptr, o_name, choose_cursed_obj_name(creature_ptr, TRC_CALL_DRAGON), obj_desc_type);
- msg_format(_("%sがドラゴンを引き寄せた!", "Your %s has attracted an dragon!"), o_name);
+ msg_format(_("%sがドラゴンを引き寄せた!", "Your %s has attracted a dragon!"), o_name);
disturb(creature_ptr, FALSE, TRUE);
}
}
#ifdef JP
errstr = "エラー: プロキシのアドレスが不正です";
#else
- errstr = "Error : wrong proxy addres";
+ errstr = "Error : wrong proxy address";
#endif
restore_signal();
#ifdef JP
errstr = "エラー: サーバのアドレスが不正です";
#else
- errstr = "Error : wrong server adress";
+ errstr = "Error : wrong server address";
#endif
restore_signal();
msg_flag = FALSE;
num_more = 0;
inkey_flag = TRUE;
- if (need_term_fresh()) {
+ if (need_term_fresh(player_ptr)) {
term_fresh();
}
cmd = inkey();
* Description of each monster group.
*/
concptr object_group_text[MAX_OBJECT_GROUP_TEXT] = { _("キノコ", "Mushrooms"), _("薬", "Potions"), _("油つぼ", "Flasks"), _("巻物", "Scrolls"),
- _("指輪", "Rings"), _("アミュレット", "Amulets"), _("笛", "Whistle"), _("光源", "Lanterns"), _("魔法棒", "Wands"), _("杖", "Staffs"), _("ロッド", "Rods"),
- _("カード", "Cards"), _("モンスター・ボール", "Capture Balls"), _("羊皮紙", "Parchments"), _("くさび", "Spikes"), _("箱", "Boxs"), _("人形", "Figurines"),
- _("像", "Statues"), _("ゴミ", "Junks"), _("空のビン", "Bottles"), _("骨", "Skeletons"), _("死体", "Corpses"), _("刀剣類", "Swords"),
+ _("指輪", "Rings"), _("アミュレット", "Amulets"), _("笛", "Whistles"), _("光源", "Lanterns"), _("魔法棒", "Wands"), _("杖", "Staffs"), _("ロッド", "Rods"),
+ _("カード", "Cards"), _("モンスター・ボール", "Capture Balls"), _("羊皮紙", "Parchments"), _("くさび", "Spikes"), _("箱", "Boxes"), _("人形", "Figurines"),
+ _("像", "Statues"), _("ゴミ", "Junk"), _("空のビン", "Bottles"), _("骨", "Skeletons"), _("死体", "Corpses"), _("刀剣類", "Swords"),
_("鈍器", "Blunt Weapons"), _("長柄武器", "Polearms"), _("採掘道具", "Diggers"), _("飛び道具", "Bows"), _("弾", "Shots"), _("矢", "Arrows"),
_("ボルト", "Bolts"), _("軽装鎧", "Soft Armor"), _("重装鎧", "Hard Armor"), _("ドラゴン鎧", "Dragon Armor"), _("盾", "Shields"), _("クローク", "Cloaks"),
_("籠手", "Gloves"), _("ヘルメット", "Helms"), _("冠", "Crowns"), _("ブーツ", "Boots"), _("魔法書", "Spellbooks"), _("財宝", "Treasure"),
}
if (lore_ptr->a_ability_flags2 & (RF6_WORLD)) {
- lore_ptr->vp[lore_ptr->vn] = _("時を止める", "stop the time");
+ lore_ptr->vp[lore_ptr->vn] = _("時を止める", "stop time");
lore_ptr->color[lore_ptr->vn++] = TERM_L_BLUE;
}
char *zz[SAMPLE_MUSIC_MAX];
char key[80];
- path_build(ini_path, 1024, ANGBAND_DIR_XTRA_MUSIC, "music.cfg");
- GetPrivateProfileString("Device", "type", "", mci_device_type, 256, ini_path);
+ path_build(ini_path, 1024, ANGBAND_DIR_XTRA_MUSIC, "music_debug.cfg");
+ if (GetPrivateProfileString("Device", "type", "", mci_device_type, 256, ini_path) == 0) {
+ path_build(ini_path, 1024, ANGBAND_DIR_XTRA_MUSIC, "music.cfg");
+ GetPrivateProfileString("Device", "type", "", mci_device_type, 256, ini_path);
+ }
+
for (int i = 0; i < MUSIC_BASIC_MAX; i++) {
GetPrivateProfileString("Basic", angband_music_basic_name[i], "", tmp, 1024, ini_path);
int num = tokenize_whitespace(tmp, SAMPLE_MUSIC_MAX, zz);
u16b p = bolt_pict(y, x, y, x, GF_MANA);
print_rel(caster_ptr, PICT_C(p), PICT_A(p), y, x);
move_cursor_relative(y, x);
- if (need_term_fresh()) {
+ if (need_term_fresh(caster_ptr)) {
term_fresh();
term_xtra(TERM_XTRA_DELAY, msec);
}
describe_flavor(player_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
msg_format(_("%sは%s光った。", "%s glows %s."), o_name, color);
} else {
- msg_format(_("%s光る物が頭に浮かんだ。", "An %s image forms in your mind."), color);
+ msg_format(_("%s光る物が頭に浮かんだ。", "A %s image forms in your mind."), color);
}
}
if (is_seen(player_ptr, md_ptr->m_ptr)) {
GAME_TEXT m_name[MAX_NLEN];
monster_desc(player_ptr, m_name, md_ptr->m_ptr, MD_NONE);
- msg_format(_("%sは手榴弾を抱えて自爆した!", "%^s broke himself with grenades!"), m_name);
+ msg_format(_("%sは手榴弾を抱えて自爆した!", "%^s blew himself up with grenades!"), m_name);
}
(void)project(player_ptr, md_ptr->m_idx, 3, md_ptr->md_y, md_ptr->md_x, damroll(20, 10), GF_FIRE, PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL, -1);
GAME_TEXT m_name[MAX_NLEN];
monster_desc(player_ptr, m_name, md_ptr->m_ptr, MD_NONE);
if (notice) {
- msg_format(_("%sが再生した!", "The %s was reproduced!"), m_name);
+ msg_format(_("%sが再生した!", "The %s reproduced!"), m_name);
sound(SOUND_SUMMON);
}
}
case RF6_SPELL_START + 8: spell_RF6_TELE_TO(target_ptr, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_TO */
case RF6_SPELL_START + 9: spell_RF6_TELE_AWAY(target_ptr, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_AWAY */
case RF6_SPELL_START + 10: spell_RF6_TELE_LEVEL(target_ptr, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_LEVEL */
- case RF6_SPELL_START + 11: spell_RF6_PSY_SPEAR(target_ptr, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_PSY_SPEAR */
+ case RF6_SPELL_START + 11: return spell_RF6_PSY_SPEAR(target_ptr, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_PSY_SPEAR */
case RF6_SPELL_START + 12: spell_RF6_DARKNESS(target_ptr, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_DARKNESS */
case RF6_SPELL_START + 13: spell_RF6_TRAPS(target_ptr, y, x, m_idx); break; /* RF6_TRAPS */
case RF6_SPELL_START + 14: spell_RF6_FORGET(target_ptr, m_idx); break; /* RF6_FORGET */
caster_ptr->redraw |= (PR_HP);
caster_ptr->window |= (PW_PLAYER);
handle_stuff(caster_ptr);
- if (need_term_fresh())
+ if (need_term_fresh(caster_ptr))
term_fresh();
int msec = delay_factor * delay_factor * delay_factor;
Term->scr->cu = cu;
Term->scr->cv = cv;
- if (need_term_fresh())
+ if (need_term_fresh(caster_ptr))
term_fresh();
if (probe) {
*/
#include "term/z-term.h"
+#include "core/player-processor.h"
#include "game-option/map-screen-options.h"
#include "game-option/runtime-arguments.h"
#include "game-option/special-options.h"
+#include "io/input-key-requester.h"
#include "term/gameterm.h"
#include "term/term-color-types.h"
#include "term/z-virt.h"
return diff < -1 || 1 < diff;
}
-bool need_term_fresh(void) { return !macro_running() || fresh_after; }
+bool need_term_fresh(player_type *player_ptr) { return (!macro_running() && !continuous_action_running(player_ptr)) || fresh_after; }
+
/*
* @brief Actually perform all requested changes to the window
*/
C_KILL(t->key_queue, t->key_size, char);
return 0;
}
-#endif
\ No newline at end of file
+#endif
concptr tcp); //!< タイル描画実装部 / Hook for drawing a sequence of special attr / char pairs
} term_type;
+typedef struct player_type player_type;
+
/**** Available Constants ****/
/*
void term_queue_bigchar(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c, TERM_COLOR ta, char tc);
void term_queue_line(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR *a, char *c, TERM_COLOR *ta, char *tc);
-bool need_term_fresh(void);
+
+bool need_term_fresh(player_type *player_ptr);
errr term_fresh(void);
errr term_set_cursor(int v);
term_activate(angband_term[j]);
display_spell_list(player_ptr);
- if (need_term_fresh()) {
+ if (need_term_fresh(player_ptr)) {
term_fresh();
player_ptr->window &= ~(PW_SPELL);
}
term_clear();
target_set_prepare(player_ptr, TARGET_LOOK);
print_monster_list(player_ptr->current_floor_ptr, 0, 0, h);
- term_fresh();
+ if (need_term_fresh(player_ptr))
+ term_fresh();
term_activate(old);
}
}
}
prt(format(q, i, correct, matches, better, worse, other), 0, 0);
- if (need_term_fresh())
+ if (need_term_fresh(caster_ptr))
term_fresh();
}