#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;
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);
+ vanish_nonunique(player_ptr, m_idx, see_m);
return true;
}
- produce_quantum_effect(target_ptr, m_idx, see_m);
+ produce_quantum_effect(player_ptr, m_idx, see_m);
return false;
}