OSDN Git Service

[Refactor] #39963 Separated effect_player_plasma+nether() from switch_effects_player()
authorHourier <hourier@users.sourceforge.jp>
Sun, 3 May 2020 05:50:49 +0000 (14:50 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sun, 3 May 2020 05:50:54 +0000 (14:50 +0900)
src/effect/effect-player-switcher.c

index 1d0e0fb..133db3d 100644 (file)
@@ -73,6 +73,7 @@ void effect_player_nuke(player_type *target_ptr, effect_player_type *ep_ptr)
 void effect_player_missile(player_type *target_ptr, effect_player_type *ep_ptr)
 {
        if (target_ptr->blind) msg_print(_("\89½\82©\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by something!"));
+
        ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
 }
 
@@ -80,6 +81,7 @@ void effect_player_missile(player_type *target_ptr, effect_player_type *ep_ptr)
 void effect_player_holy_file(player_type *target_ptr, effect_player_type *ep_ptr)
 {
        if (target_ptr->blind) msg_print(_("\89½\82©\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by something!"));
+
        if (target_ptr->align > 10)
                ep_ptr->dam /= 2;
        else if (target_ptr->align < -10)
@@ -92,6 +94,7 @@ void effect_player_holy_file(player_type *target_ptr, effect_player_type *ep_ptr
 void effect_player_hell_fire(player_type *target_ptr, effect_player_type *ep_ptr)
 {
        if (target_ptr->blind) msg_print(_("\89½\82©\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by something!"));
+
        if (target_ptr->align > 10)
                ep_ptr->dam *= 2;
 
@@ -99,6 +102,65 @@ void effect_player_hell_fire(player_type *target_ptr, effect_player_type *ep_ptr
 }
 
 
+void effect_player_arrow(player_type *target_ptr, effect_player_type *ep_ptr)
+{
+       if (target_ptr->blind)
+       {
+               msg_print(_("\89½\82©\89s\82¢\82à\82Ì\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by something sharp!"));
+               ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
+               return;
+       }
+       
+       if ((target_ptr->inventory_list[INVEN_RARM].name1 == ART_ZANTETSU) || (target_ptr->inventory_list[INVEN_LARM].name1 == ART_ZANTETSU))
+       {
+               msg_print(_("\96î\82ð\8ea\82è\8eÌ\82Ä\82½\81I", "You cut down the arrow!"));
+               return;
+       }
+
+       ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
+}
+
+
+void effect_player_plasma(player_type *target_ptr, effect_player_type *ep_ptr)
+{
+       if (target_ptr->blind) msg_print(_("\89½\82©\82Æ\82Ä\82à\94M\82¢\82à\82Ì\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by something *HOT*!"));
+
+       ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
+
+       if (!target_ptr->resist_sound && !CHECK_MULTISHADOW(target_ptr))
+       {
+               int plus_stun = (randint1((ep_ptr->dam > 40) ? 35 : (ep_ptr->dam * 3 / 4 + 5)));
+               (void)set_stun(target_ptr, target_ptr->stun + plus_stun);
+       }
+
+       if (!(target_ptr->resist_fire || is_oppose_fire(target_ptr) || target_ptr->immune_fire))
+               inventory_damage(target_ptr, set_acid_destroy, 3);
+}
+
+
+void effect_player_nether(player_type *target_ptr, effect_player_type *ep_ptr)
+{
+       if (target_ptr->blind) msg_print(_("\92n\8d\96\82Ì\97Í\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by nether forces!"));
+
+       if (target_ptr->resist_neth)
+       {
+               if (!PRACE_IS_(target_ptr, RACE_SPECTRE))
+                       ep_ptr->dam *= 6; ep_ptr->dam /= (randint1(4) + 7);
+       }
+       else if (!CHECK_MULTISHADOW(target_ptr)) drain_exp(target_ptr, 200 + (target_ptr->exp / 100), 200 + (target_ptr->exp / 1000), 75);
+
+       if (!PRACE_IS_(target_ptr, RACE_SPECTRE) || CHECK_MULTISHADOW(target_ptr))
+       {
+               ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
+               return;
+       }
+
+       msg_print(_("\8bC\95ª\82ª\82æ\82­\82È\82Á\82½\81B", "You feel invigorated!"));
+       hp_player(target_ptr, ep_ptr->dam / 4);
+       learn_spell(target_ptr, ep_ptr->monspell);
+}
+
+
 /*!
  * @brief \96\82\96@\82Ì\8cø\89Ê\82É\82æ\82Á\82Ä\97l\81X\82È\83\81\83b\83Z\81[\82ð\8fo\97Í\82µ\82½\82è\97^\82¦\82é\83_\83\81\81[\83W\82Ì\91\9d\8c¸\82ð\8ds\82Á\82½\82è\82·\82é
  * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
@@ -136,63 +198,11 @@ void switch_effects_player(player_type *target_ptr, effect_player_type *ep_ptr)
        case GF_HELL_FIRE:
                effect_plyaer_hell_fire(target_ptr, ep_ptr);
        case GF_ARROW:
-       {
-               if (target_ptr->blind)
-               {
-                       msg_print(_("\89½\82©\89s\82¢\82à\82Ì\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by something sharp!"));
-               }
-               else if ((target_ptr->inventory_list[INVEN_RARM].name1 == ART_ZANTETSU) || (target_ptr->inventory_list[INVEN_LARM].name1 == ART_ZANTETSU))
-               {
-                       msg_print(_("\96î\82ð\8ea\82è\8eÌ\82Ä\82½\81I", "You cut down the arrow!"));
-                       break;
-               }
-
-               ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
-               break;
-       }
+               effect_player_arrow(target_ptr, ep_ptr);
        case GF_PLASMA:
-       {
-               if (target_ptr->blind) msg_print(_("\89½\82©\82Æ\82Ä\82à\94M\82¢\82à\82Ì\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by something *HOT*!"));
-               ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
-
-               if (!target_ptr->resist_sound && !CHECK_MULTISHADOW(target_ptr))
-               {
-                       int plus_stun = (randint1((ep_ptr->dam > 40) ? 35 : (ep_ptr->dam * 3 / 4 + 5)));
-                       (void)set_stun(target_ptr, target_ptr->stun + plus_stun);
-               }
-
-               if (!(target_ptr->resist_fire || is_oppose_fire(target_ptr) || target_ptr->immune_fire))
-               {
-                       inventory_damage(target_ptr, set_acid_destroy, 3);
-               }
-
-               break;
-       }
+               effect_player_plasma(target_ptr, ep_ptr);
        case GF_NETHER:
-       {
-               if (target_ptr->blind) msg_print(_("\92n\8d\96\82Ì\97Í\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by nether forces!"));
-               if (target_ptr->resist_neth)
-               {
-                       if (!PRACE_IS_(target_ptr, RACE_SPECTRE))
-                       {
-                               ep_ptr->dam *= 6; ep_ptr->dam /= (randint1(4) + 7);
-                       }
-               }
-               else if (!CHECK_MULTISHADOW(target_ptr)) drain_exp(target_ptr, 200 + (target_ptr->exp / 100), 200 + (target_ptr->exp / 1000), 75);
-
-               if (PRACE_IS_(target_ptr, RACE_SPECTRE) && !CHECK_MULTISHADOW(target_ptr))
-               {
-                       msg_print(_("\8bC\95ª\82ª\82æ\82­\82È\82Á\82½\81B", "You feel invigorated!"));
-                       hp_player(target_ptr, ep_ptr->dam / 4);
-                       learn_spell(target_ptr, ep_ptr->monspell);
-               }
-               else
-               {
-                       ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
-               }
-
-               break;
-       }
+               effect_player_nether(target_ptr, ep_ptr);
        case GF_WATER:
        {
                if (target_ptr->blind) msg_print(_("\89½\82©\8e¼\82Á\82½\82à\82Ì\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by something wet!"));