OSDN Git Service

[Refactor] #39963 Moved effect_monster_stasis() and effect_monster_stun() from effect...
authorHourier <hourier@users.sourceforge.jp>
Sun, 3 May 2020 04:42:39 +0000 (13:42 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sun, 3 May 2020 04:42:39 +0000 (13:42 +0900)
src/effect/effect-monster-oldies.c
src/effect/effect-monster-oldies.h
src/effect/effect-monster-switcher.c

index e228111..c7e6cfc 100644 (file)
@@ -246,3 +246,46 @@ gf_switch_result effect_monster_old_conf(player_type *caster_ptr, effect_monster
        em_ptr->dam = 0;
        return GF_SWITCH_CONTINUE;
 }
+
+
+gf_switch_result effect_monster_stasis(effect_monster_type *em_ptr, bool to_evil)
+{
+       if (em_ptr->seen) em_ptr->obvious = TRUE;
+
+       int stasis_damage = (em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10);
+       bool has_resistance = (em_ptr->r_ptr->flags1 & RF1_UNIQUE) != 0;
+       has_resistance |= em_ptr->r_ptr->level > randint1(stasis_damage) + 10;
+       if (to_evil) has_resistance |= (em_ptr->r_ptr->flags3 & RF3_EVIL) == 0;
+
+       if (has_resistance)
+       {
+               em_ptr->note = _("には効果がなかった。", " is unaffected.");
+               em_ptr->obvious = FALSE;
+       }
+       else
+       {
+               em_ptr->note = _("は動けなくなった!", " is suspended!");
+               em_ptr->do_sleep = 500;
+       }
+
+       em_ptr->dam = 0;
+       return GF_SWITCH_CONTINUE;
+}
+
+
+gf_switch_result effect_monster_stun(effect_monster_type *em_ptr)
+{
+       if (em_ptr->seen) em_ptr->obvious = TRUE;
+
+       em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
+       if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
+               (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
+       {
+               em_ptr->do_stun = 0;
+               em_ptr->note = _("には効果がなかった。", " is unaffected.");
+               em_ptr->obvious = FALSE;
+       }
+
+       em_ptr->dam = 0;
+       return GF_SWITCH_CONTINUE;
+}
index e211bc5..a623083 100644 (file)
@@ -8,3 +8,5 @@ gf_switch_result effect_monster_old_speed(player_type *caster_ptr, effect_monste
 gf_switch_result effect_monster_old_slow(player_type *caster_ptr, effect_monster_type *em_ptr);
 gf_switch_result effect_monster_old_sleep(player_type *caster_ptr, effect_monster_type *em_ptr);
 gf_switch_result effect_monster_old_conf(player_type *caster_ptr, effect_monster_type *em_ptr);
+gf_switch_result effect_monster_stasis(effect_monster_type *em_ptr, bool to_evil);
+gf_switch_result effect_monster_stun(effect_monster_type *em_ptr);
index ce8b7d3..3d3621d 100644 (file)
@@ -1,4 +1,6 @@
 /*!
+ * todo どうしても「その他」に分類せざるを得ない魔法種別が残った
+ * 本ファイル内の行数はまともなレベルに落ち着いているので、一旦ここに留め置くこととする
  * @brief 魔法種別による各種処理切り替え
  * @date 2020/04/29
  * @author Hourier
@@ -27,6 +29,7 @@
 gf_switch_result effect_monster_hypodynamia(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
        if (em_ptr->seen) em_ptr->obvious = TRUE;
+
        if (monster_living(em_ptr->m_ptr->r_idx))
        {
                em_ptr->do_time = (em_ptr->dam + 7) / 8;
@@ -81,49 +84,6 @@ gf_switch_result effect_monster_death_ray(player_type *caster_ptr, effect_monste
 }
 
 
-gf_switch_result effect_monster_stasis(effect_monster_type *em_ptr, bool to_evil)
-{
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-
-       int stasis_damage = (em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10);
-       bool has_resistance = (em_ptr->r_ptr->flags1 & RF1_UNIQUE) != 0;
-       has_resistance |= em_ptr->r_ptr->level > randint1(stasis_damage) + 10;
-       if (to_evil) has_resistance |= (em_ptr->r_ptr->flags3 & RF3_EVIL) == 0;
-
-       if (has_resistance)
-       {
-               em_ptr->note = _("には効果がなかった。", " is unaffected.");
-               em_ptr->obvious = FALSE;
-       }
-       else
-       {
-               em_ptr->note = _("は動けなくなった!", " is suspended!");
-               em_ptr->do_sleep = 500;
-       }
-
-       em_ptr->dam = 0;
-       return GF_SWITCH_CONTINUE;
-}
-
-
-gf_switch_result effect_monster_stun(effect_monster_type *em_ptr)
-{
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-
-       em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
-       if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
-               (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
-       {
-               em_ptr->do_stun = 0;
-               em_ptr->note = _("には効果がなかった。", " is unaffected.");
-               em_ptr->obvious = FALSE;
-       }
-
-       em_ptr->dam = 0;
-       return GF_SWITCH_CONTINUE;
-}
-
-
 gf_switch_result effect_monster_kill_wall(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
        if ((em_ptr->r_ptr->flags3 & (RF3_HURT_ROCK)) == 0)