From 859107d02a50995e3e8e76b14fa9b351f6a8ef07 Mon Sep 17 00:00:00 2001 From: Hourier Date: Sat, 18 Jan 2020 13:49:40 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#38997=20update=5Fsmart=5Flearn()?= =?utf8?q?=20=E3=81=ABplayer=5Ftype=20*=20=E5=BC=95=E6=95=B0=E8=BF=BD?= =?utf8?q?=E5=8A=A0=20/=20Added=20player=5Ftype=20*=20argument=20to=20upda?= =?utf8?q?te=5Fsmart=5Flearn()?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/combat/melee1.c | 22 ++++++++--------- src/monster.h | 2 +- src/monster2.c | 66 ++++++++++++++++++++++++++------------------------ src/mspells4.c | 70 ++++++++++++++++++++++++++--------------------------- 4 files changed, 81 insertions(+), 79 deletions(-) diff --git a/src/combat/melee1.c b/src/combat/melee1.c index 34bfff530..eb048ab7c 100644 --- a/src/combat/melee1.c +++ b/src/combat/melee1.c @@ -2823,7 +2823,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) get_damage += take_hit(target_ptr, DAMAGE_ATTACK, damage, ddesc, -1); /* Learn about the player */ - update_smart_learn(m_idx, DRS_POIS); + update_smart_learn(target_ptr, m_idx, DRS_POIS); break; } @@ -2847,7 +2847,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) get_damage += take_hit(target_ptr, DAMAGE_ATTACK, damage, ddesc, -1); /* Learn about the player */ - update_smart_learn(m_idx, DRS_DISEN); + update_smart_learn(target_ptr, m_idx, DRS_DISEN); break; } @@ -3132,7 +3132,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) msg_print(_("酸を浴びせられた!", "You are covered in acid!")); get_damage += acid_dam(target_ptr, damage, ddesc, -1, FALSE); update_creature(target_ptr); - update_smart_learn(m_idx, DRS_ACID); + update_smart_learn(target_ptr, m_idx, DRS_ACID); break; } @@ -3142,7 +3142,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) obvious = TRUE; msg_print(_("電撃を浴びせられた!", "You are struck by electricity!")); get_damage += elec_dam(target_ptr, damage, ddesc, -1, FALSE); - update_smart_learn(m_idx, DRS_ELEC); + update_smart_learn(target_ptr, m_idx, DRS_ELEC); break; } @@ -3152,7 +3152,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) obvious = TRUE; msg_print(_("全身が炎に包まれた!", "You are enveloped in flames!")); get_damage += fire_dam(target_ptr, damage, ddesc, -1, FALSE); - update_smart_learn(m_idx, DRS_FIRE); + update_smart_learn(target_ptr, m_idx, DRS_FIRE); break; } @@ -3162,7 +3162,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) obvious = TRUE; msg_print(_("全身が冷気で覆われた!", "You are covered with frost!")); get_damage += cold_dam(target_ptr, damage, ddesc, -1, FALSE); - update_smart_learn(m_idx, DRS_COLD); + update_smart_learn(target_ptr, m_idx, DRS_COLD); break; } @@ -3186,7 +3186,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) } /* Learn about the player */ - update_smart_learn(m_idx, DRS_BLIND); + update_smart_learn(target_ptr, m_idx, DRS_BLIND); break; } @@ -3208,7 +3208,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) } /* Learn about the player */ - update_smart_learn(m_idx, DRS_CONF); + update_smart_learn(target_ptr, m_idx, DRS_CONF); break; } @@ -3243,7 +3243,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) } /* Learn about the player */ - update_smart_learn(m_idx, DRS_FEAR); + update_smart_learn(target_ptr, m_idx, DRS_FEAR); break; } @@ -3281,7 +3281,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) } /* Learn about the player */ - update_smart_learn(m_idx, DRS_FREE); + update_smart_learn(target_ptr, m_idx, DRS_FREE); break; } @@ -3611,7 +3611,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) } /* Learn about the player */ - update_smart_learn(m_idx, DRS_MANA); + update_smart_learn(target_ptr, m_idx, DRS_MANA); break; } diff --git a/src/monster.h b/src/monster.h index a9ed97cde..5a3f33d22 100644 --- a/src/monster.h +++ b/src/monster.h @@ -504,7 +504,7 @@ extern bool summon_named_creature(player_type *player_ptr, MONSTER_IDX who, POSI #define DRS_FREE 30 #define DRS_MANA 31 #define DRS_REFLECT 32 -extern void update_smart_learn(MONSTER_IDX m_idx, int what); +extern void update_smart_learn(player_type *player_ptr, MONSTER_IDX m_idx, int what); extern void choose_new_monster(player_type *player_ptr, MONSTER_IDX m_idx, bool born, MONRACE_IDX r_idx); extern SPEED get_mspeed(player_type *player_ptr, monster_race *r_ptr); diff --git a/src/monster2.c b/src/monster2.c index 3309a0233..95d377ac5 100644 --- a/src/monster2.c +++ b/src/monster2.c @@ -3084,6 +3084,8 @@ static MONSTER_IDX place_monster_idx = 0; static MONSTER_IDX place_monster_m_idx = 0; /*! + * todo ここには本来floor_type*を追加したいが、monster.hにfloor.hの参照を追加するとコンパイルエラーが出るので保留 + * todo ここにplayer_typeを追加すると関数ポインタ周りの収拾がつかなくなるので保留 * @brief モンスター種族が召喚主の護衛となれるかどうかをチェックする / Hack -- help pick an escort type * @param r_idx チェックするモンスター種族のID * @return 護衛にできるならばtrue @@ -3427,6 +3429,7 @@ bool alloc_monster(player_type *player_ptr, POSITION dis, BIT_FLAGS mode) /*! + * todo ここにplayer_typeを追加すると関数ポインタ周りの収拾がつかなくなるので保留 * @brief モンスターが召喚の基本条件に合っているかをチェックする / Hack -- help decide if a monster race is "okay" to summon * @param r_idx チェックするモンスター種族ID * @return 召喚対象にできるならばTRUE @@ -3629,7 +3632,7 @@ void message_pain(player_type *player_ptr, MONSTER_IDX m_idx, HIT_POINT dam) HIT_POINT tmp; PERCENTAGE percentage; - monster_type *m_ptr = &p_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]; GAME_TEXT m_name[MAX_NLEN]; @@ -3944,16 +3947,15 @@ void message_pain(player_type *player_ptr, MONSTER_IDX m_idx, HIT_POINT dam) } - /*! * @brief SMART(適格に攻撃を行う)モンスターの学習状況を更新する / Learn about an "observed" resistance. * @param m_idx 更新を行う「モンスター情報ID * @param what 学習対象ID * @return なし */ -void update_smart_learn(MONSTER_IDX m_idx, int what) +void update_smart_learn(player_type *player_ptr, MONSTER_IDX m_idx, int what) { - monster_type *m_ptr = &p_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]; /* Not allowed to learn */ @@ -3969,89 +3971,89 @@ void update_smart_learn(MONSTER_IDX m_idx, int what) switch (what) { case DRS_ACID: - if (p_ptr->resist_acid) m_ptr->smart |= (SM_RES_ACID); - if (is_oppose_acid(p_ptr)) m_ptr->smart |= (SM_OPP_ACID); - if (p_ptr->immune_acid) m_ptr->smart |= (SM_IMM_ACID); + if (player_ptr->resist_acid) m_ptr->smart |= (SM_RES_ACID); + if (is_oppose_acid(player_ptr)) m_ptr->smart |= (SM_OPP_ACID); + if (player_ptr->immune_acid) m_ptr->smart |= (SM_IMM_ACID); break; case DRS_ELEC: - if (p_ptr->resist_elec) m_ptr->smart |= (SM_RES_ELEC); - if (is_oppose_elec(p_ptr)) m_ptr->smart |= (SM_OPP_ELEC); - if (p_ptr->immune_elec) m_ptr->smart |= (SM_IMM_ELEC); + if (player_ptr->resist_elec) m_ptr->smart |= (SM_RES_ELEC); + if (is_oppose_elec(player_ptr)) m_ptr->smart |= (SM_OPP_ELEC); + if (player_ptr->immune_elec) m_ptr->smart |= (SM_IMM_ELEC); break; case DRS_FIRE: - if (p_ptr->resist_fire) m_ptr->smart |= (SM_RES_FIRE); - if (is_oppose_fire(p_ptr)) m_ptr->smart |= (SM_OPP_FIRE); - if (p_ptr->immune_fire) m_ptr->smart |= (SM_IMM_FIRE); + if (player_ptr->resist_fire) m_ptr->smart |= (SM_RES_FIRE); + if (is_oppose_fire(player_ptr)) m_ptr->smart |= (SM_OPP_FIRE); + if (player_ptr->immune_fire) m_ptr->smart |= (SM_IMM_FIRE); break; case DRS_COLD: - if (p_ptr->resist_cold) m_ptr->smart |= (SM_RES_COLD); - if (is_oppose_cold(p_ptr)) m_ptr->smart |= (SM_OPP_COLD); - if (p_ptr->immune_cold) m_ptr->smart |= (SM_IMM_COLD); + if (player_ptr->resist_cold) m_ptr->smart |= (SM_RES_COLD); + if (is_oppose_cold(player_ptr)) m_ptr->smart |= (SM_OPP_COLD); + if (player_ptr->immune_cold) m_ptr->smart |= (SM_IMM_COLD); break; case DRS_POIS: - if (p_ptr->resist_pois) m_ptr->smart |= (SM_RES_POIS); - if (is_oppose_pois(p_ptr)) m_ptr->smart |= (SM_OPP_POIS); + if (player_ptr->resist_pois) m_ptr->smart |= (SM_RES_POIS); + if (is_oppose_pois(player_ptr)) m_ptr->smart |= (SM_OPP_POIS); break; case DRS_NETH: - if (p_ptr->resist_neth) m_ptr->smart |= (SM_RES_NETH); + if (player_ptr->resist_neth) m_ptr->smart |= (SM_RES_NETH); break; case DRS_LITE: - if (p_ptr->resist_lite) m_ptr->smart |= (SM_RES_LITE); + if (player_ptr->resist_lite) m_ptr->smart |= (SM_RES_LITE); break; case DRS_DARK: - if (p_ptr->resist_dark) m_ptr->smart |= (SM_RES_DARK); + if (player_ptr->resist_dark) m_ptr->smart |= (SM_RES_DARK); break; case DRS_FEAR: - if (p_ptr->resist_fear) m_ptr->smart |= (SM_RES_FEAR); + if (player_ptr->resist_fear) m_ptr->smart |= (SM_RES_FEAR); break; case DRS_CONF: - if (p_ptr->resist_conf) m_ptr->smart |= (SM_RES_CONF); + if (player_ptr->resist_conf) m_ptr->smart |= (SM_RES_CONF); break; case DRS_CHAOS: - if (p_ptr->resist_chaos) m_ptr->smart |= (SM_RES_CHAOS); + if (player_ptr->resist_chaos) m_ptr->smart |= (SM_RES_CHAOS); break; case DRS_DISEN: - if (p_ptr->resist_disen) m_ptr->smart |= (SM_RES_DISEN); + if (player_ptr->resist_disen) m_ptr->smart |= (SM_RES_DISEN); break; case DRS_BLIND: - if (p_ptr->resist_blind) m_ptr->smart |= (SM_RES_BLIND); + if (player_ptr->resist_blind) m_ptr->smart |= (SM_RES_BLIND); break; case DRS_NEXUS: - if (p_ptr->resist_nexus) m_ptr->smart |= (SM_RES_NEXUS); + if (player_ptr->resist_nexus) m_ptr->smart |= (SM_RES_NEXUS); break; case DRS_SOUND: - if (p_ptr->resist_sound) m_ptr->smart |= (SM_RES_SOUND); + if (player_ptr->resist_sound) m_ptr->smart |= (SM_RES_SOUND); break; case DRS_SHARD: - if (p_ptr->resist_shard) m_ptr->smart |= (SM_RES_SHARD); + if (player_ptr->resist_shard) m_ptr->smart |= (SM_RES_SHARD); break; case DRS_FREE: - if (p_ptr->free_act) m_ptr->smart |= (SM_IMM_FREE); + if (player_ptr->free_act) m_ptr->smart |= (SM_IMM_FREE); break; case DRS_MANA: - if (!p_ptr->msp) m_ptr->smart |= (SM_IMM_MANA); + if (!player_ptr->msp) m_ptr->smart |= (SM_IMM_MANA); break; case DRS_REFLECT: - if (p_ptr->reflect) m_ptr->smart |= (SM_IMM_REFLECT); + if (player_ptr->reflect) m_ptr->smart |= (SM_IMM_REFLECT); break; } } diff --git a/src/mspells4.c b/src/mspells4.c index 01f1f01ad..09f99291b 100644 --- a/src/mspells4.c +++ b/src/mspells4.c @@ -265,7 +265,7 @@ HIT_POINT spell_RF4_ROCKET(player_type *target_ptr, POSITION y, POSITION x, MONS dam = monspell_damage(target_ptr, (MS_ROCKET), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_SHARD); + update_smart_learn(target_ptr, m_idx, DRS_SHARD); return dam; } @@ -502,7 +502,7 @@ HIT_POINT spell_RF4_BREATH(player_type *target_ptr, int GF_TYPE, POSITION y, POS sound(SOUND_BREATH); breath(target_ptr, y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, TARGET_TYPE); if (smart_learn_aux && mon_to_player) - update_smart_learn(m_idx, drs_type); + update_smart_learn(target_ptr, m_idx, drs_type); return dam; } @@ -531,7 +531,7 @@ HIT_POINT spell_RF4_BA_NUKE(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_BALL_NUKE), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_POIS); + update_smart_learn(target_ptr, m_idx, DRS_POIS); return dam; } @@ -560,7 +560,7 @@ HIT_POINT spell_RF4_BA_CHAO(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_BALL_CHAOS), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_CHAOS); + update_smart_learn(target_ptr, m_idx, DRS_CHAOS); return dam; } @@ -591,7 +591,7 @@ HIT_POINT spell_RF5_BA_ACID(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_BALL_ACID), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_ACID); + update_smart_learn(target_ptr, m_idx, DRS_ACID); return dam; } @@ -622,7 +622,7 @@ HIT_POINT spell_RF5_BA_ELEC(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_BALL_ELEC), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_ELEC); + update_smart_learn(target_ptr, m_idx, DRS_ELEC); return dam; } @@ -664,7 +664,7 @@ HIT_POINT spell_RF5_BA_FIRE(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_BALL_FIRE), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_FIRE); + update_smart_learn(target_ptr, m_idx, DRS_FIRE); return dam; } @@ -695,7 +695,7 @@ HIT_POINT spell_RF5_BA_COLD(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_BALL_COLD), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_COLD); + update_smart_learn(target_ptr, m_idx, DRS_COLD); return dam; } @@ -724,7 +724,7 @@ HIT_POINT spell_RF5_BA_POIS(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_BALL_POIS), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_POIS); + update_smart_learn(target_ptr, m_idx, DRS_POIS); return dam; } @@ -753,7 +753,7 @@ HIT_POINT spell_RF5_BA_NETH(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_BALL_NETHER), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_NETH); + update_smart_learn(target_ptr, m_idx, DRS_NETH); return dam; } @@ -850,7 +850,7 @@ HIT_POINT spell_RF5_BA_DARK(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_BALL_DARK), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_DARK); + update_smart_learn(target_ptr, m_idx, DRS_DARK); return dam; } @@ -887,7 +887,7 @@ HIT_POINT spell_RF5_DRAIN_MANA(player_type *target_ptr, POSITION y, POSITION x, dam = monspell_damage(target_ptr, (MS_DRAIN_MANA), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_MANA); + update_smart_learn(target_ptr, m_idx, DRS_MANA); return dam; } @@ -1146,8 +1146,8 @@ HIT_POINT spell_RF5_BO_ACID(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_ACID); - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_ACID); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1178,8 +1178,8 @@ HIT_POINT spell_RF5_BO_ELEC(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_ELEC); - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_ELEC); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1210,8 +1210,8 @@ HIT_POINT spell_RF5_BO_FIRE(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_FIRE); - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_FIRE); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1242,8 +1242,8 @@ HIT_POINT spell_RF5_BO_COLD(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_COLD); - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_COLD); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1273,7 +1273,7 @@ HIT_POINT spell_RF5_BA_LITE(player_type *target_ptr, POSITION y, POSITION x, MON dam = monspell_damage(target_ptr, (MS_STARBURST), m_idx, DAM_ROLL); breath(target_ptr, y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) - update_smart_learn(m_idx, DRS_LITE); + update_smart_learn(target_ptr, m_idx, DRS_LITE); return dam; } @@ -1303,8 +1303,8 @@ HIT_POINT spell_RF5_BO_NETH(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_NETH); - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_NETH); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1335,7 +1335,7 @@ HIT_POINT spell_RF5_BO_WATE(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1366,7 +1366,7 @@ HIT_POINT spell_RF5_BO_MANA(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1397,7 +1397,7 @@ HIT_POINT spell_RF5_BO_PLAS(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1428,8 +1428,8 @@ HIT_POINT spell_RF5_BO_ICEE(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_COLD); - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_COLD); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1460,7 +1460,7 @@ HIT_POINT spell_RF5_MISSILE(player_type *target_ptr, POSITION y, POSITION x, MON bolt(target_ptr, m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, TARGET_TYPE); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - update_smart_learn(m_idx, DRS_REFLECT); + update_smart_learn(target_ptr, m_idx, DRS_REFLECT); } return dam; @@ -1572,7 +1572,7 @@ void spell_RF5_SCARE(MONSTER_IDX m_idx, player_type *target_ptr, MONSTER_IDX t_i } learn_spell(target_ptr, MS_SCARE); - update_smart_learn(m_idx, DRS_FEAR); + update_smart_learn(target_ptr, m_idx, DRS_FEAR); return; } @@ -1626,7 +1626,7 @@ void spell_RF5_BLIND(MONSTER_IDX m_idx, player_type *target_ptr, MONSTER_IDX t_i } learn_spell(target_ptr, MS_BLIND); - update_smart_learn(m_idx, DRS_BLIND); + update_smart_learn(target_ptr, m_idx, DRS_BLIND); return; } @@ -1693,7 +1693,7 @@ void spell_RF5_CONF(MONSTER_IDX m_idx, player_type *target_ptr, MONSTER_IDX t_id } learn_spell(target_ptr, MS_CONF); - update_smart_learn(m_idx, DRS_CONF); + update_smart_learn(target_ptr, m_idx, DRS_CONF); return; } @@ -1747,7 +1747,7 @@ void spell_RF5_SLOW(MONSTER_IDX m_idx, player_type *target_ptr, MONSTER_IDX t_id } learn_spell(target_ptr, MS_SLOW); - update_smart_learn(m_idx, DRS_FREE); + update_smart_learn(target_ptr, m_idx, DRS_FREE); return; } @@ -1814,7 +1814,7 @@ void spell_RF5_HOLD(MONSTER_IDX m_idx, player_type *target_ptr, MONSTER_IDX t_id } learn_spell(target_ptr, MS_SLEEP); - update_smart_learn(m_idx, DRS_FREE); + update_smart_learn(target_ptr, m_idx, DRS_FREE); return; } @@ -2500,7 +2500,7 @@ void spell_RF6_TELE_LEVEL(player_type *target_ptr, MONSTER_IDX m_idx, MONSTER_ID } learn_spell(target_ptr, MS_TELE_LEVEL); - update_smart_learn(m_idx, DRS_NEXUS); + update_smart_learn(target_ptr, m_idx, DRS_NEXUS); return; } -- 2.11.0