• R/O
  • HTTP
  • SSH
  • HTTPS

hengbandosx: Commit

The master and develop branches track hengband.

OS X development happens on the macos-1-6-2, macos-2-2-1, and macos-develop branches.


Commit MetaInfo

Revisão4ebbf158c3bdee1aa9c420b3360e0343a1975527 (tree)
Hora2021-12-28 04:00:24
AutorEric Branlund <ebranlund@fast...>
CommiterEric Branlund

Mensagem de Log

Merge branch 'develop' into macos-develop

Mudança Sumário

Diff

--- a/doxygen/Hengband.doxyfile
+++ b/doxygen/Hengband.doxyfile
@@ -38,7 +38,7 @@ PROJECT_NAME = Hengband
3838 # could be handy for archiving the generated documentation or if some version
3939 # control system is used.
4040
41-PROJECT_NUMBER = 3.0.0Alpha48
41+PROJECT_NUMBER = 3.0.0Alpha49
4242
4343 # Using the PROJECT_BRIEF tag one can provide an optional one line description
4444 # for a project that appears at the top of each page and should give viewer a
--- a/src/mspell/mspell-special.cpp
+++ b/src/mspell/mspell-special.cpp
@@ -51,6 +51,9 @@ static MonsterSpellResult spell_RF6_SPECIAL_BANORLUPART(PlayerType *player_ptr,
5151 POSITION dummy_x = m_ptr->fx;
5252 BIT_FLAGS mode = 0L;
5353
54+ if (see_monster(player_ptr, m_idx) && monster_near_player(floor_ptr, m_idx, 0))
55+ disturb(player_ptr, true, true);
56+
5457 switch (m_ptr->r_idx) {
5558 case MON_BANORLUPART:
5659 dummy_hp = (m_ptr->hp + 1) / 2;
@@ -114,10 +117,18 @@ static MonsterSpellResult spell_RF6_SPECIAL_ROLENTO(PlayerType *player_ptr, POSI
114117 int count = 0, k;
115118 int num = 1 + randint1(3);
116119 BIT_FLAGS mode = 0L;
120+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
121+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
122+ bool mon_to_mon = TARGET_TYPE == MONSTER_TO_MONSTER;
123+ bool mon_to_player = TARGET_TYPE == MONSTER_TO_PLAYER;
124+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
125+
117126 mspell_cast_msg_blind msg(_("%^sが何か大量に投げた。", "%^s spreads something."),
118127 _("%^sは手榴弾をばらまいた。", "%^s throws some hand grenades."), _("%^sは手榴弾をばらまいた。", "%^s throws some hand grenades."));
119128
120129 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
130+ if (mon_to_player || (mon_to_mon && known && see_either))
131+ disturb(player_ptr, true, true);
121132
122133 for (k = 0; k < num; k++) {
123134 count += summon_named_creature(player_ptr, m_idx, y, x, MON_GRENADE, mode);
@@ -228,7 +239,6 @@ MonsterSpellResult spell_RF6_SPECIAL(PlayerType *player_ptr, POSITION y, POSITIO
228239 monster_type *m_ptr = &floor_ptr->m_list[m_idx];
229240 monster_race *r_ptr = &r_info[m_ptr->r_idx];
230241
231- disturb(player_ptr, true, true);
232242 switch (m_ptr->r_idx) {
233243 case MON_OHMU:
234244 return MonsterSpellResult::make_invalid();
--- a/src/mspell/mspell-status.cpp
+++ b/src/mspell/mspell-status.cpp
@@ -589,8 +589,6 @@ MonsterSpellResult spell_RF6_HEAL(PlayerType *player_ptr, MONSTER_IDX m_idx, MON
589589 char m_poss[10];
590590 monster_desc(player_ptr, m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
591591
592- disturb(player_ptr, true, true);
593-
594592 msg.to_player_true = _("%^sが何かをつぶやいた。", "%^s mumbles.");
595593 msg.to_mons_true = _("%^sは自分の傷に念を集中した。", format("%%^s concentrates on %s wounds.", m_poss));
596594 msg.to_player_false = _("%^sが自分の傷に集中した。", format("%%^s concentrates on %s wounds.", m_poss));
--- a/src/mspell/mspell-summon.cpp
+++ b/src/mspell/mspell-summon.cpp
@@ -32,6 +32,23 @@ constexpr int S_NUM_6 = 6;
3232 constexpr int S_NUM_4 = 4;
3333
3434 /*!
35+ * @brief モンスターが召喚呪文を使った際にプレイヤーの連続行動を止める処理 /
36+ * @param player_ptr プレイヤーへの参照ポインタ
37+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
38+ * @param known モンスターが近くにいる場合TRUE
39+ * @param see_either モンスターを視認可能な場合TRUE
40+ */
41+static void summon_disturb(PlayerType *player_ptr, int target_type, bool known, bool see_either)
42+{
43+ bool mon_to_mon = target_type == MONSTER_TO_MONSTER;
44+ bool mon_to_player = target_type == MONSTER_TO_PLAYER;
45+ if (mon_to_player || (mon_to_mon && known && see_either)) {
46+ disturb(player_ptr, true, true);
47+ }
48+}
49+
50+
51+/*!
3552 * @brief 特定条件のモンスター召喚のみPM_ALLOW_UNIQUEを許可する /
3653 * @param floor_ptr 現在フロアへの参照ポインタ
3754 * @param m_idx モンスターID
@@ -84,8 +101,7 @@ static void decide_summon_kin_caster(
84101 return;
85102 }
86103
87- if (mon_to_player || (mon_to_mon && known && see_either))
88- disturb(player_ptr, true, true);
104+ summon_disturb(player_ptr, target_type, known, see_either);
89105
90106 if (player_ptr->blind) {
91107 if (mon_to_player)
@@ -123,9 +139,12 @@ MonsterSpellResult spell_RF6_S_KIN(PlayerType *player_ptr, POSITION y, POSITION
123139 monster_name(player_ptr, m_idx, m_name);
124140 monster_name(player_ptr, t_idx, t_name);
125141 monster_desc(player_ptr, m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
126-
127- disturb(player_ptr, true, true);
142+
143+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
128144 bool known = monster_near_player(floor_ptr, m_idx, t_idx);
145+
146+ summon_disturb(player_ptr, target_type, known, see_either);
147+
129148 decide_summon_kin_caster(player_ptr, m_idx, t_idx, target_type, m_name, m_poss, known);
130149 int count = 0;
131150 switch (m_ptr->r_idx) {
@@ -213,18 +232,21 @@ MonsterSpellResult spell_RF6_S_KIN(PlayerType *player_ptr, POSITION y, POSITION
213232 */
214233 MonsterSpellResult spell_RF6_S_CYBER(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
215234 {
216- int count = 0;
217235 floor_type *floor_ptr = player_ptr->current_floor_ptr;
218236 monster_type *m_ptr = &floor_ptr->m_list[m_idx];
219237 DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
220238 bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
221239 bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
240+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
241+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
222242 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
223243 _("%^sがサイバーデーモンを召喚した!", "%^s magically summons Cyberdemons!"),
224244 _("%^sがサイバーデーモンを召喚した!", "%^s magically summons Cyberdemons!"));
225245
226246 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
247+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
227248
249+ int count = 0;
228250 if (is_friendly(m_ptr) && mon_to_mon) {
229251 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_CYBER, (PM_ALLOW_GROUP));
230252 } else {
@@ -256,16 +278,20 @@ MonsterSpellResult spell_RF6_S_CYBER(PlayerType *player_ptr, POSITION y, POSITIO
256278 */
257279 MonsterSpellResult spell_RF6_S_MONSTER(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
258280 {
281+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
282+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
283+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
284+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
285+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
286+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
287+
259288 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."), _("%^sが魔法で仲間を召喚した!", "%^s magically summons help!"),
260289 _("%^sが魔法で仲間を召喚した!", "%^s magically summons help!"));
261290
262291 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
292+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
263293
264- floor_type *floor_ptr = player_ptr->current_floor_ptr;
265294 int count = 0;
266- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
267- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
268- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
269295 for (int k = 0; k < 1; k++) {
270296 if (mon_to_player)
271297 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_NONE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
@@ -299,16 +325,20 @@ MonsterSpellResult spell_RF6_S_MONSTER(PlayerType *player_ptr, POSITION y, POSIT
299325 */
300326 MonsterSpellResult spell_RF6_S_MONSTERS(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
301327 {
328+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
329+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
330+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
331+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
332+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
333+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
334+
302335 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
303336 _("%^sが魔法でモンスターを召喚した!", "%^s magically summons monsters!"), _("%^sが魔法でモンスターを召喚した!", "%^s magically summons monsters!"));
304337
305338 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
339+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
306340
307- floor_type *floor_ptr = player_ptr->current_floor_ptr;
308341 int count = 0;
309- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
310- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
311- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
312342 for (auto k = 0; k < S_NUM_6; k++) {
313343 if (mon_to_player)
314344 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_NONE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
@@ -342,16 +372,20 @@ MonsterSpellResult spell_RF6_S_MONSTERS(PlayerType *player_ptr, POSITION y, POSI
342372 */
343373 MonsterSpellResult spell_RF6_S_ANT(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
344374 {
375+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
376+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
377+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
378+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
379+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
380+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
381+
345382 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."), _("%^sが魔法でアリを召喚した。", "%^s magically summons ants."),
346383 _("%^sが魔法でアリを召喚した。", "%^s magically summons ants."));
347384
348385 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
386+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
349387
350388 int count = 0;
351- floor_type *floor_ptr = player_ptr->current_floor_ptr;
352- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
353- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
354- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
355389 for (auto k = 0; k < S_NUM_6; k++) {
356390 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP);
357391 }
@@ -381,16 +415,20 @@ MonsterSpellResult spell_RF6_S_ANT(PlayerType *player_ptr, POSITION y, POSITION
381415 */
382416 MonsterSpellResult spell_RF6_S_SPIDER(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
383417 {
418+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
419+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
420+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
421+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
422+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
423+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
424+
384425 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."), _("%^sが魔法でクモを召喚した。", "%^s magically summons spiders."),
385426 _("%^sが魔法でクモを召喚した。", "%^s magically summons spiders."));
386427
387428 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
429+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
388430
389431 int count = 0;
390- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
391- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
392- floor_type *floor_ptr = player_ptr->current_floor_ptr;
393- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
394432 for (auto k = 0; k < S_NUM_6; k++) {
395433 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP);
396434 }
@@ -420,16 +458,20 @@ MonsterSpellResult spell_RF6_S_SPIDER(PlayerType *player_ptr, POSITION y, POSITI
420458 */
421459 MonsterSpellResult spell_RF6_S_HOUND(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
422460 {
461+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
462+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
463+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
464+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
465+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
466+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
467+
423468 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
424469 _("%^sが魔法でハウンドを召喚した。", "%^s magically summons hounds."), _("%^sが魔法でハウンドを召喚した。", "%^s magically summons hounds."));
425470
426471 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
472+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
427473
428474 int count = 0;
429- floor_type *floor_ptr = player_ptr->current_floor_ptr;
430- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
431- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
432- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
433475 for (auto k = 0; k < S_NUM_4; k++) {
434476 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP);
435477 }
@@ -459,16 +501,20 @@ MonsterSpellResult spell_RF6_S_HOUND(PlayerType *player_ptr, POSITION y, POSITIO
459501 */
460502 MonsterSpellResult spell_RF6_S_HYDRA(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
461503 {
504+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
505+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
506+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
507+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
508+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
509+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
510+
462511 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
463512 _("%^sが魔法でヒドラを召喚した。", "%^s magically summons hydras."), _("%^sが魔法でヒドラを召喚した。", "%^s magically summons hydras."));
464513
465514 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
515+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
466516
467517 int count = 0;
468- floor_type *floor_ptr = player_ptr->current_floor_ptr;
469- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
470- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
471- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
472518 for (auto k = 0; k < S_NUM_4; k++) {
473519 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP);
474520 }
@@ -498,12 +544,18 @@ MonsterSpellResult spell_RF6_S_HYDRA(PlayerType *player_ptr, POSITION y, POSITIO
498544 */
499545 MonsterSpellResult spell_RF6_S_ANGEL(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
500546 {
547+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
548+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
549+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
550+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
551+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
552+
501553 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
502554 _("%^sが魔法で天使を召喚した!", "%^s magically summons an angel!"), _("%^sが魔法で天使を召喚した!", "%^s magically summons an angel!"));
503555
504556 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
557+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
505558
506- floor_type *floor_ptr = player_ptr->current_floor_ptr;
507559 monster_type *m_ptr = &floor_ptr->m_list[m_idx];
508560 monster_race *r_ptr = &r_info[m_ptr->r_idx];
509561 int num = 1;
@@ -511,7 +563,6 @@ MonsterSpellResult spell_RF6_S_ANGEL(PlayerType *player_ptr, POSITION y, POSITIO
511563 num += r_ptr->level / 40;
512564 }
513565
514- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
515566 int count = 0;
516567 for (int k = 0; k < num; k++) {
517568 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP);
@@ -525,7 +576,6 @@ MonsterSpellResult spell_RF6_S_ANGEL(PlayerType *player_ptr, POSITION y, POSITIO
525576 msg_print(_("多くのものが間近に現れた音がする。", "You hear many things appear nearby."));
526577 }
527578
528- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
529579 if (monster_near_player(floor_ptr, m_idx, t_idx) && !see_monster(player_ptr, t_idx) && count && mon_to_mon)
530580 floor_ptr->monster_noise = true;
531581
@@ -548,14 +598,19 @@ MonsterSpellResult spell_RF6_S_ANGEL(PlayerType *player_ptr, POSITION y, POSITIO
548598 */
549599 MonsterSpellResult spell_RF6_S_DEMON(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
550600 {
601+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
602+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
603+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
604+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
605+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
606+
551607 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
552608 _("%^sは魔法で混沌の宮廷から悪魔を召喚した!", "%^s magically summons a demon from the Courts of Chaos!"),
553609 _("%^sは魔法で混沌の宮廷から悪魔を召喚した!", "%^s magically summons a demon from the Courts of Chaos!"));
554610
555611 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
612+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
556613
557- floor_type *floor_ptr = player_ptr->current_floor_ptr;
558- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
559614 int count = 0;
560615 for (int k = 0; k < 1; k++) {
561616 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP);
@@ -564,7 +619,6 @@ MonsterSpellResult spell_RF6_S_DEMON(PlayerType *player_ptr, POSITION y, POSITIO
564619 if (player_ptr->blind && count)
565620 msg_print(_("何かが間近に現れた音がする。", "You hear something appear nearby."));
566621
567- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
568622 if (monster_near_player(floor_ptr, m_idx, t_idx) && !see_monster(player_ptr, t_idx) && count && mon_to_mon)
569623 floor_ptr->monster_noise = true;
570624
@@ -587,14 +641,19 @@ MonsterSpellResult spell_RF6_S_DEMON(PlayerType *player_ptr, POSITION y, POSITIO
587641 */
588642 MonsterSpellResult spell_RF6_S_UNDEAD(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
589643 {
644+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
645+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
646+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
647+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
648+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
649+
590650 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
591651 _("%^sが魔法でアンデッドの強敵を召喚した!", "%^s magically summons an undead adversary!"),
592652 _("%sが魔法でアンデッドを召喚した。", "%^s magically summons undead."));
593653
594654 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
655+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
595656
596- floor_type *floor_ptr = player_ptr->current_floor_ptr;
597- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
598657 int count = 0;
599658 for (int k = 0; k < 1; k++) {
600659 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP);
@@ -603,7 +662,6 @@ MonsterSpellResult spell_RF6_S_UNDEAD(PlayerType *player_ptr, POSITION y, POSITI
603662 if (player_ptr->blind && count)
604663 msg_print(_("何かが間近に現れた音がする。", "You hear something appear nearby."));
605664
606- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
607665 if (monster_near_player(floor_ptr, m_idx, t_idx) && !see_monster(player_ptr, t_idx) && count && mon_to_mon)
608666 floor_ptr->monster_noise = true;
609667
@@ -626,15 +684,19 @@ MonsterSpellResult spell_RF6_S_UNDEAD(PlayerType *player_ptr, POSITION y, POSITI
626684 */
627685 MonsterSpellResult spell_RF6_S_DRAGON(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
628686 {
687+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
688+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
689+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
690+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
691+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
692+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
693+
629694 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
630695 _("%^sが魔法でドラゴンを召喚した!", "%^s magically summons a dragon!"), _("%^sが魔法でドラゴンを召喚した!", "%^s magically summons a dragon!"));
631696
632697 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
698+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
633699
634- floor_type *floor_ptr = player_ptr->current_floor_ptr;
635- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
636- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
637- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
638700 int count = 0;
639701 if (mon_to_player)
640702 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
@@ -667,15 +729,18 @@ MonsterSpellResult spell_RF6_S_DRAGON(PlayerType *player_ptr, POSITION y, POSITI
667729 */
668730 MonsterSpellResult spell_RF6_S_HI_UNDEAD(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
669731 {
670- GAME_TEXT m_name[MAX_NLEN];
671- monster_name(player_ptr, m_idx, m_name);
672-
673- disturb(player_ptr, true, true);
674-
675732 floor_type *floor_ptr = player_ptr->current_floor_ptr;
676733 monster_type *m_ptr = &floor_ptr->m_list[m_idx];
677- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
734+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
678735 bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
736+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
737+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
738+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
739+
740+ GAME_TEXT m_name[MAX_NLEN];
741+ monster_name(player_ptr, m_idx, m_name);
742+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
743+
679744 int count = 0;
680745 if (((m_ptr->r_idx == MON_MORGOTH) || (m_ptr->r_idx == MON_SAURON) || (m_ptr->r_idx == MON_ANGMAR)) && ((r_info[MON_NAZGUL].cur_num + 2) < r_info[MON_NAZGUL].max_num) && mon_to_player) {
681746 count += summon_NAZGUL(player_ptr, y, x, m_idx);
@@ -686,7 +751,6 @@ MonsterSpellResult spell_RF6_S_HI_UNDEAD(PlayerType *player_ptr, POSITION y, POS
686751
687752 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
688753
689- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
690754 for (auto k = 0; k < S_NUM_6; k++) {
691755 if (mon_to_player)
692756 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
@@ -722,16 +786,20 @@ MonsterSpellResult spell_RF6_S_HI_UNDEAD(PlayerType *player_ptr, POSITION y, POS
722786 */
723787 MonsterSpellResult spell_RF6_S_HI_DRAGON(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
724788 {
789+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
790+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
791+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
792+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
793+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
794+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
795+
725796 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
726797 _("%^sが魔法で古代ドラゴンを召喚した!", "%^s magically summons ancient dragons!"),
727798 _("%^sが魔法で古代ドラゴンを召喚した!", "%^s magically summons ancient dragons!"));
728799
729800 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
801+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
730802
731- floor_type *floor_ptr = player_ptr->current_floor_ptr;
732- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
733- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
734- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
735803 int count = 0;
736804 for (auto k = 0; k < S_NUM_4; k++) {
737805 if (mon_to_player)
@@ -767,17 +835,21 @@ MonsterSpellResult spell_RF6_S_HI_DRAGON(PlayerType *player_ptr, POSITION y, POS
767835 */
768836 MonsterSpellResult spell_RF6_S_AMBERITES(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
769837 {
838+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
839+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
840+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
841+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
842+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
843+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
844+
770845 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
771846 _("%^sがアンバーの王族を召喚した!", "%^s magically summons Lords of Amber!"),
772847 _("%^sがアンバーの王族を召喚した!", "%^s magically summons Lords of Amber!"));
773848
774849 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
850+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
775851
776852 int count = 0;
777- floor_type *floor_ptr = player_ptr->current_floor_ptr;
778- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
779- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
780- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
781853 for (auto k = 0; k < S_NUM_4; k++) {
782854 count += summon_specific(player_ptr, m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
783855 }
@@ -808,17 +880,21 @@ MonsterSpellResult spell_RF6_S_AMBERITES(PlayerType *player_ptr, POSITION y, POS
808880 */
809881 MonsterSpellResult spell_RF6_S_UNIQUE(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
810882 {
883+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
884+ DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
885+ bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
886+ bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
887+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
888+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
889+
811890 mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
812891 _("%^sが魔法で特別な強敵を召喚した!", "%^s magically summons special opponents!"),
813892 _("%^sが魔法で特別な強敵を召喚した!", "%^s magically summons special opponents!"));
814893
815894 monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
895+ summon_disturb(player_ptr, TARGET_TYPE, known, see_either);
816896
817- floor_type *floor_ptr = player_ptr->current_floor_ptr;
818897 monster_type *m_ptr = &floor_ptr->m_list[m_idx];
819- DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
820- bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
821- bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
822898 bool uniques_are_summoned = false;
823899 int count = 0;
824900 for (auto k = 0; k < S_NUM_4; k++) {
--- a/src/system/angband-version.h
+++ b/src/system/angband-version.h
@@ -17,7 +17,7 @@
1717 #define H_VER_MAJOR 3 //!< ゲームのバージョン定義(メジャー番号)
1818 #define H_VER_MINOR 0 //!< ゲームのバージョン定義(マイナー番号)
1919 #define H_VER_PATCH 0 //!< ゲームのバージョン定義(パッチ番号)
20-#define H_VER_EXTRA 48 //!< ゲームのバージョン定義(エクストラ番号)
20+#define H_VER_EXTRA 49 //!< ゲームのバージョン定義(エクストラ番号)
2121
2222 /*!
2323 * @brief セーブファイルのバージョン(3.0.0から導入)
Show on old repository browser