<ClCompile Include="..\..\src\mind\mind-power-getter.c" />\r
<ClCompile Include="..\..\src\mind\mind-priest.c" />\r
<ClCompile Include="..\..\src\mind\mind-weaponsmith.c" />\r
+ <ClCompile Include="..\..\src\monster-attack\monster-attack-lose.c" />\r
<ClCompile Include="..\..\src\monster-floor\monster-death-util.c" />\r
<ClCompile Include="..\..\src\monster-floor\monster-lite-util.c" />\r
<ClCompile Include="..\..\src\monster-floor\monster-lite.c" />\r
<ClInclude Include="..\..\src\mind\mind-priest.h" />\r
<ClInclude Include="..\..\src\mind\mind-types.h" />\r
<ClInclude Include="..\..\src\mind\mind-weaponsmith.h" />\r
+ <ClInclude Include="..\..\src\monster-attack\monster-attack-lose.h" />\r
<ClInclude Include="..\..\src\monster-floor\monster-death-util.h" />\r
<ClInclude Include="..\..\src\monster-floor\monster-lite-util.h" />\r
<ClInclude Include="..\..\src\monster-floor\monster-lite.h" />\r
<ClCompile Include="..\..\src\player\player-status-resist.c">
<Filter>player</Filter>
</ClCompile>
+<<<<<<< HEAD
<ClCompile Include="..\..\src\io\record-play-movie.c">
<Filter>io</Filter>
+=======
+ <ClCompile Include="..\..\src\monster-attack\monster-attack-lose.c">
+ <Filter>monster-attack</Filter>
+>>>>>>> 057055900... [Refactor] #37285 Separated monster-attach-lose.c/h from monster-attack-switcher.c
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\player\player-status-resist.h">
<Filter>player</Filter>
</ClInclude>
+<<<<<<< HEAD
<ClInclude Include="..\..\src\io\record-play-movie.h">
<Filter>io</Filter>
+=======
+ <ClInclude Include="..\..\src\monster-attack\monster-attack-lose.h">
+ <Filter>monster-attack</Filter>
+>>>>>>> 057055900... [Refactor] #37285 Separated monster-attach-lose.c/h from monster-attack-switcher.c
</ClInclude>
</ItemGroup>
<ItemGroup>
monster-attack/insults-moans.c monster-attack/insults-moans.h \
monster-attack/monster-attack-describer.c monster-attack/monster-attack-describer.h \
monster-attack/monster-attack-effect.h \
+ monster-attack/monster-attack-lose.c monster-attack/monster-attack-lose.h \
monster-attack/monster-attack-player.c monster-attack/monster-attack-player.h \
monster-attack/monster-attack-processor.c monster-attack/monster-attack-processor.h \
monster-attack/monster-attack-status.c monster-attack/monster-attack-status.h \
--- /dev/null
+#include "monster-attack/monster-attack-lose.h"
+#include "mind/mind-mirror-master.h"
+#include "monster-attack/monster-attack-status.h"
+#include "monster-attack/monster-attack-util.h"
+#include "player/player-damage.h"
+#include "player/player-status-flags.h"
+#include "player/player-status-resist.h"
+#include "status/bad-status-setter.h"
+#include "status/base-status.h"
+#include "status/element-resistance.h"
+#include "view/display-messages.h"
+
+/*!
+ * @brief \95a\8bC\83_\83\81\81[\83W\82ð\8cv\8eZ\82·\82é (\93Å\91Ï\90«\82ª\82 \82ê\82Î\81A(1d4 + 4) / 9\82É\82È\82é\81B\93ñ\8fd\91Ï\90«\82È\82ç\8dX\82É(1d4 + 4) / 9)
+ * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param monap_ptr \83\82\83\93\83X\83^\81[\82©\82ç\83v\83\8c\81[\83\84\81[\82Ö\82Ì\92¼\90Ú\8dU\8c\82\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ * @details 10% (\93Å\82Ì\88ê\8e\9f\91Ï\90«\82ª\82 \82ê\82Î4%\81A\93ñ\8fd\91Ï\90«\82È\82ç\82Î1.6%)\82Ì\8am\97¦\82Å\91Ï\8bv\82ª\92á\89º\82µ\81A\8dX\82É1/10\82Ì\8am\97¦\82Å\89i\8bv\92á\89º\82·\82é
+ */
+void calc_blow_disease(player_type *target_ptr, monap_type *monap_ptr)
+{
+ if (has_resist_pois(target_ptr))
+ monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
+
+ if (is_oppose_pois(target_ptr))
+ monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
+
+ monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+ if (target_ptr->is_dead || check_multishadow(target_ptr))
+ return;
+
+ if (!(target_ptr->resist_pois || is_oppose_pois(target_ptr)) && set_poisoned(target_ptr, target_ptr->poisoned + randint1(monap_ptr->rlev) + 5))
+ monap_ptr->obvious = TRUE;
+
+ bool disease_possibility = randint1(100) > calc_nuke_damage_rate(target_ptr);
+ if (disease_possibility || (randint1(100) > 10) || (target_ptr->prace == RACE_ANDROID))
+ return;
+
+ bool perm = one_in_(10);
+ if (dec_stat(target_ptr, A_CON, randint1(10), perm)) {
+ msg_print(_("\95a\82ª\82 \82È\82½\82ð\90I\82ñ\82Å\82¢\82é\8bC\82ª\82·\82é\81B", "You feel sickly."));
+ monap_ptr->obvious = TRUE;
+ }
+}
+
+/*!
+ * @brief \98r\97Í\92á\89º\83_\83\81\81[\83W\82ð\8cv\8eZ\82·\82é (\88Û\8e\9d\82ª\82 \82ê\82Î\81A(1d4 + 4) / 9\82É\82È\82é)
+ * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param monap_ptr \83\82\83\93\83X\83^\81[\82©\82ç\83v\83\8c\81[\83\84\81[\82Ö\82Ì\92¼\90Ú\8dU\8c\82\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
+void calc_blow_lose_strength(player_type *target_ptr, monap_type *monap_ptr)
+{
+ if (has_sustain_str(target_ptr))
+ monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+ monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+ if (target_ptr->is_dead || check_multishadow(target_ptr))
+ return;
+
+ if (do_dec_stat(target_ptr, A_STR))
+ monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief \92m\94\\92á\89º\83_\83\81\81[\83W\82ð\8cv\8eZ\82·\82é (\88Û\8e\9d\82ª\82 \82ê\82Î\81A(1d4 + 4) / 9\82É\82È\82é)
+ * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param monap_ptr \83\82\83\93\83X\83^\81[\82©\82ç\83v\83\8c\81[\83\84\81[\82Ö\82Ì\92¼\90Ú\8dU\8c\82\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
+void calc_blow_lose_intelligence(player_type *target_ptr, monap_type *monap_ptr)
+{
+ if (has_sustain_int(target_ptr))
+ monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+ monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+ if (target_ptr->is_dead || check_multishadow(target_ptr))
+ return;
+
+ if (do_dec_stat(target_ptr, A_INT))
+ monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief \8c«\82³\92á\89º\83_\83\81\81[\83W\82ð\8cv\8eZ\82·\82é (\88Û\8e\9d\82ª\82 \82ê\82Î\81A(1d4 + 4) / 9\82É\82È\82é)
+ * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param monap_ptr \83\82\83\93\83X\83^\81[\82©\82ç\83v\83\8c\81[\83\84\81[\82Ö\82Ì\92¼\90Ú\8dU\8c\82\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
+void calc_blow_lose_wisdom(player_type *target_ptr, monap_type *monap_ptr)
+{
+ if (has_sustain_wis(target_ptr))
+ monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+ monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+ if (target_ptr->is_dead || check_multishadow(target_ptr))
+ return;
+
+ if (do_dec_stat(target_ptr, A_WIS))
+ monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief \8aí\97p\92á\89º\83_\83\81\81[\83W\82ð\8cv\8eZ\82·\82é (\88Û\8e\9d\82ª\82 \82ê\82Î\81A(1d4 + 4) / 9\82É\82È\82é)
+ * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param monap_ptr \83\82\83\93\83X\83^\81[\82©\82ç\83v\83\8c\81[\83\84\81[\82Ö\82Ì\92¼\90Ú\8dU\8c\82\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
+void calc_blow_lose_dexterity(player_type *target_ptr, monap_type *monap_ptr)
+{
+ if (has_sustain_dex(target_ptr))
+ monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+ monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+ if (target_ptr->is_dead || check_multishadow(target_ptr))
+ return;
+
+ if (do_dec_stat(target_ptr, A_DEX))
+ monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief \91Ï\8bv\92á\89º\83_\83\81\81[\83W\82ð\8cv\8eZ\82·\82é (\88Û\8e\9d\82ª\82 \82ê\82Î\81A(1d4 + 4) / 9\82É\82È\82é)
+ * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param monap_ptr \83\82\83\93\83X\83^\81[\82©\82ç\83v\83\8c\81[\83\84\81[\82Ö\82Ì\92¼\90Ú\8dU\8c\82\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
+void calc_blow_lose_constitution(player_type *target_ptr, monap_type *monap_ptr)
+{
+ if (has_sustain_con(target_ptr))
+ monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+ monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+ if (target_ptr->is_dead || check_multishadow(target_ptr))
+ return;
+
+ if (do_dec_stat(target_ptr, A_CON))
+ monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief \96£\97Í\92á\89º\83_\83\81\81[\83W\82ð\8cv\8eZ\82·\82é (\88Û\8e\9d\82ª\82 \82ê\82Î\81A(1d4 + 4) / 9\82É\82È\82é)
+ * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param monap_ptr \83\82\83\93\83X\83^\81[\82©\82ç\83v\83\8c\81[\83\84\81[\82Ö\82Ì\92¼\90Ú\8dU\8c\82\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
+void calc_blow_lose_charisma(player_type *target_ptr, monap_type *monap_ptr)
+{
+ if (has_sustain_chr(target_ptr))
+ monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+ monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+ if (target_ptr->is_dead || check_multishadow(target_ptr))
+ return;
+
+ if (do_dec_stat(target_ptr, A_CHR))
+ monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief \91S\94\\97Í\92á\89º\83_\83\81\81[\83W\82ð\8cv\8eZ\82·\82é (\88Û\8e\9d\82ª\82 \82ê\82Î\81A1\82Â\82É\95t\82«-3%\8cy\8c¸\82·\82é)
+ * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @param monap_ptr \83\82\83\93\83X\83^\81[\82©\82ç\83v\83\8c\81[\83\84\81[\82Ö\82Ì\92¼\90Ú\8dU\8c\82\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
+ * @return \82È\82µ
+ */
+void calc_blow_lose_all(player_type *target_ptr, monap_type *monap_ptr)
+{
+ int damage_ratio = 100;
+ if (has_sustain_str(target_ptr))
+ damage_ratio -= 3;
+
+ if (has_sustain_int(target_ptr))
+ damage_ratio -= 3;
+
+ if (has_sustain_wis(target_ptr))
+ damage_ratio -= 3;
+
+ if (has_sustain_dex(target_ptr))
+ damage_ratio -= 3;
+
+ if (has_sustain_con(target_ptr))
+ damage_ratio -= 3;
+
+ if (has_sustain_chr(target_ptr))
+ damage_ratio -= 3;
+
+ monap_ptr->damage = monap_ptr->damage * damage_ratio / 100;
+ monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+ if (target_ptr->is_dead || check_multishadow(target_ptr))
+ return;
+
+ process_lose_all_attack(target_ptr, monap_ptr);
+}
--- /dev/null
+#pragma once
+
+#include "system/angband.h"
+
+typedef struct monap_type monap_type;
+void calc_blow_disease(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_strength(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_intelligence(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_wisdom(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_dexterity(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_constitution(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_charisma(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_all(player_type *target_ptr, monap_type *monap_ptr);
#include "inventory/inventory-slot-types.h"
#include "mind/drs-types.h"
#include "mind/mind-mirror-master.h"
+#include "monster-attack/monster-attack-lose.h"
#include "monster-attack/monster-attack-status.h"
#include "monster-attack/monster-eating.h"
#include "monster/monster-status.h"
monap_ptr->obvious = TRUE;
}
- if (is_resist_disen(target_ptr))
+ if (has_resist_disen(target_ptr))
monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
*/
static void calc_blow_blind(player_type *target_ptr, monap_type *monap_ptr)
{
- if (is_resist_blind(target_ptr))
+ if (has_resist_blind(target_ptr))
monap_ptr->damage = monap_ptr->damage * (randint1(4) + 3) / 8;
monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
if (monap_ptr->explode)
return;
- if (is_resist_conf(target_ptr))
+ if (has_resist_conf(target_ptr))
monap_ptr->damage = monap_ptr->damage * (randint1(4) + 3) / 8;
monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
*/
static void calc_blow_fear(player_type *target_ptr, monap_type *monap_ptr)
{
- if (is_resist_fear(target_ptr))
+ if (has_resist_fear(target_ptr))
monap_ptr->damage = monap_ptr->damage * (randint1(4) + 3) / 8;
monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_FREE);
}
-/*!
- * @brief 病気ダメージを計算する (毒耐性があれば、(1d4 + 4) / 9になる。二重耐性なら更に(1d4 + 4) / 9)
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
- * @return なし
- * @details 10% (毒の一次耐性があれば4%、二重耐性ならば1.6%)の確率で耐久が低下し、更に1/10の確率で永久低下する
- */
-static void calc_blow_disease(player_type *target_ptr, monap_type *monap_ptr)
-{
- if (is_resist_pois(target_ptr))
- monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
-
- if (is_oppose_pois(target_ptr))
- monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
-
- monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
- if (target_ptr->is_dead || check_multishadow(target_ptr))
- return;
-
- if (!(target_ptr->resist_pois || is_oppose_pois(target_ptr)) && set_poisoned(target_ptr, target_ptr->poisoned + randint1(monap_ptr->rlev) + 5))
- monap_ptr->obvious = TRUE;
-
- bool disease_possibility = randint1(100) > calc_nuke_damage_rate(target_ptr);
- if (disease_possibility || (randint1(100) > 10) || (target_ptr->prace == RACE_ANDROID))
- return;
-
- bool perm = one_in_(10);
- if (dec_stat(target_ptr, A_CON, randint1(10), perm)) {
- msg_print(_("病があなたを蝕んでいる気がする。", "You feel sickly."));
- monap_ptr->obvious = TRUE;
- }
-}
-
-/*!
- * @brief 腕力低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
- * @return なし
- */
-static void calc_blow_lose_strength(player_type *target_ptr, monap_type *monap_ptr)
-{
- if (is_sustain_str(target_ptr))
- monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
-
- monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
- if (target_ptr->is_dead || check_multishadow(target_ptr))
- return;
-
- if (do_dec_stat(target_ptr, A_STR))
- monap_ptr->obvious = TRUE;
-}
-
-/*!
- * @brief 知能低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
- * @return なし
- */
-static void calc_blow_lose_intelligence(player_type *target_ptr, monap_type *monap_ptr)
-{
- if (is_sustain_int(target_ptr))
- monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
-
- monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
- if (target_ptr->is_dead || check_multishadow(target_ptr))
- return;
-
- if (do_dec_stat(target_ptr, A_INT))
- monap_ptr->obvious = TRUE;
-}
-
-/*!
- * @brief 賢さ低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
- * @return なし
- */
-static void calc_blow_lose_wisdom(player_type *target_ptr, monap_type *monap_ptr)
-{
- if (is_sustain_wis(target_ptr))
- monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
-
- monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
- if (target_ptr->is_dead || check_multishadow(target_ptr))
- return;
-
- if (do_dec_stat(target_ptr, A_WIS))
- monap_ptr->obvious = TRUE;
-}
-
-/*!
- * @brief 器用低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
- * @return なし
- */
-static void calc_blow_lose_dexterity(player_type *target_ptr, monap_type *monap_ptr)
-{
- if (is_sustain_dex(target_ptr))
- monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
-
- monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
- if (target_ptr->is_dead || check_multishadow(target_ptr))
- return;
-
- if (do_dec_stat(target_ptr, A_DEX))
- monap_ptr->obvious = TRUE;
-}
-
-/*!
- * @brief 耐久低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
- * @return なし
- */
-static void calc_blow_lose_constitution(player_type *target_ptr, monap_type *monap_ptr)
-{
- if (is_sustain_con(target_ptr))
- monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
-
- monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
- if (target_ptr->is_dead || check_multishadow(target_ptr))
- return;
-
- if (do_dec_stat(target_ptr, A_CON))
- monap_ptr->obvious = TRUE;
-}
-
-/*!
- * @brief 魅力低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
- * @return なし
- */
-static void calc_blow_lose_charisma(player_type *target_ptr, monap_type *monap_ptr)
-{
- if (is_sustain_chr(target_ptr))
- monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
-
- monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
- if (target_ptr->is_dead || check_multishadow(target_ptr))
- return;
-
- if (do_dec_stat(target_ptr, A_CHR))
- monap_ptr->obvious = TRUE;
-}
-
-/*!
- * @brief 全能力低下ダメージを計算する (維持があれば、1つに付き-3%軽減する)
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
- * @return なし
- */
-static void calc_blow_lose_all(player_type *target_ptr, monap_type *monap_ptr)
-{
- int damage_ratio = 100;
- if (is_sustain_str(target_ptr))
- damage_ratio -= 3;
-
- if (is_sustain_int(target_ptr))
- damage_ratio -= 3;
-
- if (is_sustain_wis(target_ptr))
- damage_ratio -= 3;
-
- if (is_sustain_dex(target_ptr))
- damage_ratio -= 3;
-
- if (is_sustain_con(target_ptr))
- damage_ratio -= 3;
-
- if (is_sustain_chr(target_ptr))
- damage_ratio -= 3;
-
- monap_ptr->damage = monap_ptr->damage * damage_ratio / 100;
- monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
- if (target_ptr->is_dead || check_multishadow(target_ptr))
- return;
-
- process_lose_all_attack(target_ptr, monap_ptr);
-}
-
void switch_monster_blow_to_player(player_type *target_ptr, monap_type *monap_ptr)
{
switch (monap_ptr->effect) {
break;
}
case RBE_DISEASE:
- calc_blow_didease(target_ptr, monap_ptr);
+ calc_blow_disease(target_ptr, monap_ptr);
break;
case RBE_TIME: {
if (monap_ptr->explode)