OSDN Git Service

[Refactor] mspell.h をmspell-result.h に改名した
[hengbandforosx/hengbandosx.git] / src / monster-floor / quantum-effect.cpp
index 863bf6d..b196b47 100644 (file)
@@ -10,7 +10,8 @@
 #include "monster/monster-info.h"
 #include "monster/smart-learn-types.h"
 #include "mspell/assign-monster-spell.h"
-#include "mspell/mspell.h"
+#include "mspell/mspell-result.h"
+#include "effect/attribute-types.h"
 #include "spell-kind/spells-teleport.h"
 #include "system/floor-type-definition.h"
 #include "system/monster-race-definition.h"
 
 /*!
  * @brief ユニークでない量子生物を消滅させる
- * @param target_ptr プレーヤーへの参照ポインタ
+ * @param player_ptr プレイヤーへの参照ポインタ
  * @param m_idx モンスターID
  * @param see_m モンスターが視界内にいたらTRUE
  */
-static void vanish_nonunique(player_type *target_ptr, MONSTER_IDX m_idx, bool see_m)
+static void vanish_nonunique(PlayerType *player_ptr, MONSTER_IDX m_idx, bool see_m)
 {
-    monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
+    monster_type *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
     if (see_m) {
         GAME_TEXT m_name[MAX_NLEN];
-        monster_desc(target_ptr, m_name, m_ptr, 0);
+        monster_desc(player_ptr, m_name, m_ptr, 0);
         msg_format(_("%sは消え去った!", "%^s disappears!"), m_name);
     }
 
-    monster_death(target_ptr, m_idx, FALSE);
-    delete_monster_idx(target_ptr, m_idx);
+    monster_death(player_ptr, m_idx, false, AttributeType::NONE);
+    delete_monster_idx(player_ptr, m_idx);
     if (is_pet(m_ptr) && !(m_ptr->ml))
         msg_print(_("少しの間悲しい気分になった。", "You feel sad for a moment."));
 }
 
 /*!
  * @brief 量子生物ユニークの量子的効果 (ショート・テレポートまたは距離10のテレポート・アウェイ)を実行する
- * @param target_ptr プレーヤーへの参照ポインタ
+ * @param player_ptr プレイヤーへの参照ポインタ
  * @param m_idx モンスターID
  * @param see_m モンスターが視界内にいたらTRUE
  * @details
- * ã\83\97ã\83¬ã\83¼ã\83¤ã\83¼ã\81\8cé\87\8få­\90ç\94\9fç\89©ã\82\92観測ã\81\97ã\81¦ã\81\84ã\82\8bã\81\8bã\80\81é\87\8få­\90ç\94\9fç\89©ã\81\8cã\83\97ã\83¬ã\83¼ヤーを観測している場合、互いの相対的な位置を確定させる
+ * ã\83\97ã\83¬ã\82¤ã\83¤ã\83¼ã\81\8cé\87\8få­\90ç\94\9fç\89©ã\82\92観測ã\81\97ã\81¦ã\81\84ã\82\8bã\81\8bã\80\81é\87\8få­\90ç\94\9fç\89©ã\81\8cã\83\97ã\83¬ã\82¤ヤーを観測している場合、互いの相対的な位置を確定させる
  * 波動関数の収縮はテレポートではないので反テレポート無効
  * @notes
  * パターンは収縮どころか拡散しているが、この際気にしてはいけない
- * @todo ã\83¦ã\83\8bã\83¼ã\82¯ã\81¨ã\83\97ã\83¬ã\83¼ヤーとの間でしか効果が発生しない。ユニークとその他のモンスター間では何もしなくてよい?
+ * @todo ã\83¦ã\83\8bã\83¼ã\82¯ã\81¨ã\83\97ã\83¬ã\82¤ヤーとの間でしか効果が発生しない。ユニークとその他のモンスター間では何もしなくてよい?
  */
-static void produce_quantum_effect(player_type *target_ptr, MONSTER_IDX m_idx, bool see_m)
+static void produce_quantum_effect(PlayerType *player_ptr, MONSTER_IDX m_idx, bool see_m)
 {
-    monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
-    bool coherent = los(target_ptr, m_ptr->fy, m_ptr->fx, target_ptr->y, target_ptr->x);
+    monster_type *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
+    bool coherent = los(player_ptr, m_ptr->fy, m_ptr->fx, player_ptr->y, player_ptr->x);
     if (!see_m && !coherent)
         return;
 
     if (see_m) {
         GAME_TEXT m_name[MAX_NLEN];
-        monster_desc(target_ptr, m_name, m_ptr, MD_NONE);
+        monster_desc(player_ptr, m_name, m_ptr, MD_NONE);
         msg_format(_("%sは量子的効果を起こした!", "%^s produced a decoherence!"), m_name);
     } else
         msg_print(_("量子的効果が起こった!", "A decoherence was produced!"));
 
     bool target = one_in_(2);
     if (target)
-        (void)monspell_to_monster(target_ptr, RF_ABILITY::BLINK, m_ptr->fy, m_ptr->fx, m_idx, m_idx, TRUE);
+        (void)monspell_to_monster(player_ptr, MonsterAbilityType::BLINK, m_ptr->fy, m_ptr->fx, m_idx, m_idx, true);
     else
-        teleport_player_away(m_idx, target_ptr, 10, TRUE);
+        teleport_player_away(m_idx, player_ptr, 10, true);
 }
 
 /*!
  * @brief 量子生物の量子的効果を実行する
- * @param target_ptr プレーヤーへの参照ポインタ
+ * @param player_ptr プレイヤーへの参照ポインタ
  * @param m_idx モンスターID
  * @param see_m モンスターが視界内にいたらTRUE
  * @return モンスターが量子的効果により消滅したらTRUE
  */
-bool process_quantum_effect(player_type *target_ptr, MONSTER_IDX m_idx, bool see_m)
+bool process_quantum_effect(PlayerType *player_ptr, MONSTER_IDX m_idx, bool see_m)
 {
-    monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
+    monster_type *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
     monster_race *r_ptr = &r_info[m_ptr->r_idx];
     if ((r_ptr->flags2 & RF2_QUANTUM) == 0)
-        return FALSE;
+        return false;
     if (!randint0(2))
-        return FALSE;
+        return false;
     if (randint0((m_idx % 100) + 10))
-        return FALSE;
+        return false;
 
     bool can_disappear = (r_ptr->flags1 & RF1_UNIQUE) == 0;
     can_disappear &= (r_ptr->flags1 & RF1_QUESTOR) == 0;
     if (can_disappear) {
-        vanish_nonunique(target_ptr, m_idx, see_m);
-        return TRUE;
+        vanish_nonunique(player_ptr, m_idx, see_m);
+        return true;
     }
 
-    produce_quantum_effect(target_ptr, m_idx, see_m);
-    return FALSE;
+    produce_quantum_effect(player_ptr, m_idx, see_m);
+    return false;
 }