From adfd0a10b3e0c745b0c7bab5301d647bcd2abe44 Mon Sep 17 00:00:00 2001 From: Hourier Date: Sun, 5 Jul 2020 23:09:55 +0900 Subject: [PATCH] [Refactor] #40498 Separated player-update-types.h from player-status.h --- Hengband/Hengband/Hengband.vcxproj | 1 + Hengband/Hengband/Hengband.vcxproj.filters | 3 + src/Makefile.am | 1 + src/autopick/autopick-destroyer.c | 3 +- src/autopick/autopick-util.c | 1 + src/birth/birth-wizard.c | 1 + src/birth/quick-start.c | 1 + src/cmd-action/cmd-attack.c | 1 + src/cmd-action/cmd-hissatsu.c | 1 + src/cmd-action/cmd-pet.c | 1 + src/cmd-action/cmd-spell.c | 1 + src/cmd-building/cmd-building.c | 1 + src/cmd-item/cmd-activate.c | 1 + src/cmd-item/cmd-eat.c | 1 + src/cmd-item/cmd-item.c | 1 + src/cmd-item/cmd-read.c | 1 + src/cmd-item/cmd-smith.c | 1 + src/cmd-item/cmd-usestaff.c | 1 + src/cmd-item/cmd-zaprod.c | 1 + src/cmd-item/cmd-zapwand.c | 1 + src/cmd-visual/cmd-draw.c | 1 + src/cmd/cmd-basic.c | 1 + src/combat/shoot.c | 1 + src/core/game-play.c | 1 + src/core/hp-mp-regenerator.c | 1 + src/core/player-processor.c | 1 + src/core/player-update-types.h | 21 + src/core/stuff-handler.c | 1 + src/dungeon/dungeon-processor.c | 1 + src/dungeon/quest.c | 1 + src/effect/effect-feature.c | 1 + src/effect/effect-player-resist-hurt.c | 1 + src/floor/floor-events.c | 1 + src/floor/floor.c | 1 + src/inventory/inventory-curse.c | 1 + src/inventory/inventory-object.c | 1 + src/io/cursor.c | 1 + src/io/input-key-processor.c | 1 + src/io/screen-util.c | 1 + src/io/targeting.c | 3463 ++++++++++++++-------------- src/market/building-craft-fix.c | 1 + src/market/building-craft-weapon.c | 1 + src/market/building-recharger.c | 1 + src/mind/mind-force-trainer.c | 1 + src/mind/mind-magic-resistance.c | 1 + src/mind/mind-mindcrafter.c | 1 + src/mind/mind-mirror-master.c | 1 + src/mind/mind-samurai.c | 1 + src/mind/mind-sniper.c | 1 + src/mind/mind.c | 1 + src/mind/racial-kutar.c | 1 + src/mind/racial.c | 1 + src/monster-attack/monster-attack-player.c | 1 + src/monster-attack/monster-attack-status.c | 1 + src/monster-attack/monster-eating.c | 1 + src/monster-floor/monster-death.c | 1 + src/monster-floor/monster-move.c | 1 + src/monster-floor/monster-remover.c | 1 + src/monster-floor/one-monster-placer.c | 1 + src/monster/monster-list.c | 1 + src/monster/monster-processor.c | 1 + src/monster/monster-status.c | 1 + src/monster/monster-update.c | 1 + src/mspell/mspell-dispel.c | 1 + src/mspell/mspell-floor.c | 1 + src/mspell/mspell-special.c | 1 + src/mutation/mutation.c | 3 +- src/object-enchant/object-curse.c | 1 + src/object-hook/hook-expendable.c | 1 + src/object-potion/quaff-execution.c | 1 + src/object/lite-processor.c | 1 + src/perception/simple-perception.c | 1 + src/pet/pet-fall-off.c | 1 + src/pet/pet-util.c | 1 + src/player-attack/player-attack.c | 1 + src/player/avatar.c | 1 + src/player/digestion-processor.c | 1 + src/player/eldritch-horror.c | 1 + src/player/player-damage.c | 1 + src/player/player-move.c | 1 + src/player/player-status.c | 1 + src/player/player-status.h | 18 - src/player/process-death.c | 1 + src/realm/realm-hex.c | 1 + src/realm/realm-hissatsu.c | 1 + src/realm/realm-song.c | 1 + src/savedata/save.c | 1 + src/spell-kind/earthquake.c | 1 + src/spell-kind/spells-curse-removal.c | 1 + src/spell-kind/spells-equipment.c | 1 + src/spell-kind/spells-fetcher.c | 1 + src/spell-kind/spells-floor.c | 1 + src/spell-kind/spells-neighbor.c | 1 + src/spell-kind/spells-perception.c | 1 + src/spell-kind/spells-sight.c | 1 + src/spell-kind/spells-teleport.c | 1 + src/spell-realm/spells-chaos.c | 1 + src/spell-realm/spells-craft.c | 1 + src/spell-realm/spells-crusade.c | 1 + src/spell-realm/spells-demon.c | 1 + src/spell-realm/spells-hex.c | 1 + src/spell-realm/spells-song.c | 1 + src/spell/spells-object.c | 1 + src/spell/spells-status.c | 1 + src/status/action-setter.c | 1 + src/status/bad-status-setter.c | 1 + src/status/base-status.c | 1 + src/status/body-improvement.c | 1 + src/status/buff-setter.c | 1 + src/status/form-changer.c | 1 + src/status/shape-changer.c | 1 + src/status/sight-setter.c | 1 + src/status/temporary-resistance.c | 1 + src/store/store.c | 1 + src/wizard/wizard-special-process.c | 1 + 115 files changed, 1809 insertions(+), 1811 deletions(-) create mode 100644 src/core/player-update-types.h diff --git a/Hengband/Hengband/Hengband.vcxproj b/Hengband/Hengband/Hengband.vcxproj index 7cd8b56d0..4bbeb3691 100644 --- a/Hengband/Hengband/Hengband.vcxproj +++ b/Hengband/Hengband/Hengband.vcxproj @@ -716,6 +716,7 @@ + diff --git a/Hengband/Hengband/Hengband.vcxproj.filters b/Hengband/Hengband/Hengband.vcxproj.filters index c54b2b6b5..568fabf86 100644 --- a/Hengband/Hengband/Hengband.vcxproj.filters +++ b/Hengband/Hengband/Hengband.vcxproj.filters @@ -3634,6 +3634,9 @@ savedata + + core + diff --git a/src/Makefile.am b/src/Makefile.am index 2c2e761cb..4554af0f8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -113,6 +113,7 @@ hengband_SOURCES = \ core/magic-effects-timeout-reducer.c core/magic-effects-timeout-reducer.h \ core/output-updater.c core/output-updater.h \ core/player-processor.c core/player-processor.h \ + core/player-update-types.h \ core/scores.c core/scores.h \ core/show-file.c core/show-file.h \ core/special-internal-keys.h \ diff --git a/src/autopick/autopick-destroyer.c b/src/autopick/autopick-destroyer.c index 3ff3e982c..ce00d17f4 100644 --- a/src/autopick/autopick-destroyer.c +++ b/src/autopick/autopick-destroyer.c @@ -7,6 +7,7 @@ #include "autopick/autopick-destroyer.h" #include "autopick-methods-table.h" #include "autopick/autopick-util.h" +#include "player/player-race-types.h" #include "game-option/auto-destruction-options.h" #include "game-option/input-options.h" #include "monster-race/monster-race.h" @@ -20,7 +21,7 @@ #include "object/object-value.h" #include "perception/object-perception.h" #include "player/player-move.h" -#include "player/player-race-types.h" +#include "core/player-update-types.h" #include "sv-definition/sv-other-types.h" #include "sv-definition/sv-wand-types.h" #include "util/string-processor.h" diff --git a/src/autopick/autopick-util.c b/src/autopick/autopick-util.c index e2e9e8b7a..4beddc225 100644 --- a/src/autopick/autopick-util.c +++ b/src/autopick/autopick-util.c @@ -1,5 +1,6 @@ #include "autopick/autopick-util.h" #include "autopick/autopick-menu-data-table.h" +#include "core/player-update-types.h" #include "game-option/input-options.h" #include "main/sound-of-music.h" #include "monster-race/race-indice-types.h" diff --git a/src/birth/birth-wizard.c b/src/birth/birth-wizard.c index 9e48c25a9..a907776b7 100644 --- a/src/birth/birth-wizard.c +++ b/src/birth/birth-wizard.c @@ -15,6 +15,7 @@ #include "cmd-io/cmd-gameoption.h" #include "cmd-io/cmd-help.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "game-option/birth-options.h" #include "io/input-key-acceptor.h" #include "main/sound-definitions-table.h" diff --git a/src/birth/quick-start.c b/src/birth/quick-start.c index af561047f..fe8647fb0 100644 --- a/src/birth/quick-start.c +++ b/src/birth/quick-start.c @@ -2,6 +2,7 @@ #include "birth/birth-stat.h" #include "birth/birth-util.h" #include "birth/game-play-initializer.h" +#include "core/player-update-types.h" #include "io/input-key-acceptor.h" #include "player/player-class.h" #include "player/player-personality.h" diff --git a/src/cmd-action/cmd-attack.c b/src/cmd-action/cmd-attack.c index d75b91f44..9a54290df 100644 --- a/src/cmd-action/cmd-attack.c +++ b/src/cmd-action/cmd-attack.c @@ -9,6 +9,7 @@ #include "combat/attack-accuracy.h" #include "combat/attack-criticality.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "dungeon/dungeon.h" #include "effect/effect-characteristics.h" diff --git a/src/cmd-action/cmd-hissatsu.c b/src/cmd-action/cmd-hissatsu.c index 271b45550..2c13257ba 100644 --- a/src/cmd-action/cmd-hissatsu.c +++ b/src/cmd-action/cmd-hissatsu.c @@ -12,6 +12,7 @@ #include "cmd-action/cmd-spell.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor-object.h" #include "game-option/disturbance-options.h" diff --git a/src/cmd-action/cmd-pet.c b/src/cmd-action/cmd-pet.c index 96f2fbd96..4fef580e2 100644 --- a/src/cmd-action/cmd-pet.c +++ b/src/cmd-action/cmd-pet.c @@ -3,6 +3,7 @@ #include "cmd-io/cmd-dump.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/spells-effect-util.h" #include "floor/floor.h" diff --git a/src/cmd-action/cmd-spell.c b/src/cmd-action/cmd-spell.c index 9f3354d39..64df83262 100644 --- a/src/cmd-action/cmd-spell.c +++ b/src/cmd-action/cmd-spell.c @@ -10,6 +10,7 @@ #include "cmd-io/cmd-dump.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor-object.h" #include "floor/floor.h" diff --git a/src/cmd-building/cmd-building.c b/src/cmd-building/cmd-building.c index 4ab0ba209..86cf9f952 100644 --- a/src/cmd-building/cmd-building.c +++ b/src/cmd-building/cmd-building.c @@ -16,6 +16,7 @@ #include "cmd-building/cmd-inn.h" #include "cmd-io/cmd-dump.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/scores.h" #include "core/show-file.h" #include "core/special-internal-keys.h" diff --git a/src/cmd-item/cmd-activate.c b/src/cmd-item/cmd-activate.c index 44a2344ef..68da191ac 100644 --- a/src/cmd-item/cmd-activate.c +++ b/src/cmd-item/cmd-activate.c @@ -13,6 +13,7 @@ #include "cmd/cmd-basic.h" #include "core/asking-player.h" #include "core/hp-mp-processor.h" +#include "core/player-update-types.h" #include "effect/effect-characteristics.h" #include "effect/spells-effect-util.h" #include "floor/floor-object.h" diff --git a/src/cmd-item/cmd-eat.c b/src/cmd-item/cmd-eat.c index 61910b841..6e4bcdd07 100644 --- a/src/cmd-item/cmd-eat.c +++ b/src/cmd-item/cmd-eat.c @@ -6,6 +6,7 @@ #include "cmd-item/cmd-eat.h" #include "core/hp-mp-processor.h" +#include "core/player-update-types.h" #include "floor/floor-object.h" #include "floor/floor.h" #include "inventory/inventory-object.h" diff --git a/src/cmd-item/cmd-item.c b/src/cmd-item/cmd-item.c index 9b67fa152..9c568b7c5 100644 --- a/src/cmd-item/cmd-item.c +++ b/src/cmd-item/cmd-item.c @@ -23,6 +23,7 @@ #include "cmd-item/cmd-zapwand.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "dungeon/quest.h" #include "floor/floor-object.h" diff --git a/src/cmd-item/cmd-read.c b/src/cmd-item/cmd-read.c index 8d57ee6c9..15f7b60e3 100644 --- a/src/cmd-item/cmd-read.c +++ b/src/cmd-item/cmd-read.c @@ -8,6 +8,7 @@ #include "art-definition/art-accessory-types.h" #include "art-definition/art-armor-types.h" #include "cmd/cmd-basic.h" +#include "core/player-update-types.h" #include "core/show-file.h" #include "floor/floor-object.h" #include "floor/floor.h" diff --git a/src/cmd-item/cmd-smith.c b/src/cmd-item/cmd-smith.c index 4fcd09e29..4f2e287a2 100644 --- a/src/cmd-item/cmd-smith.c +++ b/src/cmd-item/cmd-smith.c @@ -8,6 +8,7 @@ #include "autopick/autopick.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "floor/floor-object.h" #include "game-option/text-display-options.h" #include "io/command-repeater.h" diff --git a/src/cmd-item/cmd-usestaff.c b/src/cmd-item/cmd-usestaff.c index c0fd7f67a..86d938898 100644 --- a/src/cmd-item/cmd-usestaff.c +++ b/src/cmd-item/cmd-usestaff.c @@ -1,5 +1,6 @@ #include "cmd-item/cmd-usestaff.h" #include "cmd/cmd-basic.h" +#include "core/player-update-types.h" #include "floor/floor-object.h" #include "floor/floor.h" #include "game-option/disturbance-options.h" diff --git a/src/cmd-item/cmd-zaprod.c b/src/cmd-item/cmd-zaprod.c index 4d508588a..265221244 100644 --- a/src/cmd-item/cmd-zaprod.c +++ b/src/cmd-item/cmd-zaprod.c @@ -1,5 +1,6 @@ #include "cmd-item/cmd-zaprod.h" #include "cmd/cmd-basic.h" +#include "core/player-update-types.h" #include "floor/floor-object.h" #include "floor/floor.h" #include "game-option/disturbance-options.h" diff --git a/src/cmd-item/cmd-zapwand.c b/src/cmd-item/cmd-zapwand.c index 69e2972c6..397b75f53 100644 --- a/src/cmd-item/cmd-zapwand.c +++ b/src/cmd-item/cmd-zapwand.c @@ -1,5 +1,6 @@ #include "cmd-item/cmd-zapwand.h" #include "cmd/cmd-basic.h" +#include "core/player-update-types.h" #include "floor/floor-object.h" #include "floor/floor.h" #include "game-option/disturbance-options.h" diff --git a/src/cmd-visual/cmd-draw.c b/src/cmd-visual/cmd-draw.c index 1b1928a2e..136c077a0 100644 --- a/src/cmd-visual/cmd-draw.c +++ b/src/cmd-visual/cmd-draw.c @@ -1,5 +1,6 @@ #include "cmd-visual/cmd-draw.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "io/files-util.h" #include "io/input-key-acceptor.h" diff --git a/src/cmd/cmd-basic.c b/src/cmd/cmd-basic.c index 9ff728620..8c074d8db 100644 --- a/src/cmd/cmd-basic.c +++ b/src/cmd/cmd-basic.c @@ -19,6 +19,7 @@ #include "combat/slaying.h" #include "core/asking-player.h" #include "core/output-updater.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" diff --git a/src/combat/shoot.c b/src/combat/shoot.c index f63466ed2..4354c01b5 100644 --- a/src/combat/shoot.c +++ b/src/combat/shoot.c @@ -1,5 +1,6 @@ #include "combat/shoot.h" #include "art-definition/art-bow-types.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/effect-characteristics.h" #include "effect/spells-effect-util.h" diff --git a/src/core/game-play.c b/src/core/game-play.c index bca3b1b5a..d75538ad9 100644 --- a/src/core/game-play.c +++ b/src/core/game-play.c @@ -19,6 +19,7 @@ #include "core/game-closer.h" #include "core/output-updater.h" #include "core/player-processor.h" +#include "core/player-update-types.h" #include "core/scores.h" #include "core/speed-table.h" #include "core/status-reseter.h" diff --git a/src/core/hp-mp-regenerator.c b/src/core/hp-mp-regenerator.c index 7992ddb39..665d5b522 100644 --- a/src/core/hp-mp-regenerator.c +++ b/src/core/hp-mp-regenerator.c @@ -1,5 +1,6 @@ #include "core/hp-mp-regenerator.h" #include "cmd-item/cmd-magiceat.h" +#include "core/player-update-types.h" #include "floor/floor.h" #include "inventory/inventory-slot-types.h" #include "monster-race/monster-race.h" diff --git a/src/core/player-processor.c b/src/core/player-processor.c index a3f0dca07..bbe773d64 100644 --- a/src/core/player-processor.c +++ b/src/core/player-processor.c @@ -1,4 +1,5 @@ #include "core/player-processor.h" +#include "core/player-update-types.h" #include "core/special-internal-keys.h" #include "core/speed-table.h" #include "core/stuff-handler.h" diff --git a/src/core/player-update-types.h b/src/core/player-update-types.h new file mode 100644 index 000000000..18568f0bc --- /dev/null +++ b/src/core/player-update-types.h @@ -0,0 +1,21 @@ +#pragma once + +typedef enum player_update_type { + PU_BONUS = 0x00000001L, /*!< ステータス更新フラグ: 能力値修正 / Calculate bonuses */ + PU_TORCH = 0x00000002L, /*!< ステータス更新フラグ: 光源半径 / Calculate torch radius */ + PU_HP = 0x00000010L, /*!< ステータス更新フラグ: HP / Calculate chp and mhp */ + PU_MANA = 0x00000020L, /*!< ステータス更新フラグ: MP / Calculate csp and msp */ + PU_SPELLS = 0x00000040L, /*!< ステータス更新フラグ: 魔法学習数 / Calculate spells */ + PU_COMBINE = 0x00000100L, /*!< アイテム処理フラグ: アイテムの結合を要する / Combine the pack */ + PU_REORDER = 0x00000200L, /*!< アイテム処理フラグ: アイテムの並び替えを要する / Reorder the pack */ + PU_AUTODESTROY = 0x00000400L, /*!< アイテム処理フラグ: アイテムの自動破壊を要する / Auto-destroy marked item */ + PU_UN_VIEW = 0x00010000L, /*!< ステータス更新フラグ: 地形の視界外化 / Forget view */ + PU_UN_LITE = 0x00020000L, /*!< ステータス更新フラグ: 明暗範囲の視界外化 / Forget lite */ + PU_VIEW = 0x00100000L, /*!< ステータス更新フラグ: 視界 / Update view */ + PU_LITE = 0x00200000L, /*!< ステータス更新フラグ: 明暗範囲 / Update lite */ + PU_MON_LITE = 0x00400000L, /*!< ステータス更新フラグ: モンスターの光源範囲 / Monster illumination */ + PU_DELAY_VIS = 0x00800000L, /*!< ステータス更新フラグ: 視界の追加更新 / Mega-Hack -- Delayed visual update */ + PU_MONSTERS = 0x01000000L, /*!< ステータス更新フラグ: モンスターのステータス / Update monsters */ + PU_DISTANCE = 0x02000000L, /*!< ステータス更新フラグ: プレイヤーとモンスターの距離 / Update distances */ + PU_FLOW = 0x10000000L, /*!< ステータス更新フラグ: プレイヤーから各マスへの到達距離 / Update flow */ +} player_update_type; diff --git a/src/core/stuff-handler.c b/src/core/stuff-handler.c index 4b1e8339a..e50514560 100644 --- a/src/core/stuff-handler.c +++ b/src/core/stuff-handler.c @@ -1,4 +1,5 @@ #include "core/stuff-handler.h" +#include "core/player-update-types.h" #include "core/window-redrawer.h" /*! diff --git a/src/dungeon/dungeon-processor.c b/src/dungeon/dungeon-processor.c index 8cef6fb47..24facccb1 100644 --- a/src/dungeon/dungeon-processor.c +++ b/src/dungeon/dungeon-processor.c @@ -3,6 +3,7 @@ #include "cmd-io/cmd-dump.h" #include "core/hp-mp-regenerator.h" #include "core/player-processor.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "core/turn-compensator.h" #include "dungeon/dungeon.h" diff --git a/src/dungeon/quest.c b/src/dungeon/quest.c index 30bcfecd1..c77893437 100644 --- a/src/dungeon/quest.c +++ b/src/dungeon/quest.c @@ -1,6 +1,7 @@ #include "dungeon/quest.h" #include "cmd-io/cmd-dump.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "floor/floor-events.h" #include "floor/floor-object.h" diff --git a/src/effect/effect-feature.c b/src/effect/effect-feature.c index 76ac50f8c..aa5f3f372 100644 --- a/src/effect/effect-feature.c +++ b/src/effect/effect-feature.c @@ -1,4 +1,5 @@ #include "effect/effect-feature.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "effect/effect-characteristics.h" #include "floor/floor.h" diff --git a/src/effect/effect-player-resist-hurt.c b/src/effect/effect-player-resist-hurt.c index 24c79b727..743905319 100644 --- a/src/effect/effect-player-resist-hurt.c +++ b/src/effect/effect-player-resist-hurt.c @@ -1,6 +1,7 @@ #include "effect/effect-player-resist-hurt.h" #include "art-definition/art-sword-types.h" #include "core/hp-mp-processor.h" +#include "core/player-update-types.h" #include "inventory/inventory-damage.h" #include "inventory/inventory-slot-types.h" #include "mind/mind-mirror-master.h" diff --git a/src/floor/floor-events.c b/src/floor/floor-events.c index 72a276b81..eca4a4258 100644 --- a/src/floor/floor-events.c +++ b/src/floor/floor-events.c @@ -1,5 +1,6 @@ #include "floor/floor-events.h" #include "cmd-io/cmd-dump.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" #include "game-option/birth-options.h" diff --git a/src/floor/floor.c b/src/floor/floor.c index f6027f9c5..31b8aedba 100644 --- a/src/floor/floor.c +++ b/src/floor/floor.c @@ -1,4 +1,5 @@ #include "floor/floor.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" #include "effect/effect-characteristics.h" diff --git a/src/inventory/inventory-curse.c b/src/inventory/inventory-curse.c index 2394476ff..de48366e3 100644 --- a/src/inventory/inventory-curse.c +++ b/src/inventory/inventory-curse.c @@ -1,6 +1,7 @@ #include "inventory/inventory-curse.h" #include "art-definition/art-accessory-types.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "inventory/inventory-slot-types.h" #include "io/files-util.h" #include "monster-floor/monster-summon.h" diff --git a/src/inventory/inventory-object.c b/src/inventory/inventory-object.c index c2799be1b..6cb1f90e8 100644 --- a/src/inventory/inventory-object.c +++ b/src/inventory/inventory-object.c @@ -1,4 +1,5 @@ #include "inventory/inventory-object.h" +#include "core/player-update-types.h" #include "floor/floor-object.h" #include "inventory/inventory-slot-types.h" #include "object-hook/hook-weapon.h" diff --git a/src/io/cursor.c b/src/io/cursor.c index 5088eb23e..b7ef404bd 100644 --- a/src/io/cursor.c +++ b/src/io/cursor.c @@ -1,4 +1,5 @@ #include "io/cursor.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/effect-characteristics.h" #include "effect/spells-effect-util.h" diff --git a/src/io/input-key-processor.c b/src/io/input-key-processor.c index 43e4b1662..52b82d490 100644 --- a/src/io/input-key-processor.c +++ b/src/io/input-key-processor.c @@ -37,6 +37,7 @@ #include "cmd-visual/cmd-visuals.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/special-internal-keys.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" // do_cmd_quest() がある。後で移設する. diff --git a/src/io/screen-util.c b/src/io/screen-util.c index 9b87ce857..c05581c92 100644 --- a/src/io/screen-util.c +++ b/src/io/screen-util.c @@ -11,6 +11,7 @@ #include "io/screen-util.h" #include "core/player-processor.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" diff --git a/src/io/targeting.c b/src/io/targeting.c index caa52ec28..434c3e78e 100644 --- a/src/io/targeting.c +++ b/src/io/targeting.c @@ -13,9 +13,8 @@ #include "cmd-action/cmd-pet.h" #include "cmd-building/cmd-building.h" #include "core/asking-player.h" -#include "util/sort.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" -#include "info-reader/fixed-map-parser.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" #include "effect/spells-effect-util.h" @@ -32,6 +31,7 @@ #include "game-option/map-screen-options.h" #include "grid/feature.h" #include "grid/grid.h" +#include "info-reader/fixed-map-parser.h" #include "io/command-repeater.h" #include "io/cursor.h" #include "io/input-key-acceptor.h" @@ -39,9 +39,9 @@ #include "io/screen-util.h" #include "locale/vowel-checker.h" #include "main/sound-of-music.h" +#include "monster-race/monster-race-hook.h" #include "monster-race/monster-race.h" #include "monster-race/race-flags1.h" -#include "monster-race/monster-race-hook.h" #include "monster/monster-describer.h" #include "monster/monster-description-types.h" #include "monster/monster-flag-types.h" @@ -63,27 +63,28 @@ #include "term/term-color-types.h" #include "util/bit-flags-calculator.h" #include "util/int-char-converter.h" -#include "view/display-messages.h" +#include "util/sort.h" #include "view/display-lore.h" +#include "view/display-messages.h" #include "view/display-monster-status.h" #include "view/main-window-util.h" #include "world/world.h" - /*! - * @brief コンソール上におけるマップ表示の左上位置を返す / - * Calculates current boundaries Called below and from "do_cmd_locate()". - * @return なし - */ +/*! + * @brief コンソール上におけるマップ表示の左上位置を返す / + * Calculates current boundaries Called below and from "do_cmd_locate()". + * @return なし + */ void panel_bounds_center(void) { - TERM_LEN wid, hgt; + TERM_LEN wid, hgt; - get_screen_size(&wid, &hgt); + get_screen_size(&wid, &hgt); - panel_row_max = panel_row_min + hgt - 1; - panel_row_prt = panel_row_min - 1; - panel_col_max = panel_col_min + wid - 1; - panel_col_prt = panel_col_min - 13; + panel_row_max = panel_row_min + hgt - 1; + panel_row_prt = panel_row_min - 1; + panel_col_max = panel_col_min + wid - 1; + panel_col_prt = panel_col_min - 13; } /*! @@ -99,21 +100,25 @@ void panel_bounds_center(void) */ static bool change_panel_xy(player_type *creature_ptr, POSITION y, POSITION x) { - POSITION dy = 0, dx = 0; - TERM_LEN wid, hgt; - get_screen_size(&wid, &hgt); - - if (y < panel_row_min) dy = -1; - if (y > panel_row_max) dy = 1; - if (x < panel_col_min) dx = -1; - if (x > panel_col_max) dx = 1; - - if (!dy && !dx) return FALSE; - - return change_panel(creature_ptr, dy, dx); + POSITION dy = 0, dx = 0; + TERM_LEN wid, hgt; + get_screen_size(&wid, &hgt); + + if (y < panel_row_min) + dy = -1; + if (y > panel_row_max) + dy = 1; + if (x < panel_col_min) + dx = -1; + if (x > panel_col_max) + dx = 1; + + if (!dy && !dx) + return FALSE; + + return change_panel(creature_ptr, dy, dx); } - /*! * @brief マップ描画のフォーカスを当てるべき座標を更新する * @param creature_ptr プレーヤーへの参照ポインタ @@ -126,98 +131,98 @@ static bool change_panel_xy(player_type *creature_ptr, POSITION y, POSITION x) */ void verify_panel(player_type *creature_ptr) { - POSITION y = creature_ptr->y; - POSITION x = creature_ptr->x; - TERM_LEN wid, hgt; - - get_screen_size(&wid, &hgt); - - int max_prow_min = creature_ptr->current_floor_ptr->height - hgt; - int max_pcol_min = creature_ptr->current_floor_ptr->width - wid; - - /* Bounds checking */ - int prow_min; - int pcol_min; - if (max_prow_min < 0) max_prow_min = 0; - if (max_pcol_min < 0) max_pcol_min = 0; - - /* Center on player */ - if (center_player && (center_running || !creature_ptr->running)) - { - /* Center vertically */ - prow_min = y - hgt / 2; - if (prow_min < 0) prow_min = 0; - else if (prow_min > max_prow_min) prow_min = max_prow_min; - - /* Center horizontally */ - pcol_min = x - wid / 2; - if (pcol_min < 0) pcol_min = 0; - else if (pcol_min > max_pcol_min) pcol_min = max_pcol_min; - } - else - { - prow_min = panel_row_min; - pcol_min = panel_col_min; - - /* Scroll screen when 2 grids from top/bottom edge */ - if (y > panel_row_max - 2) - { - while (y > prow_min + hgt - 1 - 2) - { - prow_min += (hgt / 2); - } - } - - if (y < panel_row_min + 2) - { - while (y < prow_min + 2) - { - prow_min -= (hgt / 2); - } - } - - if (prow_min > max_prow_min) prow_min = max_prow_min; - if (prow_min < 0) prow_min = 0; - - /* Scroll screen when 4 grids from left/right edge */ - if (x > panel_col_max - 4) - { - while (x > pcol_min + wid - 1 - 4) - { - pcol_min += (wid / 2); - } - } - - if (x < panel_col_min + 4) - { - while (x < pcol_min + 4) - { - pcol_min -= (wid / 2); - } - } - - if (pcol_min > max_pcol_min) pcol_min = max_pcol_min; - if (pcol_min < 0) pcol_min = 0; - } - - /* Check for "no change" */ - if ((prow_min == panel_row_min) && (pcol_min == panel_col_min)) return; - - /* Save the new panel info */ - panel_row_min = prow_min; - panel_col_min = pcol_min; - - /* Hack -- optional disturb on "panel change" */ - if (disturb_panel && !center_player) disturb(creature_ptr, FALSE, FALSE); - - panel_bounds_center(); - - creature_ptr->update |= (PU_MONSTERS); - creature_ptr->redraw |= (PR_MAP); - creature_ptr->window |= (PW_OVERHEAD | PW_DUNGEON); + POSITION y = creature_ptr->y; + POSITION x = creature_ptr->x; + TERM_LEN wid, hgt; + + get_screen_size(&wid, &hgt); + + int max_prow_min = creature_ptr->current_floor_ptr->height - hgt; + int max_pcol_min = creature_ptr->current_floor_ptr->width - wid; + + /* Bounds checking */ + int prow_min; + int pcol_min; + if (max_prow_min < 0) + max_prow_min = 0; + if (max_pcol_min < 0) + max_pcol_min = 0; + + /* Center on player */ + if (center_player && (center_running || !creature_ptr->running)) { + /* Center vertically */ + prow_min = y - hgt / 2; + if (prow_min < 0) + prow_min = 0; + else if (prow_min > max_prow_min) + prow_min = max_prow_min; + + /* Center horizontally */ + pcol_min = x - wid / 2; + if (pcol_min < 0) + pcol_min = 0; + else if (pcol_min > max_pcol_min) + pcol_min = max_pcol_min; + } else { + prow_min = panel_row_min; + pcol_min = panel_col_min; + + /* Scroll screen when 2 grids from top/bottom edge */ + if (y > panel_row_max - 2) { + while (y > prow_min + hgt - 1 - 2) { + prow_min += (hgt / 2); + } + } + + if (y < panel_row_min + 2) { + while (y < prow_min + 2) { + prow_min -= (hgt / 2); + } + } + + if (prow_min > max_prow_min) + prow_min = max_prow_min; + if (prow_min < 0) + prow_min = 0; + + /* Scroll screen when 4 grids from left/right edge */ + if (x > panel_col_max - 4) { + while (x > pcol_min + wid - 1 - 4) { + pcol_min += (wid / 2); + } + } + + if (x < panel_col_min + 4) { + while (x < pcol_min + 4) { + pcol_min -= (wid / 2); + } + } + + if (pcol_min > max_pcol_min) + pcol_min = max_pcol_min; + if (pcol_min < 0) + pcol_min = 0; + } + + /* Check for "no change" */ + if ((prow_min == panel_row_min) && (pcol_min == panel_col_min)) + return; + + /* Save the new panel info */ + panel_row_min = prow_min; + panel_col_min = pcol_min; + + /* Hack -- optional disturb on "panel change" */ + if (disturb_panel && !center_player) + disturb(creature_ptr, FALSE, FALSE); + + panel_bounds_center(); + + creature_ptr->update |= (PU_MONSTERS); + creature_ptr->redraw |= (PR_MAP); + creature_ptr->window |= (PW_OVERHEAD | PW_DUNGEON); } - /* * Determine is a monster makes a reasonable target * @@ -234,31 +239,35 @@ void verify_panel(player_type *creature_ptr) */ bool target_able(player_type *creature_ptr, MONSTER_IDX m_idx) { - floor_type *floor_ptr = creature_ptr->current_floor_ptr; - monster_type *m_ptr = &floor_ptr->m_list[m_idx]; + floor_type *floor_ptr = creature_ptr->current_floor_ptr; + monster_type *m_ptr = &floor_ptr->m_list[m_idx]; - /* Monster must be alive */ - if (!monster_is_valid(m_ptr)) return FALSE; + /* Monster must be alive */ + if (!monster_is_valid(m_ptr)) + return FALSE; - /* Hack -- no targeting hallucinations */ - if (creature_ptr->image) return FALSE; + /* Hack -- no targeting hallucinations */ + if (creature_ptr->image) + return FALSE; - /* Monster must be visible */ - if (!m_ptr->ml) return FALSE; + /* Monster must be visible */ + if (!m_ptr->ml) + return FALSE; - if (creature_ptr->riding && (creature_ptr->riding == m_idx)) return TRUE; + if (creature_ptr->riding && (creature_ptr->riding == m_idx)) + return TRUE; - /* Monster must be projectable */ - if (!projectable(creature_ptr, creature_ptr->y, creature_ptr->x, m_ptr->fy, m_ptr->fx)) return FALSE; + /* Monster must be projectable */ + if (!projectable(creature_ptr, creature_ptr->y, creature_ptr->x, m_ptr->fy, m_ptr->fx)) + return FALSE; - /* Hack -- Never target trappers */ - /* if (CLEAR_ATTR && (CLEAR_CHAR)) return FALSE; */ + /* Hack -- Never target trappers */ + /* if (CLEAR_ATTR && (CLEAR_CHAR)) return FALSE; */ - /* Assume okay */ - return TRUE; + /* Assume okay */ + return TRUE; } - /* * Targetting variables */ @@ -273,117 +282,126 @@ POSITION target_row; */ bool target_okay(player_type *creature_ptr) { - /* Accept stationary targets */ - if (target_who < 0) return TRUE; + /* Accept stationary targets */ + if (target_who < 0) + return TRUE; - /* Check moving targets */ - if (target_who <= 0) return FALSE; + /* Check moving targets */ + if (target_who <= 0) + return FALSE; - /* Accept reasonable targets */ - if (!target_able(creature_ptr, target_who)) return FALSE; + /* Accept reasonable targets */ + if (!target_able(creature_ptr, target_who)) + return FALSE; - monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[target_who]; + monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[target_who]; - /* Acquire monster location */ - target_row = m_ptr->fy; - target_col = m_ptr->fx; + /* Acquire monster location */ + target_row = m_ptr->fy; + target_col = m_ptr->fx; - /* Good target */ - return TRUE; + /* Good target */ + return TRUE; } - /* * Hack -- help "select" a location (see below) */ static POSITION_IDX target_pick(POSITION y1, POSITION x1, POSITION dy, POSITION dx) { - /* Scan the locations */ - POSITION_IDX b_i = -1, b_v = 9999; - for (POSITION_IDX i = 0; i < tmp_pos.n; i++) - { - /* Point 2 */ - POSITION x2 = tmp_pos.x[i]; - POSITION y2 = tmp_pos.y[i]; - - /* Directed distance */ - POSITION x3 = (x2 - x1); - POSITION y3 = (y2 - y1); - - /* Verify quadrant */ - if (dx && (x3 * dx <= 0)) continue; - if (dy && (y3 * dy <= 0)) continue; - - POSITION x4 = ABS(x3); - POSITION y4 = ABS(y3); - - /* Verify quadrant */ - if (dy && !dx && (x4 > y4)) continue; - if (dx && !dy && (y4 > x4)) continue; - - /* Approximate Double Distance */ - POSITION_IDX v = ((x4 > y4) ? (x4 + x4 + y4) : (y4 + y4 + x4)); - - /* Penalize location */ - if ((b_i >= 0) && (v >= b_v)) continue; - b_i = i; b_v = v; - } - - return b_i; + /* Scan the locations */ + POSITION_IDX b_i = -1, b_v = 9999; + for (POSITION_IDX i = 0; i < tmp_pos.n; i++) { + /* Point 2 */ + POSITION x2 = tmp_pos.x[i]; + POSITION y2 = tmp_pos.y[i]; + + /* Directed distance */ + POSITION x3 = (x2 - x1); + POSITION y3 = (y2 - y1); + + /* Verify quadrant */ + if (dx && (x3 * dx <= 0)) + continue; + if (dy && (y3 * dy <= 0)) + continue; + + POSITION x4 = ABS(x3); + POSITION y4 = ABS(y3); + + /* Verify quadrant */ + if (dy && !dx && (x4 > y4)) + continue; + if (dx && !dy && (y4 > x4)) + continue; + + /* Approximate Double Distance */ + POSITION_IDX v = ((x4 > y4) ? (x4 + x4 + y4) : (y4 + y4 + x4)); + + /* Penalize location */ + if ((b_i >= 0) && (v >= b_v)) + continue; + b_i = i; + b_v = v; + } + + return b_i; } - /* * Hack -- determine if a given location is "interesting" */ static bool target_set_accept(player_type *creature_ptr, POSITION y, POSITION x) { - floor_type *floor_ptr = creature_ptr->current_floor_ptr; - if (!(in_bounds(floor_ptr, y, x))) return FALSE; - - /* Player grid is always interesting */ - if (player_bold(creature_ptr, y, x)) return TRUE; - - if (creature_ptr->image) return FALSE; - - grid_type *g_ptr; - g_ptr = &floor_ptr->grid_array[y][x]; - - /* Visible monsters */ - if (g_ptr->m_idx) - { - monster_type *m_ptr = &floor_ptr->m_list[g_ptr->m_idx]; - - /* Visible monsters */ - if (m_ptr->ml) return TRUE; - } - - /* Scan all objects in the grid */ - OBJECT_IDX next_o_idx = 0; - for (OBJECT_IDX this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) - { - object_type *o_ptr; - o_ptr = &floor_ptr->o_list[this_o_idx]; - next_o_idx = o_ptr->next_o_idx; - - /* Memorized object */ - if (o_ptr->marked & OM_FOUND) return TRUE; - } - - /* Interesting memorized features */ - if (g_ptr->info & (CAVE_MARK)) - { - /* Notice object features */ - if (g_ptr->info & CAVE_OBJECT) return TRUE; - - /* Feature code (applying "mimic" field) */ - if (have_flag(f_info[get_feat_mimic(g_ptr)].flags, FF_NOTICE)) return TRUE; - } - - return FALSE; + floor_type *floor_ptr = creature_ptr->current_floor_ptr; + if (!(in_bounds(floor_ptr, y, x))) + return FALSE; + + /* Player grid is always interesting */ + if (player_bold(creature_ptr, y, x)) + return TRUE; + + if (creature_ptr->image) + return FALSE; + + grid_type *g_ptr; + g_ptr = &floor_ptr->grid_array[y][x]; + + /* Visible monsters */ + if (g_ptr->m_idx) { + monster_type *m_ptr = &floor_ptr->m_list[g_ptr->m_idx]; + + /* Visible monsters */ + if (m_ptr->ml) + return TRUE; + } + + /* Scan all objects in the grid */ + OBJECT_IDX next_o_idx = 0; + for (OBJECT_IDX this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) { + object_type *o_ptr; + o_ptr = &floor_ptr->o_list[this_o_idx]; + next_o_idx = o_ptr->next_o_idx; + + /* Memorized object */ + if (o_ptr->marked & OM_FOUND) + return TRUE; + } + + /* Interesting memorized features */ + if (g_ptr->info & (CAVE_MARK)) { + /* Notice object features */ + if (g_ptr->info & CAVE_OBJECT) + return TRUE; + + /* Feature code (applying "mimic" field) */ + if (have_flag(f_info[get_feat_mimic(g_ptr)].flags, FF_NOTICE)) + return TRUE; + } + + return FALSE; } - /* * Prepare the "temp" array for "target_set" * @@ -391,133 +409,117 @@ static bool target_set_accept(player_type *creature_ptr, POSITION y, POSITION x) */ static void target_set_prepare(player_type *creature_ptr, BIT_FLAGS mode) { - POSITION min_hgt, max_hgt, min_wid, max_wid; - if (mode & TARGET_KILL) - { - /* Inner range */ - min_hgt = MAX((creature_ptr->y - get_max_range(creature_ptr)), 0); - max_hgt = MIN((creature_ptr->y + get_max_range(creature_ptr)), creature_ptr->current_floor_ptr->height - 1); - min_wid = MAX((creature_ptr->x - get_max_range(creature_ptr)), 0); - max_wid = MIN((creature_ptr->x + get_max_range(creature_ptr)), creature_ptr->current_floor_ptr->width - 1); - } - else /* not targetting */ - { - /* Inner panel */ - min_hgt = panel_row_min; - max_hgt = panel_row_max; - min_wid = panel_col_min; - max_wid = panel_col_max; - } - - /* Reset "temp" array */ - tmp_pos.n = 0; - - /* Scan the current panel */ - for (POSITION y = min_hgt; y <= max_hgt; y++) - { - for (POSITION x = min_wid; x <= max_wid; x++) - { - grid_type *g_ptr; - - /* Require "interesting" contents */ - if (!target_set_accept(creature_ptr, y, x)) continue; - - g_ptr = &creature_ptr->current_floor_ptr->grid_array[y][x]; - - /* Require target_able monsters for "TARGET_KILL" */ - if ((mode & (TARGET_KILL)) && !target_able(creature_ptr, g_ptr->m_idx)) continue; - - if ((mode & (TARGET_KILL)) && !target_pet && is_pet(&creature_ptr->current_floor_ptr->m_list[g_ptr->m_idx])) continue; - - /* Save the location */ - tmp_pos.x[tmp_pos.n] = x; - tmp_pos.y[tmp_pos.n] = y; - tmp_pos.n++; - } - } - - /* Set the sort hooks */ - if (mode & (TARGET_KILL)) - { - ang_sort(creature_ptr, tmp_pos.x, tmp_pos.y, tmp_pos.n, ang_sort_comp_distance, ang_sort_swap_distance); - } - else - { - ang_sort(creature_ptr, tmp_pos.x, tmp_pos.y, tmp_pos.n, ang_sort_comp_importance, ang_sort_swap_distance); - } - - if (creature_ptr->riding == 0 || !target_pet || (tmp_pos.n <= 1) || !(mode & (TARGET_KILL))) - return; - - POSITION tmp = tmp_pos.y[0]; - tmp_pos.y[0] = tmp_pos.y[1]; - tmp_pos.y[1] = tmp; - tmp = tmp_pos.x[0]; - tmp_pos.x[0] = tmp_pos.x[1]; - tmp_pos.x[1] = tmp; -} - - -void target_set_prepare_look(player_type *creature_ptr) -{ - target_set_prepare(creature_ptr, TARGET_LOOK); + POSITION min_hgt, max_hgt, min_wid, max_wid; + if (mode & TARGET_KILL) { + /* Inner range */ + min_hgt = MAX((creature_ptr->y - get_max_range(creature_ptr)), 0); + max_hgt = MIN((creature_ptr->y + get_max_range(creature_ptr)), creature_ptr->current_floor_ptr->height - 1); + min_wid = MAX((creature_ptr->x - get_max_range(creature_ptr)), 0); + max_wid = MIN((creature_ptr->x + get_max_range(creature_ptr)), creature_ptr->current_floor_ptr->width - 1); + } else /* not targetting */ + { + /* Inner panel */ + min_hgt = panel_row_min; + max_hgt = panel_row_max; + min_wid = panel_col_min; + max_wid = panel_col_max; + } + + /* Reset "temp" array */ + tmp_pos.n = 0; + + /* Scan the current panel */ + for (POSITION y = min_hgt; y <= max_hgt; y++) { + for (POSITION x = min_wid; x <= max_wid; x++) { + grid_type *g_ptr; + + /* Require "interesting" contents */ + if (!target_set_accept(creature_ptr, y, x)) + continue; + + g_ptr = &creature_ptr->current_floor_ptr->grid_array[y][x]; + + /* Require target_able monsters for "TARGET_KILL" */ + if ((mode & (TARGET_KILL)) && !target_able(creature_ptr, g_ptr->m_idx)) + continue; + + if ((mode & (TARGET_KILL)) && !target_pet && is_pet(&creature_ptr->current_floor_ptr->m_list[g_ptr->m_idx])) + continue; + + /* Save the location */ + tmp_pos.x[tmp_pos.n] = x; + tmp_pos.y[tmp_pos.n] = y; + tmp_pos.n++; + } + } + + /* Set the sort hooks */ + if (mode & (TARGET_KILL)) { + ang_sort(creature_ptr, tmp_pos.x, tmp_pos.y, tmp_pos.n, ang_sort_comp_distance, ang_sort_swap_distance); + } else { + ang_sort(creature_ptr, tmp_pos.x, tmp_pos.y, tmp_pos.n, ang_sort_comp_importance, ang_sort_swap_distance); + } + + if (creature_ptr->riding == 0 || !target_pet || (tmp_pos.n <= 1) || !(mode & (TARGET_KILL))) + return; + + POSITION tmp = tmp_pos.y[0]; + tmp_pos.y[0] = tmp_pos.y[1]; + tmp_pos.y[1] = tmp; + tmp = tmp_pos.x[0]; + tmp_pos.x[0] = tmp_pos.x[1]; + tmp_pos.x[1] = tmp; } +void target_set_prepare_look(player_type *creature_ptr) { target_set_prepare(creature_ptr, TARGET_LOOK); } /* * Evaluate number of kill needed to gain level */ static void evaluate_monster_exp(player_type *creature_ptr, char *buf, monster_type *m_ptr) { - monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx]; - u32b num; - s32b exp_mon, exp_adv; - u32b exp_mon_frac, exp_adv_frac; - - if ((creature_ptr->lev >= PY_MAX_LEVEL) || (creature_ptr->prace == RACE_ANDROID)) - { - sprintf(buf, "**"); - return; - } - else if (!ap_r_ptr->r_tkills || (m_ptr->mflag2 & MFLAG2_KAGE)) - { - if (!current_world_ptr->wizard) - { - sprintf(buf, "??"); - return; - } - } - - /* The monster's experience point (assuming average monster speed) */ - exp_mon = ap_r_ptr->mexp * ap_r_ptr->level; - exp_mon_frac = 0; - s64b_div(&exp_mon, &exp_mon_frac, 0, (creature_ptr->max_plv + 2)); - - - /* Total experience value for next level */ - exp_adv = player_exp[creature_ptr->lev - 1] * creature_ptr->expfact; - exp_adv_frac = 0; - s64b_div(&exp_adv, &exp_adv_frac, 0, 100); - - /* Experience value need to get */ - s64b_sub(&exp_adv, &exp_adv_frac, creature_ptr->exp, creature_ptr->exp_frac); - - - /* You need to kill at least one monster to get any experience */ - s64b_add(&exp_adv, &exp_adv_frac, exp_mon, exp_mon_frac); - s64b_sub(&exp_adv, &exp_adv_frac, 0, 1); - - /* Extract number of monsters needed */ - s64b_div(&exp_adv, &exp_adv_frac, exp_mon, exp_mon_frac); - - /* If 999 or more monsters needed, only display "999". */ - num = MIN(999, exp_adv_frac); - - /* Display the number */ - sprintf(buf, "%03ld", (long int)num); + monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx]; + u32b num; + s32b exp_mon, exp_adv; + u32b exp_mon_frac, exp_adv_frac; + + if ((creature_ptr->lev >= PY_MAX_LEVEL) || (creature_ptr->prace == RACE_ANDROID)) { + sprintf(buf, "**"); + return; + } else if (!ap_r_ptr->r_tkills || (m_ptr->mflag2 & MFLAG2_KAGE)) { + if (!current_world_ptr->wizard) { + sprintf(buf, "??"); + return; + } + } + + /* The monster's experience point (assuming average monster speed) */ + exp_mon = ap_r_ptr->mexp * ap_r_ptr->level; + exp_mon_frac = 0; + s64b_div(&exp_mon, &exp_mon_frac, 0, (creature_ptr->max_plv + 2)); + + /* Total experience value for next level */ + exp_adv = player_exp[creature_ptr->lev - 1] * creature_ptr->expfact; + exp_adv_frac = 0; + s64b_div(&exp_adv, &exp_adv_frac, 0, 100); + + /* Experience value need to get */ + s64b_sub(&exp_adv, &exp_adv_frac, creature_ptr->exp, creature_ptr->exp_frac); + + /* You need to kill at least one monster to get any experience */ + s64b_add(&exp_adv, &exp_adv_frac, exp_mon, exp_mon_frac); + s64b_sub(&exp_adv, &exp_adv_frac, 0, 1); + + /* Extract number of monsters needed */ + s64b_div(&exp_adv, &exp_adv_frac, exp_mon, exp_mon_frac); + + /* If 999 or more monsters needed, only display "999". */ + num = MIN(999, exp_adv_frac); + + /* Display the number */ + sprintf(buf, "%03ld", (long int)num); } - bool show_gold_on_floor = FALSE; /* @@ -543,479 +545,453 @@ bool show_gold_on_floor = FALSE; */ static char target_set_aux(player_type *subject_ptr, POSITION y, POSITION x, BIT_FLAGS mode, concptr info) { - OBJECT_IDX next_o_idx = 0; - concptr s1 = "", s2 = "", s3 = "", x_info = ""; - bool boring = TRUE; - FEAT_IDX feat; - feature_type *f_ptr; - char query = '\001'; - char out_val[MAX_NLEN + 80]; - OBJECT_IDX floor_list[23]; - ITEM_NUMBER floor_num = 0; - - /* Scan all objects in the grid */ - if (easy_floor) - { - floor_num = scan_floor_items(subject_ptr, floor_list, y, x, 0x02, 0); - - if (floor_num) - { - x_info = _("x物 ", "x,"); - } - } - - /* Hack -- under the player */ - if (player_bold(subject_ptr, y, x)) - { + OBJECT_IDX next_o_idx = 0; + concptr s1 = "", s2 = "", s3 = "", x_info = ""; + bool boring = TRUE; + FEAT_IDX feat; + feature_type *f_ptr; + char query = '\001'; + char out_val[MAX_NLEN + 80]; + OBJECT_IDX floor_list[23]; + ITEM_NUMBER floor_num = 0; + + /* Scan all objects in the grid */ + if (easy_floor) { + floor_num = scan_floor_items(subject_ptr, floor_list, y, x, 0x02, 0); + + if (floor_num) { + x_info = _("x物 ", "x,"); + } + } + + /* Hack -- under the player */ + if (player_bold(subject_ptr, y, x)) { #ifdef JP - s1 = "あなたは"; - s2 = "の上"; - s3 = "にいる"; + s1 = "あなたは"; + s2 = "の上"; + s3 = "にいる"; #else - s1 = "You are "; - s2 = "on "; + s1 = "You are "; + s2 = "on "; #endif - } - else - { - s1 = _("ターゲット:", "Target:"); - } - - /* Hack -- hallucination */ - if (subject_ptr->image) - { - concptr name = _("何か奇妙な物", "something strange"); - - /* Display a message */ + } else { + s1 = _("ターゲット:", "Target:"); + } + + /* Hack -- hallucination */ + if (subject_ptr->image) { + concptr name = _("何か奇妙な物", "something strange"); + + /* Display a message */ #ifdef JP - sprintf(out_val, "%s%s%s%s [%s]", s1, name, s2, s3, info); + sprintf(out_val, "%s%s%s%s [%s]", s1, name, s2, s3, info); #else - sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, name, info); + sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, name, info); #endif - prt(out_val, 0, 0); - move_cursor_relative(y, x); - query = inkey(); + prt(out_val, 0, 0); + move_cursor_relative(y, x); + query = inkey(); - /* Stop on everything but "return" */ - if ((query != '\r') && (query != '\n')) return query; + /* Stop on everything but "return" */ + if ((query != '\r') && (query != '\n')) + return query; - /* Repeat forever */ - return 0; - } + /* Repeat forever */ + return 0; + } - /* Actual monsters */ - grid_type *g_ptr = &subject_ptr->current_floor_ptr->grid_array[y][x]; - if (g_ptr->m_idx && subject_ptr->current_floor_ptr->m_list[g_ptr->m_idx].ml) - { - monster_type *m_ptr = &subject_ptr->current_floor_ptr->m_list[g_ptr->m_idx]; - monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx]; - GAME_TEXT m_name[MAX_NLEN]; - bool recall = FALSE; + /* Actual monsters */ + grid_type *g_ptr = &subject_ptr->current_floor_ptr->grid_array[y][x]; + if (g_ptr->m_idx && subject_ptr->current_floor_ptr->m_list[g_ptr->m_idx].ml) { + monster_type *m_ptr = &subject_ptr->current_floor_ptr->m_list[g_ptr->m_idx]; + monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx]; + GAME_TEXT m_name[MAX_NLEN]; + bool recall = FALSE; - /* Not boring */ - boring = FALSE; + /* Not boring */ + boring = FALSE; - monster_desc(subject_ptr, m_name, m_ptr, MD_INDEF_VISIBLE); - monster_race_track(subject_ptr, m_ptr->ap_r_idx); - health_track(subject_ptr, g_ptr->m_idx); - handle_stuff(subject_ptr); + monster_desc(subject_ptr, m_name, m_ptr, MD_INDEF_VISIBLE); + monster_race_track(subject_ptr, m_ptr->ap_r_idx); + health_track(subject_ptr, g_ptr->m_idx); + handle_stuff(subject_ptr); - /* Interact */ - while (TRUE) - { - char acount[10]; + /* Interact */ + while (TRUE) { + char acount[10]; - if (recall) - { - screen_save(); + if (recall) { + screen_save(); - /* Recall on screen */ - screen_roff(subject_ptr, m_ptr->ap_r_idx, 0); + /* Recall on screen */ + screen_roff(subject_ptr, m_ptr->ap_r_idx, 0); - /* Hack -- Complete the prompt (again) */ - Term_addstr(-1, TERM_WHITE, format(_(" [r思 %s%s]", " [r,%s%s]"), x_info, info)); + /* Hack -- Complete the prompt (again) */ + Term_addstr(-1, TERM_WHITE, format(_(" [r思 %s%s]", " [r,%s%s]"), x_info, info)); - query = inkey(); + query = inkey(); - screen_load(); + screen_load(); - /* Normal commands */ - if (query != 'r') break; + /* Normal commands */ + if (query != 'r') + break; - recall = FALSE; + recall = FALSE; - /* Cleare recall text and repeat */ - continue; - } + /* Cleare recall text and repeat */ + continue; + } - /*** Normal ***/ + /*** Normal ***/ - /* Describe, and prompt for recall */ - evaluate_monster_exp(subject_ptr, acount, m_ptr); + /* Describe, and prompt for recall */ + evaluate_monster_exp(subject_ptr, acount, m_ptr); #ifdef JP - sprintf(out_val, "[%s]%s%s(%s)%s%s [r思 %s%s]", acount, s1, m_name, look_mon_desc(m_ptr, 0x01), s2, s3, x_info, info); + sprintf(out_val, "[%s]%s%s(%s)%s%s [r思 %s%s]", acount, s1, m_name, look_mon_desc(m_ptr, 0x01), s2, s3, x_info, info); #else - sprintf(out_val, "[%s]%s%s%s%s(%s) [r, %s%s]", acount, s1, s2, s3, m_name, look_mon_desc(m_ptr, 0x01), x_info, info); + sprintf(out_val, "[%s]%s%s%s%s(%s) [r, %s%s]", acount, s1, s2, s3, m_name, look_mon_desc(m_ptr, 0x01), x_info, info); #endif - prt(out_val, 0, 0); + prt(out_val, 0, 0); - /* Place cursor */ - move_cursor_relative(y, x); + /* Place cursor */ + move_cursor_relative(y, x); - query = inkey(); + query = inkey(); - /* Normal commands */ - if (query != 'r') break; + /* Normal commands */ + if (query != 'r') + break; - recall = TRUE; - } + recall = TRUE; + } - /* Always stop at "normal" keys */ - if ((query != '\r') && (query != '\n') && (query != ' ') && (query != 'x')) return query; + /* Always stop at "normal" keys */ + if ((query != '\r') && (query != '\n') && (query != ' ') && (query != 'x')) + return query; - /* Sometimes stop at "space" key */ - if ((query == ' ') && !(mode & (TARGET_LOOK))) return query; + /* Sometimes stop at "space" key */ + if ((query == ' ') && !(mode & (TARGET_LOOK))) + return query; - /* Change the intro */ - s1 = _("それは", "It is "); + /* Change the intro */ + s1 = _("それは", "It is "); - /* Hack -- take account of gender */ - if (ap_r_ptr->flags1 & (RF1_FEMALE)) s1 = _("彼女は", "She is "); - else if (ap_r_ptr->flags1 & (RF1_MALE)) s1 = _("彼は", "He is "); + /* Hack -- take account of gender */ + if (ap_r_ptr->flags1 & (RF1_FEMALE)) + s1 = _("彼女は", "She is "); + else if (ap_r_ptr->flags1 & (RF1_MALE)) + s1 = _("彼は", "He is "); - /* Use a preposition */ + /* Use a preposition */ #ifdef JP - s2 = "を"; - s3 = "持っている"; + s2 = "を"; + s3 = "持っている"; #else - s2 = "carrying "; + s2 = "carrying "; #endif - /* Scan all objects being carried */ - for (OBJECT_IDX this_o_idx = m_ptr->hold_o_idx; this_o_idx; this_o_idx = next_o_idx) - { - GAME_TEXT o_name[MAX_NLEN]; + /* Scan all objects being carried */ + for (OBJECT_IDX this_o_idx = m_ptr->hold_o_idx; this_o_idx; this_o_idx = next_o_idx) { + GAME_TEXT o_name[MAX_NLEN]; - object_type *o_ptr; - o_ptr = &subject_ptr->current_floor_ptr->o_list[this_o_idx]; - next_o_idx = o_ptr->next_o_idx; + object_type *o_ptr; + o_ptr = &subject_ptr->current_floor_ptr->o_list[this_o_idx]; + next_o_idx = o_ptr->next_o_idx; - object_desc(subject_ptr, o_name, o_ptr, 0); + object_desc(subject_ptr, o_name, o_ptr, 0); #ifdef JP - sprintf(out_val, "%s%s%s%s[%s]", s1, o_name, s2, s3, info); + sprintf(out_val, "%s%s%s%s[%s]", s1, o_name, s2, s3, info); #else - sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, o_name, info); + sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, o_name, info); #endif - prt(out_val, 0, 0); - move_cursor_relative(y, x); - query = inkey(); + prt(out_val, 0, 0); + move_cursor_relative(y, x); + query = inkey(); - /* Always stop at "normal" keys */ - if ((query != '\r') && (query != '\n') && (query != ' ') && (query != 'x')) return query; + /* Always stop at "normal" keys */ + if ((query != '\r') && (query != '\n') && (query != ' ') && (query != 'x')) + return query; - /* Sometimes stop at "space" key */ - if ((query == ' ') && !(mode & (TARGET_LOOK))) return query; + /* Sometimes stop at "space" key */ + if ((query == ' ') && !(mode & (TARGET_LOOK))) + return query; - /* Change the intro */ - s2 = _("をまた", "also carrying "); - } + /* Change the intro */ + s2 = _("をまた", "also carrying "); + } - /* Use a preposition */ + /* Use a preposition */ #ifdef JP - s2 = "の上"; - s3 = "にいる"; + s2 = "の上"; + s3 = "にいる"; #else - s2 = "on "; + s2 = "on "; #endif - } + } - if (floor_num) - { - int min_width = 0; + if (floor_num) { + int min_width = 0; - while (TRUE) - { - if (floor_num == 1) - { - GAME_TEXT o_name[MAX_NLEN]; + while (TRUE) { + if (floor_num == 1) { + GAME_TEXT o_name[MAX_NLEN]; - object_type *o_ptr; - o_ptr = &subject_ptr->current_floor_ptr->o_list[floor_list[0]]; + object_type *o_ptr; + o_ptr = &subject_ptr->current_floor_ptr->o_list[floor_list[0]]; - object_desc(subject_ptr, o_name, o_ptr, 0); + object_desc(subject_ptr, o_name, o_ptr, 0); #ifdef JP - sprintf(out_val, "%s%s%s%s[%s]", s1, o_name, s2, s3, info); + sprintf(out_val, "%s%s%s%s[%s]", s1, o_name, s2, s3, info); #else - sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, o_name, info); + sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, o_name, info); #endif - prt(out_val, 0, 0); - move_cursor_relative(y, x); + prt(out_val, 0, 0); + move_cursor_relative(y, x); - query = inkey(); + query = inkey(); - /* End this grid */ - return query; - } + /* End this grid */ + return query; + } - /* Provide one cushion before item listing */ - if (boring) - { - /* Display rough information about items */ + /* Provide one cushion before item listing */ + if (boring) { + /* Display rough information about items */ #ifdef JP - sprintf(out_val, "%s %d個のアイテム%s%s ['x'で一覧, %s]", s1, (int)floor_num, s2, s3, info); + sprintf(out_val, "%s %d個のアイテム%s%s ['x'で一覧, %s]", s1, (int)floor_num, s2, s3, info); #else - sprintf(out_val, "%s%s%sa pile of %d items [x,%s]", s1, s2, s3, (int)floor_num, info); + sprintf(out_val, "%s%s%sa pile of %d items [x,%s]", s1, s2, s3, (int)floor_num, info); #endif - prt(out_val, 0, 0); - move_cursor_relative(y, x); - - query = inkey(); + prt(out_val, 0, 0); + move_cursor_relative(y, x); - /* No request for listing */ - if (query != 'x' && query != ' ') return query; - } + query = inkey(); + /* No request for listing */ + if (query != 'x' && query != ' ') + return query; + } - /** Display list of items **/ + /** Display list of items **/ - /* Continue scrolling list if requested */ - while (TRUE) - { - int i; - OBJECT_IDX o_idx; - screen_save(); + /* Continue scrolling list if requested */ + while (TRUE) { + int i; + OBJECT_IDX o_idx; + screen_save(); - /* Display */ - show_gold_on_floor = TRUE; - (void)show_floor_items(subject_ptr, 0, y, x, &min_width, 0); - show_gold_on_floor = FALSE; + /* Display */ + show_gold_on_floor = TRUE; + (void)show_floor_items(subject_ptr, 0, y, x, &min_width, 0); + show_gold_on_floor = FALSE; - /* Prompt */ + /* Prompt */ #ifdef JP - sprintf(out_val, "%s %d個のアイテム%s%s [Enterで次へ, %s]", s1, (int)floor_num, s2, s3, info); + sprintf(out_val, "%s %d個のアイテム%s%s [Enterで次へ, %s]", s1, (int)floor_num, s2, s3, info); #else - sprintf(out_val, "%s%s%sa pile of %d items [Enter,%s]", s1, s2, s3, (int)floor_num, info); + sprintf(out_val, "%s%s%sa pile of %d items [Enter,%s]", s1, s2, s3, (int)floor_num, info); #endif - prt(out_val, 0, 0); + prt(out_val, 0, 0); - query = inkey(); - screen_load(); + query = inkey(); + screen_load(); - /* Exit unless 'Enter' */ - if (query != '\n' && query != '\r') - { - return query; - } + /* Exit unless 'Enter' */ + if (query != '\n' && query != '\r') { + return query; + } - /* Get the object being moved. */ - o_idx = g_ptr->o_idx; + /* Get the object being moved. */ + o_idx = g_ptr->o_idx; - /* Only rotate a pile of two or more objects. */ - if (!(o_idx && subject_ptr->current_floor_ptr->o_list[o_idx].next_o_idx)) continue; + /* Only rotate a pile of two or more objects. */ + if (!(o_idx && subject_ptr->current_floor_ptr->o_list[o_idx].next_o_idx)) + continue; - /* Remove the first object from the list. */ - excise_object_idx(subject_ptr->current_floor_ptr, o_idx); + /* Remove the first object from the list. */ + excise_object_idx(subject_ptr->current_floor_ptr, o_idx); - /* Find end of the list. */ - i = g_ptr->o_idx; - while (subject_ptr->current_floor_ptr->o_list[i].next_o_idx) - i = subject_ptr->current_floor_ptr->o_list[i].next_o_idx; + /* Find end of the list. */ + i = g_ptr->o_idx; + while (subject_ptr->current_floor_ptr->o_list[i].next_o_idx) + i = subject_ptr->current_floor_ptr->o_list[i].next_o_idx; - /* Add after the last object. */ - subject_ptr->current_floor_ptr->o_list[i].next_o_idx = o_idx; + /* Add after the last object. */ + subject_ptr->current_floor_ptr->o_list[i].next_o_idx = o_idx; - /* Loop and re-display the list */ - } - } + /* Loop and re-display the list */ + } + } - /* NOTREACHED */ - } + /* NOTREACHED */ + } - /* Scan all objects in the grid */ - for (OBJECT_IDX this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) - { - object_type *o_ptr; - o_ptr = &subject_ptr->current_floor_ptr->o_list[this_o_idx]; - next_o_idx = o_ptr->next_o_idx; + /* Scan all objects in the grid */ + for (OBJECT_IDX this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) { + object_type *o_ptr; + o_ptr = &subject_ptr->current_floor_ptr->o_list[this_o_idx]; + next_o_idx = o_ptr->next_o_idx; - if (o_ptr->marked & OM_FOUND) - { - GAME_TEXT o_name[MAX_NLEN]; + if (o_ptr->marked & OM_FOUND) { + GAME_TEXT o_name[MAX_NLEN]; - /* Not boring */ - boring = FALSE; + /* Not boring */ + boring = FALSE; - object_desc(subject_ptr, o_name, o_ptr, 0); + object_desc(subject_ptr, o_name, o_ptr, 0); #ifdef JP - sprintf(out_val, "%s%s%s%s[%s]", s1, o_name, s2, s3, info); + sprintf(out_val, "%s%s%s%s[%s]", s1, o_name, s2, s3, info); #else - sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, o_name, info); + sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, o_name, info); #endif - prt(out_val, 0, 0); - move_cursor_relative(y, x); - query = inkey(); + prt(out_val, 0, 0); + move_cursor_relative(y, x); + query = inkey(); - /* Always stop at "normal" keys */ - if ((query != '\r') && (query != '\n') && (query != ' ') && (query != 'x')) return query; + /* Always stop at "normal" keys */ + if ((query != '\r') && (query != '\n') && (query != ' ') && (query != 'x')) + return query; - /* Sometimes stop at "space" key */ - if ((query == ' ') && !(mode & TARGET_LOOK)) return query; + /* Sometimes stop at "space" key */ + if ((query == ' ') && !(mode & TARGET_LOOK)) + return query; - /* Change the intro */ - s1 = _("それは", "It is "); + /* Change the intro */ + s1 = _("それは", "It is "); - /* Plurals */ - if (o_ptr->number != 1) s1 = _("それらは", "They are "); + /* Plurals */ + if (o_ptr->number != 1) + s1 = _("それらは", "They are "); - /* Preposition */ + /* Preposition */ #ifdef JP - s2 = "の上"; - s3 = "に見える"; + s2 = "の上"; + s3 = "に見える"; #else - s2 = "on "; + s2 = "on "; #endif - - } - } - - /* Feature code (applying "mimic" field) */ - feat = get_feat_mimic(g_ptr); - - /* Require knowledge about grid, or ability to see grid */ - if (!(g_ptr->info & CAVE_MARK) && !player_can_see_bold(subject_ptr, y, x)) - { - /* Forget feature */ - feat = feat_none; - } - - f_ptr = &f_info[feat]; - - /* Terrain feature if needed */ - if (!boring && !have_flag(f_ptr->flags, FF_REMEMBER)) - { - if ((query != '\r') && (query != '\n')) return query; - return 0; - } - - /* Hack -- special handling for quest entrances */ - concptr name; - if (have_flag(f_ptr->flags, FF_QUEST_ENTER)) - { - /* Set the quest number temporary */ - IDX old_quest = subject_ptr->current_floor_ptr->inside_quest; - int j; - - /* Clear the text */ - for (j = 0; j < 10; j++) quest_text[j][0] = '\0'; - quest_text_line = 0; - - subject_ptr->current_floor_ptr->inside_quest = g_ptr->special; - - /* Get the quest text */ - init_flags = INIT_NAME_ONLY; - - parse_fixed_map(subject_ptr, "q_info.txt", 0, 0, 0, 0); - - name = format(_("クエスト「%s」(%d階相当)", "the entrance to the quest '%s'(level %d)"), - quest[g_ptr->special].name, quest[g_ptr->special].level); - - /* Reset the old quest number */ - subject_ptr->current_floor_ptr->inside_quest = old_quest; - } - - /* Hack -- special handling for building doors */ - else if (have_flag(f_ptr->flags, FF_BLDG) && !subject_ptr->current_floor_ptr->inside_arena) - { - name = building[f_ptr->subtype].name; - } - else if (have_flag(f_ptr->flags, FF_ENTRANCE)) - { - name = format(_("%s(%d階相当)", "%s(level %d)"), d_text + d_info[g_ptr->special].text, d_info[g_ptr->special].mindepth); - } - else if (have_flag(f_ptr->flags, FF_TOWN)) - { - name = town_info[g_ptr->special].name; - } - else if (subject_ptr->wild_mode && (feat == feat_floor)) - { - name = _("道", "road"); - } - else - { - name = f_name + f_ptr->name; - } - - /* Pick a prefix */ - if (*s2 && - ((!have_flag(f_ptr->flags, FF_MOVE) && !have_flag(f_ptr->flags, FF_CAN_FLY)) || - (!have_flag(f_ptr->flags, FF_LOS) && !have_flag(f_ptr->flags, FF_TREE)) || - have_flag(f_ptr->flags, FF_TOWN))) - { - s2 = _("の中", "in "); - } - - /* Hack -- special introduction for store & building doors -KMW- */ - if (have_flag(f_ptr->flags, FF_STORE) || - have_flag(f_ptr->flags, FF_QUEST_ENTER) || - (have_flag(f_ptr->flags, FF_BLDG) && !subject_ptr->current_floor_ptr->inside_arena) || - have_flag(f_ptr->flags, FF_ENTRANCE)) - { - s2 = _("の入口", ""); - } + } + } + + /* Feature code (applying "mimic" field) */ + feat = get_feat_mimic(g_ptr); + + /* Require knowledge about grid, or ability to see grid */ + if (!(g_ptr->info & CAVE_MARK) && !player_can_see_bold(subject_ptr, y, x)) { + /* Forget feature */ + feat = feat_none; + } + + f_ptr = &f_info[feat]; + + /* Terrain feature if needed */ + if (!boring && !have_flag(f_ptr->flags, FF_REMEMBER)) { + if ((query != '\r') && (query != '\n')) + return query; + return 0; + } + + /* Hack -- special handling for quest entrances */ + concptr name; + if (have_flag(f_ptr->flags, FF_QUEST_ENTER)) { + /* Set the quest number temporary */ + IDX old_quest = subject_ptr->current_floor_ptr->inside_quest; + int j; + + /* Clear the text */ + for (j = 0; j < 10; j++) + quest_text[j][0] = '\0'; + quest_text_line = 0; + + subject_ptr->current_floor_ptr->inside_quest = g_ptr->special; + + /* Get the quest text */ + init_flags = INIT_NAME_ONLY; + + parse_fixed_map(subject_ptr, "q_info.txt", 0, 0, 0, 0); + + name = format(_("クエスト「%s」(%d階相当)", "the entrance to the quest '%s'(level %d)"), quest[g_ptr->special].name, quest[g_ptr->special].level); + + /* Reset the old quest number */ + subject_ptr->current_floor_ptr->inside_quest = old_quest; + } + + /* Hack -- special handling for building doors */ + else if (have_flag(f_ptr->flags, FF_BLDG) && !subject_ptr->current_floor_ptr->inside_arena) { + name = building[f_ptr->subtype].name; + } else if (have_flag(f_ptr->flags, FF_ENTRANCE)) { + name = format(_("%s(%d階相当)", "%s(level %d)"), d_text + d_info[g_ptr->special].text, d_info[g_ptr->special].mindepth); + } else if (have_flag(f_ptr->flags, FF_TOWN)) { + name = town_info[g_ptr->special].name; + } else if (subject_ptr->wild_mode && (feat == feat_floor)) { + name = _("道", "road"); + } else { + name = f_name + f_ptr->name; + } + + /* Pick a prefix */ + if (*s2 + && ((!have_flag(f_ptr->flags, FF_MOVE) && !have_flag(f_ptr->flags, FF_CAN_FLY)) + || (!have_flag(f_ptr->flags, FF_LOS) && !have_flag(f_ptr->flags, FF_TREE)) || have_flag(f_ptr->flags, FF_TOWN))) { + s2 = _("の中", "in "); + } + + /* Hack -- special introduction for store & building doors -KMW- */ + if (have_flag(f_ptr->flags, FF_STORE) || have_flag(f_ptr->flags, FF_QUEST_ENTER) + || (have_flag(f_ptr->flags, FF_BLDG) && !subject_ptr->current_floor_ptr->inside_arena) || have_flag(f_ptr->flags, FF_ENTRANCE)) { + s2 = _("の入口", ""); + } #ifdef JP #else - else if (have_flag(f_ptr->flags, FF_FLOOR) || - have_flag(f_ptr->flags, FF_TOWN) || - have_flag(f_ptr->flags, FF_SHALLOW) || - have_flag(f_ptr->flags, FF_DEEP)) - { - s3 = ""; - } - else - { - /* Pick proper indefinite article */ - s3 = (is_a_vowel(name[0])) ? "an " : "a "; - } + else if (have_flag(f_ptr->flags, FF_FLOOR) || have_flag(f_ptr->flags, FF_TOWN) || have_flag(f_ptr->flags, FF_SHALLOW) || have_flag(f_ptr->flags, FF_DEEP)) { + s3 = ""; + } else { + /* Pick proper indefinite article */ + s3 = (is_a_vowel(name[0])) ? "an " : "a "; + } #endif - /* Display a message */ - if (current_world_ptr->wizard) - { - char f_idx_str[32]; - if (g_ptr->mimic) sprintf(f_idx_str, "%d/%d", g_ptr->feat, g_ptr->mimic); - else sprintf(f_idx_str, "%d", g_ptr->feat); + /* Display a message */ + if (current_world_ptr->wizard) { + char f_idx_str[32]; + if (g_ptr->mimic) + sprintf(f_idx_str, "%d/%d", g_ptr->feat, g_ptr->mimic); + else + sprintf(f_idx_str, "%d", g_ptr->feat); #ifdef JP - sprintf(out_val, "%s%s%s%s[%s] %x %s %d %d %d (%d,%d) %d", s1, name, s2, s3, info, (unsigned int)g_ptr->info, f_idx_str, g_ptr->dist, g_ptr->cost, g_ptr->when, (int)y, (int)x, travel.cost[y][x]); + sprintf(out_val, "%s%s%s%s[%s] %x %s %d %d %d (%d,%d) %d", s1, name, s2, s3, info, (unsigned int)g_ptr->info, f_idx_str, g_ptr->dist, g_ptr->cost, + g_ptr->when, (int)y, (int)x, travel.cost[y][x]); #else - sprintf(out_val, "%s%s%s%s [%s] %x %s %d %d %d (%d,%d)", s1, s2, s3, name, info, g_ptr->info, f_idx_str, g_ptr->dist, g_ptr->cost, g_ptr->when, (int)y, (int)x); + sprintf(out_val, "%s%s%s%s [%s] %x %s %d %d %d (%d,%d)", s1, s2, s3, name, info, g_ptr->info, f_idx_str, g_ptr->dist, g_ptr->cost, g_ptr->when, (int)y, + (int)x); #endif - } - else + } else #ifdef JP - sprintf(out_val, "%s%s%s%s[%s]", s1, name, s2, s3, info); + sprintf(out_val, "%s%s%s%s[%s]", s1, name, s2, s3, info); #else - sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, name, info); + sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, name, info); #endif - prt(out_val, 0, 0); - move_cursor_relative(y, x); - query = inkey(); + prt(out_val, 0, 0); + move_cursor_relative(y, x); + query = inkey(); - if ((query != '\r') && (query != '\n') && (query != ' ')) return query; - return 0; + if ((query != '\r') && (query != '\n') && (query != ' ')) + return query; + return 0; } - /* * Handle "target" and "look". * @@ -1059,470 +1035,434 @@ static char target_set_aux(player_type *subject_ptr, POSITION y, POSITION x, BIT */ bool target_set(player_type *creature_ptr, BIT_FLAGS mode) { - int i, d, t, bd; - POSITION y = creature_ptr->y; - POSITION x = creature_ptr->x; - - bool done = FALSE; - bool flag = TRUE; - char query; - char info[80]; - char same_key; - grid_type *g_ptr; - TERM_LEN wid, hgt; - - get_screen_size(&wid, &hgt); - - /* Cancel target */ - target_who = 0; - - if (rogue_like_commands) - { - same_key = 'x'; - } - else - { - same_key = 'l'; - } - - /* Prepare the "temp" array */ - target_set_prepare(creature_ptr, mode); - - /* Start near the player */ - int m = 0; - - /* Interact */ - floor_type *floor_ptr = creature_ptr->current_floor_ptr; - while (!done) - { - /* Interesting grids */ - if (flag && tmp_pos.n) - { - y = tmp_pos.y[m]; - x = tmp_pos.x[m]; - - /* Set forcus */ - change_panel_xy(creature_ptr, y, x); - - if (!(mode & TARGET_LOOK)) print_path(creature_ptr, y, x); - - /* Access */ - g_ptr = &floor_ptr->grid_array[y][x]; - - /* Allow target */ - if (target_able(creature_ptr, g_ptr->m_idx)) - { - strcpy(info, _("q止 t決 p自 o現 +次 -前", "q,t,p,o,+,-,")); - } - - /* Dis-allow target */ - else - { - strcpy(info, _("q止 p自 o現 +次 -前", "q,p,o,+,-,")); - } - - if (cheat_sight) - { - char cheatinfo[30]; - sprintf(cheatinfo, " LOS:%d, PROJECTABLE:%d", - los(creature_ptr, creature_ptr->y, creature_ptr->x, y, x), projectable(creature_ptr, creature_ptr->y, creature_ptr->x, y, x)); - strcat(info, cheatinfo); - } - - /* Describe and Prompt */ - while (TRUE) - { - query = target_set_aux(creature_ptr, y, x, mode, info); - if (query)break; - } - - /* Assume no "direction" */ - d = 0; - - if (use_menu) - { - if (query == '\r') query = 't'; - } - - /* Analyze */ - switch (query) - { - case ESCAPE: - case 'q': - { - done = TRUE; - break; - } - - case 't': - case '.': - case '5': - case '0': - { - if (target_able(creature_ptr, g_ptr->m_idx)) - { - health_track(creature_ptr, g_ptr->m_idx); - target_who = g_ptr->m_idx; - target_row = y; - target_col = x; - done = TRUE; - } - else - { - bell(); - } - break; - } - - case ' ': - case '*': - case '+': - { - if (++m == tmp_pos.n) - { - m = 0; - if (!expand_list) done = TRUE; - } - break; - } - - case '-': - { - if (m-- == 0) - { - m = tmp_pos.n - 1; - if (!expand_list) done = TRUE; - } - break; - } - - case 'p': - { - /* Recenter the map around the player */ - verify_panel(creature_ptr); - creature_ptr->update |= (PU_MONSTERS); - creature_ptr->redraw |= (PR_MAP); - creature_ptr->window |= (PW_OVERHEAD); - handle_stuff(creature_ptr); - - /* Recalculate interesting grids */ - target_set_prepare(creature_ptr, mode); - - y = creature_ptr->y; - x = creature_ptr->x; - } - /* Fall through */ - - case 'o': - { - flag = FALSE; - break; - } - - case 'm': - { - break; - } - - default: - { - if (query == same_key) - { - if (++m == tmp_pos.n) - { - m = 0; - if (!expand_list) done = TRUE; - } - } - else - { - /* Extract the action (if any) */ - d = get_keymap_dir(query); - - if (!d) bell(); - break; - } - } - } - /* Hack -- move around */ - if (d) - { - /* Modified to scroll to monster */ - POSITION y2 = panel_row_min; - POSITION x2 = panel_col_min; - - /* Find a new monster */ - i = target_pick(tmp_pos.y[m], tmp_pos.x[m], ddy[d], ddx[d]); - - /* Request to target past last interesting grid */ - while (flag && (i < 0)) - { - /* Note the change */ - if (change_panel(creature_ptr, ddy[d], ddx[d])) - { - int v = tmp_pos.y[m]; - int u = tmp_pos.x[m]; - - /* Recalculate interesting grids */ - target_set_prepare(creature_ptr, mode); - - /* Look at interesting grids */ - flag = TRUE; - - /* Find a new monster */ - i = target_pick(v, u, ddy[d], ddx[d]); - - /* Use that grid */ - if (i >= 0) m = i; - continue; - } - - /* Nothing interesting */ - POSITION dx = ddx[d]; - POSITION dy = ddy[d]; - - /* Restore previous position */ - panel_row_min = y2; - panel_col_min = x2; - panel_bounds_center(); - - creature_ptr->update |= (PU_MONSTERS); - creature_ptr->redraw |= (PR_MAP); - creature_ptr->window |= (PW_OVERHEAD); - handle_stuff(creature_ptr); - - /* Recalculate interesting grids */ - target_set_prepare(creature_ptr, mode); - - /* Look at boring grids */ - flag = FALSE; - - /* Move */ - x += dx; - y += dy; - - /* Do not move horizontally if unnecessary */ - if (((x < panel_col_min + wid / 2) && (dx > 0)) || - ((x > panel_col_min + wid / 2) && (dx < 0))) - { - dx = 0; - } - - /* Do not move vertically if unnecessary */ - if (((y < panel_row_min + hgt / 2) && (dy > 0)) || - ((y > panel_row_min + hgt / 2) && (dy < 0))) - { - dy = 0; - } - - /* Apply the motion */ - if ((y >= panel_row_min + hgt) || (y < panel_row_min) || - (x >= panel_col_min + wid) || (x < panel_col_min)) - { - if (change_panel(creature_ptr, dy, dx)) target_set_prepare(creature_ptr, mode); - } - - /* Slide into legality */ - if (x >= floor_ptr->width - 1) x = floor_ptr->width - 2; - else if (x <= 0) x = 1; - - /* Slide into legality */ - if (y >= floor_ptr->height - 1) y = floor_ptr->height - 2; - else if (y <= 0) y = 1; - } - - /* Use that grid */ - m = i; - } - - continue; - } - - /* Arbitrary grids */ - - bool move_fast = FALSE; - - if (!(mode & TARGET_LOOK)) print_path(creature_ptr, y, x); - - /* Access */ - g_ptr = &floor_ptr->grid_array[y][x]; - - /* Default prompt */ - strcpy(info, _("q止 t決 p自 m近 +次 -前", "q,t,p,m,+,-,")); - - if (cheat_sight) - { - char cheatinfo[100]; - sprintf(cheatinfo, " LOS:%d, PROJECTABLE:%d, SPECIAL:%d", - los(creature_ptr, creature_ptr->y, creature_ptr->x, y, x), - projectable(creature_ptr, creature_ptr->y, creature_ptr->x, y, x), g_ptr->special); - strcat(info, cheatinfo); - } - - /* Describe and Prompt (enable "TARGET_LOOK") */ - while ((query = target_set_aux(creature_ptr, y, x, mode | TARGET_LOOK, info)) == 0); - - /* Assume no direction */ - d = 0; - - if (use_menu) - { - if (query == '\r') query = 't'; - } - - /* Analyze the keypress */ - switch (query) - { - case ESCAPE: - case 'q': - { - done = TRUE; - break; - } - - case 't': - case '.': - case '5': - case '0': - { - target_who = -1; - target_row = y; - target_col = x; - done = TRUE; - break; - } - - case 'p': - { - /* Recenter the map around the player */ - verify_panel(creature_ptr); - creature_ptr->update |= (PU_MONSTERS); - creature_ptr->redraw |= (PR_MAP); - creature_ptr->window |= (PW_OVERHEAD); - handle_stuff(creature_ptr); - - /* Recalculate interesting grids */ - target_set_prepare(creature_ptr, mode); - - y = creature_ptr->y; - x = creature_ptr->x; - } - - case 'o': - { - break; - } - - case ' ': - case '*': - case '+': - case '-': - case 'm': - { - flag = TRUE; - - m = 0; - bd = 999; - - /* Pick a nearby monster */ - for (i = 0; i < tmp_pos.n; i++) - { - t = distance(y, x, tmp_pos.y[i], tmp_pos.x[i]); - - /* Pick closest */ - if (t < bd) - { - m = i; - bd = t; - } - } - - /* Nothing interesting */ - if (bd == 999) flag = FALSE; - - break; - } - - default: - { - /* Extract the action (if any) */ - d = get_keymap_dir(query); - - /* XTRA HACK MOVEFAST */ - if (isupper(query)) move_fast = TRUE; - - if (!d) bell(); - break; - } - } - - /* Handle "direction" */ - if (d) - { - POSITION dx = ddx[d]; - POSITION dy = ddy[d]; - - /* XTRA HACK MOVEFAST */ - if (move_fast) - { - int mag = MIN(wid / 2, hgt / 2); - x += dx * mag; - y += dy * mag; - } - else - { - x += dx; - y += dy; - } - - /* Do not move horizontally if unnecessary */ - if (((x < panel_col_min + wid / 2) && (dx > 0)) || - ((x > panel_col_min + wid / 2) && (dx < 0))) - { - dx = 0; - } - - /* Do not move vertically if unnecessary */ - if (((y < panel_row_min + hgt / 2) && (dy > 0)) || - ((y > panel_row_min + hgt / 2) && (dy < 0))) - { - dy = 0; - } - - /* Apply the motion */ - if ((y >= panel_row_min + hgt) || (y < panel_row_min) || - (x >= panel_col_min + wid) || (x < panel_col_min)) - { - if (change_panel(creature_ptr, dy, dx)) target_set_prepare(creature_ptr, mode); - } - - /* Slide into legality */ - if (x >= floor_ptr->width - 1) x = floor_ptr->width - 2; - else if (x <= 0) x = 1; - - /* Slide into legality */ - if (y >= floor_ptr->height - 1) y = floor_ptr->height - 2; - else if (y <= 0) y = 1; - } - } - - /* Forget */ - tmp_pos.n = 0; - - /* Clear the top line */ - prt("", 0, 0); - - /* Recenter the map around the player */ - verify_panel(creature_ptr); - creature_ptr->update |= (PU_MONSTERS); - creature_ptr->redraw |= (PR_MAP); - creature_ptr->window |= (PW_OVERHEAD); - handle_stuff(creature_ptr); - - return target_who != 0; + int i, d, t, bd; + POSITION y = creature_ptr->y; + POSITION x = creature_ptr->x; + + bool done = FALSE; + bool flag = TRUE; + char query; + char info[80]; + char same_key; + grid_type *g_ptr; + TERM_LEN wid, hgt; + + get_screen_size(&wid, &hgt); + + /* Cancel target */ + target_who = 0; + + if (rogue_like_commands) { + same_key = 'x'; + } else { + same_key = 'l'; + } + + /* Prepare the "temp" array */ + target_set_prepare(creature_ptr, mode); + + /* Start near the player */ + int m = 0; + + /* Interact */ + floor_type *floor_ptr = creature_ptr->current_floor_ptr; + while (!done) { + /* Interesting grids */ + if (flag && tmp_pos.n) { + y = tmp_pos.y[m]; + x = tmp_pos.x[m]; + + /* Set forcus */ + change_panel_xy(creature_ptr, y, x); + + if (!(mode & TARGET_LOOK)) + print_path(creature_ptr, y, x); + + /* Access */ + g_ptr = &floor_ptr->grid_array[y][x]; + + /* Allow target */ + if (target_able(creature_ptr, g_ptr->m_idx)) { + strcpy(info, _("q止 t決 p自 o現 +次 -前", "q,t,p,o,+,-,")); + } + + /* Dis-allow target */ + else { + strcpy(info, _("q止 p自 o現 +次 -前", "q,p,o,+,-,")); + } + + if (cheat_sight) { + char cheatinfo[30]; + sprintf(cheatinfo, " LOS:%d, PROJECTABLE:%d", los(creature_ptr, creature_ptr->y, creature_ptr->x, y, x), + projectable(creature_ptr, creature_ptr->y, creature_ptr->x, y, x)); + strcat(info, cheatinfo); + } + + /* Describe and Prompt */ + while (TRUE) { + query = target_set_aux(creature_ptr, y, x, mode, info); + if (query) + break; + } + + /* Assume no "direction" */ + d = 0; + + if (use_menu) { + if (query == '\r') + query = 't'; + } + + /* Analyze */ + switch (query) { + case ESCAPE: + case 'q': { + done = TRUE; + break; + } + + case 't': + case '.': + case '5': + case '0': { + if (target_able(creature_ptr, g_ptr->m_idx)) { + health_track(creature_ptr, g_ptr->m_idx); + target_who = g_ptr->m_idx; + target_row = y; + target_col = x; + done = TRUE; + } else { + bell(); + } + break; + } + + case ' ': + case '*': + case '+': { + if (++m == tmp_pos.n) { + m = 0; + if (!expand_list) + done = TRUE; + } + break; + } + + case '-': { + if (m-- == 0) { + m = tmp_pos.n - 1; + if (!expand_list) + done = TRUE; + } + break; + } + + case 'p': { + /* Recenter the map around the player */ + verify_panel(creature_ptr); + creature_ptr->update |= (PU_MONSTERS); + creature_ptr->redraw |= (PR_MAP); + creature_ptr->window |= (PW_OVERHEAD); + handle_stuff(creature_ptr); + + /* Recalculate interesting grids */ + target_set_prepare(creature_ptr, mode); + + y = creature_ptr->y; + x = creature_ptr->x; + } + /* Fall through */ + + case 'o': { + flag = FALSE; + break; + } + + case 'm': { + break; + } + + default: { + if (query == same_key) { + if (++m == tmp_pos.n) { + m = 0; + if (!expand_list) + done = TRUE; + } + } else { + /* Extract the action (if any) */ + d = get_keymap_dir(query); + + if (!d) + bell(); + break; + } + } + } + /* Hack -- move around */ + if (d) { + /* Modified to scroll to monster */ + POSITION y2 = panel_row_min; + POSITION x2 = panel_col_min; + + /* Find a new monster */ + i = target_pick(tmp_pos.y[m], tmp_pos.x[m], ddy[d], ddx[d]); + + /* Request to target past last interesting grid */ + while (flag && (i < 0)) { + /* Note the change */ + if (change_panel(creature_ptr, ddy[d], ddx[d])) { + int v = tmp_pos.y[m]; + int u = tmp_pos.x[m]; + + /* Recalculate interesting grids */ + target_set_prepare(creature_ptr, mode); + + /* Look at interesting grids */ + flag = TRUE; + + /* Find a new monster */ + i = target_pick(v, u, ddy[d], ddx[d]); + + /* Use that grid */ + if (i >= 0) + m = i; + continue; + } + + /* Nothing interesting */ + POSITION dx = ddx[d]; + POSITION dy = ddy[d]; + + /* Restore previous position */ + panel_row_min = y2; + panel_col_min = x2; + panel_bounds_center(); + + creature_ptr->update |= (PU_MONSTERS); + creature_ptr->redraw |= (PR_MAP); + creature_ptr->window |= (PW_OVERHEAD); + handle_stuff(creature_ptr); + + /* Recalculate interesting grids */ + target_set_prepare(creature_ptr, mode); + + /* Look at boring grids */ + flag = FALSE; + + /* Move */ + x += dx; + y += dy; + + /* Do not move horizontally if unnecessary */ + if (((x < panel_col_min + wid / 2) && (dx > 0)) || ((x > panel_col_min + wid / 2) && (dx < 0))) { + dx = 0; + } + + /* Do not move vertically if unnecessary */ + if (((y < panel_row_min + hgt / 2) && (dy > 0)) || ((y > panel_row_min + hgt / 2) && (dy < 0))) { + dy = 0; + } + + /* Apply the motion */ + if ((y >= panel_row_min + hgt) || (y < panel_row_min) || (x >= panel_col_min + wid) || (x < panel_col_min)) { + if (change_panel(creature_ptr, dy, dx)) + target_set_prepare(creature_ptr, mode); + } + + /* Slide into legality */ + if (x >= floor_ptr->width - 1) + x = floor_ptr->width - 2; + else if (x <= 0) + x = 1; + + /* Slide into legality */ + if (y >= floor_ptr->height - 1) + y = floor_ptr->height - 2; + else if (y <= 0) + y = 1; + } + + /* Use that grid */ + m = i; + } + + continue; + } + + /* Arbitrary grids */ + + bool move_fast = FALSE; + + if (!(mode & TARGET_LOOK)) + print_path(creature_ptr, y, x); + + /* Access */ + g_ptr = &floor_ptr->grid_array[y][x]; + + /* Default prompt */ + strcpy(info, _("q止 t決 p自 m近 +次 -前", "q,t,p,m,+,-,")); + + if (cheat_sight) { + char cheatinfo[100]; + sprintf(cheatinfo, " LOS:%d, PROJECTABLE:%d, SPECIAL:%d", los(creature_ptr, creature_ptr->y, creature_ptr->x, y, x), + projectable(creature_ptr, creature_ptr->y, creature_ptr->x, y, x), g_ptr->special); + strcat(info, cheatinfo); + } + + /* Describe and Prompt (enable "TARGET_LOOK") */ + while ((query = target_set_aux(creature_ptr, y, x, mode | TARGET_LOOK, info)) == 0) + ; + + /* Assume no direction */ + d = 0; + + if (use_menu) { + if (query == '\r') + query = 't'; + } + + /* Analyze the keypress */ + switch (query) { + case ESCAPE: + case 'q': { + done = TRUE; + break; + } + + case 't': + case '.': + case '5': + case '0': { + target_who = -1; + target_row = y; + target_col = x; + done = TRUE; + break; + } + + case 'p': { + /* Recenter the map around the player */ + verify_panel(creature_ptr); + creature_ptr->update |= (PU_MONSTERS); + creature_ptr->redraw |= (PR_MAP); + creature_ptr->window |= (PW_OVERHEAD); + handle_stuff(creature_ptr); + + /* Recalculate interesting grids */ + target_set_prepare(creature_ptr, mode); + + y = creature_ptr->y; + x = creature_ptr->x; + } + + case 'o': { + break; + } + + case ' ': + case '*': + case '+': + case '-': + case 'm': { + flag = TRUE; + + m = 0; + bd = 999; + + /* Pick a nearby monster */ + for (i = 0; i < tmp_pos.n; i++) { + t = distance(y, x, tmp_pos.y[i], tmp_pos.x[i]); + + /* Pick closest */ + if (t < bd) { + m = i; + bd = t; + } + } + + /* Nothing interesting */ + if (bd == 999) + flag = FALSE; + + break; + } + + default: { + /* Extract the action (if any) */ + d = get_keymap_dir(query); + + /* XTRA HACK MOVEFAST */ + if (isupper(query)) + move_fast = TRUE; + + if (!d) + bell(); + break; + } + } + + /* Handle "direction" */ + if (d) { + POSITION dx = ddx[d]; + POSITION dy = ddy[d]; + + /* XTRA HACK MOVEFAST */ + if (move_fast) { + int mag = MIN(wid / 2, hgt / 2); + x += dx * mag; + y += dy * mag; + } else { + x += dx; + y += dy; + } + + /* Do not move horizontally if unnecessary */ + if (((x < panel_col_min + wid / 2) && (dx > 0)) || ((x > panel_col_min + wid / 2) && (dx < 0))) { + dx = 0; + } + + /* Do not move vertically if unnecessary */ + if (((y < panel_row_min + hgt / 2) && (dy > 0)) || ((y > panel_row_min + hgt / 2) && (dy < 0))) { + dy = 0; + } + + /* Apply the motion */ + if ((y >= panel_row_min + hgt) || (y < panel_row_min) || (x >= panel_col_min + wid) || (x < panel_col_min)) { + if (change_panel(creature_ptr, dy, dx)) + target_set_prepare(creature_ptr, mode); + } + + /* Slide into legality */ + if (x >= floor_ptr->width - 1) + x = floor_ptr->width - 2; + else if (x <= 0) + x = 1; + + /* Slide into legality */ + if (y >= floor_ptr->height - 1) + y = floor_ptr->height - 2; + else if (y <= 0) + y = 1; + } + } + + /* Forget */ + tmp_pos.n = 0; + + /* Clear the top line */ + prt("", 0, 0); + + /* Recenter the map around the player */ + verify_panel(creature_ptr); + creature_ptr->update |= (PU_MONSTERS); + creature_ptr->redraw |= (PR_MAP); + creature_ptr->window |= (PW_OVERHEAD); + handle_stuff(creature_ptr); + + return target_who != 0; } - /* * Get an "aiming direction" from the user. * @@ -1536,243 +1476,212 @@ bool target_set(player_type *creature_ptr, BIT_FLAGS mode) */ bool get_aim_dir(player_type *creature_ptr, DIRECTION *dp) { - /* Global direction */ - DIRECTION dir = command_dir; - - /* Hack -- auto-target if requested */ - if (use_old_target && target_okay(creature_ptr)) dir = 5; - - COMMAND_CODE code; - if (repeat_pull(&code)) - { - /* Confusion? */ - - /* Verify */ - if (!(code == 5 && !target_okay(creature_ptr))) - { - /* return TRUE; */ - dir = (DIRECTION)code; - } - } - - *dp = (DIRECTION)code; - - /* Ask until satisfied */ - char command; - while (!dir) - { - /* Choose a prompt */ - concptr p; - if (!target_okay(creature_ptr)) - { - p = _("方向 ('*'でターゲット選択, ESCで中断)? ", "Direction ('*' to choose a target, Escape to cancel)? "); - } - else - { - p = _("方向 ('5'でターゲットへ, '*'でターゲット再選択, ESCで中断)? ", "Direction ('5' for target, '*' to re-target, Escape to cancel)? "); - } - - /* Get a command (or Cancel) */ - if (!get_com(p, &command, TRUE)) break; - - if (use_menu) - { - if (command == '\r') command = 't'; - } - - /* Convert various keys to "standard" keys */ - switch (command) - { - /* Use current target */ - case 'T': - case 't': - case '.': - case '5': - case '0': - { - dir = 5; - break; - } - - /* Set new target */ - case '*': - case ' ': - case '\r': - { - if (target_set(creature_ptr, TARGET_KILL)) dir = 5; - break; - } - - default: - { - /* Extract the action (if any) */ - dir = get_keymap_dir(command); - - break; - } - } - - /* Verify requested targets */ - if ((dir == 5) && !target_okay(creature_ptr)) dir = 0; - - /* Error */ - if (!dir) bell(); - } - - /* No direction */ - if (!dir) - { - project_length = 0; /* reset to default */ - return FALSE; - } - - /* Save the direction */ - command_dir = dir; - - /* Check for confusion */ - if (creature_ptr->confused) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - - /* Notice confusion */ - if (command_dir != dir) - { - /* Warn the user */ - msg_print(_("あなたは混乱している。", "You are confused.")); - } - - /* Save direction */ - (*dp) = dir; - - repeat_push((COMMAND_CODE)command_dir); - return TRUE; + /* Global direction */ + DIRECTION dir = command_dir; + + /* Hack -- auto-target if requested */ + if (use_old_target && target_okay(creature_ptr)) + dir = 5; + + COMMAND_CODE code; + if (repeat_pull(&code)) { + /* Confusion? */ + + /* Verify */ + if (!(code == 5 && !target_okay(creature_ptr))) { + /* return TRUE; */ + dir = (DIRECTION)code; + } + } + + *dp = (DIRECTION)code; + + /* Ask until satisfied */ + char command; + while (!dir) { + /* Choose a prompt */ + concptr p; + if (!target_okay(creature_ptr)) { + p = _("方向 ('*'でターゲット選択, ESCで中断)? ", "Direction ('*' to choose a target, Escape to cancel)? "); + } else { + p = _("方向 ('5'でターゲットへ, '*'でターゲット再選択, ESCで中断)? ", "Direction ('5' for target, '*' to re-target, Escape to cancel)? "); + } + + /* Get a command (or Cancel) */ + if (!get_com(p, &command, TRUE)) + break; + + if (use_menu) { + if (command == '\r') + command = 't'; + } + + /* Convert various keys to "standard" keys */ + switch (command) { + /* Use current target */ + case 'T': + case 't': + case '.': + case '5': + case '0': { + dir = 5; + break; + } + + /* Set new target */ + case '*': + case ' ': + case '\r': { + if (target_set(creature_ptr, TARGET_KILL)) + dir = 5; + break; + } + + default: { + /* Extract the action (if any) */ + dir = get_keymap_dir(command); + + break; + } + } + + /* Verify requested targets */ + if ((dir == 5) && !target_okay(creature_ptr)) + dir = 0; + + /* Error */ + if (!dir) + bell(); + } + + /* No direction */ + if (!dir) { + project_length = 0; /* reset to default */ + return FALSE; + } + + /* Save the direction */ + command_dir = dir; + + /* Check for confusion */ + if (creature_ptr->confused) { + /* Random direction */ + dir = ddd[randint0(8)]; + } + + /* Notice confusion */ + if (command_dir != dir) { + /* Warn the user */ + msg_print(_("あなたは混乱している。", "You are confused.")); + } + + /* Save direction */ + (*dp) = dir; + + repeat_push((COMMAND_CODE)command_dir); + return TRUE; } - bool get_direction(player_type *creature_ptr, DIRECTION *dp, bool allow_under, bool with_steed) { - /* Global direction */ - DIRECTION dir = command_dir; - - COMMAND_CODE code; - if (repeat_pull(&code)) - { - dir = (DIRECTION)code; - /* return TRUE; */ - } - - *dp = (DIRECTION)code; - - concptr prompt; - if (allow_under) - { - prompt = _("方向 ('.'足元, ESCで中断)? ", "Direction ('.' at feet, Escape to cancel)? "); - } - else - { - prompt = _("方向 (ESCで中断)? ", "Direction (Escape to cancel)? "); - } - - /* Get a direction */ - while (!dir) - { - char ch; - - /* Get a command (or Cancel) */ - if (!get_com(prompt, &ch, TRUE)) break; - - /* Look down */ - if ((allow_under) && ((ch == '5') || (ch == '-') || (ch == '.'))) - { - dir = 5; - } - else - { - /* Look up the direction */ - dir = get_keymap_dir(ch); - - if (!dir) bell(); - } - } - - /* Prevent weirdness */ - if ((dir == 5) && (!allow_under)) dir = 0; - - /* Aborted */ - if (!dir) return FALSE; - - /* Save desired direction */ - command_dir = dir; - - /* Apply "confusion" */ - if (creature_ptr->confused) - { - /* Standard confusion */ - if (randint0(100) < 75) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - } - else if (creature_ptr->riding && with_steed) - { - monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[creature_ptr->riding]; - monster_race *r_ptr = &r_info[m_ptr->r_idx]; - - if (monster_confused_remaining(m_ptr)) - { - /* Standard confusion */ - if (randint0(100) < 75) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - } - else if ((r_ptr->flags1 & RF1_RAND_50) && (r_ptr->flags1 & RF1_RAND_25) && (randint0(100) < 50)) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - else if ((r_ptr->flags1 & RF1_RAND_50) && (randint0(100) < 25)) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - } - - /* Notice confusion */ - if (command_dir != dir) - { - if (creature_ptr->confused) - { - /* Warn the user */ - msg_print(_("あなたは混乱している。", "You are confused.")); - } - else - { - GAME_TEXT m_name[MAX_NLEN]; - monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[creature_ptr->riding]; - - monster_desc(creature_ptr, m_name, m_ptr, 0); - if (monster_confused_remaining(m_ptr)) - { - msg_format(_("%sは混乱している。", "%^s is confused."), m_name); - } - else - { - msg_format(_("%sは思い通りに動いてくれない。", "You cannot control %s."), m_name); - } - } - } - - *dp = dir; - repeat_push((COMMAND_CODE)command_dir); - return TRUE; + /* Global direction */ + DIRECTION dir = command_dir; + + COMMAND_CODE code; + if (repeat_pull(&code)) { + dir = (DIRECTION)code; + /* return TRUE; */ + } + + *dp = (DIRECTION)code; + + concptr prompt; + if (allow_under) { + prompt = _("方向 ('.'足元, ESCで中断)? ", "Direction ('.' at feet, Escape to cancel)? "); + } else { + prompt = _("方向 (ESCで中断)? ", "Direction (Escape to cancel)? "); + } + + /* Get a direction */ + while (!dir) { + char ch; + + /* Get a command (or Cancel) */ + if (!get_com(prompt, &ch, TRUE)) + break; + + /* Look down */ + if ((allow_under) && ((ch == '5') || (ch == '-') || (ch == '.'))) { + dir = 5; + } else { + /* Look up the direction */ + dir = get_keymap_dir(ch); + + if (!dir) + bell(); + } + } + + /* Prevent weirdness */ + if ((dir == 5) && (!allow_under)) + dir = 0; + + /* Aborted */ + if (!dir) + return FALSE; + + /* Save desired direction */ + command_dir = dir; + + /* Apply "confusion" */ + if (creature_ptr->confused) { + /* Standard confusion */ + if (randint0(100) < 75) { + /* Random direction */ + dir = ddd[randint0(8)]; + } + } else if (creature_ptr->riding && with_steed) { + monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[creature_ptr->riding]; + monster_race *r_ptr = &r_info[m_ptr->r_idx]; + + if (monster_confused_remaining(m_ptr)) { + /* Standard confusion */ + if (randint0(100) < 75) { + /* Random direction */ + dir = ddd[randint0(8)]; + } + } else if ((r_ptr->flags1 & RF1_RAND_50) && (r_ptr->flags1 & RF1_RAND_25) && (randint0(100) < 50)) { + /* Random direction */ + dir = ddd[randint0(8)]; + } else if ((r_ptr->flags1 & RF1_RAND_50) && (randint0(100) < 25)) { + /* Random direction */ + dir = ddd[randint0(8)]; + } + } + + /* Notice confusion */ + if (command_dir != dir) { + if (creature_ptr->confused) { + /* Warn the user */ + msg_print(_("あなたは混乱している。", "You are confused.")); + } else { + GAME_TEXT m_name[MAX_NLEN]; + monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[creature_ptr->riding]; + + monster_desc(creature_ptr, m_name, m_ptr, 0); + if (monster_confused_remaining(m_ptr)) { + msg_format(_("%sは混乱している。", "%^s is confused."), m_name); + } else { + msg_format(_("%sは思い通りに動いてくれない。", "You cannot control %s."), m_name); + } + } + } + + *dp = dir; + repeat_push((COMMAND_CODE)command_dir); + return TRUE; } - /* * @brief 進行方向を指定する(騎乗対象の混乱の影響を受ける) / Request a "movement" direction (1,2,3,4,6,7,8,9) from the user, * and place it into "command_dir", unless we already have one. @@ -1791,444 +1700,416 @@ bool get_direction(player_type *creature_ptr, DIRECTION *dp, bool allow_under, b */ bool get_rep_dir(player_type *creature_ptr, DIRECTION *dp, bool under) { - /* Global direction */ - DIRECTION dir = command_dir; - - COMMAND_CODE code; - if (repeat_pull(&code)) - { - dir = (DIRECTION)code; - /* return TRUE; */ - } - - *dp = (DIRECTION)code; - - concptr prompt; - if (under) - { - prompt = _("方向 ('.'足元, ESCで中断)? ", "Direction ('.' at feet, Escape to cancel)? "); - } - else - { - prompt = _("方向 (ESCで中断)? ", "Direction (Escape to cancel)? "); - } - - /* Get a direction */ - while (!dir) - { - char ch; - - /* Get a command (or Cancel) */ - if (!get_com(prompt, &ch, TRUE)) break; - - /* Look down */ - if ((under) && ((ch == '5') || (ch == '-') || (ch == '.'))) - { - dir = 5; - } - else - { - /* Look up the direction */ - dir = get_keymap_dir(ch); - - if (!dir) bell(); - } - } - - /* Prevent weirdness */ - if ((dir == 5) && (!under)) dir = 0; - - /* Aborted */ - if (!dir) return FALSE; - - /* Save desired direction */ - command_dir = dir; - - /* Apply "confusion" */ - if (creature_ptr->confused) - { - /* Standard confusion */ - if (randint0(100) < 75) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - } - else if (creature_ptr->riding) - { - monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[creature_ptr->riding]; - monster_race *r_ptr = &r_info[m_ptr->r_idx]; - - if (monster_confused_remaining(m_ptr)) - { - /* Standard confusion */ - if (randint0(100) < 75) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - } - else if ((r_ptr->flags1 & RF1_RAND_50) && (r_ptr->flags1 & RF1_RAND_25) && (randint0(100) < 50)) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - else if ((r_ptr->flags1 & RF1_RAND_50) && (randint0(100) < 25)) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - } - - /* Notice confusion */ - if (command_dir != dir) - { - if (creature_ptr->confused) - { - /* Warn the user */ - msg_print(_("あなたは混乱している。", "You are confused.")); - } - else - { - GAME_TEXT m_name[MAX_NLEN]; - monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[creature_ptr->riding]; - - monster_desc(creature_ptr, m_name, m_ptr, 0); - if (monster_confused_remaining(m_ptr)) - { - msg_format(_("%sは混乱している。", "%^s is confused."), m_name); - } - else - { - msg_format(_("%sは思い通りに動いてくれない。", "You cannot control %s."), m_name); - } - } - } - - *dp = dir; - repeat_push((COMMAND_CODE)command_dir); - return TRUE; + /* Global direction */ + DIRECTION dir = command_dir; + + COMMAND_CODE code; + if (repeat_pull(&code)) { + dir = (DIRECTION)code; + /* return TRUE; */ + } + + *dp = (DIRECTION)code; + + concptr prompt; + if (under) { + prompt = _("方向 ('.'足元, ESCで中断)? ", "Direction ('.' at feet, Escape to cancel)? "); + } else { + prompt = _("方向 (ESCで中断)? ", "Direction (Escape to cancel)? "); + } + + /* Get a direction */ + while (!dir) { + char ch; + + /* Get a command (or Cancel) */ + if (!get_com(prompt, &ch, TRUE)) + break; + + /* Look down */ + if ((under) && ((ch == '5') || (ch == '-') || (ch == '.'))) { + dir = 5; + } else { + /* Look up the direction */ + dir = get_keymap_dir(ch); + + if (!dir) + bell(); + } + } + + /* Prevent weirdness */ + if ((dir == 5) && (!under)) + dir = 0; + + /* Aborted */ + if (!dir) + return FALSE; + + /* Save desired direction */ + command_dir = dir; + + /* Apply "confusion" */ + if (creature_ptr->confused) { + /* Standard confusion */ + if (randint0(100) < 75) { + /* Random direction */ + dir = ddd[randint0(8)]; + } + } else if (creature_ptr->riding) { + monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[creature_ptr->riding]; + monster_race *r_ptr = &r_info[m_ptr->r_idx]; + + if (monster_confused_remaining(m_ptr)) { + /* Standard confusion */ + if (randint0(100) < 75) { + /* Random direction */ + dir = ddd[randint0(8)]; + } + } else if ((r_ptr->flags1 & RF1_RAND_50) && (r_ptr->flags1 & RF1_RAND_25) && (randint0(100) < 50)) { + /* Random direction */ + dir = ddd[randint0(8)]; + } else if ((r_ptr->flags1 & RF1_RAND_50) && (randint0(100) < 25)) { + /* Random direction */ + dir = ddd[randint0(8)]; + } + } + + /* Notice confusion */ + if (command_dir != dir) { + if (creature_ptr->confused) { + /* Warn the user */ + msg_print(_("あなたは混乱している。", "You are confused.")); + } else { + GAME_TEXT m_name[MAX_NLEN]; + monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[creature_ptr->riding]; + + monster_desc(creature_ptr, m_name, m_ptr, 0); + if (monster_confused_remaining(m_ptr)) { + msg_format(_("%sは混乱している。", "%^s is confused."), m_name); + } else { + msg_format(_("%sは思い通りに動いてくれない。", "You cannot control %s."), m_name); + } + } + } + + *dp = dir; + repeat_push((COMMAND_CODE)command_dir); + return TRUE; } - /* * XAngband: determine if a given location is "interesting" * based on target_set_accept function. */ static bool tgt_pt_accept(player_type *creature_ptr, POSITION y, POSITION x) { - floor_type *floor_ptr = creature_ptr->current_floor_ptr; - if (!(in_bounds(floor_ptr, y, x))) return FALSE; + floor_type *floor_ptr = creature_ptr->current_floor_ptr; + if (!(in_bounds(floor_ptr, y, x))) + return FALSE; - /* Player grid is always interesting */ - if ((y == creature_ptr->y) && (x == creature_ptr->x)) return TRUE; + /* Player grid is always interesting */ + if ((y == creature_ptr->y) && (x == creature_ptr->x)) + return TRUE; - if (creature_ptr->image) return FALSE; + if (creature_ptr->image) + return FALSE; - grid_type *g_ptr; - g_ptr = &floor_ptr->grid_array[y][x]; + grid_type *g_ptr; + g_ptr = &floor_ptr->grid_array[y][x]; - /* Interesting memorized features */ - if (!(g_ptr->info & (CAVE_MARK))) return FALSE; + /* Interesting memorized features */ + if (!(g_ptr->info & (CAVE_MARK))) + return FALSE; - /* Notice stairs */ - if (cave_have_flag_grid(g_ptr, FF_LESS)) return TRUE; - if (cave_have_flag_grid(g_ptr, FF_MORE)) return TRUE; + /* Notice stairs */ + if (cave_have_flag_grid(g_ptr, FF_LESS)) + return TRUE; + if (cave_have_flag_grid(g_ptr, FF_MORE)) + return TRUE; - /* Notice quest features */ - if (cave_have_flag_grid(g_ptr, FF_QUEST_ENTER)) return TRUE; - if (cave_have_flag_grid(g_ptr, FF_QUEST_EXIT)) return TRUE; + /* Notice quest features */ + if (cave_have_flag_grid(g_ptr, FF_QUEST_ENTER)) + return TRUE; + if (cave_have_flag_grid(g_ptr, FF_QUEST_EXIT)) + return TRUE; - return FALSE; + return FALSE; } - /* * XAngband: Prepare the "temp" array for "tget_pt" * based on target_set_prepare funciton. */ static void tgt_pt_prepare(player_type *creature_ptr) { - tmp_pos.n = 0; - - if (!expand_list) return; - - /* Scan the current panel */ - floor_type *floor_ptr = creature_ptr->current_floor_ptr; - for (POSITION y = 1; y < floor_ptr->height; y++) - { - for (POSITION x = 1; x < floor_ptr->width; x++) - { - /* Require "interesting" contents */ - if (!tgt_pt_accept(creature_ptr, y, x)) continue; - - /* Save the location */ - tmp_pos.x[tmp_pos.n] = x; - tmp_pos.y[tmp_pos.n] = y; - tmp_pos.n++; - } - } - - ang_sort(creature_ptr, tmp_pos.x, tmp_pos.y, tmp_pos.n, ang_sort_comp_distance, ang_sort_swap_distance); + tmp_pos.n = 0; + + if (!expand_list) + return; + + /* Scan the current panel */ + floor_type *floor_ptr = creature_ptr->current_floor_ptr; + for (POSITION y = 1; y < floor_ptr->height; y++) { + for (POSITION x = 1; x < floor_ptr->width; x++) { + /* Require "interesting" contents */ + if (!tgt_pt_accept(creature_ptr, y, x)) + continue; + + /* Save the location */ + tmp_pos.x[tmp_pos.n] = x; + tmp_pos.y[tmp_pos.n] = y; + tmp_pos.n++; + } + } + + ang_sort(creature_ptr, tmp_pos.x, tmp_pos.y, tmp_pos.n, ang_sort_comp_distance, ang_sort_swap_distance); } - /* * old -- from PsiAngband. */ bool tgt_pt(player_type *creature_ptr, POSITION *x_ptr, POSITION *y_ptr) { - TERM_LEN wid, hgt; - get_screen_size(&wid, &hgt); - - POSITION x = creature_ptr->x; - POSITION y = creature_ptr->y; - - if (expand_list) tgt_pt_prepare(creature_ptr); - - msg_print(_("場所を選んでスペースキーを押して下さい。", "Select a point and press space.")); - msg_flag = FALSE; /* prevents "-more-" message. */ - - char ch = 0; - int n = 0; - bool success = FALSE; - while ((ch != ESCAPE) && !success) - { - bool move_fast = FALSE; - - move_cursor_relative(y, x); - ch = inkey(); - switch (ch) - { - case ESCAPE: - break; - case ' ': - case 't': - case '.': - case '5': - case '0': - /* illegal place */ - if (player_bold(creature_ptr, y, x)) ch = 0; - - /* okay place */ - else success = TRUE; - - break; - - /* XAngband: Move cursor to stairs */ - case '>': - case '<': - { - if (!expand_list || !tmp_pos.n) break; - - int dx, dy; - int cx = (panel_col_min + panel_col_max) / 2; - int cy = (panel_row_min + panel_row_max) / 2; - - n++; - - /* Skip stairs which have defferent distance */ - for (; n < tmp_pos.n; ++n) - { - grid_type *g_ptr = &creature_ptr->current_floor_ptr->grid_array[tmp_pos.y[n]][tmp_pos.x[n]]; - - if (cave_have_flag_grid(g_ptr, FF_STAIRS) && - cave_have_flag_grid(g_ptr, ch == '>' ? FF_MORE : FF_LESS)) - { - /* Found */ - break; - } - } - - if (n == tmp_pos.n) /* Loop out taget list */ - { - n = 0; - y = creature_ptr->y; - x = creature_ptr->x; - verify_panel(creature_ptr); /* Move cursor to player */ - - creature_ptr->update |= (PU_MONSTERS); - - creature_ptr->redraw |= (PR_MAP); - - creature_ptr->window |= (PW_OVERHEAD); - handle_stuff(creature_ptr); - } - else /* move cursor to next stair and change panel */ - { - y = tmp_pos.y[n]; - x = tmp_pos.x[n]; - - dy = 2 * (y - cy) / hgt; - dx = 2 * (x - cx) / wid; - if (dy || dx) change_panel(creature_ptr, dy, dx); - } - - break; - } - - default: - { - /* Look up the direction */ - int d = get_keymap_dir(ch); - - /* XTRA HACK MOVEFAST */ - if (isupper(ch)) move_fast = TRUE; - - /* Handle "direction" */ - if (d == 0) break; - - int dx = ddx[d]; - int dy = ddy[d]; - - /* XTRA HACK MOVEFAST */ - if (move_fast) - { - int mag = MIN(wid / 2, hgt / 2); - x += dx * mag; - y += dy * mag; - } - else - { - x += dx; - y += dy; - } - - /* Do not move horizontally if unnecessary */ - if (((x < panel_col_min + wid / 2) && (dx > 0)) || - ((x > panel_col_min + wid / 2) && (dx < 0))) - { - dx = 0; - } - - /* Do not move vertically if unnecessary */ - if (((y < panel_row_min + hgt / 2) && (dy > 0)) || - ((y > panel_row_min + hgt / 2) && (dy < 0))) - { - dy = 0; - } - - /* Apply the motion */ - if ((y >= panel_row_min + hgt) || (y < panel_row_min) || - (x >= panel_col_min + wid) || (x < panel_col_min)) - { - change_panel(creature_ptr, dy, dx); - } - - /* Slide into legality */ - if (x >= creature_ptr->current_floor_ptr->width - 1) x = creature_ptr->current_floor_ptr->width - 2; - else if (x <= 0) x = 1; - - /* Slide into legality */ - if (y >= creature_ptr->current_floor_ptr->height - 1) y = creature_ptr->current_floor_ptr->height - 2; - else if (y <= 0) y = 1; - - break; - } - } - } - - prt("", 0, 0); - verify_panel(creature_ptr); - creature_ptr->update |= (PU_MONSTERS); - creature_ptr->redraw |= (PR_MAP); - creature_ptr->window |= (PW_OVERHEAD); - handle_stuff(creature_ptr); - - *x_ptr = x; - *y_ptr = y; - return success; + TERM_LEN wid, hgt; + get_screen_size(&wid, &hgt); + + POSITION x = creature_ptr->x; + POSITION y = creature_ptr->y; + + if (expand_list) + tgt_pt_prepare(creature_ptr); + + msg_print(_("場所を選んでスペースキーを押して下さい。", "Select a point and press space.")); + msg_flag = FALSE; /* prevents "-more-" message. */ + + char ch = 0; + int n = 0; + bool success = FALSE; + while ((ch != ESCAPE) && !success) { + bool move_fast = FALSE; + + move_cursor_relative(y, x); + ch = inkey(); + switch (ch) { + case ESCAPE: + break; + case ' ': + case 't': + case '.': + case '5': + case '0': + /* illegal place */ + if (player_bold(creature_ptr, y, x)) + ch = 0; + + /* okay place */ + else + success = TRUE; + + break; + + /* XAngband: Move cursor to stairs */ + case '>': + case '<': { + if (!expand_list || !tmp_pos.n) + break; + + int dx, dy; + int cx = (panel_col_min + panel_col_max) / 2; + int cy = (panel_row_min + panel_row_max) / 2; + + n++; + + /* Skip stairs which have defferent distance */ + for (; n < tmp_pos.n; ++n) { + grid_type *g_ptr = &creature_ptr->current_floor_ptr->grid_array[tmp_pos.y[n]][tmp_pos.x[n]]; + + if (cave_have_flag_grid(g_ptr, FF_STAIRS) && cave_have_flag_grid(g_ptr, ch == '>' ? FF_MORE : FF_LESS)) { + /* Found */ + break; + } + } + + if (n == tmp_pos.n) /* Loop out taget list */ + { + n = 0; + y = creature_ptr->y; + x = creature_ptr->x; + verify_panel(creature_ptr); /* Move cursor to player */ + + creature_ptr->update |= (PU_MONSTERS); + + creature_ptr->redraw |= (PR_MAP); + + creature_ptr->window |= (PW_OVERHEAD); + handle_stuff(creature_ptr); + } else /* move cursor to next stair and change panel */ + { + y = tmp_pos.y[n]; + x = tmp_pos.x[n]; + + dy = 2 * (y - cy) / hgt; + dx = 2 * (x - cx) / wid; + if (dy || dx) + change_panel(creature_ptr, dy, dx); + } + + break; + } + + default: { + /* Look up the direction */ + int d = get_keymap_dir(ch); + + /* XTRA HACK MOVEFAST */ + if (isupper(ch)) + move_fast = TRUE; + + /* Handle "direction" */ + if (d == 0) + break; + + int dx = ddx[d]; + int dy = ddy[d]; + + /* XTRA HACK MOVEFAST */ + if (move_fast) { + int mag = MIN(wid / 2, hgt / 2); + x += dx * mag; + y += dy * mag; + } else { + x += dx; + y += dy; + } + + /* Do not move horizontally if unnecessary */ + if (((x < panel_col_min + wid / 2) && (dx > 0)) || ((x > panel_col_min + wid / 2) && (dx < 0))) { + dx = 0; + } + + /* Do not move vertically if unnecessary */ + if (((y < panel_row_min + hgt / 2) && (dy > 0)) || ((y > panel_row_min + hgt / 2) && (dy < 0))) { + dy = 0; + } + + /* Apply the motion */ + if ((y >= panel_row_min + hgt) || (y < panel_row_min) || (x >= panel_col_min + wid) || (x < panel_col_min)) { + change_panel(creature_ptr, dy, dx); + } + + /* Slide into legality */ + if (x >= creature_ptr->current_floor_ptr->width - 1) + x = creature_ptr->current_floor_ptr->width - 2; + else if (x <= 0) + x = 1; + + /* Slide into legality */ + if (y >= creature_ptr->current_floor_ptr->height - 1) + y = creature_ptr->current_floor_ptr->height - 2; + else if (y <= 0) + y = 1; + + break; + } + } + } + + prt("", 0, 0); + verify_panel(creature_ptr); + creature_ptr->update |= (PU_MONSTERS); + creature_ptr->redraw |= (PR_MAP); + creature_ptr->window |= (PW_OVERHEAD); + handle_stuff(creature_ptr); + + *x_ptr = x; + *y_ptr = y; + return success; } - bool get_hack_dir(player_type *creature_ptr, DIRECTION *dp) { - *dp = 0; - - /* Ask until satisfied */ - char command; - DIRECTION dir = 0; - while (!dir) - { - /* Choose a prompt */ - concptr p; - if (!target_okay(creature_ptr)) - { - p = _("方向 ('*'でターゲット選択, ESCで中断)? ", "Direction ('*' to choose a target, Escape to cancel)? "); - } - else - { - p = _("方向 ('5'でターゲットへ, '*'でターゲット再選択, ESCで中断)? ", "Direction ('5' for target, '*' to re-target, Escape to cancel)? "); - } - - /* Get a command (or Cancel) */ - if (!get_com(p, &command, TRUE)) break; - - if (use_menu) - { - if (command == '\r') command = 't'; - } - - /* Convert various keys to "standard" keys */ - switch (command) - { - /* Use current target */ - case 'T': - case 't': - case '.': - case '5': - case '0': - { - dir = 5; - break; - } - - /* Set new target */ - case '*': - case ' ': - case '\r': - { - if (target_set(creature_ptr, TARGET_KILL)) dir = 5; - break; - } - - default: - { - /* Look up the direction */ - dir = get_keymap_dir(command); - - break; - } - } - - /* Verify requested targets */ - if ((dir == 5) && !target_okay(creature_ptr)) dir = 0; - - /* Error */ - if (!dir) bell(); - } - - if (!dir) return FALSE; - - /* Save the direction */ - command_dir = dir; - - /* Check for confusion */ - if (creature_ptr->confused) - { - /* Random direction */ - dir = ddd[randint0(8)]; - } - - /* Notice confusion */ - if (command_dir != dir) - { - /* Warn the user */ - msg_print(_("あなたは混乱している。", "You are confused.")); - } - - *dp = dir; - return TRUE; + *dp = 0; + + /* Ask until satisfied */ + char command; + DIRECTION dir = 0; + while (!dir) { + /* Choose a prompt */ + concptr p; + if (!target_okay(creature_ptr)) { + p = _("方向 ('*'でターゲット選択, ESCで中断)? ", "Direction ('*' to choose a target, Escape to cancel)? "); + } else { + p = _("方向 ('5'でターゲットへ, '*'でターゲット再選択, ESCで中断)? ", "Direction ('5' for target, '*' to re-target, Escape to cancel)? "); + } + + /* Get a command (or Cancel) */ + if (!get_com(p, &command, TRUE)) + break; + + if (use_menu) { + if (command == '\r') + command = 't'; + } + + /* Convert various keys to "standard" keys */ + switch (command) { + /* Use current target */ + case 'T': + case 't': + case '.': + case '5': + case '0': { + dir = 5; + break; + } + + /* Set new target */ + case '*': + case ' ': + case '\r': { + if (target_set(creature_ptr, TARGET_KILL)) + dir = 5; + break; + } + + default: { + /* Look up the direction */ + dir = get_keymap_dir(command); + + break; + } + } + + /* Verify requested targets */ + if ((dir == 5) && !target_okay(creature_ptr)) + dir = 0; + + /* Error */ + if (!dir) + bell(); + } + + if (!dir) + return FALSE; + + /* Save the direction */ + command_dir = dir; + + /* Check for confusion */ + if (creature_ptr->confused) { + /* Random direction */ + dir = ddd[randint0(8)]; + } + + /* Notice confusion */ + if (command_dir != dir) { + /* Warn the user */ + msg_print(_("あなたは混乱している。", "You are confused.")); + } + + *dp = dir; + return TRUE; } /*! diff --git a/src/market/building-craft-fix.c b/src/market/building-craft-fix.c index 7effccaf1..1a66aeafc 100644 --- a/src/market/building-craft-fix.c +++ b/src/market/building-craft-fix.c @@ -1,6 +1,7 @@ #include "market/building-craft-fix.h" #include "art-definition/art-sword-types.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor-object.h" #include "inventory/inventory-object.h" diff --git a/src/market/building-craft-weapon.c b/src/market/building-craft-weapon.c index 1a587b0b7..a5750b139 100644 --- a/src/market/building-craft-weapon.c +++ b/src/market/building-craft-weapon.c @@ -2,6 +2,7 @@ #include "art-definition/art-sword-types.h" #include "combat/attack-accuracy.h" #include "combat/shoot.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor-object.h" #include "inventory/inventory-slot-types.h" diff --git a/src/market/building-recharger.c b/src/market/building-recharger.c index 95181f743..27392d808 100644 --- a/src/market/building-recharger.c +++ b/src/market/building-recharger.c @@ -1,6 +1,7 @@ #include "market/building-recharger.h" #include "autopick/autopick.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "floor/floor-object.h" #include "inventory/inventory-slot-types.h" #include "market/building-util.h" diff --git a/src/mind/mind-force-trainer.c b/src/mind/mind-force-trainer.c index 2b33c326b..3dc159522 100644 --- a/src/mind/mind-force-trainer.c +++ b/src/mind/mind-force-trainer.c @@ -1,5 +1,6 @@ #include "mind/mind-force-trainer.h" #include "cmd-action/cmd-pet.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/spells-effect-util.h" #include "floor/floor.h" diff --git a/src/mind/mind-magic-resistance.c b/src/mind/mind-magic-resistance.c index 4351751e2..2670ed485 100644 --- a/src/mind/mind-magic-resistance.c +++ b/src/mind/mind-magic-resistance.c @@ -1,4 +1,5 @@ #include "mind/mind-magic-resistance.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" #include "player/player-move.h" diff --git a/src/mind/mind-mindcrafter.c b/src/mind/mind-mindcrafter.c index 2e791d5c0..12ce0b902 100644 --- a/src/mind/mind-mindcrafter.c +++ b/src/mind/mind-mindcrafter.c @@ -1,5 +1,6 @@ #include "mind/mind-mindcrafter.h" #include "autopick/autopick.h" +#include "core/player-update-types.h" #include "floor/floor-object.h" #include "game-option/auto-destruction-options.h" #include "object-enchant/item-feeling.h" diff --git a/src/mind/mind-mirror-master.c b/src/mind/mind-mirror-master.c index 489aecf64..5620d632f 100644 --- a/src/mind/mind-mirror-master.c +++ b/src/mind/mind-mirror-master.c @@ -1,5 +1,6 @@ #include "mind/mind-mirror-master.h" #include "cmd-action/cmd-pet.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/effect-characteristics.h" #include "effect/effect-feature.h" diff --git a/src/mind/mind-samurai.c b/src/mind/mind-samurai.c index 4963ca8f5..1c5317221 100644 --- a/src/mind/mind-samurai.c +++ b/src/mind/mind-samurai.c @@ -8,6 +8,7 @@ #include "cmd-action/cmd-attack.h" #include "cmd-action/cmd-pet.h" #include "cmd/cmd-basic.h" +#include "core/player-update-types.h" #include "inventory/inventory-slot-types.h" #include "io/input-key-acceptor.h" #include "mind/stances-table.h" diff --git a/src/mind/mind-sniper.c b/src/mind/mind-sniper.c index 69aac8fbc..6ae38766a 100644 --- a/src/mind/mind-sniper.c +++ b/src/mind/mind-sniper.c @@ -8,6 +8,7 @@ #include "mind/mind-sniper.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor.h" #include "game-option/text-display-options.h" diff --git a/src/mind/mind.c b/src/mind/mind.c index 5f543c51a..1ed63fef8 100644 --- a/src/mind/mind.c +++ b/src/mind/mind.c @@ -20,6 +20,7 @@ #include "cmd/cmd-basic.h" #include "core/asking-player.h" #include "core/hp-mp-processor.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/effect-characteristics.h" #include "effect/spells-effect-util.h" diff --git a/src/mind/racial-kutar.c b/src/mind/racial-kutar.c index 55543326f..b19715b10 100644 --- a/src/mind/racial-kutar.c +++ b/src/mind/racial-kutar.c @@ -1,4 +1,5 @@ #include "mind/racial-kutar.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" #include "player/player-move.h" diff --git a/src/mind/racial.c b/src/mind/racial.c index 10d62cb45..87a2655c7 100644 --- a/src/mind/racial.c +++ b/src/mind/racial.c @@ -16,6 +16,7 @@ #include "cmd-item/cmd-zapwand.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/spells-effect-util.h" #include "game-option/disturbance-options.h" diff --git a/src/monster-attack/monster-attack-player.c b/src/monster-attack/monster-attack-player.c index cfda9e758..d41b98f43 100644 --- a/src/monster-attack/monster-attack-player.c +++ b/src/monster-attack/monster-attack-player.c @@ -12,6 +12,7 @@ #include "combat/aura-counterattack.h" #include "combat/combat-options-type.h" #include "combat/hallucination-attacks-table.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "effect/effect-characteristics.h" #include "inventory/inventory-slot-types.h" diff --git a/src/monster-attack/monster-attack-status.c b/src/monster-attack/monster-attack-status.c index a56ff70e2..049bba3cd 100644 --- a/src/monster-attack/monster-attack-status.c +++ b/src/monster-attack/monster-attack-status.c @@ -5,6 +5,7 @@ */ #include "monster-attack/monster-attack-status.h" +#include "core/player-update-types.h" #include "mind/mind-mirror-master.h" #include "monster-race/monster-race.h" #include "monster-race/race-indice-types.h" diff --git a/src/monster-attack/monster-eating.c b/src/monster-attack/monster-eating.c index 23595a347..9c5ec1abe 100644 --- a/src/monster-attack/monster-eating.c +++ b/src/monster-attack/monster-eating.c @@ -5,6 +5,7 @@ */ #include "monster-attack/monster-eating.h" +#include "core/player-update-types.h" #include "floor/floor.h" #include "inventory/inventory-object.h" #include "inventory/inventory-slot-types.h" diff --git a/src/monster-floor/monster-death.c b/src/monster-floor/monster-death.c index 814c18c2c..f7572c5f2 100644 --- a/src/monster-floor/monster-death.c +++ b/src/monster-floor/monster-death.c @@ -4,6 +4,7 @@ #include "art-definition/art-protector-types.h" #include "art-definition/art-weapon-types.h" #include "art-definition/random-art-effects.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" #include "effect/effect-characteristics.h" diff --git a/src/monster-floor/monster-move.c b/src/monster-floor/monster-move.c index eca922219..6a660a073 100644 --- a/src/monster-floor/monster-move.c +++ b/src/monster-floor/monster-move.c @@ -5,6 +5,7 @@ */ #include "monster-floor/monster-move.h" +#include "core/player-update-types.h" #include "core/speed-table.h" #include "effect/effect-characteristics.h" #include "game-option/disturbance-options.h" diff --git a/src/monster-floor/monster-remover.c b/src/monster-floor/monster-remover.c index 9ba3ddee9..5be49d3c2 100644 --- a/src/monster-floor/monster-remover.c +++ b/src/monster-floor/monster-remover.c @@ -1,4 +1,5 @@ #include "monster-floor/monster-remover.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor-object.h" #include "floor/floor.h" diff --git a/src/monster-floor/one-monster-placer.c b/src/monster-floor/one-monster-placer.c index 551fe8841..ec9bf44aa 100644 --- a/src/monster-floor/one-monster-placer.c +++ b/src/monster-floor/one-monster-placer.c @@ -5,6 +5,7 @@ */ #include "monster-floor/one-monster-placer.h" +#include "core/player-update-types.h" #include "core/speed-table.h" #include "dungeon/quest.h" #include "effect/effect-characteristics.h" diff --git a/src/monster/monster-list.c b/src/monster/monster-list.c index cc6347fca..1fc1fdbfa 100644 --- a/src/monster/monster-list.c +++ b/src/monster/monster-list.c @@ -10,6 +10,7 @@ */ #include "monster/monster-list.h" +#include "core/player-update-types.h" #include "core/speed-table.h" #include "dungeon/dungeon.h" #include "floor/floor-object.h" diff --git a/src/monster/monster-processor.c b/src/monster/monster-processor.c index 8d94836a0..0e56ab33d 100644 --- a/src/monster/monster-processor.c +++ b/src/monster/monster-processor.c @@ -15,6 +15,7 @@ #include "monster/monster-processor.h" #include "cmd-io/cmd-dump.h" +#include "core/player-update-types.h" #include "core/speed-table.h" #include "game-option/play-record-options.h" #include "grid/feature.h" diff --git a/src/monster/monster-status.c b/src/monster/monster-status.c index 8659661b1..172e3a1c4 100644 --- a/src/monster/monster-status.c +++ b/src/monster/monster-status.c @@ -2,6 +2,7 @@ #include "autopick/autopick-pref-processor.h" #include "cmd-io/cmd-dump.h" #include "cmd-visual/cmd-draw.h" +#include "core/player-update-types.h" #include "core/speed-table.h" #include "core/stuff-handler.h" #include "dungeon/dungeon.h" diff --git a/src/monster/monster-update.c b/src/monster/monster-update.c index cf8e109dd..923b393c7 100644 --- a/src/monster/monster-update.c +++ b/src/monster/monster-update.c @@ -5,6 +5,7 @@ */ #include "monster/monster-update.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "game-option/birth-options.h" #include "game-option/disturbance-options.h" diff --git a/src/mspell/mspell-dispel.c b/src/mspell/mspell-dispel.c index b2bfb37cc..b744c1c55 100644 --- a/src/mspell/mspell-dispel.c +++ b/src/mspell/mspell-dispel.c @@ -1,4 +1,5 @@ #include "mspell/mspell-dispel.h" +#include "core/player-update-types.h" #include "core/speed-table.h" #include "mind/mind-force-trainer.h" #include "mind/mind-magic-resistance.h" diff --git a/src/mspell/mspell-floor.c b/src/mspell/mspell-floor.c index 9fcaf7818..8d01cc8e2 100644 --- a/src/mspell/mspell-floor.c +++ b/src/mspell/mspell-floor.c @@ -5,6 +5,7 @@ */ #include "mspell/mspell-floor.h" +#include "core/player-update-types.h" #include "effect/effect-characteristics.h" #include "mind/drs-types.h" #include "monster-race/monster-race.h" diff --git a/src/mspell/mspell-special.c b/src/mspell/mspell-special.c index 108a3bdf8..661c5f660 100644 --- a/src/mspell/mspell-special.c +++ b/src/mspell/mspell-special.c @@ -5,6 +5,7 @@ */ #include "mspell/mspell-special.h" +#include "core/player-update-types.h" #include "effect/effect-characteristics.h" #include "grid/grid.h" #include "main/sound-definitions-table.h" diff --git a/src/mutation/mutation.c b/src/mutation/mutation.c index 4995e1877..c4b950f97 100644 --- a/src/mutation/mutation.c +++ b/src/mutation/mutation.c @@ -15,6 +15,7 @@ #include "cmd-io/cmd-dump.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "player/player-race-types.h" #include "core/show-file.h" #include "core/stuff-handler.h" #include "effect/spells-effect-util.h" @@ -46,7 +47,7 @@ #include "player/player-class.h" #include "player/player-damage.h" #include "player/player-personalities-types.h" -#include "player/player-race-types.h" +#include "core/player-update-types.h" #include "player/selfinfo.h" #include "spell-kind/earthquake.h" #include "spell-kind/spells-charm.h" diff --git a/src/object-enchant/object-curse.c b/src/object-enchant/object-curse.c index cfb2ad64e..a91ec081c 100644 --- a/src/object-enchant/object-curse.c +++ b/src/object-enchant/object-curse.c @@ -1,4 +1,5 @@ #include "object-enchant/object-curse.h" +#include "core/player-update-types.h" #include "inventory/inventory-slot-types.h" #include "object-enchant/item-feeling.h" #include "object-enchant/tr-types.h" diff --git a/src/object-hook/hook-expendable.c b/src/object-hook/hook-expendable.c index 4f6093cc4..23fef53e9 100644 --- a/src/object-hook/hook-expendable.c +++ b/src/object-hook/hook-expendable.c @@ -1,6 +1,7 @@ #include "object-hook/hook-expendable.h" #include "art-definition/art-accessory-types.h" #include "art-definition/art-armor-types.h" +#include "core/player-update-types.h" #include "monster-race/monster-race.h" #include "object-enchant/item-feeling.h" #include "object-enchant/special-object-flags.h" diff --git a/src/object-potion/quaff-execution.c b/src/object-potion/quaff-execution.c index fbdef67b7..8b18c1dd5 100644 --- a/src/object-potion/quaff-execution.c +++ b/src/object-potion/quaff-execution.c @@ -7,6 +7,7 @@ #include "object-potion/quaff-execution.h" #include "birth/birth-stat.h" +#include "core/player-update-types.h" #include "game-option/birth-options.h" #include "game-option/disturbance-options.h" #include "inventory/inventory-object.h" diff --git a/src/object/lite-processor.c b/src/object/lite-processor.c index 54585b6df..3914456f3 100644 --- a/src/object/lite-processor.c +++ b/src/object/lite-processor.c @@ -1,4 +1,5 @@ #include "object/lite-processor.h" +#include "core/player-update-types.h" #include "game-option/disturbance-options.h" #include "inventory/inventory-slot-types.h" #include "object-enchant/object-ego.h" diff --git a/src/perception/simple-perception.c b/src/perception/simple-perception.c index b09a7705d..2ad9eef57 100644 --- a/src/perception/simple-perception.c +++ b/src/perception/simple-perception.c @@ -6,6 +6,7 @@ #include "perception/simple-perception.h" #include "autopick/autopick.h" +#include "core/player-update-types.h" #include "game-option/auto-destruction-options.h" #include "game-option/disturbance-options.h" #include "inventory/inventory-describer.h" diff --git a/src/pet/pet-fall-off.c b/src/pet/pet-fall-off.c index e4dbc64c3..6e68ecbf1 100644 --- a/src/pet/pet-fall-off.c +++ b/src/pet/pet-fall-off.c @@ -5,6 +5,7 @@ */ #include "pet/pet-fall-off.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor.h" #include "grid/feature.h" diff --git a/src/pet/pet-util.c b/src/pet/pet-util.c index a1642449f..252a9072a 100644 --- a/src/pet/pet-util.c +++ b/src/pet/pet-util.c @@ -1,4 +1,5 @@ #include "pet/pet-util.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "monster/monster-info.h" #include "world/world.h" diff --git a/src/player-attack/player-attack.c b/src/player-attack/player-attack.c index 427690a6f..028f809fb 100644 --- a/src/player-attack/player-attack.c +++ b/src/player-attack/player-attack.c @@ -11,6 +11,7 @@ #include "combat/attack-criticality.h" #include "combat/martial-arts-table.h" #include "combat/slaying.h" +#include "core/player-update-types.h" #include "floor/floor.h" #include "game-option/cheat-types.h" #include "grid/feature.h" diff --git a/src/player/avatar.c b/src/player/avatar.c index 951b31447..308709e54 100644 --- a/src/player/avatar.c +++ b/src/player/avatar.c @@ -14,6 +14,7 @@ */ #include "player/avatar.h" +#include "core/player-update-types.h" #include "realm/realm-names-table.h" #include "player/player-race-types.h" #include "player/player-class.h" diff --git a/src/player/digestion-processor.c b/src/player/digestion-processor.c index 22720e9b6..7f3c14c34 100644 --- a/src/player/digestion-processor.c +++ b/src/player/digestion-processor.c @@ -1,4 +1,5 @@ #include "player/digestion-processor.h" +#include "core/player-update-types.h" #include "core/speed-table.h" #include "core/stuff-handler.h" #include "floor/wild.h" diff --git a/src/player/eldritch-horror.c b/src/player/eldritch-horror.c index 1849386b6..92a95743c 100644 --- a/src/player/eldritch-horror.c +++ b/src/player/eldritch-horror.c @@ -5,6 +5,7 @@ */ #include "player/eldritch-horror.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor.h" #include "locale/vowel-checker.h" diff --git a/src/player/player-damage.c b/src/player/player-damage.c index 187cbbd81..d5cbdf93c 100644 --- a/src/player/player-damage.c +++ b/src/player/player-damage.c @@ -3,6 +3,7 @@ #include "cmd-building/cmd-building.h" #include "cmd-io/cmd-process-screen.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "dungeon/quest.h" #include "floor/floor.h" diff --git a/src/player/player-move.c b/src/player/player-move.c index 9d4022dd9..5f5f85db4 100644 --- a/src/player/player-move.c +++ b/src/player/player-move.c @@ -145,6 +145,7 @@ #include "cmd-action/cmd-attack.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/special-internal-keys.h" #include "core/stuff-handler.h" #include "dungeon/dungeon.h" diff --git a/src/player/player-status.c b/src/player/player-status.c index 0d806c2bc..0c52d3848 100644 --- a/src/player/player-status.c +++ b/src/player/player-status.c @@ -12,6 +12,7 @@ #include "cmd-item/cmd-magiceat.h" #include "combat/attack-power-table.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" diff --git a/src/player/player-status.h b/src/player/player-status.h index 90055c708..b5b0a770c 100644 --- a/src/player/player-status.h +++ b/src/player/player-status.h @@ -361,24 +361,6 @@ typedef struct player_type POSITION cur_lite; /* Radius of lite (if any) */ BIT_FLAGS update; /* Pending Updates */ -#define PU_BONUS 0x00000001L /*!< ステータス更新フラグ: 能力値修正 / Calculate bonuses */ -#define PU_TORCH 0x00000002L /*!< ステータス更新フラグ: 光源半径 / Calculate torch radius */ -#define PU_HP 0x00000010L /*!< ステータス更新フラグ: HP / Calculate chp and mhp */ -#define PU_MANA 0x00000020L /*!< ステータス更新フラグ: MP / Calculate csp and msp */ -#define PU_SPELLS 0x00000040L /*!< ステータス更新フラグ: 魔法学習数 / Calculate spells */ -#define PU_COMBINE 0x00000100L /*!< アイテム処理フラグ: アイテムの結合を要する / Combine the pack */ -#define PU_REORDER 0x00000200L /*!< アイテム処理フラグ: アイテムの並び替えを要する / Reorder the pack */ -#define PU_AUTODESTROY 0x00000400L /*!< アイテム処理フラグ: アイテムの自動破壊を要する / Auto-destroy marked item */ -#define PU_UN_VIEW 0x00010000L /*!< ステータス更新フラグ: 地形の視界外化 / Forget view */ -#define PU_UN_LITE 0x00020000L /*!< ステータス更新フラグ: 明暗範囲の視界外化 / Forget lite */ -#define PU_VIEW 0x00100000L /*!< ステータス更新フラグ: 視界 / Update view */ -#define PU_LITE 0x00200000L /*!< ステータス更新フラグ: 明暗範囲 / Update lite */ -#define PU_MON_LITE 0x00400000L /*!< ステータス更新フラグ: モンスターの光源範囲 / Monster illumination */ -#define PU_DELAY_VIS 0x00800000L /*!< ステータス更新フラグ: 視界の追加更新 / Mega-Hack -- Delayed visual update */ -#define PU_MONSTERS 0x01000000L /*!< ステータス更新フラグ: モンスターのステータス / Update monsters */ -#define PU_DISTANCE 0x02000000L /*!< ステータス更新フラグ: プレイヤーとモンスターの距離 / Update distances */ -#define PU_FLOW 0x10000000L /*!< ステータス更新フラグ: プレイヤーから各マスへの到達距離 / Update flow */ - BIT_FLAGS redraw; /* Normal Redraws */ #define PR_MISC 0x00000001L /*!< 再描画フラグ: 種族と職業 / Display Race/Class */ #define PR_TITLE 0x00000002L /*!< 再描画フラグ: 称号 / Display Title */ diff --git a/src/player/process-death.c b/src/player/process-death.c index 6c1cec2c3..f35c2372a 100644 --- a/src/player/process-death.c +++ b/src/player/process-death.c @@ -8,6 +8,7 @@ #include "process-death.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor-town.h" #include "floor/floor.h" diff --git a/src/realm/realm-hex.c b/src/realm/realm-hex.c index e2a973317..6e0387d48 100644 --- a/src/realm/realm-hex.c +++ b/src/realm/realm-hex.c @@ -18,6 +18,7 @@ #include "cmd-action/cmd-spell.h" #include "cmd-item/cmd-quaff.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "effect/effect-characteristics.h" #include "floor/floor-object.h" #include "floor/floor.h" diff --git a/src/realm/realm-hissatsu.c b/src/realm/realm-hissatsu.c index 4370ae5be..1aa483b17 100644 --- a/src/realm/realm-hissatsu.c +++ b/src/realm/realm-hissatsu.c @@ -5,6 +5,7 @@ #include "cmd/cmd-basic.h" #include "combat/combat-options-type.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "dungeon/dungeon.h" #include "effect/effect-characteristics.h" diff --git a/src/realm/realm-song.c b/src/realm/realm-song.c index 9a4778eb4..6b96bbb81 100644 --- a/src/realm/realm-song.c +++ b/src/realm/realm-song.c @@ -1,5 +1,6 @@ #include "cmd-action/cmd-spell.h" #include "core/hp-mp-processor.h" +#include "core/player-update-types.h" #include "effect/effect-characteristics.h" #include "io/targeting.h" #include "player/attack-defense-types.h" diff --git a/src/savedata/save.c b/src/savedata/save.c index 98376e5ae..174d135b6 100644 --- a/src/savedata/save.c +++ b/src/savedata/save.c @@ -14,6 +14,7 @@ #include "savedata/save.h" #include "birth/quick-start.h" #include "cmd-building/cmd-building.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" #include "floor/floor-events.h" diff --git a/src/spell-kind/earthquake.c b/src/spell-kind/earthquake.c index 26fd203b8..918f44a2e 100644 --- a/src/spell-kind/earthquake.c +++ b/src/spell-kind/earthquake.c @@ -1,4 +1,5 @@ #include "spell-kind/earthquake.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" #include "floor/floor-events.h" diff --git a/src/spell-kind/spells-curse-removal.c b/src/spell-kind/spells-curse-removal.c index afff9dd6d..45052df88 100644 --- a/src/spell-kind/spells-curse-removal.c +++ b/src/spell-kind/spells-curse-removal.c @@ -1,4 +1,5 @@ #include "spell-kind/spells-curse-removal.h" +#include "core/player-update-types.h" #include "inventory/inventory-slot-types.h" #include "object-enchant/item-feeling.h" #include "object-enchant/special-object-flags.h" diff --git a/src/spell-kind/spells-equipment.c b/src/spell-kind/spells-equipment.c index e458d6e6e..e91ddaac4 100644 --- a/src/spell-kind/spells-equipment.c +++ b/src/spell-kind/spells-equipment.c @@ -1,4 +1,5 @@ #include "spell-kind/spells-equipment.h" +#include "core/player-update-types.h" #include "inventory/inventory-slot-types.h" #include "mind/racial-android.h" #include "object-hook/hook-enchant.h" diff --git a/src/spell-kind/spells-fetcher.c b/src/spell-kind/spells-fetcher.c index 1dfe61cf6..cb0e84987 100644 --- a/src/spell-kind/spells-fetcher.c +++ b/src/spell-kind/spells-fetcher.c @@ -1,4 +1,5 @@ #include "spell-kind/spells-fetcher.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor.h" #include "grid/feature.h" diff --git a/src/spell-kind/spells-floor.c b/src/spell-kind/spells-floor.c index 8b05152c9..c889aca4b 100644 --- a/src/spell-kind/spells-floor.c +++ b/src/spell-kind/spells-floor.c @@ -7,6 +7,7 @@ #include "spell-kind/spells-floor.h" #include "cmd-io/cmd-dump.h" #include "cmd/cmd-basic.h" +#include "core/player-update-types.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" #include "effect/effect-characteristics.h" diff --git a/src/spell-kind/spells-neighbor.c b/src/spell-kind/spells-neighbor.c index 73be3f16c..439f7e364 100644 --- a/src/spell-kind/spells-neighbor.c +++ b/src/spell-kind/spells-neighbor.c @@ -1,4 +1,5 @@ #include "spell-kind/spells-neighbor.h" +#include "core/player-update-types.h" #include "effect/effect-characteristics.h" #include "floor/floor.h" #include "grid/feature.h" diff --git a/src/spell-kind/spells-perception.c b/src/spell-kind/spells-perception.c index 5e544bb13..09c3d5e2e 100644 --- a/src/spell-kind/spells-perception.c +++ b/src/spell-kind/spells-perception.c @@ -1,5 +1,6 @@ #include "spell-kind/spells-perception.h" #include "autopick/autopick.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor-object.h" #include "game-option/auto-destruction-options.h" diff --git a/src/spell-kind/spells-sight.c b/src/spell-kind/spells-sight.c index 9d68de741..4e7693630 100644 --- a/src/spell-kind/spells-sight.c +++ b/src/spell-kind/spells-sight.c @@ -1,4 +1,5 @@ #include "spell-kind/spells-sight.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/effect-characteristics.h" #include "floor/floor.h" diff --git a/src/spell-kind/spells-teleport.c b/src/spell-kind/spells-teleport.c index 729eca1da..4030056e0 100644 --- a/src/spell-kind/spells-teleport.c +++ b/src/spell-kind/spells-teleport.c @@ -6,6 +6,7 @@ #include "spell-kind/spells-teleport.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/speed-table.h" #include "effect/effect-characteristics.h" #include "grid/grid.h" diff --git a/src/spell-realm/spells-chaos.c b/src/spell-realm/spells-chaos.c index 2e0ede1c2..87e2ac11a 100644 --- a/src/spell-realm/spells-chaos.c +++ b/src/spell-realm/spells-chaos.c @@ -1,4 +1,5 @@ #include "spell-realm/spells-chaos.h" +#include "core/player-update-types.h" #include "dungeon/quest.h" #include "floor/floor.h" #include "grid/feature.h" diff --git a/src/spell-realm/spells-craft.c b/src/spell-realm/spells-craft.c index 5008da59c..118bd7675 100644 --- a/src/spell-realm/spells-craft.c +++ b/src/spell-realm/spells-craft.c @@ -1,4 +1,5 @@ #include "spell-realm/spells-craft.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" #include "inventory/inventory-slot-types.h" diff --git a/src/spell-realm/spells-crusade.c b/src/spell-realm/spells-crusade.c index d98c4cbd7..0b116f841 100644 --- a/src/spell-realm/spells-crusade.c +++ b/src/spell-realm/spells-crusade.c @@ -5,6 +5,7 @@ */ #include "spell-realm/spells-crusade.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/effect-characteristics.h" #include "floor/floor.h" diff --git a/src/spell-realm/spells-demon.c b/src/spell-realm/spells-demon.c index c4e1afaf6..8483dbbe4 100644 --- a/src/spell-realm/spells-demon.c +++ b/src/spell-realm/spells-demon.c @@ -1,4 +1,5 @@ #include "spell-realm/spells-demon.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" #include "player/player-move.h" diff --git a/src/spell-realm/spells-hex.c b/src/spell-realm/spells-hex.c index b785ccb7a..af6958cda 100644 --- a/src/spell-realm/spells-hex.c +++ b/src/spell-realm/spells-hex.c @@ -1,5 +1,6 @@ #include "spell-realm/spells-hex.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "floor/floor.h" #include "monster-race/monster-race.h" #include "player/attack-defense-types.h" diff --git a/src/spell-realm/spells-song.c b/src/spell-realm/spells-song.c index 741e8bbc6..c0b2b7406 100644 --- a/src/spell-realm/spells-song.c +++ b/src/spell-realm/spells-song.c @@ -1,4 +1,5 @@ #include "spell-realm/spells-song.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "floor/floor.h" #include "game-option/disturbance-options.h" diff --git a/src/spell/spells-object.c b/src/spell/spells-object.c index b8e07937d..669da21f1 100644 --- a/src/spell/spells-object.c +++ b/src/spell/spells-object.c @@ -9,6 +9,7 @@ #include "autopick/autopick.h" #include "cmd/cmd-basic.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "floor/floor-object.h" #include "floor/floor.h" #include "game-option/disturbance-options.h" diff --git a/src/spell/spells-status.c b/src/spell/spells-status.c index 444c5ff9d..aa50c9f12 100644 --- a/src/spell/spells-status.c +++ b/src/spell/spells-status.c @@ -8,6 +8,7 @@ #include "cmd-action/cmd-spell.h" #include "cmd-item/cmd-magiceat.h" #include "core/hp-mp-processor.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "effect/effect-characteristics.h" #include "floor/floor-object.h" diff --git a/src/status/action-setter.c b/src/status/action-setter.c index 99b0efb7b..9dcdb1524 100644 --- a/src/status/action-setter.c +++ b/src/status/action-setter.c @@ -12,6 +12,7 @@ */ #include "status/action-setter.h" +#include "core/player-update-types.h" #include "player/attack-defense-types.h" #include "player/special-defense-types.h" #include "spell-realm/spells-hex.h" diff --git a/src/status/bad-status-setter.c b/src/status/bad-status-setter.c index 299cc500d..3f0c0c406 100644 --- a/src/status/bad-status-setter.c +++ b/src/status/bad-status-setter.c @@ -1,4 +1,5 @@ #include "status/bad-status-setter.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" #include "mind/mind-sniper.h" diff --git a/src/status/base-status.c b/src/status/base-status.c index cd8f065e6..313bc91ac 100644 --- a/src/status/base-status.c +++ b/src/status/base-status.c @@ -1,4 +1,5 @@ #include "status/base-status.h" +#include "core/player-update-types.h" #include "game-option/birth-options.h" #include "inventory/inventory-slot-types.h" #include "object-enchant/item-feeling.h" diff --git a/src/status/body-improvement.c b/src/status/body-improvement.c index 542747260..509200f87 100644 --- a/src/status/body-improvement.c +++ b/src/status/body-improvement.c @@ -1,4 +1,5 @@ #include "status/body-improvement.h" +#include "core/player-update-types.h" #include "core/speed-table.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" diff --git a/src/status/buff-setter.c b/src/status/buff-setter.c index f439e0dbf..c78eabc84 100644 --- a/src/status/buff-setter.c +++ b/src/status/buff-setter.c @@ -1,4 +1,5 @@ #include "status/buff-setter.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" #include "player/avatar.h" diff --git a/src/status/form-changer.c b/src/status/form-changer.c index bece2d038..ab45795e1 100644 --- a/src/status/form-changer.c +++ b/src/status/form-changer.c @@ -1,4 +1,5 @@ #include "status/form-changer.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" #include "player/avatar.h" diff --git a/src/status/shape-changer.c b/src/status/shape-changer.c index 8d9d67fd9..6cd5f5085 100644 --- a/src/status/shape-changer.c +++ b/src/status/shape-changer.c @@ -3,6 +3,7 @@ #include "birth/birth-body-spec.h" #include "birth/birth-stat.h" #include "core/hp-mp-processor.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "grid/grid.h" #include "mutation/mutation.h" diff --git a/src/status/sight-setter.c b/src/status/sight-setter.c index ed671c25b..96c3937a5 100644 --- a/src/status/sight-setter.c +++ b/src/status/sight-setter.c @@ -1,4 +1,5 @@ #include "status/sight-setter.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" #include "player/player-move.h" diff --git a/src/status/temporary-resistance.c b/src/status/temporary-resistance.c index 647edd670..13520035e 100644 --- a/src/status/temporary-resistance.c +++ b/src/status/temporary-resistance.c @@ -1,4 +1,5 @@ #include "status/temporary-resistance.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "game-option/disturbance-options.h" #include "player/player-move.h" diff --git a/src/store/store.c b/src/store/store.c index 4927359fa..a6eac25e8 100644 --- a/src/store/store.c +++ b/src/store/store.c @@ -30,6 +30,7 @@ #include "cmd-visual/cmd-draw.h" #include "cmd-visual/cmd-visuals.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "mind/mind-sniper.h" #include "core/stuff-handler.h" #include "floor/floor-events.h" diff --git a/src/wizard/wizard-special-process.c b/src/wizard/wizard-special-process.c index cb7755c78..b0447a759 100644 --- a/src/wizard/wizard-special-process.c +++ b/src/wizard/wizard-special-process.c @@ -16,6 +16,7 @@ #include "cmd-io/cmd-save.h" #include "cmd-visual/cmd-draw.h" #include "core/asking-player.h" +#include "core/player-update-types.h" #include "core/stuff-handler.h" #include "dungeon/dungeon.h" #include "dungeon/quest.h" -- 2.11.0